/**
 * Copyright (c) 2018-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 { Camera } from '../mol-canvas3d/camera';
import { PluginCommand } from './command';
import { StateTransform, State, StateAction } from '../mol-state';
import { Canvas3DProps } from '../mol-canvas3d/canvas3d';
import { PluginLayoutStateProps } from './layout';
import { StructureElement } from '../mol-model/structure';
import { PluginState } from './state';
import { PluginToast } from './util/toast';
import { Vec3 } from '../mol-math/linear-algebra';
export declare const PluginCommands: {
    State: {
        SetCurrentObject: PluginCommand<{
            state: State;
            ref: StateTransform.Ref;
        }>;
        ApplyAction: PluginCommand<{
            state: State;
            action: StateAction.Instance;
            ref?: string | undefined;
        }>;
        Update: PluginCommand<{
            state: State;
            tree: State.Tree | State.Builder;
            options?: Partial<State.UpdateOptions> | undefined;
        }>;
        RemoveObject: PluginCommand<{
            state: State;
            ref: StateTransform.Ref;
            removeParentGhosts?: boolean | undefined;
        }>;
        ToggleExpanded: PluginCommand<{
            state: State;
            ref: StateTransform.Ref;
        }>;
        ToggleVisibility: PluginCommand<{
            state: State;
            ref: StateTransform.Ref;
        }>;
        Snapshots: {
            Add: PluginCommand<{
                name?: string | undefined;
                description?: string | undefined;
                params?: Partial<import("../mol-util/param-definition").ParamDefinition.Values<{
                    durationInMs: import("../mol-util/param-definition").ParamDefinition.Numeric;
                    data: import("../mol-util/param-definition").ParamDefinition.BooleanParam;
                    behavior: import("../mol-util/param-definition").ParamDefinition.BooleanParam;
                    animation: import("../mol-util/param-definition").ParamDefinition.BooleanParam;
                    startAnimation: import("../mol-util/param-definition").ParamDefinition.BooleanParam;
                    canvas3d: import("../mol-util/param-definition").ParamDefinition.BooleanParam;
                    interactivity: import("../mol-util/param-definition").ParamDefinition.BooleanParam;
                    camera: import("../mol-util/param-definition").ParamDefinition.BooleanParam;
                    cameraTransition: import("../mol-util/param-definition").ParamDefinition.Mapped<import("../mol-util/param-definition").ParamDefinition.NamedParams<import("../mol-util/param-definition").ParamDefinition.Normalize<{
                        durationInMs: number;
                    }>, "animate"> | import("../mol-util/param-definition").ParamDefinition.NamedParams<import("../mol-util/param-definition").ParamDefinition.Normalize<unknown>, "instant">>;
                }>> | undefined;
            }>;
            Replace: PluginCommand<{
                id: string;
                params?: Partial<import("../mol-util/param-definition").ParamDefinition.Values<{
                    durationInMs: import("../mol-util/param-definition").ParamDefinition.Numeric;
                    data: import("../mol-util/param-definition").ParamDefinition.BooleanParam;
                    behavior: import("../mol-util/param-definition").ParamDefinition.BooleanParam;
                    animation: import("../mol-util/param-definition").ParamDefinition.BooleanParam;
                    startAnimation: import("../mol-util/param-definition").ParamDefinition.BooleanParam;
                    canvas3d: import("../mol-util/param-definition").ParamDefinition.BooleanParam;
                    interactivity: import("../mol-util/param-definition").ParamDefinition.BooleanParam;
                    camera: import("../mol-util/param-definition").ParamDefinition.BooleanParam;
                    cameraTransition: import("../mol-util/param-definition").ParamDefinition.Mapped<import("../mol-util/param-definition").ParamDefinition.NamedParams<import("../mol-util/param-definition").ParamDefinition.Normalize<{
                        durationInMs: number;
                    }>, "animate"> | import("../mol-util/param-definition").ParamDefinition.NamedParams<import("../mol-util/param-definition").ParamDefinition.Normalize<unknown>, "instant">>;
                }>> | undefined;
            }>;
            Move: PluginCommand<{
                id: string;
                dir: -1 | 1;
            }>;
            Remove: PluginCommand<{
                id: string;
            }>;
            Apply: PluginCommand<{
                id: string;
            }>;
            Clear: PluginCommand<{}>;
            Upload: PluginCommand<{
                name?: string | undefined;
                description?: string | undefined;
                playOnLoad?: boolean | undefined;
                serverUrl: string;
                params?: Partial<import("../mol-util/param-definition").ParamDefinition.Values<{
                    durationInMs: import("../mol-util/param-definition").ParamDefinition.Numeric;
                    data: import("../mol-util/param-definition").ParamDefinition.BooleanParam;
                    behavior: import("../mol-util/param-definition").ParamDefinition.BooleanParam;
                    animation: import("../mol-util/param-definition").ParamDefinition.BooleanParam;
                    startAnimation: import("../mol-util/param-definition").ParamDefinition.BooleanParam;
                    canvas3d: import("../mol-util/param-definition").ParamDefinition.BooleanParam;
                    interactivity: import("../mol-util/param-definition").ParamDefinition.BooleanParam;
                    camera: import("../mol-util/param-definition").ParamDefinition.BooleanParam;
                    cameraTransition: import("../mol-util/param-definition").ParamDefinition.Mapped<import("../mol-util/param-definition").ParamDefinition.NamedParams<import("../mol-util/param-definition").ParamDefinition.Normalize<{
                        durationInMs: number;
                    }>, "animate"> | import("../mol-util/param-definition").ParamDefinition.NamedParams<import("../mol-util/param-definition").ParamDefinition.Normalize<unknown>, "instant">>;
                }>> | undefined;
            }>;
            Fetch: PluginCommand<{
                url: string;
            }>;
            DownloadToFile: PluginCommand<{
                name?: string | undefined;
                type: PluginState.SnapshotType;
                params?: Partial<import("../mol-util/param-definition").ParamDefinition.Values<{
                    durationInMs: import("../mol-util/param-definition").ParamDefinition.Numeric;
                    data: import("../mol-util/param-definition").ParamDefinition.BooleanParam;
                    behavior: import("../mol-util/param-definition").ParamDefinition.BooleanParam;
                    animation: import("../mol-util/param-definition").ParamDefinition.BooleanParam;
                    startAnimation: import("../mol-util/param-definition").ParamDefinition.BooleanParam;
                    canvas3d: import("../mol-util/param-definition").ParamDefinition.BooleanParam;
                    interactivity: import("../mol-util/param-definition").ParamDefinition.BooleanParam;
                    camera: import("../mol-util/param-definition").ParamDefinition.BooleanParam;
                    cameraTransition: import("../mol-util/param-definition").ParamDefinition.Mapped<import("../mol-util/param-definition").ParamDefinition.NamedParams<import("../mol-util/param-definition").ParamDefinition.Normalize<{
                        durationInMs: number;
                    }>, "animate"> | import("../mol-util/param-definition").ParamDefinition.NamedParams<import("../mol-util/param-definition").ParamDefinition.Normalize<unknown>, "instant">>;
                }>> | undefined;
            }>;
            OpenFile: PluginCommand<{
                file: File;
            }>;
            OpenUrl: PluginCommand<{
                url: string;
                type: PluginState.SnapshotType;
            }>;
        };
    };
    Interactivity: {
        Object: {
            Highlight: PluginCommand<{
                state: State;
                ref: StateTransform.Ref | StateTransform.Ref[];
            }>;
        };
        Structure: {
            Highlight: PluginCommand<{
                loci: StructureElement.Loci;
                isOff?: boolean | undefined;
            }>;
            Select: PluginCommand<{
                loci: StructureElement.Loci;
                isOff?: boolean | undefined;
            }>;
        };
        ClearHighlights: PluginCommand<{}>;
    };
    Layout: {
        Update: PluginCommand<{
            state: Partial<PluginLayoutStateProps>;
        }>;
    };
    Toast: {
        Show: PluginCommand<PluginToast>;
        Hide: PluginCommand<{
            key: string;
        }>;
    };
    Camera: {
        Reset: PluginCommand<{
            durationMs?: number | undefined;
            snapshot?: Partial<Camera.Snapshot> | undefined;
        }>;
        SetSnapshot: PluginCommand<{
            snapshot: Partial<Camera.Snapshot>;
            durationMs?: number | undefined;
        }>;
        Focus: PluginCommand<{
            center: Vec3;
            radius: number;
            durationMs?: number | undefined;
        }>;
    };
    Canvas3D: {
        SetSettings: PluginCommand<{
            settings: Partial<import("../mol-util/param-definition").ParamDefinition.Values<{
                camera: import("../mol-util/param-definition").ParamDefinition.Group<import("../mol-util/param-definition").ParamDefinition.Normalize<{
                    mode: "perspective" | "orthographic";
                    helper: import("../mol-util/param-definition").ParamDefinition.Normalize<{
                        axes: any;
                    }>;
                    stereo: import("../mol-util/param-definition").ParamDefinition.NamedParams<import("../mol-util/param-definition").ParamDefinition.Normalize<unknown>, "off"> | import("../mol-util/param-definition").ParamDefinition.NamedParams<import("../mol-util/param-definition").ParamDefinition.Normalize<{
                        eyeSeparation: any;
                        focus: any;
                    }>, "on">;
                    manualReset: boolean;
                }>>;
                cameraFog: import("../mol-util/param-definition").ParamDefinition.Mapped<import("../mol-util/param-definition").ParamDefinition.NamedParams<import("../mol-util/param-definition").ParamDefinition.Normalize<unknown>, "off"> | import("../mol-util/param-definition").ParamDefinition.NamedParams<import("../mol-util/param-definition").ParamDefinition.Normalize<{
                    intensity: number;
                }>, "on">>;
                cameraClipping: import("../mol-util/param-definition").ParamDefinition.Group<import("../mol-util/param-definition").ParamDefinition.Normalize<{
                    radius: number;
                    far: boolean;
                }>>;
                viewport: import("../mol-util/param-definition").ParamDefinition.Mapped<import("../mol-util/param-definition").ParamDefinition.NamedParams<import("../mol-util/param-definition").ParamDefinition.Normalize<unknown>, "canvas"> | import("../mol-util/param-definition").ParamDefinition.NamedParams<import("../mol-util/param-definition").ParamDefinition.Normalize<{
                    x: number;
                    y: number;
                    width: number;
                    height: number;
                }>, "static-frame"> | import("../mol-util/param-definition").ParamDefinition.NamedParams<import("../mol-util/param-definition").ParamDefinition.Normalize<{
                    x: number;
                    y: number;
                    width: number;
                    height: number;
                }>, "relative-frame">>;
                cameraResetDurationMs: import("../mol-util/param-definition").ParamDefinition.Numeric;
                transparentBackground: import("../mol-util/param-definition").ParamDefinition.BooleanParam;
                multiSample: import("../mol-util/param-definition").ParamDefinition.Group<import("../mol-util/param-definition").ParamDefinition.Normalize<{
                    mode: string;
                    sampleLevel: number;
                }>>;
                postprocessing: import("../mol-util/param-definition").ParamDefinition.Group<import("../mol-util/param-definition").ParamDefinition.Normalize<{
                    occlusion: import("../mol-util/param-definition").ParamDefinition.NamedParams<import("../mol-util/param-definition").ParamDefinition.Normalize<unknown>, "off"> | import("../mol-util/param-definition").ParamDefinition.NamedParams<import("../mol-util/param-definition").ParamDefinition.Normalize<{
                        samples: any;
                        radius: any;
                        bias: any;
                        blurKernelSize: any;
                    }>, "on">;
                    outline: import("../mol-util/param-definition").ParamDefinition.NamedParams<import("../mol-util/param-definition").ParamDefinition.Normalize<unknown>, "off"> | import("../mol-util/param-definition").ParamDefinition.NamedParams<import("../mol-util/param-definition").ParamDefinition.Normalize<{
                        scale: any;
                        threshold: any;
                    }>, "on">;
                    antialiasing: import("../mol-util/param-definition").ParamDefinition.NamedParams<import("../mol-util/param-definition").ParamDefinition.Normalize<unknown>, "off"> | import("../mol-util/param-definition").ParamDefinition.NamedParams<import("../mol-util/param-definition").ParamDefinition.Normalize<{
                        edgeThreshold: any;
                        maxSearchSteps: any;
                    }>, "smaa"> | import("../mol-util/param-definition").ParamDefinition.NamedParams<import("../mol-util/param-definition").ParamDefinition.Normalize<{
                        edgeThresholdMin: any;
                        edgeThresholdMax: any;
                        iterations: any;
                        subpixelQuality: any;
                    }>, "fxaa">;
                }>>;
                marking: import("../mol-util/param-definition").ParamDefinition.Group<import("../mol-util/param-definition").ParamDefinition.Normalize<{
                    enabled: boolean;
                    highlightEdgeColor: import("../mol-util/color").Color;
                    selectEdgeColor: import("../mol-util/color").Color;
                    edgeScale: number;
                    ghostEdgeStrength: number;
                    innerEdgeFactor: number;
                }>>;
                renderer: import("../mol-util/param-definition").ParamDefinition.Group<import("../mol-util/param-definition").ParamDefinition.Normalize<{
                    backgroundColor: import("../mol-util/color").Color;
                    pickingAlphaThreshold: number;
                    interiorDarkening: number;
                    interiorColorFlag: boolean;
                    interiorColor: import("../mol-util/color").Color;
                    highlightColor: import("../mol-util/color").Color;
                    selectColor: import("../mol-util/color").Color;
                    highlightStrength: number;
                    selectStrength: number;
                    markerPriority: number;
                    xrayEdgeFalloff: number;
                    style: import("../mol-util/param-definition").ParamDefinition.NamedParams<import("../mol-util/param-definition").ParamDefinition.Normalize<unknown>, "flat"> | import("../mol-util/param-definition").ParamDefinition.NamedParams<import("../mol-util/param-definition").ParamDefinition.Normalize<unknown>, "metallic"> | import("../mol-util/param-definition").ParamDefinition.NamedParams<import("../mol-util/param-definition").ParamDefinition.Normalize<{
                        lightIntensity: any;
                        ambientIntensity: any;
                        metalness: any;
                        roughness: any;
                        reflectivity: any;
                    }>, "custom"> | import("../mol-util/param-definition").ParamDefinition.NamedParams<import("../mol-util/param-definition").ParamDefinition.Normalize<unknown>, "matte"> | import("../mol-util/param-definition").ParamDefinition.NamedParams<import("../mol-util/param-definition").ParamDefinition.Normalize<unknown>, "glossy"> | import("../mol-util/param-definition").ParamDefinition.NamedParams<import("../mol-util/param-definition").ParamDefinition.Normalize<unknown>, "plastic">;
                    clip: import("../mol-util/param-definition").ParamDefinition.Normalize<{
                        variant: any;
                        objects: any;
                    }>;
                }>>;
                trackball: import("../mol-util/param-definition").ParamDefinition.Group<import("../mol-util/param-definition").ParamDefinition.Normalize<{
                    noScroll: boolean;
                    rotateSpeed: number;
                    zoomSpeed: number;
                    panSpeed: number;
                    spin: boolean;
                    spinSpeed: number;
                    staticMoving: boolean;
                    dynamicDampingFactor: number;
                    minDistance: number;
                    maxDistance: number;
                    gestureScaleFactor: number;
                    maxWheelDelta: number;
                    bindings: {
                        dragRotate: import("../mol-util/binding").Binding;
                        dragRotateZ: import("../mol-util/binding").Binding;
                        dragPan: import("../mol-util/binding").Binding;
                        dragZoom: import("../mol-util/binding").Binding;
                        dragFocus: import("../mol-util/binding").Binding;
                        dragFocusZoom: import("../mol-util/binding").Binding;
                        scrollZoom: import("../mol-util/binding").Binding;
                        scrollFocus: import("../mol-util/binding").Binding;
                        scrollFocusZoom: import("../mol-util/binding").Binding;
                    };
                    autoAdjustMinMaxDistance: import("../mol-util/param-definition").ParamDefinition.NamedParams<import("../mol-util/param-definition").ParamDefinition.Normalize<unknown>, "off"> | import("../mol-util/param-definition").ParamDefinition.NamedParams<import("../mol-util/param-definition").ParamDefinition.Normalize<{
                        minDistanceFactor: any;
                        minDistancePadding: any;
                        maxDistanceFactor: any;
                        maxDistanceMin: any;
                    }>, "on">;
                }>>;
                interaction: import("../mol-util/param-definition").ParamDefinition.Group<import("../mol-util/param-definition").ParamDefinition.Normalize<{
                    maxFps: number;
                    preferAtomPixelPadding: number;
                }>>;
                debug: import("../mol-util/param-definition").ParamDefinition.Group<import("../mol-util/param-definition").ParamDefinition.Normalize<{
                    sceneBoundingSpheres: boolean;
                    visibleSceneBoundingSpheres: boolean;
                    objectBoundingSpheres: boolean;
                    instanceBoundingSpheres: boolean;
                }>>;
                handle: import("../mol-util/param-definition").ParamDefinition.Group<import("../mol-util/param-definition").ParamDefinition.Normalize<{
                    handle: import("../mol-util/param-definition").ParamDefinition.NamedParams<import("../mol-util/param-definition").ParamDefinition.Normalize<unknown>, "off"> | import("../mol-util/param-definition").ParamDefinition.NamedParams<import("../mol-util/param-definition").ParamDefinition.Normalize<{
                        alpha: any;
                        ignoreLight: any;
                        colorX: any;
                        colorY: any;
                        colorZ: any;
                        scale: any;
                        doubleSided: any;
                        flipSided: any;
                        flatShaded: any;
                        xrayShaded: any;
                        quality: any;
                    }>, "on">;
                }>>;
            }>> | ((old: Canvas3DProps) => Partial<Canvas3DProps> | void);
        }>;
        ResetSettings: PluginCommand<{}>;
    };
};
