import { type TSESTree } from '@typescript-eslint/typescript-estree'; import { ExtractedVariable } from './extract_variables'; type Node = TSESTree.Node; type MethodDefinition = TSESTree.MethodDefinition; export type ExtractedFunctionMetadata = { isAsync: boolean; isGenerator: boolean; isExpression: boolean; isStatic?: boolean; accessibility?: MethodDefinition['accessibility']; variable?: ExtractedVariable; klazz?: string; }; export declare class ExtractedFunction { readonly node: Node; readonly name: string | undefined; readonly type: 'declaration' | 'expression' | 'property' | 'getter' | 'setter' | 'constructor' | 'method' | 'class-property' | 'prototype-assignment'; readonly params: readonly TSESTree.Parameter[]; readonly body: Node; readonly metadata: ExtractedFunctionMetadata; constructor(node: Node, name: string | undefined, type: 'declaration' | 'expression' | 'property' | 'getter' | 'setter' | 'constructor' | 'method' | 'class-property' | 'prototype-assignment', // Klazz.prototype.property = () => {} params: readonly TSESTree.Parameter[], body: Node, metadata: ExtractedFunctionMetadata); } export declare function extractFunctions(root: Node): ExtractedFunction[]; export {};