import CodeBox from "./CodeBox";
import CodeBoxFileManager from "./CodeBoxFileManager";
/** Represents file of code box. */
declare class CodeBoxFile<T extends CodeBox = CodeBox> {
    /** Identifier of file. */
    protected identifier: string;
    /** Download link or null if file is not downloadable. */
    protected downloadLink: string | null;
    /** Code box to which file belongs. */
    protected codeBox: T | null;
    /**
     * Creates new code box file.
     * @param identifier Identifier.
     * @param downloadLink Download link or null if file should not be downloadable.
     * @param codeBox Code box to which file belongs.
     * @param manager Manager of code box file.
     */
    constructor(identifier: string, downloadLink: string | null, codeBox: T, manager: CodeBoxFileManager);
    /**
     * Returns identifier of file.
     * @returns Identifier.
     */
    getIdentifier(): string | null;
    /**
     * Changes identifier of file.
     * @param newIdentifier New identifier.
     * @returns Indicates whether change has been successfully completed (if passed new identifier already belongs to some other file in code box, it returns false).
     */
    changeIdentifier(newIdentifier: string): boolean;
    /**
     * Removes file from code box.
     */
    remove(): void;
    /**
     * Returns download link of file.
     * @returns Download link or null if file is not downloadable.
     */
    getDownloadLink(): string | null;
    /**
     * Changes download link of file or sets it as non-downloadable.
     * @param downloadLink Download link (or null if file should not be downloadable).
     */
    setDownloadLink(downloadLink: string | null): void;
    /**
     * Called by file manager when identifier should be changed.
     * @param newIdentifier New identifier.
     */
    private onIdentifierChange;
    /**
     * Called by file manager when download link should be changed.
     * @param newDownloadLink New download link or null.
     */
    private onDownloadLinkChange;
    /**
     * Called by file manager when file should be unlinked from code box.
     */
    private onUnlinkCodeBox;
}
export default CodeBoxFile;
