import type { DatabaseSync } from 'node:sqlite'; import type { ArkmeTeam } from './types.js'; import type { TeamCodexEvent, TeamCodexEventPage, TeamCodexInvitation, TeamCodexState, TeamCodexTask } from './team-codex-contract.js'; import { TeamCodexCloudJournal } from './team-codex-cloud-journal.js'; export interface TeamCodexCloudPort { post(owner: number, path: string, body: Record, signal: AbortSignal): Promise; selectedTeam(teamRef: string, signal: AbortSignal): Promise; } export declare class TeamCodexCloud { private readonly db; private readonly port; private readonly currentUser; private readonly now; private readonly onConnectionEvidence; readonly journal: TeamCodexCloudJournal; private readonly queues; private readonly queueCapabilities; private readonly queueRetries; private readonly lastReads; private readonly taskReview; private controller; private readonly destinations; private readonly failures; private syncing; private confirming; constructor(db: DatabaseSync, port: TeamCodexCloudPort, currentUser: () => Promise, now?: () => number, onConnectionEvidence?: (owner: number) => void); private consent; enable(owner: number, localTeam: string, sourceName?: string): Promise; disable(owner: number, team: string): void; /** Read-only onboarding check: cloud capability is not the member's upload consent. */ invitationStatus(owner: number, localTeam: string): Promise['cloudUpload']>; fence(): void; private guard; private post; /** Metadata only. Callers supply only source IDs with accepted local Hook evidence. */ confirmSources(owner: number, localTeam: string, verifiedLocalSources: readonly string[]): Promise; /** Account history, independent of current team permissions, tasks or collection consent. */ connectionStatus(owner: number): Promise; private destination; private failure; sync(owner: number, localTeam: string, tasks: readonly TeamCodexTask[], readEvents: (task: TeamCodexTask) => TeamCodexEvent[]): Promise; private syncQueues; state(owner: number, localTeam: string, local: TeamCodexState, page?: number, memberRef?: string, sourceId?: string, projectKey?: string): Promise; /** Bridge the verified public account ID to the numeric cloud identity, never by display name. */ resolveMember(owner: number, localTeam: string, jotmoId: string): Promise; events(owner: number, localTeam: string, taskId: string, sourceId: string, cursor?: string): Promise; } //# sourceMappingURL=team-codex-cloud.d.ts.map