@voyant-travel/charters 0.117.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +16 -0
  3. package/dist/adapters/index.d.ts +254 -0
  4. package/dist/adapters/index.d.ts.map +1 -0
  5. package/dist/adapters/index.js +16 -0
  6. package/dist/adapters/memoize.d.ts +28 -0
  7. package/dist/adapters/memoize.d.ts.map +1 -0
  8. package/dist/adapters/memoize.js +121 -0
  9. package/dist/adapters/mock.d.ts +50 -0
  10. package/dist/adapters/mock.d.ts.map +1 -0
  11. package/dist/adapters/mock.js +194 -0
  12. package/dist/adapters/registry.d.ts +24 -0
  13. package/dist/adapters/registry.d.ts.map +1 -0
  14. package/dist/adapters/registry.js +40 -0
  15. package/dist/booking-extension.d.ts +895 -0
  16. package/dist/booking-extension.d.ts.map +1 -0
  17. package/dist/booking-extension.js +339 -0
  18. package/dist/catalog-policy.d.ts +23 -0
  19. package/dist/catalog-policy.d.ts.map +1 -0
  20. package/dist/catalog-policy.js +400 -0
  21. package/dist/content-shape.d.ts +5 -0
  22. package/dist/content-shape.d.ts.map +1 -0
  23. package/dist/content-shape.js +13 -0
  24. package/dist/draft-shape.d.ts +29 -0
  25. package/dist/draft-shape.d.ts.map +1 -0
  26. package/dist/draft-shape.js +63 -0
  27. package/dist/index.d.ts +31 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +55 -0
  30. package/dist/lib/key.d.ts +22 -0
  31. package/dist/lib/key.d.ts.map +1 -0
  32. package/dist/lib/key.js +24 -0
  33. package/dist/routes-public.d.ts +785 -0
  34. package/dist/routes-public.d.ts.map +1 -0
  35. package/dist/routes-public.js +234 -0
  36. package/dist/routes.d.ts +1744 -0
  37. package/dist/routes.d.ts.map +1 -0
  38. package/dist/routes.js +543 -0
  39. package/dist/schema-core.d.ts +815 -0
  40. package/dist/schema-core.d.ts.map +1 -0
  41. package/dist/schema-core.js +98 -0
  42. package/dist/schema-itinerary.d.ts +239 -0
  43. package/dist/schema-itinerary.d.ts.map +1 -0
  44. package/dist/schema-itinerary.js +30 -0
  45. package/dist/schema-pricing.d.ts +385 -0
  46. package/dist/schema-pricing.d.ts.map +1 -0
  47. package/dist/schema-pricing.js +62 -0
  48. package/dist/schema-shared.d.ts +8 -0
  49. package/dist/schema-shared.d.ts.map +1 -0
  50. package/dist/schema-shared.js +37 -0
  51. package/dist/schema-sourced-content.d.ts +253 -0
  52. package/dist/schema-sourced-content.d.ts.map +1 -0
  53. package/dist/schema-sourced-content.js +44 -0
  54. package/dist/schema-yachts.d.ts +367 -0
  55. package/dist/schema-yachts.d.ts.map +1 -0
  56. package/dist/schema-yachts.js +30 -0
  57. package/dist/schema.d.ts +8 -0
  58. package/dist/schema.d.ts.map +1 -0
  59. package/dist/schema.js +7 -0
  60. package/dist/service-bookings-helpers.d.ts +20 -0
  61. package/dist/service-bookings-helpers.d.ts.map +1 -0
  62. package/dist/service-bookings-helpers.js +67 -0
  63. package/dist/service-bookings-local.d.ts +5 -0
  64. package/dist/service-bookings-local.d.ts.map +1 -0
  65. package/dist/service-bookings-local.js +177 -0
  66. package/dist/service-bookings-types.d.ts +88 -0
  67. package/dist/service-bookings-types.d.ts.map +1 -0
  68. package/dist/service-bookings-types.js +1 -0
  69. package/dist/service-bookings.d.ts +36 -0
  70. package/dist/service-bookings.d.ts.map +1 -0
  71. package/dist/service-bookings.js +267 -0
  72. package/dist/service-catalog-plane.d.ts +58 -0
  73. package/dist/service-catalog-plane.d.ts.map +1 -0
  74. package/dist/service-catalog-plane.js +145 -0
  75. package/dist/service-content-synthesizer.d.ts +42 -0
  76. package/dist/service-content-synthesizer.d.ts.map +1 -0
  77. package/dist/service-content-synthesizer.js +122 -0
  78. package/dist/service-content.d.ts +43 -0
  79. package/dist/service-content.d.ts.map +1 -0
  80. package/dist/service-content.js +248 -0
  81. package/dist/service-myba.d.ts +85 -0
  82. package/dist/service-myba.d.ts.map +1 -0
  83. package/dist/service-myba.js +88 -0
  84. package/dist/service-pricing.d.ts +64 -0
  85. package/dist/service-pricing.d.ts.map +1 -0
  86. package/dist/service-pricing.js +167 -0
  87. package/dist/service.d.ts +131 -0
  88. package/dist/service.d.ts.map +1 -0
  89. package/dist/service.js +279 -0
  90. package/dist/validation-core.d.ts +152 -0
  91. package/dist/validation-core.d.ts.map +1 -0
  92. package/dist/validation-core.js +66 -0
  93. package/dist/validation-itinerary.d.ts +43 -0
  94. package/dist/validation-itinerary.d.ts.map +1 -0
  95. package/dist/validation-itinerary.js +19 -0
  96. package/dist/validation-pricing.d.ts +103 -0
  97. package/dist/validation-pricing.d.ts.map +1 -0
  98. package/dist/validation-pricing.js +28 -0
  99. package/dist/validation-shared.d.ts +61 -0
  100. package/dist/validation-shared.d.ts.map +1 -0
  101. package/dist/validation-shared.js +60 -0
  102. package/dist/validation-yachts.d.ts +76 -0
  103. package/dist/validation-yachts.d.ts.map +1 -0
  104. package/dist/validation-yachts.js +36 -0
  105. package/dist/validation.d.ts +6 -0
  106. package/dist/validation.d.ts.map +1 -0
  107. package/dist/validation.js +5 -0
  108. package/package.json +116 -0
