import { z } from 'zod';
import { type CodebaseIndex, type CodeEdge, type CodeNode, type ParsedFile } from './types.js';
import type { Yielder } from '../utils.js';
export declare const SlimParsedFileSchema: z.ZodObject<{
    path: z.ZodString;
    imports: z.ZodArray<z.ZodObject<{
        specifier: z.ZodString;
        line: z.ZodNumber;
        kind: z.ZodEnum<{
            external: "external";
            unresolved: "unresolved";
            local: "local";
        }>;
        bindings: z.ZodArray<z.ZodObject<{
            localName: z.ZodString;
            importedName: z.ZodOptional<z.ZodString>;
            isNamespace: z.ZodOptional<z.ZodBoolean>;
            isDefault: z.ZodOptional<z.ZodBoolean>;
        }, z.core.$strip>>;
        resolvedPath: z.ZodOptional<z.ZodString>;
        isReExport: z.ZodOptional<z.ZodBoolean>;
    }, z.core.$strip>>;
    calls: z.ZodArray<z.ZodObject<{
        callerName: z.ZodString;
        callerLine: z.ZodNumber;
        callerContainerName: z.ZodOptional<z.ZodString>;
        calleeName: z.ZodString;
        qualifier: z.ZodOptional<z.ZodString>;
        line: z.ZodNumber;
    }, z.core.$strip>>;
    relativePath: z.ZodString;
    moduleName: z.ZodString;
    language: z.ZodString;
    symbols: z.ZodArray<z.ZodObject<{
        type: z.ZodEnum<{
            function: "function";
            enum: "enum";
            class: "class";
            interface: "interface";
            "type-alias": "type-alias";
            variable: "variable";
        }>;
        name: z.ZodString;
        nodeId: z.ZodOptional<z.ZodString>;
        line: z.ZodNumber;
        endLine: z.ZodOptional<z.ZodNumber>;
        startColumn: z.ZodOptional<z.ZodNumber>;
        endColumn: z.ZodOptional<z.ZodNumber>;
        containerName: z.ZodOptional<z.ZodString>;
        signature: z.ZodOptional<z.ZodString>;
        exported: z.ZodOptional<z.ZodBoolean>;
        fullSignature: z.ZodOptional<z.ZodString>;
        returnType: z.ZodOptional<z.ZodString>;
        jsdoc: z.ZodOptional<z.ZodString>;
        isAsync: z.ZodOptional<z.ZodBoolean>;
        isStatic: z.ZodOptional<z.ZodBoolean>;
        visibility: z.ZodOptional<z.ZodEnum<{
            public: "public";
            protected: "protected";
            private: "private";
        }>>;
    }, z.core.$strip>>;
    inheritances: z.ZodArray<z.ZodObject<{
        className: z.ZodString;
        classLine: z.ZodNumber;
        baseName: z.ZodString;
        line: z.ZodNumber;
        kind: z.ZodOptional<z.ZodEnum<{
            implements: "implements";
            extends: "extends";
        }>>;
    }, z.core.$strip>>;
    content: z.ZodOptional<z.ZodUndefined>;
    lines: z.ZodOptional<z.ZodUndefined>;
    excerpt: z.ZodOptional<z.ZodUndefined>;
}, z.core.$strip>;
export type SlimParsedFile = Omit<ParsedFile, 'content' | 'lines' | 'excerpt'> & {
    content?: undefined;
    lines?: undefined;
    excerpt?: undefined;
};
export declare const CodebaseIndexSlimSchema: z.ZodObject<{
    repoRoot: z.ZodString;
    capabilities: z.ZodRecord<z.ZodString, z.ZodObject<{
        definitions: z.ZodBoolean;
        imports: z.ZodBoolean;
        calls: z.ZodBoolean;
        inheritance: z.ZodBoolean;
        content: z.ZodBoolean;
    }, z.core.$strip>>;
    skippedFiles: z.ZodArray<z.ZodObject<{
        path: z.ZodString;
        relativePath: z.ZodString;
        reason: z.ZodString;
    }, z.core.$strip>>;
    truncated: z.ZodOptional<z.ZodObject<{
        reason: z.ZodEnum<{
            maxFiles: "maxFiles";
            maxBytes: "maxBytes";
            maxFilesAndBytes: "maxFilesAndBytes";
        }>;
        keptFiles: z.ZodNumber;
        droppedFiles: z.ZodNumber;
        totalFiles: z.ZodNumber;
        totalBytes: z.ZodNumber;
        maxFiles: z.ZodOptional<z.ZodNumber>;
        maxBytes: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>>;
    contentMode: z.ZodLiteral<"none">;
    files: z.ZodArray<z.ZodObject<{
        path: z.ZodString;
        imports: z.ZodArray<z.ZodObject<{
            specifier: z.ZodString;
            line: z.ZodNumber;
            kind: z.ZodEnum<{
                external: "external";
                unresolved: "unresolved";
                local: "local";
            }>;
            bindings: z.ZodArray<z.ZodObject<{
                localName: z.ZodString;
                importedName: z.ZodOptional<z.ZodString>;
                isNamespace: z.ZodOptional<z.ZodBoolean>;
                isDefault: z.ZodOptional<z.ZodBoolean>;
            }, z.core.$strip>>;
            resolvedPath: z.ZodOptional<z.ZodString>;
            isReExport: z.ZodOptional<z.ZodBoolean>;
        }, z.core.$strip>>;
        calls: z.ZodArray<z.ZodObject<{
            callerName: z.ZodString;
            callerLine: z.ZodNumber;
            callerContainerName: z.ZodOptional<z.ZodString>;
            calleeName: z.ZodString;
            qualifier: z.ZodOptional<z.ZodString>;
            line: z.ZodNumber;
        }, z.core.$strip>>;
        relativePath: z.ZodString;
        moduleName: z.ZodString;
        language: z.ZodString;
        symbols: z.ZodArray<z.ZodObject<{
            type: z.ZodEnum<{
                function: "function";
                enum: "enum";
                class: "class";
                interface: "interface";
                "type-alias": "type-alias";
                variable: "variable";
            }>;
            name: z.ZodString;
            nodeId: z.ZodOptional<z.ZodString>;
            line: z.ZodNumber;
            endLine: z.ZodOptional<z.ZodNumber>;
            startColumn: z.ZodOptional<z.ZodNumber>;
            endColumn: z.ZodOptional<z.ZodNumber>;
            containerName: z.ZodOptional<z.ZodString>;
            signature: z.ZodOptional<z.ZodString>;
            exported: z.ZodOptional<z.ZodBoolean>;
            fullSignature: z.ZodOptional<z.ZodString>;
            returnType: z.ZodOptional<z.ZodString>;
            jsdoc: z.ZodOptional<z.ZodString>;
            isAsync: z.ZodOptional<z.ZodBoolean>;
            isStatic: z.ZodOptional<z.ZodBoolean>;
            visibility: z.ZodOptional<z.ZodEnum<{
                public: "public";
                protected: "protected";
                private: "private";
            }>>;
        }, z.core.$strip>>;
        inheritances: z.ZodArray<z.ZodObject<{
            className: z.ZodString;
            classLine: z.ZodNumber;
            baseName: z.ZodString;
            line: z.ZodNumber;
            kind: z.ZodOptional<z.ZodEnum<{
                implements: "implements";
                extends: "extends";
            }>>;
        }, z.core.$strip>>;
        content: z.ZodOptional<z.ZodUndefined>;
        lines: z.ZodOptional<z.ZodUndefined>;
        excerpt: z.ZodOptional<z.ZodUndefined>;
    }, z.core.$strip>>;
    nodes: z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        type: z.ZodEnum<{
            function: "function";
            file: "file";
            enum: "enum";
            module: "module";
            class: "class";
            interface: "interface";
            "type-alias": "type-alias";
            variable: "variable";
            parameter: "parameter";
        }>;
        name: z.ZodString;
        path: z.ZodString;
        relativePath: z.ZodOptional<z.ZodString>;
        line: z.ZodOptional<z.ZodNumber>;
        endLine: z.ZodOptional<z.ZodNumber>;
        startColumn: z.ZodOptional<z.ZodNumber>;
        endColumn: z.ZodOptional<z.ZodNumber>;
        language: z.ZodString;
        moduleName: z.ZodOptional<z.ZodString>;
        containerId: z.ZodOptional<z.ZodString>;
        containerName: z.ZodOptional<z.ZodString>;
        signature: z.ZodOptional<z.ZodString>;
        external: z.ZodOptional<z.ZodBoolean>;
    }, z.core.$strip>>;
    edges: z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        type: z.ZodEnum<{
            contains: "contains";
            imports: "imports";
            calls: "calls";
            inherits: "inherits";
            implements: "implements";
            has_parameter: "has_parameter";
        }>;
        from: z.ZodString;
        to: z.ZodOptional<z.ZodString>;
        fromPath: z.ZodString;
        toPath: z.ZodOptional<z.ZodString>;
        line: z.ZodOptional<z.ZodNumber>;
        status: z.ZodEnum<{
            resolved: "resolved";
            ambiguous: "ambiguous";
            unresolved: "unresolved";
        }>;
        targetName: z.ZodOptional<z.ZodString>;
        detail: z.ZodOptional<z.ZodString>;
        specifier: z.ZodOptional<z.ZodString>;
        importKind: z.ZodOptional<z.ZodEnum<{
            external: "external";
            unresolved: "unresolved";
            local: "local";
        }>>;
        candidates: z.ZodOptional<z.ZodArray<z.ZodObject<{
            name: z.ZodString;
            relativePath: z.ZodOptional<z.ZodString>;
            line: z.ZodOptional<z.ZodNumber>;
        }, z.core.$strip>>>;
    }, z.core.$strip>>;
}, z.core.$strip>;
export type CodebaseIndexSlim = Omit<CodebaseIndex, 'contentMode' | 'files' | 'nodes' | 'edges'> & {
    contentMode: 'none';
    files: SlimParsedFile[];
    nodes: CodeNode[];
    edges: CodeEdge[];
};
export declare function slimifyIndex(index: CodebaseIndex): CodebaseIndexSlim;
export declare function slimifyIndexCooperative(index: CodebaseIndex, yielder: Yielder): Promise<CodebaseIndexSlim>;
export declare function parseSlimIndex(value: unknown): CodebaseIndexSlim;
export declare function tryParseSlimIndex(value: unknown): CodebaseIndexSlim | undefined;
export declare function validateSlimIndex(value: unknown): {
    success: true;
    data: CodebaseIndexSlim;
} | {
    success: false;
    error: z.ZodError;
};
