import CodeViewMemento from "../code-view/CodeViewMemento";
import CodeView from "../code-view/CodeView";
import CodeBox from "./CodeBox";
/** Code view entry for code box memento. */
export type CodeViewMementoEntry = {
    /** Code view. */
    codeView: CodeView;
    /** Identifier. */
    identifier: string;
    /** Code view memento. */
    codeViewMemento: CodeViewMemento;
};
/** File entry for code box memento. */
export type FileMementoEntry = {
    /** Download link or null. */
    downloadLink: string | null;
    /** Identifier. */
    identifier: string;
};
/** Represents saved state of code box. */
declare class CodeBoxMemento {
    /** Code box based on which memento was created. */
    private creator;
    /** Code view entries (code views in code box when memento was created). */
    private codeViewEntries;
    /** File entries (files in code box when memento was created). */
    private fileEntries;
    /** Stores reference to code view that was active when memento was created. */
    private activeCodeView;
    /** Function to add code view without making copy to code box based on which the memento was created. */
    private addCodeViewToCreatorCodeBox;
    /**
     * Creates new code box memento.
     * @param creator Code box based on which the memento is created.
     * @param addCodeViewToCreatorCodeBox Function to add code view without making copy to code box based on which the memento was created.
     * @param codeViewEntries Code view entries.
     * @param fileEntries File entries.
     * @param activeCodeView Active code view.
     */
    constructor(creator: CodeBox, addCodeViewToCreatorCodeBox: (identifier: string, codeView: CodeView) => void, codeViewEntries: CodeViewMementoEntry[], fileEntries: FileMementoEntry[], activeCodeView: CodeView | null);
    /**
     * Returns code box, based on which the memento was created.
     * @returns Code box based on which the memento was created.
     */
    protected getCreator(): CodeBox;
    /**
     * Applies memento to code box.
     * @param codeBox Code box.
     */
    apply(codeBox: CodeBox): void;
}
export default CodeBoxMemento;
