import FSMConfigI from "./interfaces/fsm-config.i";
import StateDataI from "./interfaces/state-data.i";
import Subscription from "./interfaces/subscription.i";
import TransitionRulesType from "./types/transition-rules-type";
interface FSMOptions {
    devMode?: boolean;
    logTransitions?: boolean;
    subscriptionMode?: boolean;
}
export declare class StateManagerFSM<Config extends FSMConfigI> {
    private stateData;
    private transitionRules;
    private options;
    private subscriptionManager;
    constructor(transitionRules: TransitionRulesType<Config>, options?: Partial<FSMOptions>);
    setStateData(currentStateData: StateDataI<Config>): void;
    getStateData(): StateDataI<Config>;
    transition(event: Config['event'], appliedData?: Config['data'][]): void;
    private isInitialized;
    private warnWrongTransition;
    private warnGuard;
    private applyTransition;
    private transitionAction;
    private checkGuard;
    canTransition(event: Config['event']): boolean;
    subscribe(state: Config['state'], callback: (newStateData: StateDataI<Config>) => void): Subscription;
}
export {};
