import { z } from 'zod';
import { type CodebaseIndex } from './types.js';
export declare const CODE_FLOW_TRACES_VERSION: 1;
export declare const CODE_FLOW_DEFAULT_LIMIT = 50;
export declare const CODE_FLOW_HARD_LIMIT = 500;
export declare const CODE_FLOW_DEFAULT_MAX_CANDIDATES = 100;
export declare const CODE_FLOW_HARD_MAX_CANDIDATES = 5000;
export declare const CODE_FLOW_DEFAULT_MAX_DEPTH = 10;
export declare const CODE_FLOW_HARD_MAX_DEPTH = 50;
export declare const CODE_FLOW_DEFAULT_MAX_BRANCHING = 5;
export declare const CODE_FLOW_HARD_MAX_BRANCHING = 100;
export declare const CODE_FLOW_DEFAULT_MAX_STEPS = 500;
export declare const CODE_FLOW_HARD_MAX_STEPS = 10000;
export declare const CodeFlowTraceOptionsSchema: z.ZodObject<{
    limit: z.ZodOptional<z.ZodNumber>;
    maxCandidates: z.ZodOptional<z.ZodNumber>;
    maxDepth: z.ZodOptional<z.ZodNumber>;
    maxBranching: z.ZodOptional<z.ZodNumber>;
    maxSteps: z.ZodOptional<z.ZodNumber>;
}, z.core.$strip>;
export type CodeFlowTraceOptions = z.infer<typeof CodeFlowTraceOptionsSchema>;
export declare const CodeFlowStepSchema: z.ZodObject<{
    nodeId: z.ZodString;
    name: z.ZodString;
    kind: z.ZodEnum<{
        function: "function";
        file: "file";
        enum: "enum";
        module: "module";
        class: "class";
        interface: "interface";
        "type-alias": "type-alias";
        variable: "variable";
        parameter: "parameter";
    }>;
    relativePath: z.ZodString;
    span: z.ZodObject<{
        version: z.ZodLiteral<1>;
        offsetEncoding: z.ZodLiteral<"utf8-bytes">;
        endExclusive: z.ZodLiteral<true>;
        startLine: z.ZodNumber;
        startColumn: z.ZodOptional<z.ZodNumber>;
        endLine: z.ZodNumber;
        endColumn: z.ZodOptional<z.ZodNumber>;
        startByte: z.ZodOptional<z.ZodNumber>;
        endByte: z.ZodOptional<z.ZodNumber>;
        exact: z.ZodBoolean;
    }, z.core.$strip>;
    depth: z.ZodNumber;
    clusterId: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
export type CodeFlowStep = z.infer<typeof CodeFlowStepSchema>;
export declare const CodeFlowEntryPointSchema: z.ZodObject<{
    name: z.ZodString;
    nodeId: z.ZodString;
    kind: z.ZodEnum<{
        function: "function";
        file: "file";
        enum: "enum";
        module: "module";
        class: "class";
        interface: "interface";
        "type-alias": "type-alias";
        variable: "variable";
        parameter: "parameter";
    }>;
    relativePath: z.ZodString;
    span: z.ZodObject<{
        version: z.ZodLiteral<1>;
        offsetEncoding: z.ZodLiteral<"utf8-bytes">;
        endExclusive: z.ZodLiteral<true>;
        startLine: z.ZodNumber;
        startColumn: z.ZodOptional<z.ZodNumber>;
        endLine: z.ZodNumber;
        endColumn: z.ZodOptional<z.ZodNumber>;
        startByte: z.ZodOptional<z.ZodNumber>;
        endByte: z.ZodOptional<z.ZodNumber>;
        exact: z.ZodBoolean;
    }, z.core.$strip>;
    score: z.ZodNumber;
    clusterId: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
export type CodeFlowEntryPoint = z.infer<typeof CodeFlowEntryPointSchema>;
export declare const CodeFlowTraceSchema: z.ZodObject<{
    id: z.ZodString;
    label: z.ZodString;
    entryPoint: z.ZodObject<{
        name: z.ZodString;
        nodeId: z.ZodString;
        kind: z.ZodEnum<{
            function: "function";
            file: "file";
            enum: "enum";
            module: "module";
            class: "class";
            interface: "interface";
            "type-alias": "type-alias";
            variable: "variable";
            parameter: "parameter";
        }>;
        relativePath: z.ZodString;
        span: z.ZodObject<{
            version: z.ZodLiteral<1>;
            offsetEncoding: z.ZodLiteral<"utf8-bytes">;
            endExclusive: z.ZodLiteral<true>;
            startLine: z.ZodNumber;
            startColumn: z.ZodOptional<z.ZodNumber>;
            endLine: z.ZodNumber;
            endColumn: z.ZodOptional<z.ZodNumber>;
            startByte: z.ZodOptional<z.ZodNumber>;
            endByte: z.ZodOptional<z.ZodNumber>;
            exact: z.ZodBoolean;
        }, z.core.$strip>;
        score: z.ZodNumber;
        clusterId: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>;
    steps: z.ZodArray<z.ZodObject<{
        nodeId: z.ZodString;
        name: z.ZodString;
        kind: z.ZodEnum<{
            function: "function";
            file: "file";
            enum: "enum";
            module: "module";
            class: "class";
            interface: "interface";
            "type-alias": "type-alias";
            variable: "variable";
            parameter: "parameter";
        }>;
        relativePath: z.ZodString;
        span: z.ZodObject<{
            version: z.ZodLiteral<1>;
            offsetEncoding: z.ZodLiteral<"utf8-bytes">;
            endExclusive: z.ZodLiteral<true>;
            startLine: z.ZodNumber;
            startColumn: z.ZodOptional<z.ZodNumber>;
            endLine: z.ZodNumber;
            endColumn: z.ZodOptional<z.ZodNumber>;
            startByte: z.ZodOptional<z.ZodNumber>;
            endByte: z.ZodOptional<z.ZodNumber>;
            exact: z.ZodBoolean;
        }, z.core.$strip>;
        depth: z.ZodNumber;
        clusterId: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>>;
    crossCluster: z.ZodBoolean;
    clusterIds: z.ZodArray<z.ZodString>;
    truncated: z.ZodBoolean;
    omitted: z.ZodObject<{
        branchingTargets: z.ZodNumber;
        depthFrontierTargets: z.ZodNumber;
        stepLimitTargets: z.ZodNumber;
    }, z.core.$strip>;
    cycleEdges: z.ZodNumber;
    revisitedEdges: z.ZodNumber;
}, z.core.$strip>;
export type CodeFlowTrace = z.infer<typeof CodeFlowTraceSchema>;
export declare const CodeFlowTraceResultSchema: z.ZodObject<{
    status: z.ZodLiteral<"resolved">;
    version: z.ZodLiteral<1>;
    traces: z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        label: z.ZodString;
        entryPoint: z.ZodObject<{
            name: z.ZodString;
            nodeId: z.ZodString;
            kind: z.ZodEnum<{
                function: "function";
                file: "file";
                enum: "enum";
                module: "module";
                class: "class";
                interface: "interface";
                "type-alias": "type-alias";
                variable: "variable";
                parameter: "parameter";
            }>;
            relativePath: z.ZodString;
            span: z.ZodObject<{
                version: z.ZodLiteral<1>;
                offsetEncoding: z.ZodLiteral<"utf8-bytes">;
                endExclusive: z.ZodLiteral<true>;
                startLine: z.ZodNumber;
                startColumn: z.ZodOptional<z.ZodNumber>;
                endLine: z.ZodNumber;
                endColumn: z.ZodOptional<z.ZodNumber>;
                startByte: z.ZodOptional<z.ZodNumber>;
                endByte: z.ZodOptional<z.ZodNumber>;
                exact: z.ZodBoolean;
            }, z.core.$strip>;
            score: z.ZodNumber;
            clusterId: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>;
        steps: z.ZodArray<z.ZodObject<{
            nodeId: z.ZodString;
            name: z.ZodString;
            kind: z.ZodEnum<{
                function: "function";
                file: "file";
                enum: "enum";
                module: "module";
                class: "class";
                interface: "interface";
                "type-alias": "type-alias";
                variable: "variable";
                parameter: "parameter";
            }>;
            relativePath: z.ZodString;
            span: z.ZodObject<{
                version: z.ZodLiteral<1>;
                offsetEncoding: z.ZodLiteral<"utf8-bytes">;
                endExclusive: z.ZodLiteral<true>;
                startLine: z.ZodNumber;
                startColumn: z.ZodOptional<z.ZodNumber>;
                endLine: z.ZodNumber;
                endColumn: z.ZodOptional<z.ZodNumber>;
                startByte: z.ZodOptional<z.ZodNumber>;
                endByte: z.ZodOptional<z.ZodNumber>;
                exact: z.ZodBoolean;
            }, z.core.$strip>;
            depth: z.ZodNumber;
            clusterId: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>>;
        crossCluster: z.ZodBoolean;
        clusterIds: z.ZodArray<z.ZodString>;
        truncated: z.ZodBoolean;
        omitted: z.ZodObject<{
            branchingTargets: z.ZodNumber;
            depthFrontierTargets: z.ZodNumber;
            stepLimitTargets: z.ZodNumber;
        }, z.core.$strip>;
        cycleEdges: z.ZodNumber;
        revisitedEdges: z.ZodNumber;
    }, z.core.$strip>>;
    total: z.ZodNumber;
    omitted: z.ZodNumber;
    truncated: z.ZodBoolean;
    honesty: z.ZodObject<{
        freshness: z.ZodLiteral<"index-snapshot">;
        stalenessReason: z.ZodString;
        coverage: z.ZodObject<{
            status: z.ZodEnum<{
                full: "full";
                partial: "partial";
            }>;
            indexedFiles: z.ZodNumber;
            parserCallCapability: z.ZodObject<{
                full: z.ZodNumber;
                partial: z.ZodNumber;
                unavailable: z.ZodNumber;
            }, z.core.$strip>;
            callEdges: z.ZodObject<{
                resolved: z.ZodNumber;
                ambiguous: z.ZodNumber;
                unresolved: z.ZodNumber;
            }, z.core.$strip>;
            dynamicDispatchRefusals: z.ZodNumber;
            resolverJoinMisses: z.ZodNumber;
            unreachableResolvedEndpoints: z.ZodNumber;
            skippedFiles: z.ZodNumber;
            budgetDroppedFiles: z.ZodNumber;
        }, z.core.$strip>;
        omissions: z.ZodObject<{
            candidates: z.ZodObject<{
                total: z.ZodNumber;
                evaluated: z.ZodNumber;
                omitted: z.ZodNumber;
            }, z.core.$strip>;
            results: z.ZodObject<{
                total: z.ZodNumber;
                returned: z.ZodNumber;
                omitted: z.ZodNumber;
                deduplicated: z.ZodNumber;
                belowMinimumSteps: z.ZodNumber;
            }, z.core.$strip>;
            frontier: z.ZodObject<{
                branchingTargets: z.ZodNumber;
                depthFrontierTargets: z.ZodNumber;
                stepLimitTargets: z.ZodNumber;
            }, z.core.$strip>;
        }, z.core.$strip>;
        bounds: z.ZodObject<{
            maxTraces: z.ZodNumber;
            maxCandidates: z.ZodNumber;
            maxDepth: z.ZodNumber;
            maxBranching: z.ZodNumber;
            maxSteps: z.ZodNumber;
        }, z.core.$strip>;
    }, z.core.$strip>;
}, z.core.$strip>;
export type CodeFlowTraceResult = z.infer<typeof CodeFlowTraceResultSchema>;
/** Trace bounded deterministic call flows from ranked exported checkout entry points. */
export declare function traceCodeFlows(index: CodebaseIndex, rawOptions?: CodeFlowTraceOptions): CodeFlowTraceResult;
