import { loadConfig } from "../config/config.js";
import { callGateway } from "../gateway/call.js";
import { onAgentEvent } from "../infra/agent-events.js";
import { type DeliveryContext } from "../utils/delivery-context.js";
import type { SubagentRunRecord } from "./subagent-registry.types.js";
export type { SubagentRunRecord } from "./subagent-registry.types.js";
export declare function markSubagentRunForSteerRestart(runId: string): boolean;
export declare function clearSubagentRunSteerRestart(runId: string): boolean;
export declare function replaceSubagentRunAfterSteer(params: {
    previousRunId: string;
    nextRunId: string;
    fallback?: SubagentRunRecord;
    runTimeoutSeconds?: number;
    preserveFrozenResultFallback?: boolean;
}): boolean;
export declare function registerSubagentRun(params: {
    runId: string;
    childSessionKey: string;
    requesterSessionKey: string;
    requesterOrigin?: DeliveryContext;
    requesterDisplayKey: string;
    task: string;
    cleanup: "delete" | "keep";
    label?: string;
    model?: string;
    workspaceDir?: string;
    runTimeoutSeconds?: number;
    expectsCompletionMessage?: boolean;
    spawnMode?: "run" | "session";
    attachmentsDir?: string;
    attachmentsRootDir?: string;
}): void;
export declare function resetSubagentRegistryForTests(opts?: {
    persist?: boolean;
}): void;
export declare function addSubagentRunForTests(entry: SubagentRunRecord): void;
export declare function getLatestSubagentRunByChildSessionKey(childSessionKey: string): SubagentRunRecord | null;
export declare function getSubagentRunByChildSessionKey(childSessionKey: string): SubagentRunRecord | null;
export declare function countPendingDescendantRunsExcludingRun(rootSessionKey: string, excludedRunId: string): number;
export declare function shouldIgnorePostCompletionAnnounceForSession(_childSessionKey: string): boolean;
export declare function releaseSubagentRun(runId: string): void;
export declare function resolveRequesterForChildSession(childSessionKey: string): {
    requesterSessionKey: string;
    requesterOrigin?: DeliveryContext;
} | null;
export declare function isSubagentSessionRunActive(childSessionKey: string): boolean;
export declare function markSubagentRunTerminated(params: {
    runId?: string;
    childSessionKey?: string;
    reason?: string;
}): number;
export declare function listSubagentRunsForRequester(requesterSessionKey: string): SubagentRunRecord[];
export declare function countActiveRunsForSession(requesterSessionKey: string): number;
export declare function countActiveDescendantRuns(rootSessionKey: string): number;
export declare function countPendingDescendantRuns(rootSessionKey: string): number;
export declare function listSubagentRunsForController(controllerSessionKey: string): SubagentRunRecord[];
export declare function getSubagentSessionStartedAt(entry: SubagentRunRecord): number | undefined;
export declare function getSubagentSessionRuntimeMs(entry: SubagentRunRecord, nowMs?: number): number | undefined;
export declare const __testing: {
    setDepsForTest(_overrides?: {
        callGateway?: typeof callGateway;
        loadConfig?: typeof loadConfig;
        onAgentEvent?: typeof onAgentEvent;
    }): void;
};
export declare function listDescendantRunsForRequester(rootSessionKey: string): SubagentRunRecord[];
export declare function initSubagentRegistry(): void;
