import * as ts from "typescript";
import { NamespaceDeclarationStructure } from "./../../structures";
import { Node, Identifier } from "./../common";
import { NamedNode, ExportableNode, ModifierableNode, AmbientableNode, DocumentationableNode, BodiedNode, TextInsertableNode, UnwrappableNode } from "./../base";
import { StatementedNode } from "./../statement";
import { NamespaceChildableNode } from "./NamespaceChildableNode";
export declare const NamespaceDeclarationBase: (new (...args: any[]) => UnwrappableNode) & (new (...args: any[]) => TextInsertableNode) & (new (...args: any[]) => BodiedNode) & (new (...args: any[]) => NamespaceChildableNode) & (new (...args: any[]) => StatementedNode) & (new (...args: any[]) => DocumentationableNode) & (new (...args: any[]) => AmbientableNode) & (new (...args: any[]) => ExportableNode) & (new (...args: any[]) => ModifierableNode) & (new (...args: any[]) => NamedNode) & typeof Node;
export declare class NamespaceDeclaration extends NamespaceDeclarationBase<ts.NamespaceDeclaration> {
    /**
     * Fills the node from a structure.
     * @param structure - Structure to fill.
     */
    fill(structure: Partial<NamespaceDeclarationStructure>): this;
    /**
     * Gets the full name of the namespace.
     */
    getName(): string;
    /**
     * Sets the name without renaming references.
     * @param newName - New full namespace name.
     */
    setName(newName: string): this;
    /**
     * Renames the name.
     * @param newName - New name.
     */
    rename(newName: string): this;
    /**
     * Gets the name identifiers.
     */
    getNameIdentifiers(): Identifier[];
    /**
     * Gets if this namespace has a namespace keyword.
     */
    hasNamespaceKeyword(): boolean;
    /**
     * Gets if this namespace has a namespace keyword.
     */
    hasModuleKeyword(): boolean;
    /**
     * Set if this namespace has a namespace keyword.
     * @param value - Whether to set it or not.
     */
    setHasNamespaceKeyword(value?: boolean): this;
    /**
     * Set if this namespace has a namepsace keyword.
     * @param value - Whether to set it or not.
     */
    setHasModuleKeyword(value?: boolean): this;
    /**
     * Gets the namespace or module keyword.
     */
    getDeclarationTypeKeyword(): Node<ts.Node> | undefined;
    /**
     * Removes this namespace declaration.
     */
    remove(): void;
}
