/**
 * Copyright (c) 2020-2021 mol* contributors, licensed under MIT, See LICENSE file for more info.
 *
 * @author Alexander Rose <alexander.rose@weirdbyte.de>
 */
import { PickingId } from '../../mol-geo/geometry/picking';
import { Scene } from '../../mol-gl/scene';
import { WebGLContext } from '../../mol-gl/webgl/context';
import { DataLoci, Loci } from '../../mol-model/loci';
import { MarkerAction } from '../../mol-util/marker-action';
import { ParamDefinition as PD } from '../../mol-util/param-definition';
import { Camera, ICamera } from '../camera';
export declare const CameraHelperParams: {
    axes: PD.Mapped<PD.NamedParams<PD.Normalize<unknown>, "off"> | PD.NamedParams<PD.Normalize<{
        alpha: number;
        ignoreLight: boolean;
        colorX: import("../../mol-util/color").Color;
        colorY: import("../../mol-util/color").Color;
        colorZ: import("../../mol-util/color").Color;
        scale: number;
        doubleSided: boolean;
        flipSided: boolean;
        flatShaded: boolean;
        xrayShaded: boolean;
        quality: "custom" | "auto" | "highest" | "higher" | "high" | "medium" | "low" | "lower" | "lowest";
    }>, "on">>;
};
export declare type CameraHelperParams = typeof CameraHelperParams;
export declare type CameraHelperProps = PD.Values<CameraHelperParams>;
export declare class CameraHelper {
    private webgl;
    scene: Scene;
    camera: Camera;
    props: CameraHelperProps;
    private renderObject;
    constructor(webgl: WebGLContext, props?: Partial<CameraHelperProps>);
    setProps(props: Partial<CameraHelperProps>): void;
    get isEnabled(): boolean;
    getLoci(pickingId: PickingId): {
        kind: "empty-loci";
    } | DataLoci<CameraHelper, {
        groupId: number;
        instanceId: number;
    }>;
    private eachGroup;
    mark(loci: Loci, action: MarkerAction): boolean;
    update(camera: ICamera): void;
}
export declare const enum CameraHelperAxis {
    None = 0,
    X = 1,
    Y = 2,
    Z = 3,
    XY = 4,
    XZ = 5,
    YZ = 6
}
declare function CameraAxesLoci(cameraHelper: CameraHelper, groupId: number, instanceId: number): DataLoci<CameraHelper, {
    groupId: number;
    instanceId: number;
}>;
export declare type CameraAxesLoci = ReturnType<typeof CameraAxesLoci>;
export declare function isCameraAxesLoci(x: Loci): x is CameraAxesLoci;
export {};
