import type { DatabaseSync } from 'node:sqlite'; import type { ArkmeTeamMember } from './types.js'; import type { TeamCodexEventPage, TeamCodexInstallation, TeamCodexTask } from './team-codex-contract.js'; type Json = Record; /** Installation != task. All data stays in the original account-scoped local journal. */ export declare class TeamCodexMachineJournal { private readonly db; private readonly directory; private readonly now; private readonly read; private readonly write; private readonly queues; private readonly titles; constructor(db: DatabaseSync, directory: string, now: () => number, read: (path: string) => Json, write: (path: string, value: unknown) => void, codexHome?: string); migratedIds(): Set; private installations; private claim; private effectiveStatus; private exclusions; private control; state(user: number, team: string): { installations: TeamCodexInstallation[]; tasks: TeamCodexTask[]; }; invite(user: number, team: string, member: ArkmeTeamMember): { id: string; expiresAt: number; }; /** Caller performs account/member checks before any action that resumes collection. */ change(user: number, team: string, id: string, action: string, projectKey?: string): boolean; private rotate; private ownedTask; events(user: number, team: string, id: string, before?: number): TeamCodexEventPage | undefined; timingSource(user: number, team: string, id: string): { sessionId: string; homeKey: string; live: boolean; } | undefined; ingest(user: number): boolean; private visibility; private queueSnapshot; private captureTitles; private captureQueues; private adoptLegacy; private valid; /** Preserve old records on the same session, and stop the old hook so it cannot bypass exclusions. */ private migrateLegacy; } export {}; //# sourceMappingURL=team-codex-machine-journal.d.ts.map