import { AnimatorState } from "./AnimatorState";
import { AnimatorStateTransition } from "./AnimatorStateTransition";
export interface AnimatorStateMap {
    [key: string]: AnimatorState;
}
/**
 * A graph controlling the interaction of states. Each state references a motion.
 */
export declare class AnimatorStateMachine {
    /** The list of states. */
    readonly states: AnimatorState[];
    private _engine;
    /**
     * The state will be played automatically.
     * @remarks When the Animator's AnimatorController changed or the Animator's onEnable be triggered.
     */
    defaultState: AnimatorState;
    private _statesMap;
    /**
     * The list of entry transitions in the state machine.
     */
    get entryTransitions(): Readonly<AnimatorStateTransition[]>;
    /**
     * The list of AnyState transitions.
     */
    get anyStateTransitions(): Readonly<AnimatorStateTransition[]>;
    /**
     * Add a state to the state machine.
     * @param name - The name of the new state
     */
    addState(name: string): AnimatorState;
    /**
     * Remove a state from the state machine.
     * @param state - The state
     */
    removeState(state: AnimatorState): void;
    /**
     * Get the state by name.
     * @param name - The layer's name
     */
    findStateByName(name: string): AnimatorState;
    /**
     * Makes a unique state name in the state machine.
     * @param name - Desired name for the state.
     * @returns Unique name.
     */
    makeUniqueStateName(name: string): string;
    /**
     * Add an entry transition.
     * @param transition - The transition
     */
    addEntryStateTransition(transition: AnimatorStateTransition): AnimatorStateTransition;
    /**
     * Add an entry transition to the destination state, the default value of entry transition's hasExitTime is false.
     * @param animatorState - The destination state
     */
    addEntryStateTransition(animatorState: AnimatorState): AnimatorStateTransition;
    /**
     * Remove an entry transition.
     * @param transition - The transition
     */
    removeEntryStateTransition(transition: AnimatorStateTransition): void;
    /**
     * Add an any transition.
     * @param transition - The transition
     */
    addAnyStateTransition(transition: AnimatorStateTransition): AnimatorStateTransition;
    /**
     * Add an any transition to the destination state, the default value of any transition's hasExitTime is false.
     * @param animatorState - The destination state
     */
    addAnyStateTransition(animatorState: AnimatorState): AnimatorStateTransition;
    /**
     * Remove an any transition.
     * @param transition - The transition
     */
    removeAnyStateTransition(transition: AnimatorStateTransition): void;
    /**
     * Clear all entry state transitions.
     */
    clearEntryStateTransitions(): void;
    /**
     * Clear all any state transitions.
     */
    clearAnyStateTransitions(): void;
}
