import type { CodegraphConfig } from '../types.js';
export type { CodegraphConfig } from '../types.js';
export declare const CONFIG_FILES: readonly string[];
export declare const DEFAULTS: {
    include: string[];
    exclude: string[];
    ignoreDirs: string[];
    extensions: string[];
    aliases: Record<string, string>;
    build: {
        incremental: true;
        dbPath: string;
        driftThreshold: number;
        smallFilesThreshold: number;
        typescriptResolver: false;
    };
    query: {
        defaultDepth: number;
        defaultLimit: number;
        excludeTests: false;
    };
    embeddings: {
        model: string | null;
        llmProvider: string | null;
    };
    llm: {
        provider: string | null;
        model: string | null;
        baseUrl: string | null;
        apiKey: string | null;
        apiKeyCommand: string | null;
    };
    search: {
        defaultMinScore: number;
        rrfK: number;
        topK: number;
        similarityWarnThreshold: number;
    };
    ci: {
        failOnCycles: false;
        impactThreshold: number | null;
    };
    manifesto: {
        rules: {
            cognitive: {
                warn: number;
            };
            cyclomatic: {
                warn: number;
            };
            maxNesting: {
                warn: number;
            };
            maintainabilityIndex: {
                warn: number;
                fail: number | null;
            };
            importCount: {
                warn: number | null;
                fail: number | null;
            };
            exportCount: {
                warn: number | null;
                fail: number | null;
            };
            lineCount: {
                warn: number | null;
                fail: number | null;
            };
            fanIn: {
                warn: number | null;
                fail: number | null;
            };
            fanOut: {
                warn: number | null;
                fail: number | null;
            };
            noCycles: {
                warn: number | null;
                fail: number | null;
            };
            boundaries: {
                warn: number | null;
                fail: number | null;
            };
        };
        boundaries: unknown;
    };
    check: {
        cycles: true;
        blastRadius: number | null;
        signatures: true;
        boundaries: true;
        depth: number;
    };
    coChange: {
        since: string;
        minSupport: number;
        minJaccard: number;
        maxFilesPerCommit: number;
    };
    analysis: {
        impactDepth: number;
        fnImpactDepth: number;
        auditDepth: number;
        sequenceDepth: number;
        falsePositiveCallers: number;
        briefCallerDepth: number;
        briefImporterDepth: number;
        briefHighRiskCallers: number;
        briefMediumRiskCallers: number;
        typePropagationDepth: number;
        /**
         * Maximum fixed-point iterations for the Phase 8.3 points-to solver.
         * @reserved — currently not wired to either the WASM solver
         * (`MAX_SOLVER_ITERATIONS` in `points-to.ts`) or the native Rust solver
         * (`MAX_SOLVER_ITERATIONS` in `edge_builder.rs`), both of which use the
         * same hardcoded value of 50.  See the TODO comment above.
         */
        pointsToMaxIterations: number;
    };
    community: {
        resolution: number;
        maxLevels: number;
        maxLocalPasses: number;
        refinementTheta: number;
    };
    structure: {
        cohesionThreshold: number;
    };
    risk: {
        weights: {
            fanIn: number;
            complexity: number;
            churn: number;
            role: number;
            mi: number;
        };
        roleWeights: Record<string, number>;
        defaultRoleWeight: number;
    };
    display: {
        maxColWidth: number;
        excerptLines: number;
        summaryMaxChars: number;
        jsdocEndScanLines: number;
        jsdocOpenScanLines: number;
        signatureGatherLines: number;
    };
    mcp: {
        defaults: {
            list_functions: number;
            query: number;
            where: number;
            node_roles: number;
            export_graph: number;
            fn_impact: number;
            context: number;
            explain: number;
            file_deps: number;
            file_exports: number;
            diff_impact: number;
            impact_analysis: number;
            semantic_search: number;
            execution_flow: number;
            hotspots: number;
            co_changes: number;
            complexity: number;
            manifesto: number;
            communities: number;
            structure: number;
            triage: number;
            ast_query: number;
            implementations: number;
            interfaces: number;
        };
        disabledTools: string[];
    };
};
/**
 * Load project configuration from a .codegraphrc.json or similar file.
 * Returns merged config with defaults. Results are cached per cwd.
 */
export declare function loadConfig(cwd?: string): CodegraphConfig;
/**
 * Clear the config cache. Intended for long-running processes that need to
 * pick up on-disk config changes, and for test isolation when tests share
 * the same cwd.
 */
export declare function clearConfigCache(): void;
export declare function applyEnvOverrides(config: CodegraphConfig): CodegraphConfig;
export declare function resolveSecrets(config: CodegraphConfig): CodegraphConfig;
interface WorkspaceEntry {
    dir: string;
    entry: string | null;
}
export declare function detectWorkspaces(rootDir: string): Map<string, WorkspaceEntry>;
export declare function mergeConfig(defaults: Record<string, unknown>, overrides: Record<string, unknown>): Record<string, unknown>;
//# sourceMappingURL=config.d.ts.map