import { Matrix4, Vector3 } from '@vertexvis/geometry';
import { StreamApi } from '@vertexvis/stream-api';
export declare class TransformController {
    private stream;
    private isTransforming;
    private previousDelta?;
    private currentDelta;
    private endDebounceTimeout?;
    constructor(stream: StreamApi);
    dispose(): Promise<void>;
    beginTransform(delta?: Matrix4.Matrix4): Promise<void>;
    updateTransform(delta: Matrix4.Matrix4): Promise<void>;
    updateTranslation(delta: Vector3.Vector3): Promise<void>;
    getCurrentDelta(): Matrix4.Matrix4 | undefined;
    endTransform(): Promise<void>;
    endTransformDebounced(startCallback?: VoidFunction, endCallback?: VoidFunction): Promise<void>;
    clearTransform(): void;
    EXPERIMENTAL_undoTransform(): Promise<Matrix4.Matrix4 | undefined>;
    private endInteraction;
    private restartEndInteractionTimeout;
    private clearEndInteractionTimeout;
    private toDeltaTransform;
}
