import type { SubagentInputRequestHookPayload } from "#channel/types.js";
import type { HarnessSession, SessionStateMap } from "#harness/types.js";
/**
 * Returns the proxy-routing map as a fresh `Map`. Never returns a live
 * reference so accidental mutation cannot corrupt session state.
 */
export declare function getProxyInputRequests(state: SessionStateMap | undefined): ReadonlyMap<string, string>;
/**
 * Returns true when the session is currently proxying one or more
 * HITL requests on behalf of a descendant subagent.
 */
export declare function hasProxyInputRequests(state: SessionStateMap | undefined): boolean;
/**
 * Replaces prior entries for `forChildContinuationToken` with the
 * provided ones. A child raising a fresh batch overwrites its prior
 * batch — the parent never keeps stale request metadata.
 */
export declare function upsertProxyInputRequests(input: {
    readonly entries: readonly (readonly [requestId: string, childContinuationToken: string])[];
    readonly forChildContinuationToken: string;
    readonly session: HarnessSession;
}): HarnessSession;
/**
 * Removes every entry for `childContinuationToken`. Called when a
 * child subagent finishes so stale clicks no longer route to it.
 */
export declare function clearProxyInputRequestsForChild(session: HarnessSession, childContinuationToken: string): HarnessSession;
/**
 * Projects a {@link SubagentInputRequestHookPayload} into the
 * `(requestId, childContinuationToken)` tuples the session stores.
 */
export declare function toProxyInputRequestEntries(payload: SubagentInputRequestHookPayload): readonly (readonly [requestId: string, childContinuationToken: string])[];
