@voyantjs/crm 0.106.1 → 0.107.0

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 (51) hide show
  1. package/README.md +3 -3
  2. package/dist/booking-extension.d.ts +7 -7
  3. package/dist/booking-extension.d.ts.map +1 -1
  4. package/dist/booking-extension.js +8 -5
  5. package/dist/index.d.ts +5 -3
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +3 -2
  8. package/dist/routes/activities.d.ts +2 -2
  9. package/dist/routes/custom-fields.d.ts +6 -6
  10. package/dist/routes/index.d.ts +518 -51
  11. package/dist/routes/index.d.ts.map +1 -1
  12. package/dist/routes/index.js +2 -2
  13. package/dist/routes/pipelines.d.ts +4 -4
  14. package/dist/routes/quote-versions.d.ts +746 -0
  15. package/dist/routes/quote-versions.d.ts.map +1 -0
  16. package/dist/routes/quote-versions.js +175 -0
  17. package/dist/routes/quotes.d.ts +161 -53
  18. package/dist/routes/quotes.d.ts.map +1 -1
  19. package/dist/routes/quotes.js +29 -11
  20. package/dist/schema-activities.d.ts +6 -6
  21. package/dist/schema-relations.d.ts +19 -18
  22. package/dist/schema-relations.d.ts.map +1 -1
  23. package/dist/schema-relations.js +38 -31
  24. package/dist/schema-sales.d.ts +206 -87
  25. package/dist/schema-sales.d.ts.map +1 -1
  26. package/dist/schema-sales.js +62 -50
  27. package/dist/schema-shared.d.ts +3 -3
  28. package/dist/schema-shared.d.ts.map +1 -1
  29. package/dist/schema-shared.js +5 -16
  30. package/dist/schema-signals.d.ts +1 -1
  31. package/dist/schema-signals.js +1 -1
  32. package/dist/service/accounts-merge.js +10 -10
  33. package/dist/service/activities.d.ts +6 -6
  34. package/dist/service/custom-fields.d.ts +6 -6
  35. package/dist/service/index.d.ts +338 -139
  36. package/dist/service/index.d.ts.map +1 -1
  37. package/dist/service/index.js +2 -2
  38. package/dist/service/pipelines.d.ts +4 -4
  39. package/dist/service/quote-versions.d.ts +674 -0
  40. package/dist/service/quote-versions.d.ts.map +1 -0
  41. package/dist/service/quote-versions.js +399 -0
  42. package/dist/service/quotes.d.ts +426 -94
  43. package/dist/service/quotes.d.ts.map +1 -1
  44. package/dist/service/quotes.js +63 -22
  45. package/package.json +7 -7
  46. package/dist/routes/opportunities.d.ts +0 -387
  47. package/dist/routes/opportunities.d.ts.map +0 -1
  48. package/dist/routes/opportunities.js +0 -70
  49. package/dist/service/opportunities.d.ts +0 -822
  50. package/dist/service/opportunities.d.ts.map +0 -1
  51. package/dist/service/opportunities.js +0 -117
