import type { AstNodeBase, AstNodeLayout, BlockStatementNode, DataTypeNode, IdentifierNode, TokenUnion } from "@/types";
import type { BattleScriptToAST } from "@/services";
import type { FunctionDefinitionContext } from "@/services/grammar/ts/language/BattleScriptParser";
import type { BattleScriptFromAST } from "@/services/fullAst/BattleScriptFromAST";
import type { VisitOptions } from "@/types/VisitOptions";
export interface FunctionDefinitionNode extends AstNodeBase {
    kind: "FUNCTION_DEFINITION";
    returnType: DataTypeNode;
    id: TokenUnion;
    params: IdentifierNode[];
    body: BlockStatementNode;
    isPure: boolean;
    isExported?: boolean;
}
export declare const FunctionDefinitionNodeLayout: AstNodeLayout<FunctionDefinitionNode>[];
export declare const functionDefinitionToAstNode: (instance: BattleScriptToAST, ctx: FunctionDefinitionContext) => FunctionDefinitionNode;
export declare const functionDefinitionFromAstNode: (instance: BattleScriptFromAST, node: FunctionDefinitionNode, _options?: VisitOptions) => string;
//# sourceMappingURL=FunctionDefinitionNode.d.ts.map