/** * Customer signals — lighter than `proposals` (no deal value or * stages), heavier than `segments` (lifecycle + assignment). Records * "person X expressed interest in product/departure Y from source Z, * status pending". The most common use cases: * * - Notify-availability ("ping me when this departure opens up") * - Wishlist / saved trips * - Inquiry captured by an operator (phone call, web form) * - Request-offer pre-pipeline that may or may not become a booking * - Abandoned-cart recovery * * Cross-module IDs (`productId`, `optionUnitId`, `resolvedBookingId`) * are intentionally plain `text()` columns rather than FK references * — voyant's project-wide rule is that cross-module FKs go through * link tables or stay loose. The signal is owned by CRM; products * and bookings reference its id, not the other way around. */ export declare const customerSignalKindEnum: import("drizzle-orm/pg-core").PgEnum<["wishlist", "notify", "inquiry", "request_offer", "referral"]>; export declare const customerSignalSourceEnum: import("drizzle-orm/pg-core").PgEnum<["form", "phone", "admin", "abandoned_cart", "website", "booking"]>; export declare const customerSignalStatusEnum: import("drizzle-orm/pg-core").PgEnum<["new", "contacted", "qualified", "converted", "lost", "expired"]>; export declare const customerSignals: import("drizzle-orm/pg-core").PgTableWithColumns<{ name: "customer_signals"; schema: undefined; columns: { id: import("drizzle-orm/pg-core").PgColumn<{ name: string; tableName: "customer_signals"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: true; isAutoincrement: false; hasRuntimeDefault: true; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; personId: import("drizzle-orm/pg-core").PgColumn<{ name: string; tableName: "customer_signals"; 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; }, {}, {}>; productId: import("drizzle-orm/pg-core").PgColumn<{ name: "product_id"; tableName: "customer_signals"; 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; }, {}, {}>; optionUnitId: import("drizzle-orm/pg-core").PgColumn<{ name: "option_unit_id"; tableName: "customer_signals"; 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; }, {}, {}>; kind: import("drizzle-orm/pg-core").PgColumn<{ name: "kind"; tableName: "customer_signals"; dataType: "string"; columnType: "PgEnumColumn"; data: "wishlist" | "notify" | "inquiry" | "request_offer" | "referral"; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: ["wishlist", "notify", "inquiry", "request_offer", "referral"]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; source: import("drizzle-orm/pg-core").PgColumn<{ name: "source"; tableName: "customer_signals"; dataType: "string"; columnType: "PgEnumColumn"; data: "form" | "phone" | "admin" | "abandoned_cart" | "website" | "booking"; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: ["form", "phone", "admin", "abandoned_cart", "website", "booking"]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; status: import("drizzle-orm/pg-core").PgColumn<{ name: "status"; tableName: "customer_signals"; dataType: "string"; columnType: "PgEnumColumn"; data: "new" | "contacted" | "qualified" | "converted" | "lost" | "expired"; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: ["new", "contacted", "qualified", "converted", "lost", "expired"]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; priority: import("drizzle-orm/pg-core").PgColumn<{ name: "priority"; tableName: "customer_signals"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; notes: import("drizzle-orm/pg-core").PgColumn<{ name: "notes"; tableName: "customer_signals"; 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; }, {}, {}>; tags: import("drizzle-orm/pg-core").PgColumn<{ name: "tags"; tableName: "customer_signals"; dataType: "json"; columnType: "PgJsonb"; data: string[]; driverParam: unknown; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, { $type: string[]; }>; assignedToUserId: import("drizzle-orm/pg-core").PgColumn<{ name: "assigned_to_user_id"; tableName: "customer_signals"; 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; }, {}, {}>; followUpAt: import("drizzle-orm/pg-core").PgColumn<{ name: "follow_up_at"; tableName: "customer_signals"; 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; }, {}, {}>; resolvedBookingId: import("drizzle-orm/pg-core").PgColumn<{ name: "resolved_booking_id"; tableName: "customer_signals"; 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; }, {}, {}>; sourceSubmissionId: import("drizzle-orm/pg-core").PgColumn<{ name: "source_submission_id"; tableName: "customer_signals"; 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; }, {}, {}>; metadata: import("drizzle-orm/pg-core").PgColumn<{ name: "metadata"; tableName: "customer_signals"; dataType: "json"; columnType: "PgJsonb"; data: Record; driverParam: unknown; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, { $type: Record; }>; createdAt: import("drizzle-orm/pg-core").PgColumn<{ name: "created_at"; tableName: "customer_signals"; 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; }, {}, {}>; updatedAt: import("drizzle-orm/pg-core").PgColumn<{ name: "updated_at"; tableName: "customer_signals"; 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; }, {}, {}>; }; dialect: "pg"; }>; export type CustomerSignal = typeof customerSignals.$inferSelect; export type NewCustomerSignal = typeof customerSignals.$inferInsert;