/*!
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * Licensed under the MIT License.
 */
import { Client, ExportedPromise, Message } from '../../../../internal';
import { Protocol } from '../../../protocols';
/**
 * @hidden
 */
export declare type SynchronizationStage = 'always' | 'load-assets' | 'create-actors' | 'active-media-instances' | 'create-animations' | 'sync-animations' | 'set-behaviors' | 'never';
/**
 * @hidden
 * Synchronizes application state with a client.
 */
export declare class ClientSync extends Protocol {
    private client;
    private inProgressStages;
    private completedStages;
    private sequence;
    /** @override */
    get name(): string;
    constructor(client: Client);
    /**
     * @override
     * Handle the outgoing message according to the synchronization rules specified for this payload.
     */
    sendMessage(message: Message, promise?: ExportedPromise, timeoutSeconds?: number): void;
    /** @override */
    protected missingPromiseForReplyMessage(message: Message): void;
    private handlingForMessage;
    private isStageComplete;
    private isStageInProgress;
    private beginStage;
    private completeStage;
    private executeStage;
    /**
     * @override
     */
    run(): Promise<void>;
    /**
     * @hidden
     * Driver for the `load-assets` synchronization stage.
     */
    'stage:load-assets': () => void;
    /**
     * @hidden
     * Driver for the `create-actors` synchronization stage.
     */
    'stage:create-actors': () => void;
    /**
     * @hidden
     * Driver for the `set-behaviors` synchronization stage.
     */
    'stage:set-behaviors': () => void;
    /**
     * @hidden
     * Driver for the `active-media-instances` synchronization stage.
     */
    'stage:active-media-instances': () => void;
    /**
     * @hidden
     * Driver for the `create-animations` synchronization stage.
     */
    'stage:create-animations': () => void;
    /**
     * @hidden
     * Driver for the `sync-animations` synchronization stage.
     */
    'stage:sync-animations': () => void;
    private createActorRecursive;
    private createActorBehavior;
    private createActor;
    private activeMediaInstances;
    sendQueuedMessages(): Promise<void>;
}
//# sourceMappingURL=clientSync.d.ts.map