import { IListener, IObservable, ISubscription } from '@vkontakte/videoplayer-shared';
import { IVolumeState, PlaybackRate } from '../../player/types';
import { IStateMachine } from '../../utils/StateMachine/types';
declare const syncDesiredState: <Value>(desiredState: IStateMachine<Value | undefined>, get: () => Value | undefined, // Текущее значение состояние
set: (value: Value | undefined) => void, // Применение нового значения
{ equal, changed$, onError, }?: {
    equal?: (a: Value | undefined, b: Value | undefined) => boolean;
    changed$?: IObservable<Value | undefined>;
    onError?: IListener<Error | unknown>;
}) => ISubscription;
export declare const syncVideoLooped: (video: HTMLVideoElement, desiredState: IStateMachine<boolean>, onError?: IListener<Error | unknown>) => ISubscription;
export declare const syncVideoVolumeState: (video: HTMLVideoElement, desiredState: IStateMachine<IVolumeState>, changed$: IObservable<IVolumeState>, onError?: IListener<Error | unknown>) => ISubscription;
export declare const syncVideoPlaybackRate: (video: HTMLVideoElement, desiredState: IStateMachine<PlaybackRate>, changed$: IObservable<PlaybackRate>, onError?: IListener<Error | unknown>) => ISubscription;
export default syncDesiredState;
