import type { Logger } from './types.js'; import { UserTitleStore } from './user-title-store.js'; /** The account evidence a session row carries. Structural rather than the full * `SessionRow` so the `/spawn` call site, which has a cwd and no row, can * satisfy it without synthesising one. */ export interface TitleStoreRowRef { cwd: string | null; accountId: string | null; } export declare class AccountTitleStores { private readonly accountsRoot; private readonly bootAccountId; private readonly logger; private readonly byAccountId; /** `bootAccountDir` is `/data/accounts/`; its * parent is the accounts root every per-account file hangs off. */ constructor(bootAccountDir: string, logger: Logger); /** The per-account store for `accountId`, created and loaded from disk on * first access and cached thereafter. A null `accountId` (unresolvable * session account) falls back to the boot account and is logged. */ forAccount(accountId: string | null, source?: string): UserTitleStore; /** The per-account store for the account a session runs under. * * `cwd` is tried first: for a live row it is read from claude's own PID * file and is the standing spawn-directory invariant (Tasks 1315/1322). * Once the process exits there is no PID file and no cwd, so the sidecar's * `accountId` — which survives the process — is the evidence that remains. * Both absent means the sidecar predates Task 983's stamping, and the boot * fallback logs it. */ forSessionRow(row: TitleStoreRowRef | null | undefined): UserTitleStore; /** The boot account's store — used for the manager's boot-ready size log. */ bootStore(): UserTitleStore; } //# sourceMappingURL=account-title-stores.d.ts.map