import { VRM } from "@pixiv/three-vrm";
export interface FaceExpression<T = any> {
    duration: number;
    angry?: number;
    happy?: number;
    neutral?: number;
    relaxed?: number;
    sad?: number;
    surprised?: number;
    metadata?: T;
    blinkLeft?: number;
    blinkRight?: number;
    blink?: number;
    lookX?: number;
    lookY?: number;
}
export declare class FaceExpressionManager {
    private _vrm;
    private _currentExpressionIndex;
    private _expressionsQueue;
    private _elapsedTime;
    private _isActive;
    private _vrmUrl;
    private _vrmHasBlink;
    private _autoBlinkManager;
    private _frameOverride;
    private _currentEmotionExpressionTargets;
    constructor(vrm: VRM, vrmUrl: string);
    get currentExpression(): {
        angry: number;
        happy: number;
        neutral: number;
        relaxed: number;
        sad: number;
        surprised: number;
    };
    private _getExpression;
    private _lerpExpressions;
    applyExpressions(expressions: FaceExpression[], ease?: boolean): void;
    frameOverride(onFrame: (() => FaceExpression) | null): void;
    processExpressions(delta: number): void;
    normalizeExpression(expression: FaceExpression): {
        duration: number;
        angry?: number;
        happy?: number;
        neutral?: number;
        relaxed?: number;
        sad?: number;
        surprised?: number;
        metadata?: any;
        blinkLeft?: number;
        blinkRight?: number;
        blink?: number;
        lookX?: number;
        lookY?: number;
    };
    private applyExpression;
    /**
     *
     * @param key: expression key
     * @param value: raw expression value
     * @param negationOffset: if a different expression influences the same vertices already, this should be provided
     *  to negate that influence. For example, if "happy" closes the eyes, then "blink" should have a negative offset of 1.
     *  That way, since happy already sets the underlying blendshape to have a weight of 1, if "blink" is 1, blink will be set to 0.
     *  If "blink" is 0, then blink will be set to -1 to negate that effect.
     * @param ease
     */
    private applySingleExpression;
    destroy(): void;
}
//# sourceMappingURL=FaceExpressionManager.d.ts.map