/**
 * 进程注册表服务
 *
 * 集中管理 Agent 进程生命周期状态，支持进程注册、追踪、状态管理和持久化
 */
/**
 * 进程状态类型
 */
export type ProcessState = 'creating' | 'running' | 'stopping' | 'orphaned' | 'terminated' | 'unknown';
/**
 * 进程健康状态
 */
export interface HealthStatus {
    cpu: number;
    memoryMB: number;
    status: string;
}
/**
 * 进程记录接口
 */
export interface ProcessRecord {
    agentId: string;
    sessionId: string;
    pid: number;
    mode: 'sdk';
    state: ProcessState;
    workspacePath: string;
    command: string;
    createdAt: string;
    lastHeartbeat?: string;
    healthStatus?: HealthStatus;
    orphanedAt?: string;
    metadata?: Record<string, unknown>;
}
/**
 * 持久化会话输入（用于重建注册表）
 */
export interface PersistedSessionInput {
    agentId: string;
    sessionId: string;
    pid?: number;
    workspacePath?: string;
    command?: string;
    mode?: 'sdk';
}
/**
 * 获取持久化注册表文件路径
 *
 * @returns 注册表文件路径
 */
export declare function getProcessRegistryFile(): string;
/**
 * 进程注册表类
 *
 * 管理所有 Agent 进程的生命周期状态，提供注册、查询、更新和持久化功能
 */
export declare class ProcessRegistry {
    private static instance;
    private readonly records;
    private readonly pidToAgentId;
    /**
     * 私有构造函数，强制使用单例模式
     */
    private constructor();
    /**
     * 获取 ProcessRegistry 单例实例
     *
     * @returns ProcessRegistry 实例
     */
    static getInstance(): ProcessRegistry;
    /**
     * 持久化注册表状态到文件
     */
    private persist;
    private mutate;
    /**
     * 注册新进程
     *
     * @param record - 进程记录（不包含 createdAt）
     * @returns 是否注册成功
     */
    register(record: Omit<ProcessRecord, 'createdAt'>): Promise<void>;
    /**
     * 更新进程记录
     *
     * @param agentId - Agent ID
     * @param updates - 要更新的字段
     * @returns 是否更新成功
     */
    update(agentId: string, updates: Partial<ProcessRecord>): Promise<boolean>;
    /**
     * 通过 agentId 获取进程记录
     *
     * @param agentId - Agent ID
     * @returns 进程记录或 undefined
     */
    get(agentId: string): ProcessRecord | undefined;
    /**
     * 通过 PID 获取进程记录
     *
     * @param pid - 进程 ID
     * @returns 进程记录或 undefined
     */
    getByPid(pid: number): ProcessRecord | undefined;
    /**
     * 获取所有进程记录
     *
     * @returns 所有进程记录的数组
     */
    getAll(): ProcessRecord[];
    /**
     * 通过状态过滤进程记录
     *
     * @param state - 进程状态
     * @returns 符合状态的进程记录数组
     */
    getByState(state: ProcessState): ProcessRecord[];
    /**
     * 检查进程是否被管理
     *
     * @param agentId - Agent ID
     * @returns 是否被管理
     */
    isManaged(agentId: string): boolean;
    /**
     * 检查 PID 是否被管理
     *
     * @param pid - 进程 ID
     * @returns 是否被管理
     */
    isManagedByPid(pid: number): boolean;
    /**
     * 标记进程为孤儿状态
     *
     * @param agentId - Agent ID
     * @returns 是否标记成功
     */
    markOrphaned(agentId: string): Promise<boolean>;
    /**
     * 标记进程为终止状态
     *
     * @param agentId - Agent ID
     * @returns 是否标记成功
     */
    markTerminated(agentId: string): Promise<boolean>;
    /**
     * 移除进程记录
     *
     * @param agentId - Agent ID
     * @returns 是否移除成功
     */
    remove(agentId: string): Promise<boolean>;
    /**
     * 更新进程心跳时间
     *
     * @param agentId - Agent ID
     * @returns 是否更新成功
     */
    updateHeartbeat(agentId: string): Promise<boolean>;
    /**
     * 更新进程健康状态
     *
     * @param agentId - Agent ID
     * @param health - 健康状态
     * @returns 是否更新成功
     */
    updateHealth(agentId: string, health: HealthStatus): Promise<boolean>;
    /**
     * 从持久化会话重建注册表
     *
     * @param sessions - 持久化会话数组
     */
    rebuildFromPersisted(sessions: PersistedSessionInput[]): Promise<void>;
    /**
     * 导出所有进程记录用于持久化
     *
     * @returns 所有进程记录的数组
     */
    exportState(): ProcessRecord[];
    /**
     * 获取进程数量统计
     *
     * @returns 各状态的进程数量
     */
    getStats(): Record<ProcessState | 'total', number>;
    /**
     * 清空所有进程记录
     */
    clear(): Promise<void>;
}
/**
 * 获取 ProcessRegistry 单例实例的便捷函数
 *
 * @returns ProcessRegistry 实例
 */
export declare function getProcessRegistry(): ProcessRegistry;
/**
 * 加载持久化的进程注册表
 *
 * @returns 进程记录数组
 */
export declare function loadPersistedProcessRegistry(): Promise<ProcessRecord[]>;
/**
 * 保存进程注册表到持久化文件
 *
 * @param records - 进程记录数组
 */
export declare function savePersistedProcessRegistry(records: ProcessRecord[]): Promise<void>;
//# sourceMappingURL=process-registry.d.ts.map