import * as ts from "typescript";
import { Constructor } from "./../../../Constructor";
import { Node, Expression } from "./../../common";
export declare type InitializerExpressionedExtensionType = Node<ts.Node & {
    initializer?: ts.Expression;
}>;
export interface InitializerExpressionableNode {
    /**
     * Gets if this is an InitializerExpressionableNode.
     */
    isInitializerExpressionableNode(): this is InitializerExpressionableNode;
    /**
     * Gets if node has an initializer.
     */
    hasInitializer(): boolean;
    /**
     * Gets the initializer.
     */
    getInitializer(): Expression | undefined;
    /**
     * Gets the initializer or throw.
     */
    getInitializerOrThrow(): Expression;
    /**
     * Removes the initailizer.
     */
    removeInitializer(): this;
    /**
     * Sets the initializer.
     * @param text - New text to set for the initializer.
     */
    setInitializer(text: string): this;
}
export declare function InitializerExpressionableNode<T extends Constructor<InitializerExpressionedExtensionType>>(Base: T): Constructor<InitializerExpressionableNode> & T;
