import { IObservable, ISubject } from '@vkontakte/videoplayer-shared';
import { IStateMachine, ITransition } from './types';
export default class StateMachine<TState> implements IStateMachine<TState> {
    private state;
    private prevState;
    private transition?;
    transitionStarted$: ISubject<ITransition<TState>>;
    transitionEnded$: ISubject<ITransition<TState>>;
    transitionUpdated$: ISubject<ITransition<TState>>;
    forceChanged$: ISubject<ITransition<TState>>;
    stateChangeStarted$: IObservable<ITransition<TState>>;
    stateChangeEnded$: IObservable<ITransition<TState>>;
    constructor(initialState: TState);
    setState(newState: TState): void;
    startTransitionTo(newState: TState): void;
    getTransition(): ITransition<TState> | undefined;
    getState(): TState;
    getPrevState(): TState | undefined;
}
