import type { AgentModelInput } from '../types.js'; export type SessionSurface = 'cli' | 'telegram' | 'daemon' | 'web'; export type SessionStatus = 'active' | 'archived'; export type HandleId = string & { readonly __brand: 'HandleId'; }; export declare function asHandleId(id: string): HandleId; export interface BindingRef { surface: SessionSurface; key: string; } export interface SessionBinding extends BindingRef { boundAt: number; lastActiveAt: number; } export interface SessionHandle { id: HandleId; sdkSessionId?: string; surface: SessionSurface; name?: string; model: AgentModelInput; cwd?: string; createdAt: number; lastActiveAt: number; status: SessionStatus; bindings: SessionBinding[]; } export interface CreateSessionOptions { surface: SessionSurface; model: AgentModelInput; key: string; cwd?: string; name?: string; sdkSessionId?: string; id?: HandleId; createdAt?: number; } export interface ListFilter { surface?: SessionSurface; status?: SessionStatus; } export interface SessionRegistry { create(opts: CreateSessionOptions): SessionHandle; load(handle: SessionHandle): void; get(id: HandleId): SessionHandle | undefined; getBySdkSessionId(sdkSessionId: string): SessionHandle | undefined; resolve(surface: SessionSurface, key: string): SessionHandle | undefined; bind(id: HandleId, ref: BindingRef): void; unbind(surface: SessionSurface, key: string): void; attachSdkSessionId(id: HandleId, sdkSessionId: string): void; rename(id: HandleId, name: string): void; touch(id: HandleId): void; archive(id: HandleId): void; list(filter?: ListFilter): SessionHandle[]; } export declare class SessionRegistryError extends Error { constructor(message: string); } export declare class InMemorySessionRegistry implements SessionRegistry { private readonly byId; private readonly byBinding; private readonly bySdk; private readonly now; constructor(opts?: { now?: () => number; }); create(opts: CreateSessionOptions): SessionHandle; load(handle: SessionHandle): void; get(id: HandleId): SessionHandle | undefined; getBySdkSessionId(sdkSessionId: string): SessionHandle | undefined; resolve(surface: SessionSurface, key: string): SessionHandle | undefined; bind(id: HandleId, ref: BindingRef): void; unbind(surface: SessionSurface, key: string): void; attachSdkSessionId(id: HandleId, sdkSessionId: string): void; rename(id: HandleId, name: string): void; touch(id: HandleId): void; archive(id: HandleId): void; list(filter?: ListFilter): SessionHandle[]; private bindingKey; private require; private pointBinding; private clone; } export declare function createSessionRegistry(opts?: { now?: () => number; }): SessionRegistry; export declare const sessionRegistry: SessionRegistry;