import * as ts from "typescript";
import { EnumMemberStructure, EnumDeclarationStructure } from "./../../structures";
import { NamedNode, ExportableNode, ModifierableNode, AmbientableNode, DocumentationableNode, TextInsertableNode } from "./../base";
import { Node } from "./../common";
import { NamespaceChildableNode } from "./../namespace";
import { EnumMember } from "./EnumMember";
export declare const EnumDeclarationBase: (new (...args: any[]) => TextInsertableNode) & (new (...args: any[]) => NamespaceChildableNode) & (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 EnumDeclaration extends EnumDeclarationBase<ts.EnumDeclaration> {
    /**
     * Fills the node from a structure.
     * @param structure - Structure to fill.
     */
    fill(structure: Partial<EnumDeclarationStructure>): this;
    /**
     * Adds a member to the enum.
     * @param structure - Structure of the enum.
     */
    addMember(structure: EnumMemberStructure): EnumMember;
    /**
     * Adds members to the enum.
     * @param structures - Structures of the enums.
     */
    addMembers(structures: EnumMemberStructure[]): EnumMember[];
    /**
     * Inserts a member to the enum.
     * @param index - Index to insert at.
     * @param structure - Structure of the enum.
     */
    insertMember(index: number, structure: EnumMemberStructure): EnumMember;
    /**
     * Inserts members to an enum.
     * @param index - Index to insert at.
     * @param structures - Structures of the enums.
     */
    insertMembers(index: number, structures: EnumMemberStructure[]): EnumMember[];
    /**
     * Gets an enum member.
     * @param name - Name of the member.
     */
    getMember(name: string): EnumMember | undefined;
    /**
     * Gets an enum member.
     * @param findFunction - Function to use to find the member.
     */
    getMember(findFunction: (declaration: EnumMember) => boolean): EnumMember | undefined;
    /**
     * Gets an enum member or throws if not found.
     * @param name - Name of the member.
     */
    getMemberOrThrow(name: string): EnumMember;
    /**
     * Gets an enum member or throws if not found.
     * @param findFunction - Function to use to find the member.
     */
    getMemberOrThrow(findFunction: (declaration: EnumMember) => boolean): EnumMember;
    /**
     * Gets the enum's members.
     */
    getMembers(): EnumMember[];
    /**
     * Toggle if it's a const enum
     */
    setIsConstEnum(value: boolean): this;
    /**
     * Gets if it's a const enum.
     */
    isConstEnum(): boolean;
    /**
     * Gets the const enum keyword or undefined if not exists.
     */
    getConstKeyword(): Node<ts.Modifier> | undefined;
    /**
     * Removes this enum declaration.
     */
    remove(): void;
}
