/**
 * Copyright (c) 2020 mol* contributors, licensed under MIT, See LICENSE file for more info.
 *
 * @author Alexander Rose <alexander.rose@weirdbyte.de>
 */
/// <reference types="react" />
import { CollapsableControls, PurePluginUIComponent } from '../base';
import { StructureElement } from '../../mol-model/structure';
import { Mat4 } from '../../mol-math/linear-algebra';
import { ParamDefinition as PD } from '../../mol-util/param-definition';
import { StateObjectRef, StateObjectCell } from '../../mol-state';
import { PluginStateObject } from '../../mol-plugin-state/objects';
import { StructureSelectionHistoryEntry } from '../../mol-plugin-state/manager/structure/selection';
export declare class StructureSuperpositionControls extends CollapsableControls {
    defaultState(): {
        isCollapsed: boolean;
        header: string;
        brand: {
            accent: "gray";
            svg: typeof import("../controls/icons").FlipToFrontSvg;
        };
        isHidden: boolean;
    };
    componentDidMount(): void;
    renderControls(): JSX.Element;
}
export declare const StructureSuperpositionParams: {
    alignSequences: PD.BooleanParam;
};
export declare type StructureSuperpositionOptions = PD.ValuesFor<typeof StructureSuperpositionParams>;
declare type SuperpositionControlsState = {
    isBusy: boolean;
    action?: 'byChains' | 'byAtoms' | 'options';
    canUseDb?: boolean;
    options: StructureSuperpositionOptions;
};
interface LociEntry {
    loci: StructureElement.Loci;
    label: string;
    cell: StateObjectCell<PluginStateObject.Molecule.Structure>;
}
interface AtomsLociEntry extends LociEntry {
    atoms: StructureSelectionHistoryEntry[];
}
export declare class SuperpositionControls extends PurePluginUIComponent<{}, SuperpositionControlsState> {
    state: SuperpositionControlsState;
    componentDidMount(): void;
    get selection(): import("../../mol-plugin-state/manager/structure/selection").StructureSelectionManager;
    transform(s: StateObjectRef<PluginStateObject.Molecule.Structure>, matrix: Mat4): Promise<void>;
    superposeChains: () => Promise<void>;
    superposeAtoms: () => Promise<void>;
    superposeDb: () => Promise<void>;
    toggleByChains: () => void;
    toggleByAtoms: () => void;
    toggleOptions: () => void;
    highlight(loci: StructureElement.Loci): void;
    moveHistory(e: StructureSelectionHistoryEntry, direction: 'up' | 'down'): void;
    focusLoci(loci: StructureElement.Loci): void;
    lociEntry(e: LociEntry, idx: number): JSX.Element;
    historyEntry(e: StructureSelectionHistoryEntry, idx: number): JSX.Element;
    atomsLociEntry(e: AtomsLociEntry, idx: number): JSX.Element;
    get chainEntries(): LociEntry[];
    get atomEntries(): AtomsLociEntry[];
    addByChains(): JSX.Element;
    addByAtoms(): JSX.Element;
    superposeByDbMapping(): JSX.Element;
    private setOptions;
    render(): JSX.Element;
}
export {};
