/**
 * Pure REST handlers for `/api/sessions/*`.
 *
 * Same shape as projects handlers — see that file's header for the contract.
 *
 * Note: session deletion does not tear down the in-flight spectral stream itself.
 * The Batch 3 dispatcher must call `manager.disposeSessionStream(id)` BEFORE
 * invoking `handleDeleteSession` so the FK cascade doesn't leave a zombie
 * bridge driving events at a row that no longer exists. This matches the
 * ordering the old Hono route used.
 */
import type { SessionStreamManager } from "../session-stream.js";
import type { SessionStore } from "../storage.js";
import type { WireSessionDetail, WireSessionMemoryDetails, WireSessionMemoryStatus, WireSessionSummary } from "../wire.js";
export interface CreateSessionInputRaw {
    projectId?: unknown;
    title?: unknown;
}
export interface UpdateSessionInputRaw {
    title?: unknown;
}
export declare function handleCreateSession(store: SessionStore, body: CreateSessionInputRaw): WireSessionSummary;
export declare function handleGetSessionDetail(store: SessionStore, id: string): WireSessionDetail;
export declare function handleUpdateSession(store: SessionStore, id: string, body: UpdateSessionInputRaw): WireSessionSummary;
export declare function handleDeleteSession(store: SessionStore, id: string): void;
export declare function handleGetSessionMemoryStatus(store: SessionStore, manager: SessionStreamManager, id: string): WireSessionMemoryStatus;
export declare function handleGetSessionMemoryDetails(store: SessionStore, manager: SessionStreamManager, id: string): WireSessionMemoryDetails;
export declare function handleCompactSession(store: SessionStore, manager: SessionStreamManager, id: string): Promise<{
    ok: true;
}>;
/**
 * Remember & delete: compact the session (which persists observations as
 * project memory via the compaction hook), then delete the session.
 *
 * This gives the user a way to keep a session's reflections as durable
 * cross-session memory even for short sessions that never hit the compaction
 * threshold naturally.
 */
export declare function handleRememberAndDeleteSession(store: SessionStore, manager: SessionStreamManager, id: string): Promise<{
    ok: true;
}>;
/**
 * Fork a session: create a new session copying all messages from the
 * source, with the `fork_compact_source_id` flag set so the
 * SessionStreamManager compacts after the first assistant turn.
 */
export declare function handleForkSession(store: SessionStore, id: string, body: {
    title?: unknown;
}): WireSessionSummary;
//# sourceMappingURL=sessions.d.ts.map