/**
 * Copyright (c) 2018-2021 mol* contributors, licensed under MIT, See LICENSE file for more info.
 *
 * @author Alexander Rose <alexander.rose@weirdbyte.de>
 * @author David Sehnal <david.sehnal@gmail.com>
 *
 * This code has been modified from https://github.com/mrdoob/three.js/,
 * copyright (c) 2010-2018 three.js authors. MIT License
 */
import { Viewport } from '../camera/util';
import { InputObserver } from '../../mol-util/input/input-observer';
import { ParamDefinition as PD } from '../../mol-util/param-definition';
import { Camera } from '../camera';
import { Binding } from '../../mol-util/binding';
export declare const DefaultTrackballBindings: {
    dragRotate: Binding;
    dragRotateZ: Binding;
    dragPan: Binding;
    dragZoom: Binding;
    dragFocus: Binding;
    dragFocusZoom: Binding;
    scrollZoom: Binding;
    scrollFocus: Binding;
    scrollFocusZoom: Binding;
};
export declare const TrackballControlsParams: {
    noScroll: PD.BooleanParam;
    rotateSpeed: PD.Numeric;
    zoomSpeed: PD.Numeric;
    panSpeed: PD.Numeric;
    spin: PD.BooleanParam;
    spinSpeed: PD.Numeric;
    staticMoving: PD.BooleanParam;
    dynamicDampingFactor: PD.Numeric;
    minDistance: PD.Numeric;
    maxDistance: PD.Numeric;
    gestureScaleFactor: PD.Numeric;
    maxWheelDelta: PD.Numeric;
    bindings: PD.Value<{
        dragRotate: Binding;
        dragRotateZ: Binding;
        dragPan: Binding;
        dragZoom: Binding;
        dragFocus: Binding;
        dragFocusZoom: Binding;
        scrollZoom: Binding;
        scrollFocus: Binding;
        scrollFocusZoom: Binding;
    }>;
    /**
     * minDistance = minDistanceFactor * boundingSphere.radius + minDistancePadding
     * maxDistance = max(maxDistanceFactor * boundingSphere.radius, maxDistanceMin)
     */
    autoAdjustMinMaxDistance: PD.Mapped<PD.NamedParams<PD.Normalize<unknown>, "off"> | PD.NamedParams<PD.Normalize<{
        minDistanceFactor: number;
        minDistancePadding: number;
        maxDistanceFactor: number;
        maxDistanceMin: number;
    }>, "on">>;
};
export declare type TrackballControlsProps = PD.Values<typeof TrackballControlsParams>;
export { TrackballControls };
interface TrackballControls {
    viewport: Viewport;
    readonly props: Readonly<TrackballControlsProps>;
    setProps: (props: Partial<TrackballControlsProps>) => void;
    start: (t: number) => void;
    update: (t: number) => void;
    reset: () => void;
    dispose: () => void;
}
declare namespace TrackballControls {
    function create(input: InputObserver, camera: Camera, props?: Partial<TrackballControlsProps>): TrackballControls;
}
