import { ClassType } from "../../..";
import { GQLAnyType } from "../GQLAnyType";
export declare abstract class GQLBasicType<BuiltType = any, T extends ClassType<any> = any, ExtensionsType = any> extends GQLAnyType<BuiltType, ExtensionsType> {
    protected _classType?: T;
    get classType(): T;
    constructor(name?: string);
    /**
     * Copy the type, it create a identical instance of the type
     */
    abstract copy(): any;
    /**
     * Add a suffix to your type name
     * @param suffix The suffix to add
     */
    abstract suffix(suffix?: string): any;
    /**
     * Create a new instance of your type
     */
    static create(...args: any[]): GQLBasicType;
    setClassType(classType: T): this;
    protected toConfigMap<ReturnType>(arr: {
        name: string;
        build(): any;
    }[]): ReturnType;
}
