/**
 * BuildInfoService - Provides build and runtime information
 * Separated from main index.ts to avoid making that file larger
 *
 * SECURITY FIX (PR #614):
 * 1. DMCP-SEC-004: FALSE POSITIVE SUPPRESSION - No user input Unicode normalization needed
 *    This service only processes system information (git, package.json, environment variables)
 *    The MCP tool 'get_build_info' takes NO parameters (empty inputSchema)
 *    No user-provided data flows through this service that requires Unicode normalization
 */
import { IFileOperationsService } from './FileOperationsService.js';
import type { StartupTimer, StartupReport } from '../telemetry/StartupTimer.js';
import { type PermissionHookDiagnosticRecord, type PermissionHookHealthSummary, type PermissionHookStartupRepairSummary } from '../utils/permissionHooks.js';
export interface BuildInfo {
    sessionId: string;
    runtimeSessionId: string;
    sessionSource: 'env' | 'derived';
    package: {
        name: string;
        version: string;
    };
    build: {
        timestamp?: string;
        type: 'git' | 'npm' | 'unknown';
        gitCommit?: string;
        gitBranch?: string;
    };
    runtime: {
        nodeVersion: string;
        platform: string;
        arch: string;
        uptime: number;
        memoryUsage: NodeJS.MemoryUsage;
    };
    environment: {
        nodeEnv?: string;
        isProduction: boolean;
        isDevelopment: boolean;
        isDebug: boolean;
        isDocker: boolean;
        dockerInfo?: string;
    };
    server: {
        startTime: Date;
        uptime: number;
        mcpConnection: boolean;
    };
    permissionHooks?: {
        health: PermissionHookHealthSummary;
        installedHosts: string[];
        currentHosts: string[];
        repairedHosts: string[];
        needsRepairHosts: string[];
        diagnosticsPath: string;
        lastDiagnostic: PermissionHookDiagnosticRecord | null;
        lastStartupRepair: PermissionHookStartupRepairSummary | null;
    };
    /** Issue #706: Startup timing and readiness status. */
    startup?: {
        status: 'ready' | 'initializing';
        deferredSetupComplete: boolean;
        uptimeMs: number;
        startupTimingMs?: StartupReport;
    };
}
export declare class BuildInfoService {
    private readonly startTime;
    private readonly fileOperations;
    /** Issue #706: Optional startup timer for timing instrumentation. */
    private startupTimer;
    /** Issue #706: Callback to check deferred setup status. */
    private deferredSetupChecker;
    constructor(fileOperations: IFileOperationsService);
    /**
     * Issue #706: Wire in startup instrumentation after DI is ready.
     * Called from Container to avoid circular dependency at registration time.
     */
    setStartupTimer(timer: StartupTimer): void;
    /**
     * Issue #706: Wire in deferred setup status checker.
     */
    setDeferredSetupChecker(checker: () => boolean): void;
    /**
     * Get comprehensive build information
     * SECURITY NOTE: This method processes only system-generated data
     * No user input is involved - all data comes from filesystem, git, and Node.js process
     *
     * Uses Promise.allSettled to collect partial results even if some sources fail,
     * providing maximum information availability with graceful degradation.
     */
    getBuildInfo(): Promise<BuildInfo>;
    /**
     * Format build info as user-friendly markdown
     * SECURITY NOTE: Only formats system-generated data - no user input processing
     * All input data comes from getBuildInfo() which only reads system information
     */
    formatBuildInfo(info: BuildInfo): string;
    /**
     * SECURITY NOTE: No Unicode normalization needed - executes system git commands
     * Data source: Git CLI output (system-controlled), no user input
     */
    private getGitInfo;
    /**
     * SECURITY NOTE: No Unicode normalization needed - reads container runtime files
     * Data source: System cgroup files (container-controlled), no user input
     */
    private getDockerInfo;
    private formatUptime;
    private formatMemory;
}
//# sourceMappingURL=BuildInfoService.d.ts.map