export interface RosterEntry { id: string; catalogId: string; capturedAt: number; equipped: boolean; } export interface RosterCaptureOptions { id?: string; capturedAt?: number; } export interface Roster { capture(userId: string, catalogId: string, options?: RosterCaptureOptions): RosterEntry; release(userId: string, entryId: string): boolean; has(userId: string, entryId: string): boolean; get(userId: string, entryId: string): RosterEntry | null; list(userId: string): readonly RosterEntry[]; equippedList(userId: string): readonly RosterEntry[]; setEquipped(userId: string, entryId: string, equipped: boolean): RosterEntry | null; snapshot(userId: string): readonly RosterEntry[]; hydrate(userId: string, entries: readonly RosterEntry[]): void; /** Whole-store capture across every owner — the world-save/replication seam (per-owner `snapshot` can't enumerate owners). */ snapshotAll(): Record; hydrateAll(data: Record): void; } export interface RosterDeps { now?: () => number; } export declare function createRoster(deps?: RosterDeps): Roster;