import type { Session } from "neo4j-driver"; export type ConnectorKind = "google" | "m365" | "none"; export interface BusyInterval { start: string; end: string; } export interface ConnectorBusyInput { connector: ConnectorKind; busy: BusyInterval[]; } export interface SyncResult { connector: ConnectorKind; busyBlocks: number; reflected: number; } /** * Wholesale-replace the account's :ConnectorBusy nodes with the busy intervals * the admin turn read from its calendar connector. Delete-then-insert so an * upstream-deleted connector event stops blocking on the next sync, and a * deauthorised connector (connector='none', busy=[]) clears all blocks. * * The delete and every insert run in ONE write transaction so the replace is * all-or-nothing: a concurrent /api/calendar/free-busy read never observes the * transient empty set between clear and re-insert (which would publish a real * busy time as an open slot), and a mid-write failure rolls back to the prior * complete set rather than leaving a partial one. * * The LLM read the connector; this write and the counts are deterministic. */ export declare function syncConnectorBusy(session: Session, accountId: string, input: ConnectorBusyInput): Promise; //# sourceMappingURL=schedule-connector-busy-sync.d.ts.map