import * as ts from "typescript";
import { Constructor } from "./../../Constructor";
import { Node } from "./../common";
import { TypeNode } from "./../type";
export declare type TypeArgumentedNodeExtensionType = Node<ts.Node & {
    typeArguments?: ts.NodeArray<ts.TypeNode>;
}>;
export interface TypeArgumentedNode {
    /**
     * Gets all the type arguments of the node.
     */
    getTypeArguments(): TypeNode[];
    /**
     * Removes a type argument.
     * @param typeArg - Type argument to remove.
     */
    removeTypeArgument(typeArg: Node): void;
    /**
     * Removes a type argument.
     * @param index - Index to remove.
     */
    removeTypeArgument(index: number): void;
}
export declare function TypeArgumentedNode<T extends Constructor<TypeArgumentedNodeExtensionType>>(Base: T): Constructor<TypeArgumentedNode> & T;
