import BinaryStream from '../../common/binarystream';
import TokenStream from './tokenstream';
export declare const enum InterpolationType {
    DontInterp = 0,
    Linear = 1,
    Hermite = 2,
    Bezier = 3
}
/**
 * An animation.
 */
export declare abstract class Animation {
    name: string;
    interpolationType: InterpolationType;
    globalSequenceId: number;
    frames: number[];
    values: (Uint32Array | Float32Array)[];
    inTans: (Uint32Array | Float32Array)[];
    outTans: (Uint32Array | Float32Array)[];
    abstract readMdxValue(stream: BinaryStream): Uint32Array | Float32Array;
    abstract writeMdxValue(stream: BinaryStream, value: Uint32Array | Float32Array): void;
    abstract readMdlValue(stream: TokenStream): Uint32Array | Float32Array;
    abstract writeMdlValue(stream: TokenStream, name: string, value: Uint32Array | Float32Array): void;
    readMdx(stream: BinaryStream, name: string): void;
    writeMdx(stream: BinaryStream): void;
    readMdl(stream: TokenStream, name: string): void;
    writeMdl(stream: TokenStream, name: string): void;
    getByteLength(): number;
}
/**
 * A uint animation.
 */
export declare class UintAnimation extends Animation {
    readMdxValue(stream: BinaryStream): Uint32Array;
    writeMdxValue(stream: BinaryStream, value: Uint32Array): void;
    readMdlValue(stream: TokenStream): Uint32Array;
    writeMdlValue(stream: TokenStream, name: string, value: Uint32Array): void;
}
/**
 * A float animation
 */
export declare class FloatAnimation extends Animation {
    readMdxValue(stream: BinaryStream): Float32Array;
    writeMdxValue(stream: BinaryStream, value: Float32Array): void;
    readMdlValue(stream: TokenStream): Float32Array;
    writeMdlValue(stream: TokenStream, name: string, value: Float32Array): void;
}
/**
 * A vector 3 animation.
 */
export declare class Vector3Animation extends Animation {
    readMdxValue(stream: BinaryStream): Float32Array;
    writeMdxValue(stream: BinaryStream, value: Float32Array): void;
    readMdlValue(stream: TokenStream): Float32Array;
    writeMdlValue(stream: TokenStream, name: string, value: Float32Array): void;
}
/**
 * A vector 4 animation.
 */
export declare class Vector4Animation extends Animation {
    readMdxValue(stream: BinaryStream): Float32Array;
    writeMdxValue(stream: BinaryStream, value: Float32Array): void;
    readMdlValue(stream: TokenStream): Float32Array;
    writeMdlValue(stream: TokenStream, name: string, value: Float32Array): void;
}
