import { KNativePointer } from "../../src/reexport-for-generated";
import { AnnotationUsage } from "./AnnotationUsage";
import { ClassElement } from "./ClassElement";
import { Es2pandaAstNodeType } from "./../Es2pandaEnums";
import { Es2pandaModifierFlags } from "./../Es2pandaEnums";
import { Expression } from "./Expression";
import { SrcDumper } from "./SrcDumper";
import { TypeNode } from "./TypeNode";
import { varbinder } from "./varbinder";
export declare class ClassProperty extends ClassElement {
    constructor(pointer: KNativePointer, astNodeType: Es2pandaAstNodeType);
    static createClassProperty(key: Expression | undefined, value: Expression | undefined, typeAnnotation: TypeNode | undefined, modifiers: Es2pandaModifierFlags, isComputed: boolean, annotations?: readonly AnnotationUsage[]): ClassProperty;
    static updateClassProperty(original: ClassProperty | undefined, key: Expression | undefined, value: Expression | undefined, typeAnnotation: TypeNode | undefined, modifiers: Es2pandaModifierFlags, isComputed: boolean, annotations?: readonly AnnotationUsage[]): ClassProperty;
    get isDefaultAccessModifier(): boolean;
    /** @deprecated */
    setDefaultAccessModifier(isDefault: boolean): this;
    get typeAnnotation(): TypeNode | undefined;
    /** @deprecated */
    setTypeAnnotation(typeAnnotation?: TypeNode): this;
    get basePropertyVar(): varbinder.Variable | undefined;
    /** @deprecated */
    setBasePropertyVar(baseProperty?: varbinder.Variable): this;
    /** @deprecated */
    forceDump(dumper?: SrcDumper): this;
    get needInitInStaticBlock(): boolean;
    /** @deprecated */
    setNeedInitInStaticBlock(): this;
    get isImmediateInit(): boolean;
    /** @deprecated */
    setIsImmediateInit(): this;
    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;
    protected readonly brandClassProperty: undefined;
}
export declare function isClassProperty(node: object | undefined): node is ClassProperty;
