export type JsPrimitive = string | number | boolean | null | undefined | bigint | symbol;
export declare class TaonStateMachine<T extends JsPrimitive = JsPrimitive> {
    private readonly config;
    private _currentValue;
    constructor(config: {
        debugMode?: boolean;
        defaultValue: T;
        allowedStateMap?: Map<T, T[]>;
        modifyStateBeforeSetting?: (nextState: T, currentState: T, debugMode: boolean) => T;
        effect?: (nextState: T, previousState: T, debugMode: boolean) => void | Promise<void>;
        throwOnInvalidTransition?: boolean;
    });
    get debugMode(): boolean;
    get currentValue(): T;
    canSet(nextStateRaw: T): boolean;
    set(nextStateRaw: T): Promise<boolean>;
}
