import { AppObject } from "@vived/core";
import { AppObjectEntity } from "@vived/core";
import { AppObjectRepo } from "@vived/core";
export interface SerializedStates {
    version: number;
    systems: SystemState[];
}
export interface SystemState {
    name: string;
    seriliziationVersion: number;
    state: object;
}
export interface SerializedSystem {
    name: string;
    seriliziationVersion: number;
    getSystemState(): object | undefined;
    applySystemState(state: object, version: number, transitionDuration: number): void;
    applyDefaultState(transitionDuration: number): void;
}
export declare abstract class StateMachineEntity extends AppObjectEntity {
    static readonly type = "StateMachineEntity";
    abstract restoreDurationS: number;
    abstract transitionEaseFunction: (normalizedTime: number) => number;
    abstract getSerializedStates(): SerializedStates;
    abstract setSerializedStates(state: SerializedStates, transitionTime: number): void;
    abstract applySerializedStatesString: (state: string, duration?: number) => void;
    abstract restoreLastState(): void;
    abstract setDefaultState(transitionTime: number): void;
    abstract registerSerializedSystem(serializedSystem: SerializedSystem): void;
    static get: (appObjects: AppObjectRepo) => StateMachineEntity | undefined;
}
export declare function makeStateMachineEntity(appObject: AppObject): StateMachineEntity;
//# sourceMappingURL=StateMachineEntity.d.ts.map