export type ReaderId = 'claude-cli' | 'codex-cli' | 'antigravity-cli' | 'hermes-cli';
export interface NativeHistoryInput {
    agentType?: string;
    sessionId?: string;
    providerSessionId?: string;
    historySessionId?: string;
    /** Daemon instance id of the reading session. Used (with workspace +
     *  sessionStartedAtMs) to derive the antigravity conversation-claim owner
     *  token so two concurrent sessions never bind to the same .db. */
    instanceId?: string;
    workspace?: string;
    sessionStartedAtMs?: number;
    format?: string;
    watchPath?: string;
    forceRefresh?: boolean;
    args?: Record<string, unknown>;
}
export interface NativeHistoryResult {
    messages: Array<{
        role: string;
        content: string;
        receivedAt?: number;
        kind?: string;
        workspace?: string;
    }>;
    providerSessionId?: string;
    sourcePath: string;
    sourceMtimeMs: number;
    nativeHistoryCoverage?: 'full' | 'partial' | 'best-effort';
    /**
     * True only when the resolved conversation is confirmed to belong to THIS
     * reading session by the owner-token identity (an exact uuid bind, or a
     * spawn-floor/birth-time pick born after this session started). False for a
     * bare recency/newest-by-mtime pick made with no spawn floor — that pick may
     * alias a co-located concurrent session (the antigravity coordinator↔replica
     * crosswire), so its uuid must NEVER be recorded as a pin nor trusted to
     * satisfy the same-pass safe-mapping identity check. Read-path callers gate
     * the workspace-latest pin + first-read trust on this flag. Non-antigravity
     * readers leave it undefined (their existing exact-file resolution is
     * unaffected by this signal).
     */
    ownerConfirmed?: boolean;
}
export declare function createNativeHistoryDispatcher(reader: ReaderId): (input: NativeHistoryInput) => NativeHistoryResult | null;
