import { PluginContext } from 'molstar/lib/mol-plugin/context';
import { StateObject } from 'molstar/lib/mol-state';
import { PluginStateObject } from 'molstar/lib/mol-plugin-state/objects';
import { StateBuilder } from 'molstar/lib/mol-state';
import { Loci } from 'molstar/lib/mol-model/loci';
import { QueryParam } from './helpers';
import { Structure } from "molstar/lib/mol-model/structure";
import { StructureElement } from 'molstar/lib/mol-model/structure';
import { Representation } from 'molstar/lib/mol-repr/representation';
import { StructureRepresentationProvider } from 'molstar/lib/mol-repr/structure/representation';
import { ParamDefinition as PD } from 'molstar/lib/mol-util/param-definition';
declare class DrugflowMolstarPlugin {
    private _ev;
    readonly events: {
        loadComplete: import("rxjs").Subject<boolean>;
    };
    plugin: PluginContext;
    assemblyRef: string;
    granularity: string;
    selected_info: any;
    selectedParams: any;
    isHighlightColorUpdated: boolean;
    private hiddenState;
    init(targetElement: HTMLElement, params?: any): Promise<void>;
    get state(): import("Molstar/mol-state/state").State;
    private applyState;
    private create_ligand_view;
    create_tmp_label_comp(): Promise<void>;
    create_surf_comp(name?: string): Promise<void>;
    create_tmp_ligand_comp(chain_id: string, ligand_res_id: number): Promise<void>;
    remove_tmp_comp(comp_ref: string, _structure_id?: string): Promise<void>;
    /**
     * 创建配体查询（排除水分子）
     */
    private createLigandQuery;
    /**
     * 创建多肽链查询（auth_asym_id包含'p'）
     */
    private createPeptideQuery;
    /**
     * 创建非多肽聚合物查询（排除多肽链）
     */
    private createNonPeptidePolymerQuery;
    /**
     * 创建基础结构（从model）
     */
    createBaseStructure(model: any, structureId: string): StateBuilder.To<PluginStateObject.Molecule.Structure, import("Molstar/mol-state/transformer").StateTransformer<PluginStateObject.Molecule.Model, PluginStateObject.Molecule.Structure, PD.Normalize<{
        type: PD.NamedParams<PD.Normalize<{
            dynamicBonds: any;
        }>, "auto"> | PD.NamedParams<PD.Normalize<{
            dynamicBonds: any;
            id: any;
        }>, "assembly"> | PD.NamedParams<PD.Normalize<{
            dynamicBonds: any;
            ijkMin: any;
            ijkMax: any;
        }>, "symmetry"> | PD.NamedParams<PD.Normalize<{
            dynamicBonds: any;
        }>, "model"> | PD.NamedParams<PD.Normalize<{
            dynamicBonds: any;
            radius: any;
        }>, "symmetry-mates"> | PD.NamedParams<PD.Normalize<{
            dynamicBonds: any;
            generators: any;
        }>, "symmetry-assembly">;
    }>>>;
    /**
     * 异步构建完整蛋白结构（推荐使用）
     * 使用 createComponent API，结构更清晰
     */
    buildFullProteinStructureAsync(structureId?: string, options?: {
        polymer?: boolean;
        ligand?: boolean;
        water?: boolean;
    }): Promise<string[]>;
    /**
     * 异步构建配体口袋组件
     * 创建配体和周围环境两个组件
     */
    private buildLigandPocketComponentsAsync;
    /**
     * 异步构建多肽链组件
     * 创建多肽链组件和可选的背景组件
     */
    private buildPeptideComponentsAsync;
    /**
     * 加载数据（从URL或字符串）
     */
    loadData(params: {
        url?: string;
        pdbString?: string;
        isBinary?: boolean;
    }): Promise<import("Molstar/mol-state/object").StateObjectSelector<PluginStateObject.Data.String | PluginStateObject.Data.Binary, import("Molstar/mol-state/transformer").StateTransformer<StateObject<any, StateObject.Type<any>>, StateObject<any, StateObject.Type<any>>, any>>>;
    /**
     * 解析轨迹并创建模型
     */
    parseAndCreateModel(data: any, format: 'mmcif' | 'pdb' | 'sdf' | 'mol' | 'mol2' | 'xyz' | 'gro' | 'pdbqt' | 'cifCore', modelIndex?: number): Promise<import("Molstar/mol-state/object").StateObjectSelector<PluginStateObject.Molecule.Model, import("Molstar/mol-state/transformer").StateTransformer<StateObject<any, StateObject.Type<any>>, StateObject<any, StateObject.Type<any>>, any>>>;
    /**
     * 更新assemblyRef
     */
    private updateAssemblyRef;
    /**
     * 获取所有已加载的结构列表
     * @returns 结构信息数组
     */
    getLoadedStructures(): {
        index: number;
        ref: string;
        label: string;
        components: {
            key: string | undefined;
            ref: string;
            label: string | undefined;
        }[];
    }[];
    /**
     * 获取指定组件的所有表示
     * @param componentRef - 组件引用
     * @returns 表示信息数组
     */
    getRepresentations(componentRef: string): any[];
    /**
     * 获取指定 Structure 的所有 contact
     * @param structureRef - Structure 引用（如 'Structure_0'）
     * @returns Contact 信息数组
     */
    getContacts(structureRef: string): any[];
    /**
     * 获取所有组件及其表示的完整树形结构
     * @returns 完整的结构树
     */
    getStructureTree(): {
        components: {
            representations: any[];
            key: string | undefined;
            ref: string;
            label: string | undefined;
        }[];
        contacts: any[];
        index: number;
        ref: string;
        label: string;
    }[];
    /**
     * 更新表示参数
     * @param reprRef - 表示引用
     * @param params - 新的参数
     */
    updateRepresentation(reprRef: string, params: any): Promise<void>;
    /**
     * 删除指定的表示
     * @param reprRef - 表示引用
     */
    deleteRepresentation(reprRef: string): Promise<void>;
    /**
     * 切换表示的可见性
     * @param reprRef - 表示引用
     */
    toggleRepresentationVisibility(reprRef: string): void;
    /**
     * 切换 contact 的可见性
     * @param contactRef - contact 引用
     */
    toggleContactVisibility(contactRef: string): void;
    /**
     * 删除组件及其所有表示
     * @param componentRef - 组件引用
     */
    deleteComponent(componentRef: string): Promise<void>;
    /**
     * 删除整个结构（Structure）及其所有组件和表示
     * @param structureId - 结构ID（如 '0', '1', 'ref-1' 等）
     * @returns 是否成功删除
     */
    deleteStructure(structureId: string): Promise<boolean>;
    /**
     * 创建新组件
     * @param options - 组件配置选项
     * @returns 组件引用
     */
    createComponent(options: {
        /** 组件类型: 'polymer', 'ligand', 'water', 'ion', 'all', 'custom' */
        type: 'polymer' | 'ligand' | 'water' | 'ion' | 'all' | 'custom';
        /** 组件引用（可选，自动生成） */
        componentRef?: string;
        /** 结构ID（可选，默认'0'） */
        structureId?: string;
        /** 自定义查询表达式（type='custom'时使用） */
        expression?: any;
        /** 组件标签（可选） */
        label?: string;
    }): Promise<string | null>;
    /**
     * 获取当前用户选择的 Expression
     * @returns 选择的 MolScript Expression，如果没有选择则返回 null
     */
    getSelectionExpression(): Promise<any | null>;
    /**
     * 修改表示的显示类型
     * @param reprRef - 表示引用
     * @param type - 新的类型 (cartoon, ball-and-stick, surface等)
     * @param params - 额外参数
     */
    changeRepresentationType(reprRef: string, type: string, params?: any): Promise<void>;
    /**
     * 修改表示的颜色主题
     * @param reprRef - 表示引用
     * @param colorTheme - 颜色主题名称
     */
    changeRepresentationColor(reprRef: string, colorTheme: string): Promise<void>;
    /**
     * 修改表示的透明度
     * @param reprRef - 表示引用
     * @param alpha - 透明度 (0-1)
     */
    changeRepresentationAlpha(reprRef: string, alpha: number): Promise<void>;
    /**
     * 加载并渲染完整蛋白结构
     * @param url - PDB文件URL
     * @param format - 文件格式 (mmcif, pdb, sdf等)
     * @param options - 可选参数
     */
    /**
     * 加载完整蛋白结构
     * 流程：Load Data → Parse Model → Add Structure → Create Components
     *
     * @param url - 蛋白文件URL
     * @param format - 文件格式
     * @param options - 加载选项
     * @returns 创建的组件引用列表
     */
    loadFullProtein(url: string, format?: 'mmcif' | 'pdb' | 'sdf' | 'mol' | 'mol2' | 'xyz' | 'gro' | 'pdbqt' | 'cifCore', options?: {
        isBinary?: boolean;
        modelIndex?: number;
        showPolymer?: boolean;
        showLigand?: boolean;
        showWater?: boolean;
        pdbString?: string;
    }): Promise<{
        componentRefs: string[];
        structureId: string;
    }>;
    /**
     * 加载并渲染配体口袋
     * 流程：Load Data → Parse Model → Add Structure → Create Ligand Pocket Components
     *
     * 支持多次调用创建多个配体口袋叠加视图进行比较
     *
     * @param url - PDB文件URL
     * @param ligandInfo - 配体信息
     * @param format - 文件格式
     * @param options - 可选参数
     * @returns 创建的组件引用列表 [ligandRef, surroundingsRef]
     *
     */
    loadLigandPocket(url: string, ligandInfo: {
        name?: string;
        site?: string;
        ligandId?: string;
    }, format?: 'mmcif' | 'pdb' | 'sdf' | 'mol' | 'mol2' | 'xyz' | 'gro' | 'pdbqt' | 'cifCore', options?: {
        isBinary?: boolean;
        modelIndex?: number;
        pdbString?: string;
        clearPrevious?: boolean;
        radius?: number;
    }): Promise<{
        componentRefs: string[];
        structureId: string;
    }>;
    /**
     * 加载并渲染多肽链
     * 流程：Load Data → Parse Model → Add Structure → Create Peptide Components
     *
     * @param url - PDB文件URL
     * @param format - 文件格式
     * @param options - 可选参数
     * @returns 创建的组件引用列表
     *
     * @example
     * ```javascript
     * // 只显示多肽链
     * const components = await viewer.loadPeptide('protein.pdb', 'pdb', {
     *     showBackground: false,
     *     showLigand: true
     * });
     *
     * // 显示多肽链和背景
     * const components = await viewer.loadPeptide('protein.pdb', 'pdb', {
     *     showBackground: true,
     *     showLigand: true,
     *     showWater: false
     * });
     * ```
     */
    loadPeptide(url: string, format?: 'mmcif' | 'pdb' | 'sdf' | 'mol' | 'mol2' | 'xyz' | 'gro' | 'pdbqt' | 'cifCore', options?: {
        isBinary?: boolean;
        modelIndex?: number;
        showBackground?: boolean;
        showLigand?: boolean;
        showWater?: boolean;
        pdbString?: string;
        clearPrevious?: boolean;
        peptideId?: string;
    }): Promise<{
        componentRefs: string[];
        structureId: string;
    }>;
    private getObj;
    /**
     * 为组件添加3D表示
     *
     * @example
     * ```javascript
     * // 添加cartoon表示
     * await viewer.add_repr({
     *     componentRef: 'Polymer',
     *     type: 'cartoon',
     *     colorTheme: 'secondary-structure'
     * });
     *
     * // 添加半透明surface
     * await viewer.add_repr({
     *     componentRef: 'Polymer',
     *     type: 'molecular-surface',
     *     colorTheme: 'hydrophobicity',
     *     alpha: 0.5
     * });
     * ```
     *
     * @param options - 表示配置选项
     * @returns 表示引用
     */
    add_repr(options: {
        /** 组件引用，如 'Polymer', 'Ligand' */
        componentRef: string;
        /** 表示引用（可选，自动生成） */
        reprRef?: string;
        /**
         * 表示类型
         * 常用值: 'cartoon', 'ball-and-stick', 'spacefill', 'molecular-surface', 'line', 'point'
         */
        type: string;
        /**
         * 颜色主题（可选）
         * 常用值: 'secondary-structure', 'element-symbol', 'chain-id', 'residue-name',
         *         'uniform', 'hydrophobicity', 'atom-id', 'residue-index'
         */
        colorTheme?: string;
        /** 透明度 0-1（可选，默认1） */
        alpha?: number;
        /** 是否初始可见（默认true） */
        visible?: boolean;
        /** 结构ID（可选，默认'0'） */
        structureId?: string;
        /** 额外的类型参数（可选） */
        params?: any;
    }): Promise<string | null>;
    private visual_tree;
    private parse_selection_info;
    private update_selected_info;
    set_visibility(ref: string): void;
    clear(): Promise<void>;
    add_click_listener(): void;
    add_mouse_event(func: any): void;
    private add_selection_info;
    /**
     * 根据参数获取 Loci
     * @param params - 查询参数
     * @param structureNumber - 结构编号（1-based，可选）
     * @param _expand - 扩展范围（可选，保留用于兼容性）
     * @param structureRef - 结构引用（如 'Structure_0'，可选）
     * @returns Loci 对象
     */
    getLociForParams(params: QueryParam[], structureNumber?: number, _expand?: number, structureRef?: string): {
        kind: "empty-loci";
    } | StructureElement.Loci;
    get_basic_info(): any;
    canvas: {
        toggleControls: (isVisible?: boolean) => void;
        toggleExpanded: (isExpanded?: boolean) => void;
        setBgColor: (color?: {
            r: number;
            g: number;
            b: number;
        }) => void;
        applySettings: (settings?: {
            color?: {
                r: number;
                g: number;
                b: number;
            };
            lighting?: string;
        }) => void;
        toggleSelect: (isSelect?: boolean) => void;
    };
    measure: {
        add_distance: () => Promise<void>;
        add_angle: () => Promise<void>;
        add_dihedral: () => Promise<void>;
        add_orientation: () => Promise<void>;
        add_plane: () => Promise<void>;
        clean_all_measure: () => Promise<void>;
    };
    visual: {
        select_all: () => Promise<void>;
        select_none: () => void;
        expand_select: (expand: number, type?: string) => Promise<void>;
        deselect_current: () => Promise<void>;
        inverse_select: () => Promise<void>;
        hideSelect: () => Promise<void>;
        _showSelect: (type?: string) => Promise<0 | -1>;
        changeProps: (val: any) => Promise<void>;
        toggleSpin: (isSpinning?: boolean, resetCamera?: boolean) => void;
        focus: (params: QueryParam[], structureNumber?: number, expand_num?: number) => void;
        get_current_loci: () => Promise<{
            kind: "empty-loci";
        }>;
        focus_loci: (loci: Loci | Loci[]) => void;
        focus_now: () => Promise<void>;
        select: (params: QueryParam[], deselect?: boolean) => void;
        camera_reset: () => Promise<void>;
        /**
         * 应用所有隐藏状态（内部方法）
         */
        _applyHiddenState: () => Promise<void>;
        /**
         * 使用透明度隐藏指定的链
         * @param chainId 链ID，例如 'A', 'B'
         */
        hideChain: (chainId: string) => Promise<void>;
        /**
         * 清除指定链的透明度来显示
         * @param chainId 链ID，例如 'A', 'B'
         */
        showChain: (chainId: string) => Promise<void>;
        /**
         * 使用透明度隐藏指定链中的残基
         * @param chainId 链ID，例如 'A', 'B'
         * @param residueIds 残基序号数组，例如 [10, 15, 20] 或范围 { start: 10, end: 20 }
         */
        hideResidues: (chainId: string, residueIds: number[] | {
            start: number;
            end: number;
        }) => Promise<void>;
        /**
         * 清除指定链中残基的透明度来显示
         * @param chainId 链ID，例如 'A', 'B'
         * @param residueIds 残基序号数组，例如 [10, 15, 20] 或范围 { start: 10, end: 20 }
         */
        showResidues: (chainId: string, residueIds: number[] | {
            start: number;
            end: number;
        }) => Promise<void>;
        /**
         * 切换残基的显示/隐藏状态
         * @param chainId 链ID
         * @param residueIds 残基序号数组或范围
         * @param visible true显示，false隐藏
         */
        toggleResidues: (chainId: string, residueIds: number[] | {
            start: number;
            end: number;
        }, visible: boolean) => Promise<void>;
        /**
         * 使用透明度隐藏指定的配体
         * @param chainId 链ID
         * @param resId 残基序号（可选）
         * @param resName 残基名称（可选）
         */
        hideLigand: (chainId: string, resId?: number, resName?: string) => Promise<void>;
        /**
         * 清除指定配体的透明度来显示
         * @param chainId 链ID
         * @param resId 残基序号（可选）
         * @param resName 残基名称（可选）
         */
        showLigand: (chainId: string, resId?: number, resName?: string) => Promise<void>;
        /**
         * 批量隐藏多个链
         * @param chainIds 链ID数组，例如 ['A', 'B', 'C']
         */
        hideChains: (chainIds: string[]) => Promise<void>;
        /**
         * 批量显示多个链
         * @param chainIds 链ID数组，例如 ['A', 'B', 'C']
         */
        showChains: (chainIds: string[]) => Promise<void>;
        /**
         * 切换链的显示/隐藏状态
         * @param chainId 链ID
         * @param visible true显示，false隐藏
         */
        toggleChain: (chainId: string, visible: boolean) => Promise<void>;
        /**
         * 切换配体的显示/隐藏状态
         * @param chainId 链ID
         * @param visible true显示，false隐藏
         * @param resId 残基序号（可选）
         * @param resName 残基名称（可选）
         */
        toggleLigand: (chainId: string, visible: boolean, resId?: number, resName?: string) => Promise<void>;
        /**
         * 清除所有透明度，恢复所有被隐藏的元素
         */
        clearAllTransparency: () => Promise<void>;
        /**
         * 获取当前隐藏状态
         */
        getHiddenState: () => {
            chains: string[];
            ligands: string[];
            residues: {
                [chainId: string]: number[];
            };
        };
    };
    add_shape(structure: any, params: any): Promise<import("Molstar/mol-state/object").StateObjectSelector<PluginStateObject.Molecule.Structure.Representation3D, import("Molstar/mol-state/transformer").StateTransformer<StateObject<any, StateObject.Type<any>>, StateObject<any, StateObject.Type<any>>, any>>>;
    remove_shape(selector: any): void;
    add_contact(contactPair: {
        structure_ref: string;
        start_query: QueryParam[];
        end_query: QueryParam[];
        interactionType: string;
        color: number;
        id: string;
    }): Promise<void>;
    /**
     * 添加自动计算的相互作用表示（使用 molstar 内置的 Interactions）
     * 此方法会自动计算和显示选定区域的所有相互作用（氢键、疏水作用、π-π堆积等）
     *
     * @param componentRef - 组件引用（如 'Ligand_0'）
     * @param options - 可选参数
     * @returns 表示引用
     *
     * @example
     * ```javascript
     * // 为配体添加相互作用表示
     * await viewer.add_interactions_repr({
     *     componentRef: 'Ligand_0',
     *     structureId: '0'
     * });
     *
     * // 自定义相互作用参数
     * await viewer.add_interactions_repr({
     *     componentRef: 'Ligand_plus_0',
     *     structureId: '0',
     *     interactionTypes: ['hydrogen-bond', 'hydrophobic', 'pi-stacking']
     * });
     *
     * // 只显示跨链相互作用（多肽场景）
     * await viewer.add_interactions_repr({
     *     componentRef: 'Polymer_p_plus_1',
     *     structureId: '1',
     *     interChainOnly: true  // 只显示不同链之间的相互作用
     * });
     * ```
     */
    add_interactions_repr(options: {
        /** 组件引用 */
        componentRef: string;
        /** 表示引用（可选，自动生成） */
        reprRef?: string;
        /** 结构ID（可选，默认'0'） */
        structureId?: string;
        /**
         * 相互作用类型（可选）
         * 可用值: 'hydrogen-bond', 'halogen-bond', 'ionic', 'metal-coordination',
         *         'cation-pi', 'pi-stacking', 'hydrophobic', 'weak-hydrogen-bond'
         */
        interactionTypes?: string[];
        /** 是否只显示跨链相互作用（默认false） */
        interChainOnly?: boolean;
        /** 是否初始可见（默认true） */
        visible?: boolean;
        /** 额外参数（可选） */
        params?: any;
    }): Promise<string | null>;
    /**
     * 为指定组件自动计算并显示相互作用
     * 这是一个通用方法，可用于任意组件（配体、多肽、聚合物等）
     *
     * @param componentRef - 组件引用（如 'Polymer_p1', 'Ligand_plus_0' 等）
     * @param structureId - 结构ID（可选，默认'0'）
     * @param interactionTypes - 相互作用类型（可选）
     * @param interChainOnly - 是否只显示跨链相互作用（可选，默认自动判断）
     * @returns 创建的 interactions 表示引用
     *
     * @example
     * ```javascript
     * // 为多肽显示相互作用（自动启用跨链过滤）
     * await viewer.show_component_interactions('Polymer_p_plus_1', '1');
     *
     * // 为配体显示相互作用
     * await viewer.show_component_interactions('Ligand_plus_0', '0');
     *
     * // 自定义相互作用类型
     * await viewer.show_component_interactions('Polymer_p2', '2', ['hydrogen-bond', 'ionic']);
     * ```
     */
    show_component_interactions(componentRef: string, structureId?: string, interactionTypes?: string[], interChainOnly?: boolean): Promise<string | null>;
    /**
     * 创建多肽周围环境组件（包含多肽本身+周围残基）
     * 用于计算多肽与周围残基之间的相互作用
     *
     * @param options - 配置选项
     * @returns 周围环境组件引用
     *
     * @example
     * ```javascript
     * await viewer.create_peptide_surroundings_component({
     *     peptideId: '1',
     *     peptideChainName: 'p',
     *     structureId: '1',
     *     radius: 5
     * });
     * ```
     */
    create_peptide_surroundings_component(options: {
        peptideId: string;
        peptideChainName: string;
        structureId: string;
        radius?: number;
    }): Promise<string | null>;
    /**
     * 创建背景肽链周围环境组件（包含背景肽链+背景蛋白）
     * 用于计算背景肽链与背景蛋白之间的相互作用
     *
     * @param options - 配置选项
     * @returns 周围环境组件引用
     *
     * @example
     * ```javascript
     * await viewer.create_peptide_background_surroundings_component({
     *     structureId: 'Original',
     *     radius: 5
     * });
     * ```
    */
    create_peptide_background_surroundings_component(options: {
        structureId: string;
        radius?: number;
    }): Promise<string | null>;
    /**
     * 导出 Molstar 内置计算的 Interaction 数据
     * 可用于绘制 2D interaction 图
     *
     * @param componentRef - 组件引用（如 'Ligand_plus_0'）
     * @param structureId - 结构ID（可选，默认'0'）
     * @param filterResId - 可选的残基ID，如果提供则只返回与该残基相关的相互作用
     * @returns Interaction 数据数组
     *
     * @example
     * ```javascript
     * // 导出配体周围的所有相互作用数据
     * const interactions = await viewer.exportInteractionsData('Ligand_plus_0');
     *
     * // 只导出与残基 1102 相关的相互作用
     * const ligandInteractions = await viewer.exportInteractionsData('Ligand_plus_0', '0', 1102);
     * console.log(ligandInteractions);
     * // [
     * //   {
     * //     type: 'hydrogen-bond',
     * //     atomA: { chainId: 'A', resId: 1102, resName: 'KY9', atomName: 'O38', atomId: 38 },
     * //     atomB: { chainId: 'A', resId: 745, resName: 'LYS', atomName: 'NZ', atomId: null },
     * //     distance: 2.87
     * //   },
     * //   ...
     * // ]
     * ```
     */
    exportInteractionsData(componentRef: string, structureId?: string, filterResId?: number): Promise<any[]>;
    /**
     * 辅助方法：从 structure、unit、features 和 feature index 获取原子信息
     * @private
     */
    private getAtomInfoFromFeature;
    /**
     * 导出配体为 SDF 格式（用于 RDKit.js 等）
     *
     * @param ligandComponentRef - 配体组件引用（如 'Ligand_MK1'）
     * @param structureId - 结构ID（可选，默认'0'）
     * @returns SDF 格式字符串
     *
     * @example
     * ```javascript
     * // 导出配体为 SDF
     * const sdf = await viewer.exportLigandAsSDF('Ligand_MK1', '0');
     *
     * // 然后用 RDKit.js 生成 2D 坐标
     * const mol = RDKit.get_mol(sdf);
     * mol.generate_2d_coords();
     * ```
     */
    exportLigandAsSDF(ligandComponentRef: string, structureId?: string): Promise<string>;
    /**
     * 导出配体为 MOL 格式（备用方案）
     *
     * @param ligandComponentRef - 配体组件引用
     * @param structureId - 结构ID
     * @returns MOL 格式字符串
     */
    exportLigandAsMOL(ligandComponentRef: string, structureId?: string): Promise<string>;
    /**
     * 导出配体的完整信息（包括原子、键、坐标）
     * 返回更结构化的数据，方便后续处理
     *
     * @param ligandComponentRef - 配体组件引用
     * @param structureId - 结构ID
     * @returns 配体信息对象
     */
    exportLigandStructure(ligandComponentRef: string, structureId?: string): Promise<any>;
    /**
     * 删除指定的 contact/interaction 表示
     * @param contactId - contact 的 ID（通常是 prolif_id）
     */
    remove_contact(contactId: string): Promise<void>;
    addInteractionRepr(a: any, b: any, s_ref: string, options?: any): Promise<void>;
    ArbitrarySphereVisuals: {
        'arbitrary-sphere': (ctx: any, getParams: any) => import("molstar/lib/mol-repr/structure/representation").StructureRepresentation<{
            x: PD.Numeric;
            y: PD.Numeric;
            z: PD.Numeric;
            l1: PD.Numeric;
            l2: PD.Numeric;
            l3: PD.Numeric;
            unitKinds: PD.MultiSelect<"spheres" | "gaussians" | "atomic">;
            includeParent: PD.BooleanParam;
            doubleSided: PD.BooleanParam;
            flipSided: PD.BooleanParam;
            flatShaded: PD.BooleanParam;
            ignoreLight: PD.BooleanParam;
            xrayShaded: PD.Select<boolean | "inverted">;
            transparentBackfaces: PD.Select<"on" | "off" | "opaque">;
            bumpFrequency: PD.Numeric;
            bumpAmplitude: PD.Numeric;
            alpha: PD.Numeric;
            quality: PD.Select<"auto" | "medium" | "high" | "low" | "custom" | "highest" | "higher" | "lower" | "lowest">;
            material: PD.Group<PD.Normalize<{
                metalness: number;
                roughness: number;
                bumpiness: number;
            }>>;
            clip: PD.Group<PD.Normalize<{
                variant: import("Molstar/mol-util/clip").Clip.Variant;
                objects: PD.Normalize<{
                    type: any;
                    invert: any;
                    position: any;
                    rotation: any;
                    scale: any;
                }>[];
            }>>;
            instanceGranularity: PD.BooleanParam;
        }>;
    };
    ArbitrarySphereParams: {
        x: PD.Numeric;
        y: PD.Numeric;
        z: PD.Numeric;
        l1: PD.Numeric;
        l2: PD.Numeric;
        l3: PD.Numeric;
        unitKinds: PD.MultiSelect<"spheres" | "gaussians" | "atomic">;
        includeParent: PD.BooleanParam;
        doubleSided: PD.BooleanParam;
        flipSided: PD.BooleanParam;
        flatShaded: PD.BooleanParam;
        ignoreLight: PD.BooleanParam;
        xrayShaded: PD.Select<boolean | "inverted">;
        transparentBackfaces: PD.Select<"on" | "off" | "opaque">;
        bumpFrequency: PD.Numeric;
        bumpAmplitude: PD.Numeric;
        alpha: PD.Numeric;
        quality: PD.Select<"auto" | "medium" | "high" | "low" | "custom" | "highest" | "higher" | "lower" | "lowest">;
        material: PD.Group<PD.Normalize<{
            metalness: number;
            roughness: number;
            bumpiness: number;
        }>>;
        clip: PD.Group<PD.Normalize<{
            variant: import("Molstar/mol-util/clip").Clip.Variant;
            objects: PD.Normalize<{
                type: any;
                invert: any;
                position: any;
                rotation: any;
                scale: any;
            }>[];
        }>>;
        instanceGranularity: PD.BooleanParam;
    };
    ArbitrarySphereVisual: (materialId: any) => import("molstar/lib/mol-repr/structure/units-visual").UnitsVisual<{
        x: PD.Numeric;
        y: PD.Numeric;
        z: PD.Numeric;
        l1: PD.Numeric;
        l2: PD.Numeric;
        l3: PD.Numeric;
        unitKinds: PD.MultiSelect<"spheres" | "gaussians" | "atomic">;
        includeParent: PD.BooleanParam;
        doubleSided: PD.BooleanParam;
        flipSided: PD.BooleanParam;
        flatShaded: PD.BooleanParam;
        ignoreLight: PD.BooleanParam;
        xrayShaded: PD.Select<boolean | "inverted">;
        transparentBackfaces: PD.Select<"on" | "off" | "opaque">;
        bumpFrequency: PD.Numeric;
        bumpAmplitude: PD.Numeric;
        alpha: PD.Numeric;
        quality: PD.Select<"auto" | "medium" | "high" | "low" | "custom" | "highest" | "higher" | "lower" | "lowest">;
        material: PD.Group<PD.Normalize<{
            metalness: number;
            roughness: number;
            bumpiness: number;
        }>>;
        clip: PD.Group<PD.Normalize<{
            variant: import("Molstar/mol-util/clip").Clip.Variant;
            objects: PD.Normalize<{
                type: any;
                invert: any;
                position: any;
                rotation: any;
                scale: any;
            }>[];
        }>>;
        instanceGranularity: PD.BooleanParam;
    }>;
    ConfalPyramidsRepresentation: (ctx: any, getParams: any) => Representation<Structure, {
        x: PD.Numeric;
        y: PD.Numeric;
        z: PD.Numeric;
        l1: PD.Numeric;
        l2: PD.Numeric;
        l3: PD.Numeric;
        unitKinds: PD.MultiSelect<"spheres" | "gaussians" | "atomic">;
        includeParent: PD.BooleanParam;
        doubleSided: PD.BooleanParam;
        flipSided: PD.BooleanParam;
        flatShaded: PD.BooleanParam;
        ignoreLight: PD.BooleanParam;
        xrayShaded: PD.Select<boolean | "inverted">;
        transparentBackfaces: PD.Select<"on" | "off" | "opaque">;
        bumpFrequency: PD.Numeric;
        bumpAmplitude: PD.Numeric;
        alpha: PD.Numeric;
        quality: PD.Select<"auto" | "medium" | "high" | "low" | "custom" | "highest" | "higher" | "lower" | "lowest">;
        material: PD.Group<PD.Normalize<{
            metalness: number;
            roughness: number;
            bumpiness: number;
        }>>;
        clip: PD.Group<PD.Normalize<{
            variant: import("Molstar/mol-util/clip").Clip.Variant;
            objects: PD.Normalize<{
                type: any;
                invert: any;
                position: any;
                rotation: any;
                scale: any;
            }>[];
        }>>;
        instanceGranularity: PD.BooleanParam;
    }, import("molstar/lib/mol-repr/structure/representation").StructureRepresentationState>;
    ArbitrarySphereRepresentationProvider: StructureRepresentationProvider<{
        x: PD.Numeric;
        y: PD.Numeric;
        z: PD.Numeric;
        l1: PD.Numeric;
        l2: PD.Numeric;
        l3: PD.Numeric;
        unitKinds: PD.MultiSelect<"spheres" | "gaussians" | "atomic">;
        includeParent: PD.BooleanParam;
        doubleSided: PD.BooleanParam;
        flipSided: PD.BooleanParam;
        flatShaded: PD.BooleanParam;
        ignoreLight: PD.BooleanParam;
        xrayShaded: PD.Select<boolean | "inverted">;
        transparentBackfaces: PD.Select<"on" | "off" | "opaque">;
        bumpFrequency: PD.Numeric;
        bumpAmplitude: PD.Numeric;
        alpha: PD.Numeric;
        quality: PD.Select<"auto" | "medium" | "high" | "low" | "custom" | "highest" | "higher" | "lower" | "lowest">;
        material: PD.Group<PD.Normalize<{
            metalness: number;
            roughness: number;
            bumpiness: number;
        }>>;
        clip: PD.Group<PD.Normalize<{
            variant: import("Molstar/mol-util/clip").Clip.Variant;
            objects: PD.Normalize<{
                type: any;
                invert: any;
                position: any;
                rotation: any;
                scale: any;
            }>[];
        }>>;
        instanceGranularity: PD.BooleanParam;
    }, "arbitrary-sphere">;
    createArbitrarySphereMesh: (ctx: any, unit: any, structure: any, theme: any, props: any, mesh: any) => import("Molstar/mol-geo/geometry/mesh/mesh").Mesh;
}
export default DrugflowMolstarPlugin;
