import type { Five } from '@realsee/five';
import { BasePlugin } from '../BasePlugin';
import type * as PluginType from './typing';
import * as THREE from 'three';
export declare class Controller extends BasePlugin.Controller<PluginType.State, PluginType.EventMap, any, any> {
    data?: any;
    state: PluginType.State;
    private duration;
    private curveHeight;
    private pointDuration;
    boundingAABB: PluginType.BoundingAABB2D | null;
    private cancelAnimation;
    private boundsSet;
    private playing;
    keyframes: PluginType.Keyframe[];
    private updateState;
    constructor(five: Five, config?: PluginType.Config);
    load(): Promise<void>;
    enable(options?: BasePlugin.BaseOptions): void;
    disable(options?: BasePlugin.BaseOptions): void;
    dispose(): void;
    private extractKeyframes;
    private computeAABB2D;
    private findClosestKeyframeToRay;
    getCameraCurve(): Promise<THREE.CatmullRomCurve3>;
    private isInitAnimationEnabled;
    private findRenderMesh;
    setBounding(boundsMin: THREE.Vector3, boundsMax: THREE.Vector3, center?: THREE.Vector3): void;
    setBounds(): void;
    startAggregation(): void;
    playEntrance(): Promise<void>;
}
