/**
 * Copyright (c) 2019-2020 mol* contributors, licensed under MIT, See LICENSE file for more info.
 *
 * @author David Sehnal <david.sehnal@gmail.com>
 * @author Alexander Rose <alexander.rose@weirdbyte.de>
 */
import { Sphere3D } from '../../mol-math/geometry';
import { PluginContext } from '../../mol-plugin/context';
import { PrincipalAxes } from '../../mol-math/linear-algebra/matrix/principal-axes';
import { Camera } from '../../mol-canvas3d/camera';
import { Loci } from '../../mol-model/loci';
import { GraphicsRenderObject } from '../../mol-gl/render-object';
declare const DefaultCameraFocusOptions: {
    minRadius: number;
    extraRadius: number;
    durationMs: number;
};
export declare type CameraFocusOptions = typeof DefaultCameraFocusOptions;
export declare class CameraManager {
    readonly plugin: PluginContext;
    private boundaryHelper;
    private transformedLoci;
    focusRenderObjects(objects?: ReadonlyArray<GraphicsRenderObject>, options?: Partial<CameraFocusOptions>): void;
    focusLoci(loci: Loci | Loci[], options?: Partial<CameraFocusOptions>): void;
    focusSpheres<T>(xs: ReadonlyArray<T>, sphere: (t: T) => Sphere3D | undefined, options?: Partial<CameraFocusOptions>): void;
    focusSphere(sphere: Sphere3D, options?: Partial<CameraFocusOptions> & {
        principalAxes?: PrincipalAxes;
    }): void;
    setSnapshot(snapshot: Partial<Camera.Snapshot>, durationMs?: number): void;
    reset(snapshot?: Partial<Camera.Snapshot>, durationMs?: number): void;
    constructor(plugin: PluginContext);
}
export {};
