import * as React from "react";
import { StructureViewerInterface } from '../RcsbFvStructure/StructureViewerInterface';
import '../scss/RcsbFvMolstarStyle.module.scss';
import { RcsbFvStructureConfigInterface } from "../RcsbFvStructure/RcsbFvStructure";
import { CSSProperties, ReactNode } from "react";
import { StructureViewerBehaviourObserverInterface } from "../RcsbFvStructure/StructureViewerBehaviourInterface";
import { RcsbFvCustomSequenceInterface } from "../RcsbFvSequence/RcsbFvCustomSequence";
import { RcsbFvCustomContextManager } from "../RcsbFvContextManager/RcsbFvCustomContextManager";
export interface RcsbFv3DCssConfig {
    overwriteCss?: boolean;
    rootPanel?: CSSProperties;
    structurePanel?: CSSProperties;
    sequencePanel?: CSSProperties;
}
export interface RcsbFv3DCustomComponentInterface<R, L, S> {
    structurePanelConfig: RcsbFvStructureConfigInterface<R, S>;
    sequencePanelConfig: RcsbFvCustomSequenceInterface<R, L>;
    id: string;
    ctxManager: RcsbFvCustomContextManager<R, L, S>;
    cssConfig?: RcsbFv3DCssConfig;
    unmount: (flag: boolean) => void;
    fullScreen: boolean;
    structureViewer: StructureViewerInterface<R, L, S>;
    structureViewerBehaviourObserver: StructureViewerBehaviourObserverInterface<R, L>;
}
interface RcsbFv3DCustomComponentState<R, L, S> {
    structurePanelConfig: RcsbFvStructureConfigInterface<R, S>;
    sequencePanelConfig: RcsbFvCustomSequenceInterface<R, L>;
    pfvScreenFraction: number;
}
export declare class RcsbFv3DCustomComponent<R, L, S> extends React.Component<RcsbFv3DCustomComponentInterface<R, L, S>, RcsbFv3DCustomComponentState<R, L, S>> {
    private readonly stateManager;
    private subscription;
    private readonly ROOT_DIV_ID;
    readonly state: RcsbFv3DCustomComponentState<R, L, S>;
    render(): ReactNode;
    componentDidMount(): void;
    componentWillUnmount(): void;
    private useDefaultCss;
    private panelDelimiter;
    private structureCssConfig;
    private sequenceCssConfig;
    private static mainDivCssConfig;
    private subscribe;
    /**Unsubscribe className to rxjs events. Useful if many panels are created an destroyed.*/
    private unsubscribe;
    private updateConfig;
    private splitPanelMouseDown;
    private splitPanelMouseUp;
    private mouseMove;
    private resize;
}
export {};
