import * as React from "react";
import { SequenceViewInterface } from "./SequenceViewInterface";
import { RcsbFvStateInterface } from "../../RcsbFvState/RcsbFvStateInterface";
import { ReactNode } from "react";
export interface AbstractViewInterface {
    componentId: string;
    title?: string;
    subtitle?: string;
    stateManager: RcsbFvStateInterface;
    unmount: (flag: boolean, callback: () => void) => void;
}
export declare abstract class AbstractView<P, S> extends React.Component<P & AbstractViewInterface, S> implements SequenceViewInterface {
    protected readonly componentDivId: string;
    protected readonly rcsbFvDivId: string;
    private updateDimTask;
    protected constructor(props: P & AbstractViewInterface);
    render(): ReactNode;
    componentDidMount(): void;
    componentWillUnmount(): void;
    private resizeCallback;
    private createTitle;
    private createSubtitle;
    abstract additionalContent(): ReactNode | null;
    abstract updateDimensions(): void;
    abstract structureHoverCallback(): void;
    abstract representationChangeCallback(): void;
    abstract structureSelectionCallback(): void;
    abstract modelChangeCallback(): void;
}
