import { AstNode, KNativePointer } from "../../src/reexport-for-generated";
import { AnnotationUsage } from "./AnnotationUsage";
import { ClassDeclaration } from "./ClassDeclaration";
import { Es2pandaAstNodeType } from "./../Es2pandaEnums";
import { Es2pandaClassDefinitionModifiers } from "./../Es2pandaEnums";
import { Es2pandaLanguage } from "./../Es2pandaEnums";
import { Es2pandaModifierFlags } from "./../Es2pandaEnums";
import { Expression } from "./Expression";
import { Identifier } from "./Identifier";
import { MethodDefinition } from "./MethodDefinition";
import { SrcDumper } from "./SrcDumper";
import { TSClassImplements } from "./TSClassImplements";
import { TSEnumDeclaration } from "./TSEnumDeclaration";
import { TSTypeParameterDeclaration } from "./TSTypeParameterDeclaration";
import { TSTypeParameterInstantiation } from "./TSTypeParameterInstantiation";
import { TypedAstNode } from "./TypedAstNode";
import { checker } from "./checker";
import { extension_ClassDefinitionSetBody } from "./../../src/reexport-for-generated";
import { varbinder } from "./varbinder";
export declare class ClassDefinition extends TypedAstNode {
    constructor(pointer: KNativePointer, astNodeType: Es2pandaAstNodeType);
    static create3ClassDefinition(ident: Identifier | undefined, typeParams: TSTypeParameterDeclaration | undefined, superTypeParams: TSTypeParameterInstantiation | undefined, _implements_: readonly TSClassImplements[], ctor: MethodDefinition | undefined, superClass: Expression | undefined, body: readonly AstNode[], modifiers: Es2pandaClassDefinitionModifiers, flags: Es2pandaModifierFlags, lang: Es2pandaLanguage, annotations?: readonly AnnotationUsage[]): ClassDefinition;
    static updateClassDefinition(original: ClassDefinition | undefined, ident: Identifier | undefined, typeParams: TSTypeParameterDeclaration | undefined, superTypeParams: TSTypeParameterInstantiation | undefined, _implements_: readonly TSClassImplements[], ctor: MethodDefinition | undefined, superClass: Expression | undefined, body: readonly AstNode[], modifiers: Es2pandaClassDefinitionModifiers, flags: Es2pandaModifierFlags, annotations?: readonly AnnotationUsage[]): ClassDefinition;
    static update1ClassDefinition(original: ClassDefinition | undefined, ident: Identifier | undefined, body: readonly AstNode[], modifiers: Es2pandaClassDefinitionModifiers, flags: Es2pandaModifierFlags, annotations?: readonly AnnotationUsage[]): ClassDefinition;
    static update2ClassDefinition(original: ClassDefinition | undefined, ident: Identifier | undefined, modifiers: Es2pandaClassDefinitionModifiers, flags: Es2pandaModifierFlags, annotations?: readonly AnnotationUsage[]): ClassDefinition;
    static update3ClassDefinition(original: ClassDefinition | undefined, ident: Identifier | undefined, typeParams: TSTypeParameterDeclaration | undefined, superTypeParams: TSTypeParameterInstantiation | undefined, _implements_: readonly TSClassImplements[], ctor: MethodDefinition | undefined, superClass: Expression | undefined, body: readonly AstNode[], modifiers: Es2pandaClassDefinitionModifiers, flags: Es2pandaModifierFlags, lang: Es2pandaLanguage, annotations?: readonly AnnotationUsage[]): ClassDefinition;
    static update4ClassDefinition(original: ClassDefinition | undefined, ident: Identifier | undefined, body: readonly AstNode[], modifiers: Es2pandaClassDefinitionModifiers, flags: Es2pandaModifierFlags, lang: Es2pandaLanguage, annotations?: readonly AnnotationUsage[]): ClassDefinition;
    static update5ClassDefinition(original: ClassDefinition | undefined, ident: Identifier | undefined, modifiers: Es2pandaClassDefinitionModifiers, flags: Es2pandaModifierFlags, lang: Es2pandaLanguage, annotations?: readonly AnnotationUsage[]): ClassDefinition;
    get ident(): Identifier | undefined;
    /** @deprecated */
    setIdent(ident?: Identifier): this;
    get internalName(): string;
    get super(): Expression | undefined;
    /** @deprecated */
    setSuper(superClass?: Expression): this;
    get isGlobal(): boolean;
    get isLocal(): boolean;
    get isExtern(): boolean;
    get isFromExternal(): boolean;
    get isInner(): boolean;
    get isGlobalInitialized(): boolean;
    get isClassDefinitionChecked(): boolean;
    get isAnonymous(): boolean;
    get isNumericEnumTransformed(): boolean;
    get isStringEnumTransformed(): boolean;
    get isEnumTransformed(): boolean;
    get isNamespaceTransformed(): boolean;
    get isLazyImportObjectClass(): boolean;
    get isFromStruct(): boolean;
    get isInitInCctor(): boolean;
    get isModule(): boolean;
    get isFromLambda(): boolean;
    get language(): Es2pandaLanguage;
    /** @deprecated */
    setGlobalInitialized(): this;
    /** @deprecated */
    setInnerModifier(): this;
    /** @deprecated */
    setClassDefinitionChecked(): this;
    /** @deprecated */
    setAnonymousModifier(): this;
    /** @deprecated */
    setNamespaceTransformed(): this;
    /** @deprecated */
    setLazyImportObjectClass(): this;
    /** @deprecated */
    setFromStructModifier(): this;
    /** @deprecated */
    setInitInCctor(): this;
    get modifiers(): Es2pandaClassDefinitionModifiers;
    /** @deprecated */
    addProperties(body: readonly AstNode[]): this;
    get ctor(): MethodDefinition | undefined;
    get typeParams(): TSTypeParameterDeclaration | undefined;
    get superTypeParams(): TSTypeParameterInstantiation | undefined;
    /** @deprecated */
    setSuperTypeParams(superTypeParams?: TSTypeParameterInstantiation): this;
    get localTypeCounter(): number;
    get localIndex(): number;
    get functionalReferenceReferencedMethod(): MethodDefinition | undefined;
    /** @deprecated */
    setFunctionalReferenceReferencedMethod(functionalReferenceReferencedMethod?: MethodDefinition): this;
    get localPrefix(): string;
    get capturedVariables(): readonly varbinder.Variable[];
    get origEnumDecl(): TSEnumDeclaration | undefined;
    get anonClass(): ClassDeclaration | undefined;
    get hasPrivateMethod(): boolean;
    get hasNativeMethod(): boolean;
    get hasComputedInstanceField(): boolean;
    /** @deprecated */
    addToExportedClasses(cls?: ClassDeclaration): this;
    /** @deprecated */
    setScope(scope?: varbinder.LocalScope): this;
    /** @deprecated */
    setModifiers(modifiers: Es2pandaClassDefinitionModifiers): this;
    /** @deprecated */
    emplaceBody(body?: AstNode): this;
    /** @deprecated */
    clearBody(): this;
    /** @deprecated */
    setValueBody(body: AstNode | undefined, index: number): this;
    get body(): readonly AstNode[];
    get bodyForUpdate(): readonly AstNode[];
    /** @deprecated */
    emplaceImplements(_implements_?: TSClassImplements): this;
    /** @deprecated */
    clearImplements(): this;
    /** @deprecated */
    setValueImplements(_implements_: TSClassImplements | undefined, index: number): this;
    /** @deprecated */
    setImplements(implementsList: readonly TSClassImplements[]): this;
    get implements(): readonly TSClassImplements[];
    get implementsForUpdate(): readonly TSClassImplements[];
    /** @deprecated */
    setCtor(ctor?: MethodDefinition): this;
    /** @deprecated */
    setTypeParams(typeParams?: TSTypeParameterDeclaration): this;
    /** @deprecated */
    setOrigEnumDecl(origEnumDecl?: TSEnumDeclaration): this;
    /** @deprecated */
    setAnonClass(anonClass?: ClassDeclaration): this;
    /** @deprecated */
    setInternalName(internalName: string): this;
    get tsType(): checker.Type | undefined;
    get preferredType(): checker.Type | undefined;
    get hasAnnotations(): boolean;
    /** @deprecated */
    emplaceAnnotation(source?: AnnotationUsage): this;
    /** @deprecated */
    clearAnnotations(): this;
    /** @deprecated */
    dumpAnnotations(dumper?: SrcDumper): this;
    get annotationsForUpdate(): readonly AnnotationUsage[];
    get annotations(): readonly AnnotationUsage[];
    /** @deprecated */
    setAnnotations(annotationList: readonly AnnotationUsage[]): this;
    /** @deprecated */
    setAnnotations1(annotationList: readonly AnnotationUsage[]): this;
    setBody: typeof extension_ClassDefinitionSetBody;
    protected readonly brandClassDefinition: undefined;
}
export declare function isClassDefinition(node: object | undefined): node is ClassDefinition;
