/** * Transactional outbox for domain events (RFC voyant#1687 Phase 2.1). * * An emitted event becomes a durable row BEFORE its subscribers run, so * a Worker dying mid-delivery no longer silently loses invoice syncs, * channel pushes, or workflow triggers. Services that need write * atomicity insert rows inside their own transaction (via * `enqueueOutboxEvents(tx, ...)` from `@voyantjs/db/outbox`); the drain * then delivers post-commit. * * Delivery semantics: **at-least-once**. A row is claimed with a * visibility timeout (no separate "processing" status — a crashed * claimer's row simply becomes due again), delivered to ALL subscribers, * and either completed or rescheduled with exponential backoff until * `max_attempts`, after which it dead-letters as `failed`. Subscribers * must be idempotent — the workflow forwarder already dedups on * `metadata.eventId`, and plugin subscribers key on external refs. */ export declare const eventOutboxTable: Omit; eventId: import("drizzle-orm/pg-core").PgColumn<{ name: "event_id"; tableName: "event_outbox"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; name: import("drizzle-orm/pg-core").PgColumn<{ name: "name"; tableName: "event_outbox"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; payload: import("drizzle-orm/pg-core").PgColumn<{ name: "payload"; tableName: "event_outbox"; dataType: "json"; columnType: "PgJsonb"; data: unknown; driverParam: unknown; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; metadata: import("drizzle-orm/pg-core").PgColumn<{ name: "metadata"; tableName: "event_outbox"; dataType: "json"; columnType: "PgJsonb"; data: unknown; driverParam: unknown; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; status: import("drizzle-orm/pg-core").PgColumn<{ name: "status"; tableName: "event_outbox"; dataType: "string"; columnType: "PgText"; data: "failed" | "pending" | "delivered"; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: ["pending", "delivered", "failed"]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; attempts: import("drizzle-orm/pg-core").PgColumn<{ name: "attempts"; tableName: "event_outbox"; dataType: "number"; columnType: "PgInteger"; data: number; driverParam: string | number; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; maxAttempts: import("drizzle-orm/pg-core").PgColumn<{ name: "max_attempts"; tableName: "event_outbox"; dataType: "number"; columnType: "PgInteger"; data: number; driverParam: string | number; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; nextAttemptAt: import("drizzle-orm/pg-core").PgColumn<{ name: "next_attempt_at"; tableName: "event_outbox"; dataType: "date"; columnType: "PgTimestamp"; data: Date; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; lastError: import("drizzle-orm/pg-core").PgColumn<{ name: "last_error"; tableName: "event_outbox"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; createdAt: import("drizzle-orm/pg-core").PgColumn<{ name: "created_at"; tableName: "event_outbox"; dataType: "date"; columnType: "PgTimestamp"; data: Date; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; deliveredAt: import("drizzle-orm/pg-core").PgColumn<{ name: "delivered_at"; tableName: "event_outbox"; dataType: "date"; columnType: "PgTimestamp"; data: Date; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; }; dialect: "pg"; }>, "enableRLS">; export type EventOutboxRow = typeof eventOutboxTable.$inferSelect; export type InsertEventOutboxRow = typeof eventOutboxTable.$inferInsert; //# sourceMappingURL=event_outbox.d.ts.map