import { IKosModel } from '../kosModel';

export interface KosOn {
    [k: string]: string;
}
export interface KosInvoke<Context> {
    id: string;
    src: (context: Context) => Promise<any>;
    onDone: {
        target: string;
    };
}
export interface KosLifecycleState {
    on: KosOn;
}
export interface KosLifecycleStateContainer<Context> {
    [k: string]: {
        initial?: string;
        states?: KosLifecycleStateContainer<Context>;
        on?: KosOn;
        invoke?: KosInvoke<Context>;
    };
}
export interface KosLifecycle<Context = any> {
    id: string;
    initial: string;
    states: KosLifecycleStateContainer<Context>;
    context: Context;
}
export declare const fsm: (model: IKosModel) => {
    service: import('robot3').Service<import('robot3').Machine<{
        creating: import('robot3').MachineState;
        created: import('robot3').MachineState;
        initializing: import('robot3').MachineState;
        initialized: import('robot3').MachineState;
        loading: import('robot3').MachineState;
        loaded: import('robot3').MachineState;
        resetting: import('robot3').MachineState;
        readying: import('robot3').MachineState;
        ready: import('robot3').MachineState;
        unloaded: import('robot3').MachineState;
        failed: import('robot3').MachineState;
    }, {}, import('robot3').AllStateKeys<{
        creating: unknown;
        created: unknown;
        initializing: unknown;
        initialized: unknown;
        loading: unknown;
        loaded: unknown;
        resetting: unknown;
        readying: unknown;
        ready: unknown;
        unloaded: unknown;
        failed: unknown;
    }>>>;
};
//# sourceMappingURL=kosModelLifecycle.d.ts.map