import { Store } from '@ngrx/store';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/distinctUntilChanged';
import 'rxjs/add/operator/map';
import { ISettings, IVideoPositionOptions } from '@mcph/miix-std/dist/internal';
import { IProject } from '../redux/project';
/**
 * The ControlStateSyncService handles synchronizing the device state and
 * video position between local and remote controls and the editor.
 */
export declare class ControlStateSyncService {
    private readonly store;
    private videoSizeSubj;
    private fittedSizeSubj;
    private refreshSubj;
    constructor(store: Store<IProject>);
    /**
     * Updates the store video size settings.
     */
    setVideoSize(options: IVideoPositionOptions): void;
    /**
     * Updates the fitted size of the video sent to controls.
     */
    updateFittedVideoSize(rect: ClientRect): void;
    /**
     * Observable that emits when the video size/position changes.
     */
    getVideoSize(): Observable<IVideoPositionOptions>;
    /**
     * Observable of the fitted, actual position/size of the video relative to the frame.
     */
    getFittedVideoSize(): Observable<ClientRect>;
    /**
     * Returns an observable that fires when the user asks to refresh the frame.
     */
    getRefresh(): Observable<void>;
    /**
     * Asks the display iframe to refresh.
     */
    requestRefresh(): void;
    /**
     * Returns an observable of ISettings to share with the controls. Fires
     * immediately when first subscribed to.
     */
    getSettings(): Observable<ISettings>;
}
