import type { OnProgress } from '../../progress-event.js';
import type { CreateEntitySessionOptions, OccEntityIntelligenceSession } from './session.js';
/**
 * Everything `createEntitySession` accepts that survives a structured clone.
 *
 * `signal`, `onProgress`, and `codeSession` are all live objects, so they are
 * held by the parent and never sent: the signal drives the child through the
 * IPC channel, progress events come back over it, and a caller-supplied code
 * session cannot be shared across processes at all.
 */
export type IsolatedEntitySessionOptions = Omit<CreateEntitySessionOptions, 'signal' | 'onProgress' | 'codeSession'>;
export interface CreateEntitySessionIsolatedOptions extends IsolatedEntitySessionOptions {
    signal?: AbortSignal;
}
/**
 * Warm this repository's caches in a child process, then open a session on them.
 *
 * What is isolated is the **build**, not the session. Nothing about a query
 * session is transferable — it is a graph of maps over shared string identity —
 * so the child does the part that actually costs: the commit walk, blob reads,
 * tree-sitter parsing, and lineage matching, all of which are CPU- and
 * git-bound and would otherwise block the caller's event loop for as long as a
 * cold index takes. It persists both the lineage cache and the code index, then
 * exits; the parent opens a normal session, which finds both warm.
 *
 * That leaves the parent paying deserialization, and only for what an unchanged
 * index actually reads — the lineage heads and event log, never the parsed-blob
 * cache. It is a real cost, not zero, and this function does not pretend
 * otherwise; it is a fraction of a cold build.
 *
 * A cache directory is therefore required. With `cacheDir: false` the child
 * would build in memory and take every result to the grave, so that
 * combination is refused rather than silently degraded to an in-process build.
 */
export declare function createEntitySessionIsolated(options: CreateEntitySessionIsolatedOptions, onProgress?: OnProgress): Promise<OccEntityIntelligenceSession>;
