import { TransformationMatrix } from './TransformationMatrix';
import { Pinch } from './core-math';
export interface FidgetPincherOptions {
    enableInertia: boolean;
    enableTranslateInertia: boolean;
    enableFidgetSpinInertia: boolean;
    enablePinchInertia: boolean;
    stopTranslateInertiaOnTouch: boolean;
    stopFidgetSpinInertiaOnPinch: boolean;
    stopFidgetSpinInertiaOnTouch: boolean;
    stopPinchInertiaOnPinch: boolean;
    stopPinchInertiaOnTouch: boolean;
    stopFidgetSpinInertiaOnPinchInertia: boolean;
}
interface Get<T> {
    get(): T;
}
interface GetSet<T> {
    get(): T;
    set(value: T): void;
}
declare class ImplInertia {
    private optionsGetter;
    private transform;
    private __owner;
    private t;
    private translations;
    private translationApplyResult;
    private pinches;
    private fidgetSpinApplyResult;
    private fidgetSpinPivot;
    private pinchApplyResult;
    private pinchReleaseTimestamp;
    private get options();
    constructor(optionsGetter: Get<FidgetPincherOptions>, transform: GetSet<TransformationMatrix>, __owner: Impl);
    onStart(touches: number, t: number): void;
    onTranslate(dx: number, dy: number, t: number): void;
    onPinch(pinch: Pinch, t: number): void;
    onEnd(touches: number): void;
}
export declare class ImplPointer {
    private owner;
    x: number;
    y: number;
    constructor(owner: Impl, x: number, y: number);
    move(x: number, y: number, t: number): void;
    remove(): void;
}
export declare class Impl {
    private options;
    pointers: ImplPointer[];
    transform: TransformationMatrix;
    inertia: ImplInertia;
    transformedCallbacks: ((transform: TransformationMatrix) => void)[];
    constructor(options: FidgetPincherOptions);
    setOptions(options: FidgetPincherOptions): void;
    addPointer(x: number, y: number, t: number): ImplPointer;
    addTransformedCallback(callback: (transform: TransformationMatrix) => void): void;
    removeTransformedCallback(callback: (transform: TransformationMatrix) => void): void;
    notifyTransformed(): void;
}
export {};
