import { AnimationClip } from "./AnimationClip";
import { AnimatorStateTransition } from "./AnimatorStateTransition";
import { WrapMode } from "./enums/WrapMode";
import { StateMachineScript } from "./StateMachineScript";
/**
 * States are the basic building blocks of a state machine. Each state contains a AnimationClip which will play while the character is in that state.
 */
export declare class AnimatorState {
    readonly name: string;
    /** The speed of the clip. 1 is normal speed, default 1. */
    speed: number;
    /** The wrap mode used in the state. */
    wrapMode: WrapMode;
    private _onStateEnterScripts;
    private _onStateUpdateScripts;
    private _onStateExitScripts;
    private _engine;
    private _clipStartTime;
    private _clipEndTime;
    private _clip;
    /**
     * The transitions that are going out of the state.
     */
    get transitions(): Readonly<AnimatorStateTransition[]>;
    /**
     * The clip that is being played by this animator state.
     */
    get clip(): AnimationClip;
    set clip(clip: AnimationClip);
    /**
     * The normalized start time of the clip, the range is 0 to 1, default is 0.
     */
    get clipStartTime(): number;
    set clipStartTime(time: number);
    /**
     * The normalized end time of the clip, the range is 0 to 1, default is 1.
     */
    get clipEndTime(): number;
    set clipEndTime(time: number);
    /**
     * @param name - The state's name
     */
    constructor(name: string);
    /**
     * Add an outgoing transition.
     * @param transition - The transition
     */
    addTransition(transition: AnimatorStateTransition): AnimatorStateTransition;
    /**
     * Add an outgoing transition to the destination state.
     * @param animatorState - The destination state
     */
    addTransition(animatorState: AnimatorState): AnimatorStateTransition;
    /**
     * Add an outgoing transition to exit of the stateMachine.
     * @param exitTime - The time at which the transition can take effect. This is represented in normalized time.
     */
    addExitTransition(exitTime?: number): AnimatorStateTransition;
    /**
     * Remove a transition from the state.
     * @param transition - The transition
     */
    removeTransition(transition: AnimatorStateTransition): void;
    /**
     * Adds a state machine script class of type T to the AnimatorState.
     * @param scriptType - The state machine script class of type T
     */
    addStateMachineScript<T extends StateMachineScript>(scriptType: new () => T): T;
    /**
     * Clears all transitions from the state.
     */
    clearTransitions(): void;
}
