import { AstNode, KNativePointer } from "../../src/reexport-for-generated";
import { AnnotationUsage } from "./AnnotationUsage";
import { Es2pandaAstNodeType } from "./../Es2pandaEnums";
import { Es2pandaLanguage } from "./../Es2pandaEnums";
import { Es2pandaScriptFunctionFlags } from "./../Es2pandaEnums";
import { Expression } from "./Expression";
import { FunctionSignature } from "./FunctionSignature";
import { Identifier } from "./Identifier";
import { ReturnStatement } from "./ReturnStatement";
import { SrcDumper } from "./SrcDumper";
import { TSTypeParameterDeclaration } from "./TSTypeParameterDeclaration";
import { TypeNode } from "./TypeNode";
import { checker } from "./checker";
import { extension_ScriptFunctionGetParamsCasted } from "./../../src/reexport-for-generated";
import { extension_ScriptFunctionGetPreferredReturnTypePointer } from "./../../src/reexport-for-generated";
import { extension_ScriptFunctionGetSignaturePointer } from "./../../src/reexport-for-generated";
import { extension_ScriptFunctionSetPreferredReturnTypePointer } from "./../../src/reexport-for-generated";
import { extension_ScriptFunctionSetSignaturePointer } from "./../../src/reexport-for-generated";
import { varbinder } from "./varbinder";
export declare class ScriptFunction extends AstNode {
    constructor(pointer: KNativePointer, astNodeType: Es2pandaAstNodeType);
    static create1ScriptFunction(databody: AstNode | undefined, datasignature: FunctionSignature | undefined, datafuncFlags: number, dataflags: number, datalang: Es2pandaLanguage, ident?: Identifier, annotations?: readonly AnnotationUsage[]): ScriptFunction;
    static updateScriptFunction(original: ScriptFunction | undefined, databody: AstNode | undefined, datasignature: FunctionSignature | undefined, datafuncFlags: number, dataflags: number, ident?: Identifier, annotations?: readonly AnnotationUsage[]): ScriptFunction;
    static update1ScriptFunction(original: ScriptFunction | undefined, databody: AstNode | undefined, datasignature: FunctionSignature | undefined, datafuncFlags: number, dataflags: number, datalang: Es2pandaLanguage, ident?: Identifier, annotations?: readonly AnnotationUsage[]): ScriptFunction;
    get id(): Identifier | undefined;
    get signature(): checker.Signature | undefined;
    get params(): readonly Expression[];
    get returnStatements(): readonly ReturnStatement[];
    get returnStatementsForUpdate(): readonly ReturnStatement[];
    get typeParams(): TSTypeParameterDeclaration | undefined;
    /** @deprecated */
    setTypeParams(typeParams?: TSTypeParameterDeclaration): this;
    get body(): AstNode | undefined;
    /** @deprecated */
    addReturnStatement(returnStatement?: ReturnStatement): this;
    /** @deprecated */
    setBody(body?: AstNode): this;
    get returnTypeAnnotation(): TypeNode | undefined;
    /** @deprecated */
    setReturnTypeAnnotation(node?: TypeNode): this;
    get isEntryPoint(): boolean;
    get isGenerator(): boolean;
    get isAsyncFunc(): boolean;
    get isAsyncImplFunc(): boolean;
    get isArrow(): boolean;
    get isOverload(): boolean;
    get isExternalOverload(): boolean;
    get isConstructor(): boolean;
    get isGetter(): boolean;
    get isSetter(): boolean;
    get isGetterOrSetter(): boolean;
    get isExtensionAccessor(): boolean;
    get isMethod(): boolean;
    get isProxy(): boolean;
    get isStaticBlock(): boolean;
    get isEnum(): boolean;
    get isHidden(): boolean;
    get isExternal(): boolean;
    get isImplicitSuperCallNeeded(): boolean;
    get isExplicitThisCall(): boolean;
    get isExplicitSuperCall(): boolean;
    get hasBody(): boolean;
    get hasRestParameter(): boolean;
    get hasReturnStatement(): boolean;
    get hasThrowStatement(): boolean;
    get isTrailingLambda(): boolean;
    get isSynthetic(): boolean;
    get isInterfaceProperty(): boolean;
    get isDynamic(): boolean;
    get isExtensionMethod(): boolean;
    get flags(): Es2pandaScriptFunctionFlags;
    get hasReceiver(): boolean;
    /** @deprecated */
    setIdent(id?: Identifier): this;
    /** @deprecated */
    setSignature(signature?: checker.Signature): this;
    /** @deprecated */
    addFlag(flags: Es2pandaScriptFunctionFlags): this;
    /** @deprecated */
    clearFlag(flags: Es2pandaScriptFunctionFlags): this;
    get formalParamsLength(): number;
    /** @deprecated */
    setScope(scope?: varbinder.FunctionScope): this;
    get language(): Es2pandaLanguage;
    /** @deprecated */
    setPreferredReturnType(preferredReturnType?: checker.Type): this;
    get preferredReturnType(): checker.Type | undefined;
    /** @deprecated */
    setAsyncPairMethod(asyncPairFunction?: ScriptFunction): this;
    get asyncPairMethod(): ScriptFunction | undefined;
    get wasChecked(): boolean;
    /** @deprecated */
    setWasChecked(wasChecked: boolean): this;
    /** @deprecated */
    emplaceReturnStatements(returnStatements?: ReturnStatement): this;
    /** @deprecated */
    clearReturnStatements(): this;
    /** @deprecated */
    setValueReturnStatements(returnStatements: ReturnStatement | undefined, index: number): this;
    /** @deprecated */
    emplaceParams(params?: Expression): this;
    /** @deprecated */
    setParams(paramsList: readonly Expression[]): this;
    /** @deprecated */
    clearParams(): this;
    /** @deprecated */
    setValueParams(params: Expression | undefined, index: number): this;
    get paramsForUpdate(): readonly Expression[];
    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;
    getSignaturePointer: typeof extension_ScriptFunctionGetSignaturePointer;
    setSignaturePointer: typeof extension_ScriptFunctionSetSignaturePointer;
    getParamsCasted: typeof extension_ScriptFunctionGetParamsCasted;
    getPreferredReturnTypePointer: typeof extension_ScriptFunctionGetPreferredReturnTypePointer;
    setPreferredReturnTypePointer: typeof extension_ScriptFunctionSetPreferredReturnTypePointer;
    protected readonly brandScriptFunction: undefined;
}
export declare function isScriptFunction(node: object | undefined): node is ScriptFunction;
