import ts from 'typescript';
import { CompilerContext } from '../compilerContext.js';
import { StepFunctionCallSite } from './callSiteLocator.js';
export declare enum CallNodeType {
    /** Entry point of a step function. */
    EntryPoint = 0,
    /** An intrinsic method or function (e.g., JSON.stringify, Steps.format). */
    Intrinsic = 1,
    /** A user-defined function that may be inlined. */
    UserFunction = 2,
    /** A service binding method (e.g., lambda.call). */
    ServiceCall = 3
}
export declare class CallGraphNode {
    readonly symbol: ts.Symbol | null | undefined;
    readonly declaration: ts.FunctionLikeDeclarationBase | null | undefined;
    readonly edges: readonly CallGraphNodeEdge[];
    readonly nodeType: CallNodeType;
    constructor(symbol: ts.Symbol | null | undefined, declaration: ts.FunctionLikeDeclarationBase | null | undefined, edges: readonly CallGraphNodeEdge[], nodeType?: CallNodeType);
    get name(): string;
}
export interface CallGraphNodeEdge {
    readonly await: boolean;
    readonly callsite: ts.CallLikeExpression;
    readonly symbol?: ts.Symbol;
    readonly callee?: CallGraphNode;
}
/**
 * Build a call graph starting from a step function entry point.
 *
 * The graph tracks:
 * - Which functions are called from the entry point (and transitively)
 * - Whether each call is `await`ed (only awaited service calls become Task states)
 * - Symbol resolution for matching against intrinsics / service registry
 */
export declare function createCallGraph(context: CompilerContext, callSite: StepFunctionCallSite): CallGraphNode;
//# sourceMappingURL=callGraph.d.ts.map