import { type Session, type SessionForkOptions, type SessionMetadata, type SessionRepo, type SessionTreeEntry } from "../harness/types.js";
export declare class InMemorySessionRepo implements SessionRepo<SessionMetadata, {
    id?: string;
}> {
    private sessions;
    create(options?: {
        id?: string;
    }): Promise<Session>;
    open(metadata: SessionMetadata): Promise<Session>;
    list(): Promise<SessionMetadata[]>;
    delete(metadata: SessionMetadata): Promise<void>;
    fork(sourceMetadata: SessionMetadata, options: SessionForkOptions): Promise<Session>;
    /** 2c session-sync: the FULL log for export. InMemory holds everything (no F3 floor), so
     *  `getEntries()` IS the full oldest-first log with `id`/`parentId` verbatim. */
    exportEntries(sessionId: string): Promise<SessionTreeEntry[]>;
    /** 2c session-sync: import a verbatim log into `sessionId`. The single invariant gate runs first
     *  ({@link validateEntriesForImport}, fail-closed); `owner` is a durable multi-tenant concept that the local
     *  in-memory backend has no field for, so it is accepted but unused here. design/171: the operator's
     *  trusted-import flag is forwarded to the gate that persists — see SessionRepo.importEntries. */
    importEntries(sessionId: string, owner: string | undefined, entries: SessionTreeEntry[], options?: {
        preserveActorAssertions?: boolean;
    }): Promise<void>;
}