@@ -0,0 +1,895 @@
1
+ import type { HonoExtension } from "@voyant-travel/hono/module";
2
+ import type { PostgresJsDatabase } from "drizzle-orm/postgres-js";
3
+ import { z } from "zod";
4
+ export type CharterSourceRef = {
5
+ connectionId?: string;
6
+ externalId: string;
7
+ [key: string]: unknown;
8
+ };
9
+ /**
10
+ * 1:1 booking extension for charters. Holds the mode discriminator
11
+ * (`per_suite` | `whole_yacht`), provenance, snapshot pricing fields
12
+ * for both modes, and APA reconciliation state for whole-yacht charters.
13
+ *
14
+ * Soft FKs to charter_voyages / charter_suites (text columns; no
15
+ * cross-module .references()) follow the schema discipline rule.
16
+ *
17
+ * APA fields are only meaningful when bookingMode = 'whole_yacht'. They
18
+ * stay null for per_suite bookings.
19
+ */
20
+ export declare const bookingCharterDetails: import("drizzle-orm/pg-core").PgTableWithColumns<{
21
+ name: "booking_charter_details";
22
+ schema: undefined;
23
+ columns: {
24
+ bookingId: import("drizzle-orm/pg-core").PgColumn<{
25
+ name: "booking_id";
26
+ tableName: "booking_charter_details";
27
+ dataType: "string";
28
+ columnType: "PgText";
29
+ data: string;
30
+ driverParam: string;
31
+ notNull: true;
32
+ hasDefault: false;
33
+ isPrimaryKey: true;
34
+ isAutoincrement: false;
35
+ hasRuntimeDefault: false;
36
+ enumValues: [string, ...string[]];
37
+ baseColumn: never;
38
+ identity: undefined;
39
+ generated: undefined;
40
+ }, {}, {}>;
41
+ bookingMode: import("drizzle-orm/pg-core").PgColumn<{
42
+ name: "booking_mode";
43
+ tableName: "booking_charter_details";
44
+ dataType: "string";
45
+ columnType: "PgEnumColumn";
46
+ data: "per_suite" | "whole_yacht";
47
+ driverParam: string;
48
+ notNull: true;
49
+ hasDefault: false;
50
+ isPrimaryKey: false;
51
+ isAutoincrement: false;
52
+ hasRuntimeDefault: false;
53
+ enumValues: ["per_suite", "whole_yacht"];
54
+ baseColumn: never;
55
+ identity: undefined;
56
+ generated: undefined;
57
+ }, {}, {}>;
58
+ source: import("drizzle-orm/pg-core").PgColumn<{
59
+ name: "source";
60
+ tableName: "booking_charter_details";
61
+ dataType: "string";
62
+ columnType: "PgEnumColumn";
63
+ data: "local" | "external";
64
+ driverParam: string;
65
+ notNull: true;
66
+ hasDefault: true;
67
+ isPrimaryKey: false;
68
+ isAutoincrement: false;
69
+ hasRuntimeDefault: false;
70
+ enumValues: ["local", "external"];
71
+ baseColumn: never;
72
+ identity: undefined;
73
+ generated: undefined;
74
+ }, {}, {}>;
75
+ sourceProvider: import("drizzle-orm/pg-core").PgColumn<{
76
+ name: "source_provider";
77
+ tableName: "booking_charter_details";
78
+ dataType: "string";
79
+ columnType: "PgText";
80
+ data: string;
81
+ driverParam: string;
82
+ notNull: false;
83
+ hasDefault: false;
84
+ isPrimaryKey: false;
85
+ isAutoincrement: false;
86
+ hasRuntimeDefault: false;
87
+ enumValues: [string, ...string[]];
88
+ baseColumn: never;
89
+ identity: undefined;
90
+ generated: undefined;
91
+ }, {}, {}>;
92
+ sourceRef: import("drizzle-orm/pg-core").PgColumn<{
93
+ name: "source_ref";
94
+ tableName: "booking_charter_details";
95
+ dataType: "json";
96
+ columnType: "PgJsonb";
97
+ data: CharterSourceRef;
98
+ driverParam: unknown;
99
+ notNull: false;
100
+ hasDefault: false;
101
+ isPrimaryKey: false;
102
+ isAutoincrement: false;
103
+ hasRuntimeDefault: false;
104
+ enumValues: undefined;
105
+ baseColumn: never;
106
+ identity: undefined;
107
+ generated: undefined;
108
+ }, {}, {
109
+ $type: CharterSourceRef;
110
+ }>;
111
+ voyageId: import("drizzle-orm/pg-core").PgColumn<{
112
+ name: string;
113
+ tableName: "booking_charter_details";
114
+ dataType: "string";
115
+ columnType: "PgText";
116
+ data: string;
117
+ driverParam: string;
118
+ notNull: false;
119
+ hasDefault: false;
120
+ isPrimaryKey: false;
121
+ isAutoincrement: false;
122
+ hasRuntimeDefault: false;
123
+ enumValues: [string, ...string[]];
124
+ baseColumn: never;
125
+ identity: undefined;
126
+ generated: undefined;
127
+ }, {}, {}>;
128
+ suiteId: import("drizzle-orm/pg-core").PgColumn<{
129
+ name: string;
130
+ tableName: "booking_charter_details";
131
+ dataType: "string";
132
+ columnType: "PgText";
133
+ data: string;
134
+ driverParam: string;
135
+ notNull: false;
136
+ hasDefault: false;
137
+ isPrimaryKey: false;
138
+ isAutoincrement: false;
139
+ hasRuntimeDefault: false;
140
+ enumValues: [string, ...string[]];
141
+ baseColumn: never;
142
+ identity: undefined;
143
+ generated: undefined;
144
+ }, {}, {}>;
145
+ yachtId: import("drizzle-orm/pg-core").PgColumn<{
146
+ name: string;
147
+ tableName: "booking_charter_details";
148
+ dataType: "string";
149
+ columnType: "PgText";
150
+ data: string;
151
+ driverParam: string;
152
+ notNull: false;
153
+ hasDefault: false;
154
+ isPrimaryKey: false;
155
+ isAutoincrement: false;
156
+ hasRuntimeDefault: false;
157
+ enumValues: [string, ...string[]];
158
+ baseColumn: never;
159
+ identity: undefined;
160
+ generated: undefined;
161
+ }, {}, {}>;
162
+ voyageDisplayName: import("drizzle-orm/pg-core").PgColumn<{
163
+ name: "voyage_display_name";
164
+ tableName: "booking_charter_details";
165
+ dataType: "string";
166
+ columnType: "PgText";
167
+ data: string;
168
+ driverParam: string;
169
+ notNull: false;
170
+ hasDefault: false;
171
+ isPrimaryKey: false;
172
+ isAutoincrement: false;
173
+ hasRuntimeDefault: false;
174
+ enumValues: [string, ...string[]];
175
+ baseColumn: never;
176
+ identity: undefined;
177
+ generated: undefined;
178
+ }, {}, {}>;
179
+ suiteDisplayName: import("drizzle-orm/pg-core").PgColumn<{
180
+ name: "suite_display_name";
181
+ tableName: "booking_charter_details";
182
+ dataType: "string";
183
+ columnType: "PgText";
184
+ data: string;
185
+ driverParam: string;
186
+ notNull: false;
187
+ hasDefault: false;
188
+ isPrimaryKey: false;
189
+ isAutoincrement: false;
190
+ hasRuntimeDefault: false;
191
+ enumValues: [string, ...string[]];
192
+ baseColumn: never;
193
+ identity: undefined;
194
+ generated: undefined;
195
+ }, {}, {}>;
196
+ yachtName: import("drizzle-orm/pg-core").PgColumn<{
197
+ name: "yacht_name";
198
+ tableName: "booking_charter_details";
199
+ dataType: "string";
200
+ columnType: "PgText";
201
+ data: string;
202
+ driverParam: string;
203
+ notNull: false;
204
+ hasDefault: false;
205
+ isPrimaryKey: false;
206
+ isAutoincrement: false;
207
+ hasRuntimeDefault: false;
208
+ enumValues: [string, ...string[]];
209
+ baseColumn: never;
210
+ identity: undefined;
211
+ generated: undefined;
212
+ }, {}, {}>;
213
+ charterAreaSnapshot: import("drizzle-orm/pg-core").PgColumn<{
214
+ name: "charter_area_snapshot";
215
+ tableName: "booking_charter_details";
216
+ dataType: "string";
217
+ columnType: "PgText";
218
+ data: string;
219
+ driverParam: string;
220
+ notNull: false;
221
+ hasDefault: false;
222
+ isPrimaryKey: false;
223
+ isAutoincrement: false;
224
+ hasRuntimeDefault: false;
225
+ enumValues: [string, ...string[]];
226
+ baseColumn: never;
227
+ identity: undefined;
228
+ generated: undefined;
229
+ }, {}, {}>;
230
+ guestCount: import("drizzle-orm/pg-core").PgColumn<{
231
+ name: "guest_count";
232
+ tableName: "booking_charter_details";
233
+ dataType: "number";
234
+ columnType: "PgSmallInt";
235
+ data: number;
236
+ driverParam: string | number;
237
+ notNull: true;
238
+ hasDefault: false;
239
+ isPrimaryKey: false;
240
+ isAutoincrement: false;
241
+ hasRuntimeDefault: false;
242
+ enumValues: undefined;
243
+ baseColumn: never;
244
+ identity: undefined;
245
+ generated: undefined;
246
+ }, {}, {}>;
247
+ quotedCurrency: import("drizzle-orm/pg-core").PgColumn<{
248
+ name: "quoted_currency";
249
+ tableName: "booking_charter_details";
250
+ dataType: "string";
251
+ columnType: "PgChar";
252
+ data: string;
253
+ driverParam: string;
254
+ notNull: true;
255
+ hasDefault: false;
256
+ isPrimaryKey: false;
257
+ isAutoincrement: false;
258
+ hasRuntimeDefault: false;
259
+ enumValues: [string, ...string[]];
260
+ baseColumn: never;
261
+ identity: undefined;
262
+ generated: undefined;
263
+ }, {}, {
264
+ length: 3;
265
+ }>;
266
+ quotedSuitePrice: import("drizzle-orm/pg-core").PgColumn<{
267
+ name: "quoted_suite_price";
268
+ tableName: "booking_charter_details";
269
+ dataType: "string";
270
+ columnType: "PgNumeric";
271
+ data: string;
272
+ driverParam: string;
273
+ notNull: false;
274
+ hasDefault: false;
275
+ isPrimaryKey: false;
276
+ isAutoincrement: false;
277
+ hasRuntimeDefault: false;
278
+ enumValues: undefined;
279
+ baseColumn: never;
280
+ identity: undefined;
281
+ generated: undefined;
282
+ }, {}, {}>;
283
+ quotedPortFee: import("drizzle-orm/pg-core").PgColumn<{
284
+ name: "quoted_port_fee";
285
+ tableName: "booking_charter_details";
286
+ dataType: "string";
287
+ columnType: "PgNumeric";
288
+ data: string;
289
+ driverParam: string;
290
+ notNull: false;
291
+ hasDefault: false;
292
+ isPrimaryKey: false;
293
+ isAutoincrement: false;
294
+ hasRuntimeDefault: false;
295
+ enumValues: undefined;
296
+ baseColumn: never;
297
+ identity: undefined;
298
+ generated: undefined;
299
+ }, {}, {}>;
300
+ quotedCharterFee: import("drizzle-orm/pg-core").PgColumn<{
301
+ name: "quoted_charter_fee";
302
+ tableName: "booking_charter_details";
303
+ dataType: "string";
304
+ columnType: "PgNumeric";
305
+ data: string;
306
+ driverParam: string;
307
+ notNull: false;
308
+ hasDefault: false;
309
+ isPrimaryKey: false;
310
+ isAutoincrement: false;
311
+ hasRuntimeDefault: false;
312
+ enumValues: undefined;
313
+ baseColumn: never;
314
+ identity: undefined;
315
+ generated: undefined;
316
+ }, {}, {}>;
317
+ apaPercent: import("drizzle-orm/pg-core").PgColumn<{
318
+ name: "apa_percent";
319
+ tableName: "booking_charter_details";
320
+ dataType: "string";
321
+ columnType: "PgNumeric";
322
+ data: string;
323
+ driverParam: string;
324
+ notNull: false;
325
+ hasDefault: false;
326
+ isPrimaryKey: false;
327
+ isAutoincrement: false;
328
+ hasRuntimeDefault: false;
329
+ enumValues: undefined;
330
+ baseColumn: never;
331
+ identity: undefined;
332
+ generated: undefined;
333
+ }, {}, {}>;
334
+ apaAmount: import("drizzle-orm/pg-core").PgColumn<{
335
+ name: "apa_amount";
336
+ tableName: "booking_charter_details";
337
+ dataType: "string";
338
+ columnType: "PgNumeric";
339
+ data: string;
340
+ driverParam: string;
341
+ notNull: false;
342
+ hasDefault: false;
343
+ isPrimaryKey: false;
344
+ isAutoincrement: false;
345
+ hasRuntimeDefault: false;
346
+ enumValues: undefined;
347
+ baseColumn: never;
348
+ identity: undefined;
349
+ generated: undefined;
350
+ }, {}, {}>;
351
+ quotedTotal: import("drizzle-orm/pg-core").PgColumn<{
352
+ name: "quoted_total";
353
+ tableName: "booking_charter_details";
354
+ dataType: "string";
355
+ columnType: "PgNumeric";
356
+ data: string;
357
+ driverParam: string;
358
+ notNull: true;
359
+ hasDefault: false;
360
+ isPrimaryKey: false;
361
+ isAutoincrement: false;
362
+ hasRuntimeDefault: false;
363
+ enumValues: undefined;
364
+ baseColumn: never;
365
+ identity: undefined;
366
+ generated: undefined;
367
+ }, {}, {}>;
368
+ mybaTemplateIdSnapshot: import("drizzle-orm/pg-core").PgColumn<{
369
+ name: "myba_template_id_snapshot";
370
+ tableName: "booking_charter_details";
371
+ dataType: "string";
372
+ columnType: "PgText";
373
+ data: string;
374
+ driverParam: string;
375
+ notNull: false;
376
+ hasDefault: false;
377
+ isPrimaryKey: false;
378
+ isAutoincrement: false;
379
+ hasRuntimeDefault: false;
380
+ enumValues: [string, ...string[]];
381
+ baseColumn: never;
382
+ identity: undefined;
383
+ generated: undefined;
384
+ }, {}, {}>;
385
+ mybaContractId: import("drizzle-orm/pg-core").PgColumn<{
386
+ name: string;
387
+ tableName: "booking_charter_details";
388
+ dataType: "string";
389
+ columnType: "PgText";
390
+ data: string;
391
+ driverParam: string;
392
+ notNull: false;
393
+ hasDefault: false;
394
+ isPrimaryKey: false;
395
+ isAutoincrement: false;
396
+ hasRuntimeDefault: false;
397
+ enumValues: [string, ...string[]];
398
+ baseColumn: never;
399
+ identity: undefined;
400
+ generated: undefined;
401
+ }, {}, {}>;
402
+ apaPaidAmount: import("drizzle-orm/pg-core").PgColumn<{
403
+ name: "apa_paid_amount";
404
+ tableName: "booking_charter_details";
405
+ dataType: "string";
406
+ columnType: "PgNumeric";
407
+ data: string;
408
+ driverParam: string;
409
+ notNull: false;
410
+ hasDefault: true;
411
+ isPrimaryKey: false;
412
+ isAutoincrement: false;
413
+ hasRuntimeDefault: false;
414
+ enumValues: undefined;
415
+ baseColumn: never;
416
+ identity: undefined;
417
+ generated: undefined;
418
+ }, {}, {}>;
419
+ apaSpentAmount: import("drizzle-orm/pg-core").PgColumn<{
420
+ name: "apa_spent_amount";
421
+ tableName: "booking_charter_details";
422
+ dataType: "string";
423
+ columnType: "PgNumeric";
424
+ data: string;
425
+ driverParam: string;
426
+ notNull: false;
427
+ hasDefault: true;
428
+ isPrimaryKey: false;
429
+ isAutoincrement: false;
430
+ hasRuntimeDefault: false;
431
+ enumValues: undefined;
432
+ baseColumn: never;
433
+ identity: undefined;
434
+ generated: undefined;
435
+ }, {}, {}>;
436
+ apaRefundAmount: import("drizzle-orm/pg-core").PgColumn<{
437
+ name: "apa_refund_amount";
438
+ tableName: "booking_charter_details";
439
+ dataType: "string";
440
+ columnType: "PgNumeric";
441
+ data: string;
442
+ driverParam: string;
443
+ notNull: false;
444
+ hasDefault: true;
445
+ isPrimaryKey: false;
446
+ isAutoincrement: false;
447
+ hasRuntimeDefault: false;
448
+ enumValues: undefined;
449
+ baseColumn: never;
450
+ identity: undefined;
451
+ generated: undefined;
452
+ }, {}, {}>;
453
+ apaSettledAt: import("drizzle-orm/pg-core").PgColumn<{
454
+ name: "apa_settled_at";
455
+ tableName: "booking_charter_details";
456
+ dataType: "date";
457
+ columnType: "PgTimestamp";
458
+ data: Date;
459
+ driverParam: string;
460
+ notNull: false;
461
+ hasDefault: false;
462
+ isPrimaryKey: false;
463
+ isAutoincrement: false;
464
+ hasRuntimeDefault: false;
465
+ enumValues: undefined;
466
+ baseColumn: never;
467
+ identity: undefined;
468
+ generated: undefined;
469
+ }, {}, {}>;
470
+ connectorBookingRef: import("drizzle-orm/pg-core").PgColumn<{
471
+ name: "connector_booking_ref";
472
+ tableName: "booking_charter_details";
473
+ dataType: "string";
474
+ columnType: "PgText";
475
+ data: string;
476
+ driverParam: string;
477
+ notNull: false;
478
+ hasDefault: false;
479
+ isPrimaryKey: false;
480
+ isAutoincrement: false;
481
+ hasRuntimeDefault: false;
482
+ enumValues: [string, ...string[]];
483
+ baseColumn: never;
484
+ identity: undefined;
485
+ generated: undefined;
486
+ }, {}, {}>;
487
+ connectorStatus: import("drizzle-orm/pg-core").PgColumn<{
488
+ name: "connector_status";
489
+ tableName: "booking_charter_details";
490
+ dataType: "string";
491
+ columnType: "PgText";
492
+ data: string;
493
+ driverParam: string;
494
+ notNull: false;
495
+ hasDefault: false;
496
+ isPrimaryKey: false;
497
+ isAutoincrement: false;
498
+ hasRuntimeDefault: false;
499
+ enumValues: [string, ...string[]];
500
+ baseColumn: never;
501
+ identity: undefined;
502
+ generated: undefined;
503
+ }, {}, {}>;
504
+ notes: import("drizzle-orm/pg-core").PgColumn<{
505
+ name: "notes";
506
+ tableName: "booking_charter_details";
507
+ dataType: "string";
508
+ columnType: "PgText";
509
+ data: string;
510
+ driverParam: string;
511
+ notNull: false;
512
+ hasDefault: false;
513
+ isPrimaryKey: false;
514
+ isAutoincrement: false;
515
+ hasRuntimeDefault: false;
516
+ enumValues: [string, ...string[]];
517
+ baseColumn: never;
518
+ identity: undefined;
519
+ generated: undefined;
520
+ }, {}, {}>;
521
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
522
+ name: "created_at";
523
+ tableName: "booking_charter_details";
524
+ dataType: "date";
525
+ columnType: "PgTimestamp";
526
+ data: Date;
527
+ driverParam: string;
528
+ notNull: true;
529
+ hasDefault: true;
530
+ isPrimaryKey: false;
531
+ isAutoincrement: false;
532
+ hasRuntimeDefault: false;
533
+ enumValues: undefined;
534
+ baseColumn: never;
535
+ identity: undefined;
536
+ generated: undefined;
537
+ }, {}, {}>;
538
+ updatedAt: import("drizzle-orm/pg-core").PgColumn<{
539
+ name: "updated_at";
540
+ tableName: "booking_charter_details";
541
+ dataType: "date";
542
+ columnType: "PgTimestamp";
543
+ data: Date;
544
+ driverParam: string;
545
+ notNull: true;
546
+ hasDefault: true;
547
+ isPrimaryKey: false;
548
+ isAutoincrement: false;
549
+ hasRuntimeDefault: false;
550
+ enumValues: undefined;
551
+ baseColumn: never;
552
+ identity: undefined;
553
+ generated: undefined;
554
+ }, {}, {}>;
555
+ };
556
+ dialect: "pg";
557
+ }>;
558
+ export type BookingCharterDetail = typeof bookingCharterDetails.$inferSelect;
559
+ export type NewBookingCharterDetail = typeof bookingCharterDetails.$inferInsert;
560
+ export declare const charterDetailUpsertSchema: z.ZodObject<{
561
+ bookingMode: z.ZodEnum<{
562
+ per_suite: "per_suite";
563
+ whole_yacht: "whole_yacht";
564
+ }>;
565
+ source: z.ZodDefault<z.ZodEnum<{
566
+ local: "local";
567
+ external: "external";
568
+ }>>;
569
+ sourceProvider: z.ZodNullable<z.ZodOptional<z.ZodString>>;
570
+ sourceRef: z.ZodNullable<z.ZodOptional<z.ZodObject<{
571
+ connectionId: z.ZodOptional<z.ZodString>;
572
+ externalId: z.ZodString;
573
+ }, z.core.$catchall<z.ZodUnknown>>>>;
574
+ voyageId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
575
+ suiteId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
576
+ yachtId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
577
+ voyageDisplayName: z.ZodNullable<z.ZodOptional<z.ZodString>>;
578
+ suiteDisplayName: z.ZodNullable<z.ZodOptional<z.ZodString>>;
579
+ yachtName: z.ZodNullable<z.ZodOptional<z.ZodString>>;
580
+ charterAreaSnapshot: z.ZodNullable<z.ZodOptional<z.ZodString>>;
581
+ guestCount: z.ZodNumber;
582
+ quotedCurrency: z.ZodString;
583
+ quotedSuitePrice: z.ZodNullable<z.ZodOptional<z.ZodString>>;
584
+ quotedPortFee: z.ZodNullable<z.ZodOptional<z.ZodString>>;
585
+ quotedCharterFee: z.ZodNullable<z.ZodOptional<z.ZodString>>;
586
+ apaPercent: z.ZodNullable<z.ZodOptional<z.ZodString>>;
587
+ apaAmount: z.ZodNullable<z.ZodOptional<z.ZodString>>;
588
+ quotedTotal: z.ZodString;
589
+ mybaTemplateIdSnapshot: z.ZodNullable<z.ZodOptional<z.ZodString>>;
590
+ mybaContractId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
591
+ apaPaidAmount: z.ZodNullable<z.ZodOptional<z.ZodString>>;
592
+ apaSpentAmount: z.ZodNullable<z.ZodOptional<z.ZodString>>;
593
+ apaRefundAmount: z.ZodNullable<z.ZodOptional<z.ZodString>>;
594
+ connectorBookingRef: z.ZodNullable<z.ZodOptional<z.ZodString>>;
595
+ connectorStatus: z.ZodNullable<z.ZodOptional<z.ZodString>>;
596
+ notes: z.ZodNullable<z.ZodOptional<z.ZodString>>;
597
+ }, z.core.$strip>;
598
+ export type CharterDetailUpsert = z.infer<typeof charterDetailUpsertSchema>;
599
+ export declare const bookingCharterDetailsService: {
600
+ get(db: PostgresJsDatabase, bookingId: string): Promise<BookingCharterDetail | null>;
601
+ upsert(db: PostgresJsDatabase, bookingId: string, data: CharterDetailUpsert): Promise<BookingCharterDetail>;
602
+ remove(db: PostgresJsDatabase, bookingId: string): Promise<boolean>;
603
+ /**
604
+ * Record an APA payment. Adds to apaPaidAmount; does not validate
605
+ * against quoted apaAmount because real-world APA settlements may
606
+ * involve top-ups during the charter.
607
+ */
608
+ recordApaPayment(db: PostgresJsDatabase, bookingId: string, args: {
609
+ amount: string;
610
+ note?: string | null;
611
+ }): Promise<BookingCharterDetail | null>;
612
+ /**
613
+ * Post-charter APA reconciliation. Records what was actually spent on
614
+ * board + any refund due back to the charterer. When `settle: true`
615
+ * stamps `apaSettledAt`. Caller is responsible for kicking off any
616
+ * downstream finance flow (refund issuance, etc.).
617
+ */
618
+ reconcileApa(db: PostgresJsDatabase, bookingId: string, args: {
619
+ spentAmount?: string;
620
+ refundAmount?: string;
621
+ settle?: boolean;
622
+ note?: string | null;
623
+ }): Promise<BookingCharterDetail | null>;
624
+ };
625
+ type Env = {
626
+ Variables: {
627
+ db: PostgresJsDatabase;
628
+ userId?: string;
629
+ };
630
+ };
631
+ export declare const chartersBookingExtensionRoutes: import("hono/hono-base").HonoBase<Env, {
632
+ "/:bookingId/charter-details": {
633
+ $get: {
634
+ input: {
635
+ param: {
636
+ bookingId: string;
637
+ };
638
+ };
639
+ output: {
640
+ error: string;
641
+ };
642
+ outputFormat: "json";
643
+ status: 404;
644
+ } | {
645
+ input: {
646
+ param: {
647
+ bookingId: string;
648
+ };
649
+ };
650
+ output: {
651
+ data: {
652
+ bookingId: string;
653
+ bookingMode: "per_suite" | "whole_yacht";
654
+ source: "local" | "external";
655
+ sourceProvider: string | null;
656
+ sourceRef: {
657
+ [x: string]: import("hono/utils/types").JSONValue;
658
+ connectionId?: string | undefined;
659
+ externalId: string;
660
+ } | null;
661
+ voyageId: string | null;
662
+ suiteId: string | null;
663
+ yachtId: string | null;
664
+ voyageDisplayName: string | null;
665
+ suiteDisplayName: string | null;
666
+ yachtName: string | null;
667
+ charterAreaSnapshot: string | null;
668
+ guestCount: number;
669
+ quotedCurrency: string;
670
+ quotedSuitePrice: string | null;
671
+ quotedPortFee: string | null;
672
+ quotedCharterFee: string | null;
673
+ apaPercent: string | null;
674
+ apaAmount: string | null;
675
+ quotedTotal: string;
676
+ mybaTemplateIdSnapshot: string | null;
677
+ mybaContractId: string | null;
678
+ apaPaidAmount: string | null;
679
+ apaSpentAmount: string | null;
680
+ apaRefundAmount: string | null;
681
+ apaSettledAt: string | null;
682
+ connectorBookingRef: string | null;
683
+ connectorStatus: string | null;
684
+ notes: string | null;
685
+ createdAt: string;
686
+ updatedAt: string;
687
+ };
688
+ };
689
+ outputFormat: "json";
690
+ status: import("hono/utils/http-status").ContentfulStatusCode;
691
+ };
692
+ };
693
+ } & {
694
+ "/:bookingId/charter-details": {
695
+ $put: {
696
+ input: {
697
+ param: {
698
+ bookingId: string;
699
+ };
700
+ };
701
+ output: {
702
+ data: {
703
+ bookingId: string;
704
+ bookingMode: "per_suite" | "whole_yacht";
705
+ source: "local" | "external";
706
+ sourceProvider: string | null;
707
+ sourceRef: {
708
+ [x: string]: import("hono/utils/types").JSONValue;
709
+ connectionId?: string | undefined;
710
+ externalId: string;
711
+ } | null;
712
+ voyageId: string | null;
713
+ suiteId: string | null;
714
+ yachtId: string | null;
715
+ voyageDisplayName: string | null;
716
+ suiteDisplayName: string | null;
717
+ yachtName: string | null;
718
+ charterAreaSnapshot: string | null;
719
+ guestCount: number;
720
+ quotedCurrency: string;
721
+ quotedSuitePrice: string | null;
722
+ quotedPortFee: string | null;
723
+ quotedCharterFee: string | null;
724
+ apaPercent: string | null;
725
+ apaAmount: string | null;
726
+ quotedTotal: string;
727
+ mybaTemplateIdSnapshot: string | null;
728
+ mybaContractId: string | null;
729
+ apaPaidAmount: string | null;
730
+ apaSpentAmount: string | null;
731
+ apaRefundAmount: string | null;
732
+ apaSettledAt: string | null;
733
+ connectorBookingRef: string | null;
734
+ connectorStatus: string | null;
735
+ notes: string | null;
736
+ createdAt: string;
737
+ updatedAt: string;
738
+ };
739
+ };
740
+ outputFormat: "json";
741
+ status: import("hono/utils/http-status").ContentfulStatusCode;
742
+ };
743
+ };
744
+ } & {
745
+ "/:bookingId/charter-details": {
746
+ $delete: {
747
+ input: {
748
+ param: {
749
+ bookingId: string;
750
+ };
751
+ };
752
+ output: {
753
+ error: string;
754
+ };
755
+ outputFormat: "json";
756
+ status: 404;
757
+ } | {
758
+ input: {
759
+ param: {
760
+ bookingId: string;
761
+ };
762
+ };
763
+ output: null;
764
+ outputFormat: "body";
765
+ status: 204;
766
+ };
767
+ };
768
+ } & {
769
+ "/:bookingId/charter-details/apa/payment": {
770
+ $post: {
771
+ input: {
772
+ param: {
773
+ bookingId: string;
774
+ };
775
+ };
776
+ output: {
777
+ error: string;
778
+ };
779
+ outputFormat: "json";
780
+ status: 404;
781
+ } | {
782
+ input: {
783
+ param: {
784
+ bookingId: string;
785
+ };
786
+ };
787
+ output: {
788
+ data: {
789
+ bookingId: string;
790
+ bookingMode: "per_suite" | "whole_yacht";
791
+ source: "local" | "external";
792
+ sourceProvider: string | null;
793
+ sourceRef: {
794
+ [x: string]: import("hono/utils/types").JSONValue;
795
+ connectionId?: string | undefined;
796
+ externalId: string;
797
+ } | null;
798
+ voyageId: string | null;
799
+ suiteId: string | null;
800
+ yachtId: string | null;
801
+ voyageDisplayName: string | null;
802
+ suiteDisplayName: string | null;
803
+ yachtName: string | null;
804
+ charterAreaSnapshot: string | null;
805
+ guestCount: number;
806
+ quotedCurrency: string;
807
+ quotedSuitePrice: string | null;
808
+ quotedPortFee: string | null;
809
+ quotedCharterFee: string | null;
810
+ apaPercent: string | null;
811
+ apaAmount: string | null;
812
+ quotedTotal: string;
813
+ mybaTemplateIdSnapshot: string | null;
814
+ mybaContractId: string | null;
815
+ apaPaidAmount: string | null;
816
+ apaSpentAmount: string | null;
817
+ apaRefundAmount: string | null;
818
+ apaSettledAt: string | null;
819
+ connectorBookingRef: string | null;
820
+ connectorStatus: string | null;
821
+ notes: string | null;
822
+ createdAt: string;
823
+ updatedAt: string;
824
+ };
825
+ };
826
+ outputFormat: "json";
827
+ status: import("hono/utils/http-status").ContentfulStatusCode;
828
+ };
829
+ };
830
+ } & {
831
+ "/:bookingId/charter-details/apa/reconcile": {
832
+ $post: {
833
+ input: {
834
+ param: {
835
+ bookingId: string;
836
+ };
837
+ };
838
+ output: {
839
+ error: string;
840
+ };
841
+ outputFormat: "json";
842
+ status: 404;
843
+ } | {
844
+ input: {
845
+ param: {
846
+ bookingId: string;
847
+ };
848
+ };
849
+ output: {
850
+ data: {
851
+ bookingId: string;
852
+ bookingMode: "per_suite" | "whole_yacht";
853
+ source: "local" | "external";
854
+ sourceProvider: string | null;
855
+ sourceRef: {
856
+ [x: string]: import("hono/utils/types").JSONValue;
857
+ connectionId?: string | undefined;
858
+ externalId: string;
859
+ } | null;
860
+ voyageId: string | null;
861
+ suiteId: string | null;
862
+ yachtId: string | null;
863
+ voyageDisplayName: string | null;
864
+ suiteDisplayName: string | null;
865
+ yachtName: string | null;
866
+ charterAreaSnapshot: string | null;
867
+ guestCount: number;
868
+ quotedCurrency: string;
869
+ quotedSuitePrice: string | null;
870
+ quotedPortFee: string | null;
871
+ quotedCharterFee: string | null;
872
+ apaPercent: string | null;
873
+ apaAmount: string | null;
874
+ quotedTotal: string;
875
+ mybaTemplateIdSnapshot: string | null;
876
+ mybaContractId: string | null;
877
+ apaPaidAmount: string | null;
878
+ apaSpentAmount: string | null;
879
+ apaRefundAmount: string | null;
880
+ apaSettledAt: string | null;
881
+ connectorBookingRef: string | null;
882
+ connectorStatus: string | null;
883
+ notes: string | null;
884
+ createdAt: string;
885
+ updatedAt: string;
886
+ };
887
+ };
888
+ outputFormat: "json";
889
+ status: import("hono/utils/http-status").ContentfulStatusCode;
890
+ };
891
+ };
892
+ }, "/", "/:bookingId/charter-details/apa/reconcile">;
893
+ export declare const chartersBookingExtension: HonoExtension;
894
+ export {};
895
+ //# sourceMappingURL=booking-extension.d.ts.map