@@ -2411,7 +2411,7 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
2411
2411
  output: {
2412
2412
  data: {
2413
2413
  id: string;
2414
- entityType: "organization" | "person" | "opportunity" | "quote" | "activity";
2414
+ entityType: "organization" | "person" | "quote" | "activity";
2415
2415
  name: string;
2416
2416
  isDefault: boolean;
2417
2417
  sortOrder: number;
@@ -2436,7 +2436,7 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
2436
2436
  id: string;
2437
2437
  createdAt: string;
2438
2438
  updatedAt: string;
2439
- entityType: "organization" | "person" | "opportunity" | "quote" | "activity";
2439
+ entityType: "organization" | "person" | "quote" | "activity";
2440
2440
  isDefault: boolean;
2441
2441
  sortOrder: number;
2442
2442
  } | undefined;
@@ -2467,7 +2467,7 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
2467
2467
  output: {
2468
2468
  data: {
2469
2469
  id: string;
2470
- entityType: "organization" | "person" | "opportunity" | "quote" | "activity";
2470
+ entityType: "organization" | "person" | "quote" | "activity";
2471
2471
  name: string;
2472
2472
  isDefault: boolean;
2473
2473
  sortOrder: number;
@@ -2501,7 +2501,7 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
2501
2501
  output: {
2502
2502
  data: {
2503
2503
  id: string;
2504
- entityType: "organization" | "person" | "opportunity" | "quote" | "activity";
2504
+ entityType: "organization" | "person" | "quote" | "activity";
2505
2505
  name: string;
2506
2506
  isDefault: boolean;
2507
2507
  sortOrder: number;
@@ -2687,7 +2687,7 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
2687
2687
  };
2688
2688
  };
2689
2689
  }, "/"> | import("hono/types").MergeSchemaPath<{
2690
- "/opportunities": {
2690
+ "/quotes": {
2691
2691
  $get: {
2692
2692
  input: {};
2693
2693
  output: {
@@ -2700,6 +2700,7 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
2700
2700
  stageId: string;
2701
2701
  ownerId: string | null;
2702
2702
  status: "lost" | "archived" | "open" | "won";
2703
+ acceptedVersionId: string | null;
2703
2704
  valueAmountCents: number | null;
2704
2705
  valueCurrency: string | null;
2705
2706
  expectedCloseDate: string | null;
@@ -2721,7 +2722,7 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
2721
2722
  };
2722
2723
  };
2723
2724
  } & {
2724
- "/opportunities": {
2725
+ "/quotes": {
2725
2726
  $post: {
2726
2727
  input: {};
2727
2728
  output: {
@@ -2739,6 +2740,7 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
2739
2740
  personId: string | null;
2740
2741
  pipelineId: string;
2741
2742
  stageId: string;
2743
+ acceptedVersionId: string | null;
2742
2744
  valueAmountCents: number | null;
2743
2745
  valueCurrency: string | null;
2744
2746
  expectedCloseDate: string | null;
@@ -2752,7 +2754,7 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
2752
2754
  };
2753
2755
  };
2754
2756
  } & {
2755
- "/opportunities/:id": {
2757
+ "/quotes/:id": {
2756
2758
  $get: {
2757
2759
  input: {
2758
2760
  param: {
@@ -2780,6 +2782,7 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
2780
2782
  stageId: string;
2781
2783
  ownerId: string | null;
2782
2784
  status: "lost" | "archived" | "open" | "won";
2785
+ acceptedVersionId: string | null;
2783
2786
  valueAmountCents: number | null;
2784
2787
  valueCurrency: string | null;
2785
2788
  expectedCloseDate: string | null;
@@ -2798,7 +2801,7 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
2798
2801
  };
2799
2802
  };
2800
2803
  } & {
2801
- "/opportunities/:id": {
2804
+ "/quotes/:id": {
2802
2805
  $patch: {
2803
2806
  input: {
2804
2807
  param: {
@@ -2826,6 +2829,7 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
2826
2829
  stageId: string;
2827
2830
  ownerId: string | null;
2828
2831
  status: "lost" | "archived" | "open" | "won";
2832
+ acceptedVersionId: string | null;
2829
2833
  valueAmountCents: number | null;
2830
2834
  valueCurrency: string | null;
2831
2835
  expectedCloseDate: string | null;
@@ -2844,7 +2848,7 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
2844
2848
  };
2845
2849
  };
2846
2850
  } & {
2847
- "/opportunities/:id": {
2851
+ "/quotes/:id": {
2848
2852
  $delete: {
2849
2853
  input: {
2850
2854
  param: {
@@ -2870,7 +2874,7 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
2870
2874
  };
2871
2875
  };
2872
2876
  } & {
2873
- "/opportunities/:id/participants": {
2877
+ "/quotes/:id/participants": {
2874
2878
  $get: {
2875
2879
  input: {
2876
2880
  param: {
@@ -2880,7 +2884,7 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
2880
2884
  output: {
2881
2885
  data: {
2882
2886
  id: string;
2883
- opportunityId: string;
2887
+ quoteId: string;
2884
2888
  personId: string;
2885
2889
  role: "other" | "finance" | "traveler" | "booker" | "decision_maker";
2886
2890
  isPrimary: boolean;
@@ -2892,7 +2896,7 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
2892
2896
  };
2893
2897
  };
2894
2898
  } & {
2895
- "/opportunities/:id/participants": {
2899
+ "/quotes/:id/participants": {
2896
2900
  $post: {
2897
2901
  input: {
2898
2902
  param: {
@@ -2904,7 +2908,7 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
2904
2908
  id: string;
2905
2909
  createdAt: string;
2906
2910
  role: "other" | "finance" | "traveler" | "booker" | "decision_maker";
2907
- opportunityId: string;
2911
+ quoteId: string;
2908
2912
  isPrimary: boolean;
2909
2913
  personId: string;
2910
2914
  } | undefined;
@@ -2914,7 +2918,7 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
2914
2918
  };
2915
2919
  };
2916
2920
  } & {
2917
- "/opportunity-participants/:id": {
2921
+ "/quote-participants/:id": {
2918
2922
  $delete: {
2919
2923
  input: {
2920
2924
  param: {
@@ -2940,7 +2944,7 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
2940
2944
  };
2941
2945
  };
2942
2946
  } & {
2943
- "/opportunities/:id/products": {
2947
+ "/quotes/:id/products": {
2944
2948
  $get: {
2945
2949
  input: {
2946
2950
  param: {
@@ -2950,7 +2954,7 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
2950
2954
  output: {
2951
2955
  data: {
2952
2956
  id: string;
2953
- opportunityId: string;
2957
+ quoteId: string;
2954
2958
  productId: string | null;
2955
2959
  supplierServiceId: string | null;
2956
2960
  nameSnapshot: string;
@@ -2969,7 +2973,7 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
2969
2973
  };
2970
2974
  };
2971
2975
  } & {
2972
- "/opportunities/:id/products": {
2976
+ "/quotes/:id/products": {
2973
2977
  $post: {
2974
2978
  input: {
2975
2979
  param: {
@@ -2983,7 +2987,7 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
2983
2987
  createdAt: string;
2984
2988
  updatedAt: string;
2985
2989
  currency: string | null;
2986
- opportunityId: string;
2990
+ quoteId: string;
2987
2991
  productId: string | null;
2988
2992
  supplierServiceId: string | null;
2989
2993
  nameSnapshot: string;
@@ -2998,7 +3002,7 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
2998
3002
  };
2999
3003
  };
3000
3004
  } & {
3001
- "/opportunity-products/:id": {
3005
+ "/quote-products/:id": {
3002
3006
  $patch: {
3003
3007
  input: {
3004
3008
  param: {
@@ -3019,7 +3023,7 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
3019
3023
  output: {
3020
3024
  data: {
3021
3025
  id: string;
3022
- opportunityId: string;
3026
+ quoteId: string;
3023
3027
  productId: string | null;
3024
3028
  supplierServiceId: string | null;
3025
3029
  nameSnapshot: string;
@@ -3038,7 +3042,7 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
3038
3042
  };
3039
3043
  };
3040
3044
  } & {
3041
- "/opportunity-products/:id": {
3045
+ "/quote-products/:id": {
3042
3046
  $delete: {
3043
3047
  input: {
3044
3048
  param: {
@@ -3064,20 +3068,26 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
3064
3068
  };
3065
3069
  };
3066
3070
  }, "/"> | import("hono/types").MergeSchemaPath<{
3067
- "/quotes": {
3071
+ "/quote-versions": {
3068
3072
  $get: {
3069
3073
  input: {};
3070
3074
  output: {
3071
3075
  data: {
3072
3076
  id: string;
3073
- opportunityId: string;
3074
- status: "expired" | "archived" | "draft" | "sent" | "accepted" | "rejected";
3077
+ quoteId: string;
3078
+ label: string | null;
3079
+ status: "expired" | "superseded" | "draft" | "sent" | "accepted" | "declined";
3080
+ supersedesId: string | null;
3081
+ tripSnapshotId: string | null;
3075
3082
  validUntil: string | null;
3076
3083
  currency: string;
3077
3084
  subtotalAmountCents: number;
3078
3085
  taxAmountCents: number;
3079
3086
  totalAmountCents: number;
3080
3087
  notes: string | null;
3088
+ sentAt: string | null;
3089
+ viewedAt: string | null;
3090
+ decidedAt: string | null;
3081
3091
  createdAt: string;
3082
3092
  updatedAt: string;
3083
3093
  archivedAt: string | null;
@@ -3091,31 +3101,82 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
3091
3101
  };
3092
3102
  };
3093
3103
  } & {
3094
- "/quotes": {
3104
+ "/quotes/:id/versions": {
3095
3105
  $post: {
3096
- input: {};
3106
+ input: {
3107
+ param: {
3108
+ id: string;
3109
+ };
3110
+ };
3097
3111
  output: {
3098
3112
  data: {
3099
3113
  id: string;
3100
- status: "expired" | "archived" | "draft" | "sent" | "accepted" | "rejected";
3114
+ status: "expired" | "superseded" | "draft" | "sent" | "accepted" | "declined";
3101
3115
  createdAt: string;
3116
+ decidedAt: string | null;
3102
3117
  updatedAt: string;
3103
3118
  currency: string;
3104
3119
  notes: string | null;
3105
- opportunityId: string;
3120
+ quoteId: string;
3121
+ label: string | null;
3106
3122
  archivedAt: string | null;
3123
+ sentAt: string | null;
3124
+ supersedesId: string | null;
3125
+ tripSnapshotId: string | null;
3107
3126
  validUntil: string | null;
3108
3127
  subtotalAmountCents: number;
3109
3128
  taxAmountCents: number;
3110
3129
  totalAmountCents: number;
3130
+ viewedAt: string | null;
3111
3131
  } | undefined;
3112
3132
  };
3113
3133
  outputFormat: "json";
3114
3134
  status: 201;
3135
+ } | {
3136
+ input: {
3137
+ param: {
3138
+ id: string;
3139
+ };
3140
+ };
3141
+ output: {
3142
+ error: string;
3143
+ };
3144
+ outputFormat: "json";
3145
+ status: 409;
3115
3146
  };
3116
3147
  };
3117
3148
  } & {
3118
- "/quotes/:id": {
3149
+ "/quote-versions/expire": {
3150
+ $post: {
3151
+ input: {};
3152
+ output: {
3153
+ data: {
3154
+ id: string;
3155
+ quoteId: string;
3156
+ label: string | null;
3157
+ status: "expired" | "superseded" | "draft" | "sent" | "accepted" | "declined";
3158
+ supersedesId: string | null;
3159
+ tripSnapshotId: string | null;
3160
+ validUntil: string | null;
3161
+ currency: string;
3162
+ subtotalAmountCents: number;
3163
+ taxAmountCents: number;
3164
+ totalAmountCents: number;
3165
+ notes: string | null;
3166
+ sentAt: string | null;
3167
+ viewedAt: string | null;
3168
+ decidedAt: string | null;
3169
+ createdAt: string;
3170
+ updatedAt: string;
3171
+ archivedAt: string | null;
3172
+ }[];
3173
+ };
3174
+ outputFormat: "json";
3175
+ status: import("hono/utils/http-status").ContentfulStatusCode;
3176
+ };
3177
+ };
3178
+ } & {
3179
+ "/quote-versions/:id": {
3119
3180
  $get: {
3120
3181
  input: {
3121
3182
  param: {
@@ -3136,14 +3197,20 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
3136
3197
  output: {
3137
3198
  data: {
3138
3199
  id: string;
3139
- opportunityId: string;
3140
- status: "expired" | "archived" | "draft" | "sent" | "accepted" | "rejected";
3200
+ quoteId: string;
3201
+ label: string | null;
3202
+ status: "expired" | "superseded" | "draft" | "sent" | "accepted" | "declined";
3203
+ supersedesId: string | null;
3204
+ tripSnapshotId: string | null;
3141
3205
  validUntil: string | null;
3142
3206
  currency: string;
3143
3207
  subtotalAmountCents: number;
3144
3208
  taxAmountCents: number;
3145
3209
  totalAmountCents: number;
3146
3210
  notes: string | null;
3211
+ sentAt: string | null;
3212
+ viewedAt: string | null;
3213
+ decidedAt: string | null;
3147
3214
  createdAt: string;
3148
3215
  updatedAt: string;
3149
3216
  archivedAt: string | null;
@@ -3154,7 +3221,7 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
3154
3221
  };
3155
3222
  };
3156
3223
  } & {
3157
- "/quotes/:id": {
3224
+ "/quote-versions/:id": {
3158
3225
  $patch: {
3159
3226
  input: {
3160
3227
  param: {
@@ -3175,14 +3242,20 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
3175
3242
  output: {
3176
3243
  data: {
3177
3244
  id: string;
3178
- opportunityId: string;
3179
- status: "expired" | "archived" | "draft" | "sent" | "accepted" | "rejected";
3245
+ quoteId: string;
3246
+ label: string | null;
3247
+ status: "expired" | "superseded" | "draft" | "sent" | "accepted" | "declined";
3248
+ supersedesId: string | null;
3249
+ tripSnapshotId: string | null;
3180
3250
  validUntil: string | null;
3181
3251
  currency: string;
3182
3252
  subtotalAmountCents: number;
3183
3253
  taxAmountCents: number;
3184
3254
  totalAmountCents: number;
3185
3255
  notes: string | null;
3256
+ sentAt: string | null;
3257
+ viewedAt: string | null;
3258
+ decidedAt: string | null;
3186
3259
  createdAt: string;
3187
3260
  updatedAt: string;
3188
3261
  archivedAt: string | null;
@@ -3190,10 +3263,21 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
3190
3263
  };
3191
3264
  outputFormat: "json";
3192
3265
  status: import("hono/utils/http-status").ContentfulStatusCode;
3266
+ } | {
3267
+ input: {
3268
+ param: {
3269
+ id: string;
3270
+ };
3271
+ };
3272
+ output: {
3273
+ error: string;
3274
+ };
3275
+ outputFormat: "json";
3276
+ status: 409;
3193
3277
  };
3194
3278
  };
3195
3279
  } & {
3196
- "/quotes/:id": {
3280
+ "/quote-versions/:id": {
3197
3281
  $delete: {
3198
3282
  input: {
3199
3283
  param: {
@@ -3216,11 +3300,160 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
3216
3300
  };
3217
3301
  outputFormat: "json";
3218
3302
  status: import("hono/utils/http-status").ContentfulStatusCode;
3303
+ } | {
3304
+ input: {
3305
+ param: {
3306
+ id: string;
3307
+ };
3308
+ };
3309
+ output: {
3310
+ error: string;
3311
+ };
3312
+ outputFormat: "json";
3313
+ status: 409;
3219
3314
  };
3220
3315
  };
3221
3316
  } & {
3222
- "/quotes/:id/lines": {
3223
- $get: {
3317
+ "/quote-versions/:id/trip-snapshot": {
3318
+ $post: {
3319
+ input: {
3320
+ param: {
3321
+ id: string;
3322
+ };
3323
+ };
3324
+ output: {
3325
+ error: string;
3326
+ };
3327
+ outputFormat: "json";
3328
+ status: 404;
3329
+ } | {
3330
+ input: {
3331
+ param: {
3332
+ id: string;
3333
+ };
3334
+ };
3335
+ output: {
3336
+ data: {
3337
+ quoteVersion: {
3338
+ id: string;
3339
+ quoteId: string;
3340
+ label: string | null;
3341
+ status: "expired" | "superseded" | "draft" | "sent" | "accepted" | "declined";
3342
+ supersedesId: string | null;
3343
+ tripSnapshotId: string | null;
3344
+ validUntil: string | null;
3345
+ currency: string;
3346
+ subtotalAmountCents: number;
3347
+ taxAmountCents: number;
3348
+ totalAmountCents: number;
3349
+ notes: string | null;
3350
+ sentAt: string | null;
3351
+ viewedAt: string | null;
3352
+ decidedAt: string | null;
3353
+ createdAt: string;
3354
+ updatedAt: string;
3355
+ archivedAt: string | null;
3356
+ };
3357
+ lines: {
3358
+ id: string;
3359
+ description: string;
3360
+ createdAt: string;
3361
+ updatedAt: string;
3362
+ currency: string;
3363
+ quoteVersionId: string;
3364
+ productId: string | null;
3365
+ supplierServiceId: string | null;
3366
+ quantity: number;
3367
+ unitPriceAmountCents: number;
3368
+ totalAmountCents: number;
3369
+ }[];
3370
+ };
3371
+ };
3372
+ outputFormat: "json";
3373
+ status: import("hono/utils/http-status").ContentfulStatusCode;
3374
+ } | {
3375
+ input: {
3376
+ param: {
3377
+ id: string;
3378
+ };
3379
+ };
3380
+ output: {
3381
+ error: string;
3382
+ };
3383
+ outputFormat: "json";
3384
+ status: 409;
3385
+ };
3386
+ };
3387
+ } & {
3388
+ "/quote-versions/:id/send": {
3389
+ $post: {
3390
+ input: {
3391
+ param: {
3392
+ id: string;
3393
+ };
3394
+ };
3395
+ output: {
3396
+ error: string;
3397
+ };
3398
+ outputFormat: "json";
3399
+ status: 404;
3400
+ } | {
3401
+ input: {
3402
+ param: {
3403
+ id: string;
3404
+ };
3405
+ };
3406
+ output: {
3407
+ data: {
3408
+ id: string;
3409
+ quoteId: string;
3410
+ label: string | null;
3411
+ status: "expired" | "superseded" | "draft" | "sent" | "accepted" | "declined";
3412
+ supersedesId: string | null;
3413
+ tripSnapshotId: string | null;
3414
+ validUntil: string | null;
3415
+ currency: string;
3416
+ subtotalAmountCents: number;
3417
+ taxAmountCents: number;
3418
+ totalAmountCents: number;
3419
+ notes: string | null;
3420
+ sentAt: string | null;
3421
+ viewedAt: string | null;
3422
+ decidedAt: string | null;
3423
+ createdAt: string;
3424
+ updatedAt: string;
3425
+ archivedAt: string | null;
3426
+ };
3427
+ };
3428
+ outputFormat: "json";
3429
+ status: import("hono/utils/http-status").ContentfulStatusCode;
3430
+ } | {
3431
+ input: {
3432
+ param: {
3433
+ id: string;
3434
+ };
3435
+ };
3436
+ output: {
3437
+ error: string;
3438
+ };
3439
+ outputFormat: "json";
3440
+ status: 409;
3441
+ };
3442
+ };
3443
+ } & {
3444
+ "/quote-versions/:id/view": {
3445
+ $post: {
3446
+ input: {
3447
+ param: {
3448
+ id: string;
3449
+ };
3450
+ };
3451
+ output: {
3452
+ error: string;
3453
+ };
3454
+ outputFormat: "json";
3455
+ status: 404;
3456
+ } | {
3224
3457
  input: {
3225
3458
  param: {
3226
3459
  id: string;
@@ -3230,6 +3463,196 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
3230
3463
  data: {
3231
3464
  id: string;
3232
3465
  quoteId: string;
3466
+ label: string | null;
3467
+ status: "expired" | "superseded" | "draft" | "sent" | "accepted" | "declined";
3468
+ supersedesId: string | null;
3469
+ tripSnapshotId: string | null;
3470
+ validUntil: string | null;
3471
+ currency: string;
3472
+ subtotalAmountCents: number;
3473
+ taxAmountCents: number;
3474
+ totalAmountCents: number;
3475
+ notes: string | null;
3476
+ sentAt: string | null;
3477
+ viewedAt: string | null;
3478
+ decidedAt: string | null;
3479
+ createdAt: string;
3480
+ updatedAt: string;
3481
+ archivedAt: string | null;
3482
+ };
3483
+ };
3484
+ outputFormat: "json";
3485
+ status: import("hono/utils/http-status").ContentfulStatusCode;
3486
+ };
3487
+ };
3488
+ } & {
3489
+ "/quote-versions/:id/accept": {
3490
+ $post: {
3491
+ input: {
3492
+ param: {
3493
+ id: string;
3494
+ };
3495
+ };
3496
+ output: {
3497
+ error: string;
3498
+ };
3499
+ outputFormat: "json";
3500
+ status: 404;
3501
+ } | {
3502
+ input: {
3503
+ param: {
3504
+ id: string;
3505
+ };
3506
+ };
3507
+ output: {
3508
+ data: {
3509
+ quote: {
3510
+ id: string;
3511
+ status: "lost" | "archived" | "open" | "won";
3512
+ organizationId: string | null;
3513
+ createdAt: string;
3514
+ source: string | null;
3515
+ updatedAt: string;
3516
+ title: string;
3517
+ ownerId: string | null;
3518
+ sourceRef: string | null;
3519
+ tags: string[];
3520
+ personId: string | null;
3521
+ pipelineId: string;
3522
+ stageId: string;
3523
+ acceptedVersionId: string | null;
3524
+ valueAmountCents: number | null;
3525
+ valueCurrency: string | null;
3526
+ expectedCloseDate: string | null;
3527
+ lostReason: string | null;
3528
+ stageChangedAt: string;
3529
+ closedAt: string | null;
3530
+ };
3531
+ quoteVersion: {
3532
+ id: string;
3533
+ status: "expired" | "superseded" | "draft" | "sent" | "accepted" | "declined";
3534
+ createdAt: string;
3535
+ decidedAt: string | null;
3536
+ updatedAt: string;
3537
+ currency: string;
3538
+ notes: string | null;
3539
+ quoteId: string;
3540
+ label: string | null;
3541
+ archivedAt: string | null;
3542
+ sentAt: string | null;
3543
+ supersedesId: string | null;
3544
+ tripSnapshotId: string | null;
3545
+ validUntil: string | null;
3546
+ subtotalAmountCents: number;
3547
+ taxAmountCents: number;
3548
+ totalAmountCents: number;
3549
+ viewedAt: string | null;
3550
+ };
3551
+ closedQuoteVersions: {
3552
+ id: string;
3553
+ status: "expired" | "superseded" | "draft" | "sent" | "accepted" | "declined";
3554
+ createdAt: string;
3555
+ decidedAt: string | null;
3556
+ updatedAt: string;
3557
+ currency: string;
3558
+ notes: string | null;
3559
+ quoteId: string;
3560
+ label: string | null;
3561
+ archivedAt: string | null;
3562
+ sentAt: string | null;
3563
+ supersedesId: string | null;
3564
+ tripSnapshotId: string | null;
3565
+ validUntil: string | null;
3566
+ subtotalAmountCents: number;
3567
+ taxAmountCents: number;
3568
+ totalAmountCents: number;
3569
+ viewedAt: string | null;
3570
+ }[];
3571
+ };
3572
+ };
3573
+ outputFormat: "json";
3574
+ status: import("hono/utils/http-status").ContentfulStatusCode;
3575
+ } | {
3576
+ input: {
3577
+ param: {
3578
+ id: string;
3579
+ };
3580
+ };
3581
+ output: {
3582
+ error: string;
3583
+ };
3584
+ outputFormat: "json";
3585
+ status: 409;
3586
+ };
3587
+ };
3588
+ } & {
3589
+ "/quote-versions/:id/decline": {
3590
+ $post: {
3591
+ input: {
3592
+ param: {
3593
+ id: string;
3594
+ };
3595
+ };
3596
+ output: {
3597
+ error: string;
3598
+ };
3599
+ outputFormat: "json";
3600
+ status: 404;
3601
+ } | {
3602
+ input: {
3603
+ param: {
3604
+ id: string;
3605
+ };
3606
+ };
3607
+ output: {
3608
+ data: {
3609
+ id: string;
3610
+ quoteId: string;
3611
+ label: string | null;
3612
+ status: "expired" | "superseded" | "draft" | "sent" | "accepted" | "declined";
3613
+ supersedesId: string | null;
3614
+ tripSnapshotId: string | null;
3615
+ validUntil: string | null;
3616
+ currency: string;
3617
+ subtotalAmountCents: number;
3618
+ taxAmountCents: number;
3619
+ totalAmountCents: number;
3620
+ notes: string | null;
3621
+ sentAt: string | null;
3622
+ viewedAt: string | null;
3623
+ decidedAt: string | null;
3624
+ createdAt: string;
3625
+ updatedAt: string;
3626
+ archivedAt: string | null;
3627
+ };
3628
+ };
3629
+ outputFormat: "json";
3630
+ status: import("hono/utils/http-status").ContentfulStatusCode;
3631
+ } | {
3632
+ input: {
3633
+ param: {
3634
+ id: string;
3635
+ };
3636
+ };
3637
+ output: {
3638
+ error: string;
3639
+ };
3640
+ outputFormat: "json";
3641
+ status: 409;
3642
+ };
3643
+ };
3644
+ } & {
3645
+ "/quote-versions/:id/lines": {
3646
+ $get: {
3647
+ input: {
3648
+ param: {
3649
+ id: string;
3650
+ };
3651
+ };
3652
+ output: {
3653
+ data: {
3654
+ id: string;
3655
+ quoteVersionId: string;
3233
3656
  productId: string | null;
3234
3657
  supplierServiceId: string | null;
3235
3658
  description: string;
@@ -3246,8 +3669,19 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
3246
3669
  };
3247
3670
  };
3248
3671
  } & {
3249
- "/quotes/:id/lines": {
3672
+ "/quote-versions/:id/lines": {
3250
3673
  $post: {
3674
+ input: {
3675
+ param: {
3676
+ id: string;
3677
+ };
3678
+ };
3679
+ output: {
3680
+ error: string;
3681
+ };
3682
+ outputFormat: "json";
3683
+ status: 404;
3684
+ } | {
3251
3685
  input: {
3252
3686
  param: {
3253
3687
  id: string;
@@ -3260,20 +3694,31 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
3260
3694
  createdAt: string;
3261
3695
  updatedAt: string;
3262
3696
  currency: string;
3263
- quoteId: string;
3697
+ quoteVersionId: string;
3264
3698
  productId: string | null;
3265
3699
  supplierServiceId: string | null;
3266
3700
  quantity: number;
3267
3701
  unitPriceAmountCents: number;
3268
3702
  totalAmountCents: number;
3269
- } | undefined;
3703
+ };
3270
3704
  };
3271
3705
  outputFormat: "json";
3272
3706
  status: 201;
3707
+ } | {
3708
+ input: {
3709
+ param: {
3710
+ id: string;
3711
+ };
3712
+ };
3713
+ output: {
3714
+ error: string;
3715
+ };
3716
+ outputFormat: "json";
3717
+ status: 409;
3273
3718
  };
3274
3719
  };
3275
3720
  } & {
3276
- "/quote-lines/:id": {
3721
+ "/quote-version-lines/:id": {
3277
3722
  $patch: {
3278
3723
  input: {
3279
3724
  param: {
@@ -3294,7 +3739,7 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
3294
3739
  output: {
3295
3740
  data: {
3296
3741
  id: string;
3297
- quoteId: string;
3742
+ quoteVersionId: string;
3298
3743
  productId: string | null;
3299
3744
  supplierServiceId: string | null;
3300
3745
  description: string;
@@ -3308,10 +3753,21 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
3308
3753
  };
3309
3754
  outputFormat: "json";
3310
3755
  status: import("hono/utils/http-status").ContentfulStatusCode;
3756
+ } | {
3757
+ input: {
3758
+ param: {
3759
+ id: string;
3760
+ };
3761
+ };
3762
+ output: {
3763
+ error: string;
3764
+ };
3765
+ outputFormat: "json";
3766
+ status: 409;
3311
3767
  };
3312
3768
  };
3313
3769
  } & {
3314
- "/quote-lines/:id": {
3770
+ "/quote-version-lines/:id": {
3315
3771
  $delete: {
3316
3772
  input: {
3317
3773
  param: {
@@ -3334,6 +3790,17 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
3334
3790
  };
3335
3791
  outputFormat: "json";
3336
3792
  status: import("hono/utils/http-status").ContentfulStatusCode;
3793
+ } | {
3794
+ input: {
3795
+ param: {
3796
+ id: string;
3797
+ };
3798
+ };
3799
+ output: {
3800
+ error: string;
3801
+ };
3802
+ outputFormat: "json";
3803
+ status: 409;
3337
3804
  };
3338
3805
  };
3339
3806
  }, "/"> | import("hono/types").MergeSchemaPath<{
@@ -3499,7 +3966,7 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
3499
3966
  data: {
3500
3967
  id: string;
3501
3968
  activityId: string;
3502
- entityType: "organization" | "person" | "opportunity" | "quote" | "activity";
3969
+ entityType: "organization" | "person" | "quote" | "activity";
3503
3970
  entityId: string;
3504
3971
  role: "primary" | "related";
3505
3972
  createdAt: string;
@@ -3522,7 +3989,7 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
3522
3989
  id: string;
3523
3990
  createdAt: string;
3524
3991
  role: "primary" | "related";
3525
- entityType: "organization" | "person" | "opportunity" | "quote" | "activity";
3992
+ entityType: "organization" | "person" | "quote" | "activity";
3526
3993
  entityId: string;
3527
3994
  activityId: string;
3528
3995
  } | undefined;
@@ -3632,7 +4099,7 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
3632
4099
  output: {
3633
4100
  data: {
3634
4101
  id: string;
3635
- entityType: "organization" | "person" | "opportunity" | "quote" | "activity";
4102
+ entityType: "organization" | "person" | "quote" | "activity";
3636
4103
  key: string;
3637
4104
  label: string;
3638
4105
  fieldType: "boolean" | "json" | "date" | "text" | "set" | "enum" | "phone" | "varchar" | "double" | "monetary" | "address";
@@ -3667,7 +4134,7 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
3667
4134
  createdAt: string;
3668
4135
  key: string;
3669
4136
  updatedAt: string;
3670
- entityType: "organization" | "person" | "opportunity" | "quote" | "activity";
4137
+ entityType: "organization" | "person" | "quote" | "activity";
3671
4138
  label: string;
3672
4139
  fieldType: "boolean" | "json" | "date" | "text" | "set" | "enum" | "phone" | "varchar" | "double" | "monetary" | "address";
3673
4140
  isRequired: boolean;
@@ -3700,7 +4167,7 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
3700
4167
  output: {
3701
4168
  data: {
3702
4169
  id: string;
3703
- entityType: "organization" | "person" | "opportunity" | "quote" | "activity";
4170
+ entityType: "organization" | "person" | "quote" | "activity";
3704
4171
  key: string;
3705
4172
  label: string;
3706
4173
  fieldType: "boolean" | "json" | "date" | "text" | "set" | "enum" | "phone" | "varchar" | "double" | "monetary" | "address";
@@ -3740,7 +4207,7 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
3740
4207
  output: {
3741
4208
  data: {
3742
4209
  id: string;
3743
- entityType: "organization" | "person" | "opportunity" | "quote" | "activity";
4210
+ entityType: "organization" | "person" | "quote" | "activity";
3744
4211
  key: string;
3745
4212
  label: string;
3746
4213
  fieldType: "boolean" | "json" | "date" | "text" | "set" | "enum" | "phone" | "varchar" | "double" | "monetary" | "address";
@@ -3792,7 +4259,7 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
3792
4259
  data: {
3793
4260
  id: string;
3794
4261
  definitionId: string;
3795
- entityType: "organization" | "person" | "opportunity" | "quote" | "activity";
4262
+ entityType: "organization" | "person" | "quote" | "activity";
3796
4263
  entityId: string;
3797
4264
  textValue: string | null;
3798
4265
  numberValue: number | null;
@@ -3827,7 +4294,7 @@ export declare const crmRoutes: import("hono/hono-base").HonoBase<Env, import("h
3827
4294
  id: string;
3828
4295
  createdAt: string;
3829
4296
  updatedAt: string;
3830
- entityType: "organization" | "person" | "opportunity" | "quote" | "activity";
4297
+ entityType: "organization" | "person" | "quote" | "activity";
3831
4298
  entityId: string;
3832
4299
  definitionId: string;
3833
4300
  textValue: string | null;