import * as React from "react";
import { StructureViewerInterface } from '../RcsbFvStructure/StructureViewerInterface';
import '../scss/RcsbFvMolstarStyle.module.scss';
import { RcsbFvSequenceInterface } from "../RcsbFvSequence/RcsbFvSequence";
import { RcsbFvStructureConfigInterface } from "../RcsbFvStructure/RcsbFvStructure";
import { RcsbFvContextManager } from "../RcsbFvContextManager/RcsbFvContextManager";
import { CSSProperties, ReactNode } from "react";
import { StructureViewerBehaviourObserverInterface } from "../RcsbFvStructure/StructureViewerBehaviourInterface";
export interface RcsbFv3DCssConfig {
    overwriteCss?: boolean;
    rootPanel?: CSSProperties;
    structurePanel?: CSSProperties;
    sequencePanel?: CSSProperties;
}
export interface RcsbFv3DComponentInterface<T, R, L, S, U> {
    structurePanelConfig: RcsbFvStructureConfigInterface<R, S>;
    sequencePanelConfig: RcsbFvSequenceInterface<T, U>;
    id: string;
    ctxManager: RcsbFvContextManager<T, R, S, U>;
    cssConfig?: RcsbFv3DCssConfig;
    unmount: (flag: boolean) => void;
    fullScreen: boolean;
    structureViewer: StructureViewerInterface<R, L, S>;
    structureViewerBehaviourObserver: StructureViewerBehaviourObserverInterface<R, L>;
}
interface RcsbFv3DComponentState<T, R, S, U> {
    structurePanelConfig: RcsbFvStructureConfigInterface<R, S>;
    sequencePanelConfig: RcsbFvSequenceInterface<T, U>;
    pfvScreenFraction: number;
}
export declare class RcsbFv3DComponent<T, R, L, S, U> extends React.Component<RcsbFv3DComponentInterface<T, R, L, S, U> & {
    resolve: () => void;
}, RcsbFv3DComponentState<T, R, S, U>> {
    private readonly stateManager;
    private subscription;
    private readonly ROOT_DIV_ID;
    readonly state: RcsbFv3DComponentState<T, R, S, U>;
    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 {};
