import { Constructor } from "./../../Constructor";
import { Node } from "./../common";
import { Scope } from "./../common/Scope";
import { ModifierableNode } from "./ModifierableNode";
export declare type ScopeableNodeExtensionType = Node & ModifierableNode;
export interface ScopeableNode {
    /**
     * Gets the scope.
     */
    getScope(): Scope | undefined;
    /**
     * Sets the scope.
     * @param scope - Scope to set to.
     */
    setScope(scope: Scope | undefined): this;
    /**
     * Gets if the node has a scope keyword.
     */
    hasScopeKeyword(): boolean;
}
export declare function ScopeableNode<T extends Constructor<ScopeableNodeExtensionType>>(Base: T): Constructor<ScopeableNode> & T;
