import { Constructor } from "./../../Constructor";
import { JSDocStructure } from "./../../structures";
import { Node } from "./../common";
import { JSDoc } from "./../doc/JSDoc";
export declare type DocumentationableNodeExtensionType = Node<any>;
export interface DocumentationableNode {
    /**
     * Gets the documentation nodes.
     */
    getDocNodes(): JSDoc[];
    /**
     * Adds a documentation comment.
     * @param structure - Structure to add.
     */
    addDoc(structure: JSDocStructure): JSDoc;
    /**
     * Adds documentation comments.
     * @param structures - Structures to add.
     */
    addDocs(structures: JSDocStructure[]): JSDoc[];
    /**
     * Inserts a documentation comment.
     * @param index - Index to insert at.
     * @param structure - Structure to insert.
     */
    insertDoc(index: number, structure: JSDocStructure): JSDoc;
    /**
     * Inserts documentation comments.
     * @param index - Index to insert at.
     * @param structures - Structures to insert.
     */
    insertDocs(index: number, structures: JSDocStructure[]): JSDoc[];
}
export declare function DocumentationableNode<T extends Constructor<DocumentationableNodeExtensionType>>(Base: T): Constructor<DocumentationableNode> & T;
