@sixtyninecommerce/admin 0.10.0 → 0.12.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 (302) hide show
  1. package/README.md +5772 -118
  2. package/dist/auth/index.d.ts +7 -1
  3. package/dist/auth/index.js +8 -1
  4. package/dist/catalog/assets.d.ts +120 -8
  5. package/dist/catalog/assets.js +98 -12
  6. package/dist/catalog/collections.d.ts +279 -14
  7. package/dist/catalog/collections.js +246 -15
  8. package/dist/catalog/documents.d.ts +142 -0
  9. package/dist/catalog/documents.js +114 -0
  10. package/dist/catalog/index.d.ts +54 -6
  11. package/dist/catalog/index.js +10 -1
  12. package/dist/catalog/metadata.d.ts +244 -0
  13. package/dist/catalog/metadata.js +220 -0
  14. package/dist/catalog/products.d.ts +159 -19
  15. package/dist/catalog/products.js +88 -13
  16. package/dist/catalog/properties.d.ts +140 -14
  17. package/dist/catalog/properties.js +65 -1
  18. package/dist/catalog/recommendations.d.ts +288 -0
  19. package/dist/catalog/recommendations.js +237 -0
  20. package/dist/catalog/reviews.d.ts +381 -0
  21. package/dist/catalog/reviews.js +325 -0
  22. package/dist/catalog/types.d.ts +17 -1
  23. package/dist/catalog/types.js +10 -0
  24. package/dist/catalog/variant-find.d.ts +136 -0
  25. package/dist/catalog/variant-find.js +239 -0
  26. package/dist/catalog/variants.d.ts +293 -26
  27. package/dist/catalog/variants.js +164 -7
  28. package/dist/catalog/visibility.d.ts +38 -7
  29. package/dist/catalog/visibility.js +19 -1
  30. package/dist/client.d.ts +121 -9
  31. package/dist/client.js +53 -14
  32. package/dist/content/assets.d.ts +285 -0
  33. package/dist/content/assets.js +181 -0
  34. package/dist/content/forms.d.ts +332 -1
  35. package/dist/content/forms.js +140 -4
  36. package/dist/content/items.d.ts +292 -0
  37. package/dist/content/items.js +170 -0
  38. package/dist/content/menus.d.ts +254 -0
  39. package/dist/content/menus.js +70 -0
  40. package/dist/content/strings.d.ts +137 -0
  41. package/dist/content/strings.js +82 -0
  42. package/dist/content/types.d.ts +282 -0
  43. package/dist/content/types.js +100 -0
  44. package/dist/customers/age-verification.d.ts +66 -0
  45. package/dist/customers/age-verification.js +79 -0
  46. package/dist/customers/credit.d.ts +263 -0
  47. package/dist/customers/credit.js +244 -0
  48. package/dist/customers/delivery-preferences.d.ts +120 -0
  49. package/dist/customers/delivery-preferences.js +97 -0
  50. package/dist/customers/delivery-terms.d.ts +44 -0
  51. package/dist/customers/delivery-terms.js +32 -0
  52. package/dist/customers/groups.d.ts +207 -0
  53. package/dist/customers/groups.js +438 -0
  54. package/dist/customers/index.d.ts +462 -37
  55. package/dist/customers/index.js +317 -40
  56. package/dist/customers/invitation-status.d.ts +57 -0
  57. package/dist/customers/invitation-status.js +21 -0
  58. package/dist/customers/notes.d.ts +67 -0
  59. package/dist/customers/notes.js +51 -0
  60. package/dist/customers/notification-recipients.d.ts +97 -0
  61. package/dist/customers/notification-recipients.js +84 -0
  62. package/dist/customers/saved-lists.d.ts +42 -0
  63. package/dist/customers/saved-lists.js +61 -0
  64. package/dist/customers/vat.d.ts +83 -0
  65. package/dist/customers/vat.js +46 -0
  66. package/dist/customers/wire.d.ts +20 -0
  67. package/dist/customers/wire.js +35 -0
  68. package/dist/documents/ar.d.ts +307 -0
  69. package/dist/documents/ar.js +254 -0
  70. package/dist/documents/emails.d.ts +150 -0
  71. package/dist/documents/emails.js +220 -0
  72. package/dist/documents/index.d.ts +744 -21
  73. package/dist/documents/index.js +438 -24
  74. package/dist/documents/pdf.d.ts +2 -0
  75. package/dist/documents/pdf.js +11 -0
  76. package/dist/fulfillments/create.d.ts +167 -0
  77. package/dist/fulfillments/create.js +216 -0
  78. package/dist/fulfillments/index.d.ts +163 -11
  79. package/dist/fulfillments/index.js +135 -6
  80. package/dist/fulfillments/payment-policy.d.ts +64 -0
  81. package/dist/fulfillments/payment-policy.js +140 -0
  82. package/dist/fulfillments/warehouse.d.ts +724 -0
  83. package/dist/fulfillments/warehouse.js +914 -0
  84. package/dist/geo/index.d.ts +119 -0
  85. package/dist/geo/index.js +107 -0
  86. package/dist/index.d.ts +147 -39
  87. package/dist/index.js +51 -12
  88. package/dist/integrations/afas-actions.d.ts +234 -0
  89. package/dist/integrations/afas-actions.js +310 -0
  90. package/dist/integrations/afas-types.d.ts +483 -0
  91. package/dist/integrations/afas-types.js +5 -0
  92. package/dist/integrations/afas.d.ts +234 -0
  93. package/dist/integrations/afas.js +290 -0
  94. package/dist/integrations/connections.d.ts +103 -0
  95. package/dist/integrations/connections.js +55 -0
  96. package/dist/integrations/esp.d.ts +313 -0
  97. package/dist/integrations/esp.js +169 -0
  98. package/dist/integrations/exact-online-types.d.ts +965 -0
  99. package/dist/integrations/exact-online-types.js +6 -0
  100. package/dist/integrations/exact-online.d.ts +784 -0
  101. package/dist/integrations/exact-online.js +1089 -0
  102. package/dist/integrations/index.d.ts +44 -3
  103. package/dist/integrations/index.js +23 -3
  104. package/dist/integrations/pipeline-discoveries.d.ts +65 -0
  105. package/dist/integrations/pipeline-discoveries.js +65 -0
  106. package/dist/integrations/pipeline-keys.d.ts +13 -0
  107. package/dist/integrations/pipeline-keys.js +22 -0
  108. package/dist/integrations/pipeline-runs.d.ts +119 -0
  109. package/dist/integrations/pipeline-runs.js +87 -0
  110. package/dist/integrations/pipelines.d.ts +87 -15
  111. package/dist/integrations/pipelines.js +41 -22
  112. package/dist/integrations/price-import.d.ts +223 -0
  113. package/dist/integrations/price-import.js +124 -0
  114. package/dist/integrations/types.d.ts +367 -3
  115. package/dist/integrations/types.js +4 -3
  116. package/dist/locations/index.d.ts +66 -0
  117. package/dist/locations/index.js +31 -0
  118. package/dist/meta/index.d.ts +172 -0
  119. package/dist/metafields/index.d.ts +8 -1
  120. package/dist/metafields/index.js +10 -0
  121. package/dist/orders/cancel-with-money.d.ts +237 -0
  122. package/dist/orders/cancel-with-money.js +155 -0
  123. package/dist/orders/commit-edit.d.ts +23 -1
  124. package/dist/orders/commit-edit.js +19 -2
  125. package/dist/orders/deposit-policy.d.ts +3 -1
  126. package/dist/orders/drafts.d.ts +800 -0
  127. package/dist/orders/drafts.js +771 -0
  128. package/dist/orders/fields.d.ts +245 -0
  129. package/dist/orders/fields.js +188 -0
  130. package/dist/orders/get.d.ts +29 -19
  131. package/dist/orders/get.js +17 -8
  132. package/dist/orders/index.d.ts +66 -15
  133. package/dist/orders/index.js +25 -2
  134. package/dist/orders/lifecycle.d.ts +128 -0
  135. package/dist/orders/lifecycle.js +158 -0
  136. package/dist/orders/line-price-preview.d.ts +7 -2
  137. package/dist/orders/list.d.ts +243 -0
  138. package/dist/orders/list.js +487 -0
  139. package/dist/orders/manual-discounts.d.ts +13 -5
  140. package/dist/orders/manual-pricing.d.ts +5 -0
  141. package/dist/orders/money-view.d.ts +149 -0
  142. package/dist/orders/money-view.js +99 -0
  143. package/dist/orders/order-entry.d.ts +20 -7
  144. package/dist/orders/plan-edit.d.ts +34 -2
  145. package/dist/orders/plan-edit.js +112 -11
  146. package/dist/orders/settings.d.ts +201 -0
  147. package/dist/orders/settings.js +325 -0
  148. package/dist/orders/status.d.ts +159 -13
  149. package/dist/orders/status.js +21 -0
  150. package/dist/orders/surcharges.d.ts +20 -1
  151. package/dist/orders/surcharges.js +37 -11
  152. package/dist/payments/account-credit.d.ts +46 -0
  153. package/dist/payments/account-credit.js +42 -0
  154. package/dist/payments/ar.d.ts +292 -0
  155. package/dist/payments/ar.js +223 -0
  156. package/dist/payments/connected-account.d.ts +47 -0
  157. package/dist/payments/connected-account.js +61 -0
  158. package/dist/payments/credit-noted-fields.d.ts +19 -0
  159. package/dist/payments/credit-noted-fields.js +69 -0
  160. package/dist/payments/customer-consent.d.ts +30 -0
  161. package/dist/payments/customer-consent.js +49 -0
  162. package/dist/payments/index.d.ts +340 -19
  163. package/dist/payments/index.js +151 -1
  164. package/dist/payments/methods.d.ts +303 -8
  165. package/dist/payments/methods.js +337 -7
  166. package/dist/payments/mollie-methods.d.ts +159 -0
  167. package/dist/payments/mollie-methods.js +141 -0
  168. package/dist/payments/payment-links.d.ts +180 -0
  169. package/dist/payments/payment-links.js +97 -0
  170. package/dist/payments/provider-keys.d.ts +150 -0
  171. package/dist/payments/provider-keys.js +118 -0
  172. package/dist/payments/providers.d.ts +86 -11
  173. package/dist/payments/providers.js +29 -0
  174. package/dist/payments/requests.d.ts +147 -0
  175. package/dist/payments/requests.js +93 -0
  176. package/dist/payments/store-credit-fields.d.ts +15 -0
  177. package/dist/payments/store-credit-fields.js +51 -0
  178. package/dist/pickups/index.d.ts +106 -0
  179. package/dist/pickups/index.js +108 -0
  180. package/dist/platform/channels.d.ts +132 -0
  181. package/dist/platform/channels.js +128 -0
  182. package/dist/platform/email-gateways.d.ts +165 -0
  183. package/dist/platform/email-gateways.js +78 -0
  184. package/dist/platform/geo.d.ts +123 -0
  185. package/dist/platform/geo.js +144 -0
  186. package/dist/platform/tax.d.ts +162 -0
  187. package/dist/platform/tax.js +169 -0
  188. package/dist/pos/anomalies.d.ts +158 -0
  189. package/dist/pos/anomalies.js +64 -0
  190. package/dist/pos/assisted-selling.d.ts +79 -0
  191. package/dist/pos/assisted-selling.js +38 -0
  192. package/dist/pos/exchanges.d.ts +108 -0
  193. package/dist/pos/exchanges.js +22 -0
  194. package/dist/pos/gift-cards.d.ts +135 -0
  195. package/dist/pos/gift-cards.js +47 -0
  196. package/dist/pos/index.d.ts +2370 -58
  197. package/dist/pos/index.js +854 -7
  198. package/dist/pos/no-receipt.d.ts +94 -0
  199. package/dist/pos/no-receipt.js +25 -0
  200. package/dist/pos/offline-sales.d.ts +228 -0
  201. package/dist/pos/offline-sales.js +170 -0
  202. package/dist/pos/pay-by-link.d.ts +143 -0
  203. package/dist/pos/pay-by-link.js +57 -0
  204. package/dist/pos/quick-keys.d.ts +103 -0
  205. package/dist/pos/quick-keys.js +45 -0
  206. package/dist/pos/reports.d.ts +360 -0
  207. package/dist/pos/reports.js +62 -0
  208. package/dist/pos/returns.d.ts +244 -0
  209. package/dist/pos/returns.js +83 -0
  210. package/dist/pricing/bulk-coupons.d.ts +139 -0
  211. package/dist/pricing/bulk-coupons.js +112 -0
  212. package/dist/pricing/index.d.ts +174 -4
  213. package/dist/pricing/index.js +174 -1
  214. package/dist/pricing/price-lists.d.ts +606 -0
  215. package/dist/pricing/price-lists.js +600 -0
  216. package/dist/purchasing/alerts.d.ts +104 -0
  217. package/dist/purchasing/alerts.js +88 -0
  218. package/dist/purchasing/backorders.d.ts +61 -0
  219. package/dist/purchasing/backorders.js +92 -0
  220. package/dist/purchasing/cost.d.ts +110 -0
  221. package/dist/purchasing/cost.js +86 -0
  222. package/dist/purchasing/index.d.ts +54 -0
  223. package/dist/purchasing/index.js +24 -0
  224. package/dist/purchasing/links.d.ts +263 -0
  225. package/dist/purchasing/links.js +192 -0
  226. package/dist/purchasing/purchase-orders.d.ts +551 -0
  227. package/dist/purchasing/purchase-orders.js +491 -0
  228. package/dist/purchasing/receipts.d.ts +396 -0
  229. package/dist/purchasing/receipts.js +287 -0
  230. package/dist/purchasing/replenishment.d.ts +281 -0
  231. package/dist/purchasing/replenishment.js +240 -0
  232. package/dist/purchasing/returns.d.ts +273 -0
  233. package/dist/purchasing/returns.js +229 -0
  234. package/dist/purchasing/settings.d.ts +152 -0
  235. package/dist/purchasing/settings.js +181 -0
  236. package/dist/purchasing/suppliers.d.ts +476 -0
  237. package/dist/purchasing/suppliers.js +438 -0
  238. package/dist/quotes/index.d.ts +518 -0
  239. package/dist/quotes/index.js +439 -0
  240. package/dist/reports/index.d.ts +71 -8
  241. package/dist/reports/index.js +74 -11
  242. package/dist/returns/index.d.ts +675 -21
  243. package/dist/returns/index.js +756 -11
  244. package/dist/search/index.d.ts +76 -1
  245. package/dist/search/index.js +63 -0
  246. package/dist/seo/config.d.ts +128 -0
  247. package/dist/seo/config.js +95 -0
  248. package/dist/seo/redirects.d.ts +125 -0
  249. package/dist/seo/redirects.js +60 -1
  250. package/dist/seo/settings.d.ts +147 -0
  251. package/dist/seo/settings.js +209 -0
  252. package/dist/shipping/definitions.d.ts +29 -0
  253. package/dist/shipping/definitions.js +47 -0
  254. package/dist/shipping/fulfillment-profiles.d.ts +174 -0
  255. package/dist/shipping/fulfillment-profiles.js +104 -0
  256. package/dist/shipping/hendriks.d.ts +97 -0
  257. package/dist/shipping/hendriks.js +50 -0
  258. package/dist/shipping/index.d.ts +54 -0
  259. package/dist/shipping/index.js +27 -0
  260. package/dist/shipping/methods.d.ts +205 -0
  261. package/dist/shipping/methods.js +240 -0
  262. package/dist/shipping/myparcel.d.ts +668 -0
  263. package/dist/shipping/myparcel.js +466 -0
  264. package/dist/shipping/parcel-count-suggestion.d.ts +2 -0
  265. package/dist/shipping/parcel-rule.d.ts +6 -5
  266. package/dist/shipping/parcel-rule.js +21 -23
  267. package/dist/shipping/rate-tables.d.ts +324 -0
  268. package/dist/shipping/rate-tables.js +390 -0
  269. package/dist/shipping/ship-to-countries.d.ts +75 -0
  270. package/dist/shipping/ship-to-countries.js +47 -0
  271. package/dist/stock/by-location.d.ts +86 -0
  272. package/dist/stock/by-location.js +94 -0
  273. package/dist/stock/index.d.ts +18 -4
  274. package/dist/stock/index.js +7 -0
  275. package/dist/stock/locations.d.ts +144 -0
  276. package/dist/stock/locations.js +168 -0
  277. package/dist/stock/settings.d.ts +106 -0
  278. package/dist/stock/settings.js +103 -0
  279. package/dist/stock/transfers.d.ts +386 -52
  280. package/dist/stock/transfers.js +222 -17
  281. package/dist/stored-value/index.d.ts +312 -11
  282. package/dist/stored-value/index.js +223 -4
  283. package/dist/subscriptions/index.d.ts +682 -0
  284. package/dist/subscriptions/index.js +815 -0
  285. package/dist/tax/display-policy.d.ts +105 -0
  286. package/dist/tax/display-policy.js +84 -0
  287. package/dist/tax/index.d.ts +79 -1
  288. package/dist/tax/index.js +52 -0
  289. package/dist/tenant/email-style.d.ts +102 -0
  290. package/dist/tenant/email-style.js +72 -0
  291. package/dist/tenant/email-templates.d.ts +287 -0
  292. package/dist/tenant/email-templates.js +271 -0
  293. package/dist/tenant/notifications.d.ts +23 -17
  294. package/dist/tenant/settings-sources.d.ts +1 -1
  295. package/dist/tenant/time-zone.d.ts +17 -0
  296. package/dist/tenant/time-zone.js +11 -0
  297. package/dist/types.d.ts +50 -3
  298. package/dist/users/index.d.ts +3 -0
  299. package/dist/users/index.js +2 -0
  300. package/dist/users/warehouses.d.ts +50 -0
  301. package/dist/users/warehouses.js +51 -0
  302. package/package.json +2 -2
@@ -0,0 +1,518 @@
1
+ /**
2
+ * `admin.quotes`: B2B quotes, from the draft a sales rep builds to the order it converts into
3
+ * (headless spec §9.2 `quotes`; plan W10-35a).
4
+ *
5
+ * A quote is a store's offer to one customer, in one currency (`currencyCode`, one of the store's
6
+ * currencies). Staff build it (`createDraft`, `lines.*`, `setPricing`), move it through its
7
+ * statuses (`submit`, `approve`, `decline`, `cancel`) and turn an approved one into an order
8
+ * awaiting payment (`convertToOrder`). A customer can also request one from the storefront; it
9
+ * arrives `requested`.
10
+ *
11
+ * **The engine answers what can be done.** `Quote.editable` says whether the lines and prices may
12
+ * still change (every line and pricing method refuses `QUOTE_NOT_EDITABLE` exactly when it is
13
+ * false), and `Quote.convertible` whether `convertToOrder` would create the order now. Show the
14
+ * buttons from them; never re-derive either from the status.
15
+ *
16
+ * **Money** is an integer in minor units of the QUOTE's `currencyCode`. A line's `unitPrice`, its
17
+ * fixed discount, `discountAmount` and `effectiveUnitPrice` are in the store's primary tax mode
18
+ * (gross on a store whose prices include tax, net otherwise); `lineTotal` / `lineTotalWithTax`
19
+ * are the explicit net and gross halves. A percentage discount is in basis points (1000 = 10%).
20
+ * Every figure is the engine's own maths: the quote PDF and the converted order use the same.
21
+ *
22
+ * **Refusals** (`PlatformError`, by `code`): `QUOTE_NOT_FOUND` (404) for a quote or line the store
23
+ * does not have, another store's included; `QUOTE_LINE_INVALID` (400, `details[0].field` names the
24
+ * input) for a quantity, unit price, variant or pricing line it refuses; `QUOTE_DISCOUNT_INVALID`
25
+ * (400); `QUOTE_NOT_EDITABLE` (422); `QUOTE_CONVERT_STATE_INVALID` (422); `QUOTE_CURRENCY_MISMATCH`,
26
+ * `CURRENCY_NOT_AVAILABLE`, `ORDER_LINE_VARIANT_UNPRICED` (a line priced from the catalogue for a
27
+ * variant the store has no price for) and `HUB_HAS_NO_ORDERS` / `ORGANIZATION_WORKSPACE_NOT_A_STORE`
28
+ * (an organization workspace keeps no quotes). Each passes through as the engine sent it.
29
+ *
30
+ * Every value set below grows over time: treat a status this version does not name as one with
31
+ * no action (the engine's `editable` / `convertible` stay authoritative).
32
+ */
33
+ import { type Transport } from '@sixtyninecommerce/core';
34
+ import type { Call } from '../types.js';
35
+ export declare const QUOTE_STATUSES: readonly ["draft", "requested", "in_review", "approved", "declined", "expired", "converted_to_order", "cancelled"];
36
+ export type QuoteStatus = (typeof QUOTE_STATUSES)[number];
37
+ /** `percentage`: basis points (1000 = 10%). `fixed`: minor units off the WHOLE line. */
38
+ export type QuoteLineDiscountType = 'percentage' | 'fixed';
39
+ /** A line's variant, in the quote's store. `storePrice` is null when the store has no price for it. */
40
+ export interface QuoteLineVariant {
41
+ id: string;
42
+ name: string;
43
+ sku: string;
44
+ storePrice: {
45
+ price: number;
46
+ priceWithTax: number;
47
+ } | null;
48
+ product: {
49
+ id: string;
50
+ name: string;
51
+ featuredAsset: {
52
+ id: string;
53
+ preview: string;
54
+ } | null;
55
+ };
56
+ }
57
+ export interface QuoteLine {
58
+ id: string;
59
+ productVariantId: string;
60
+ quantity: number;
61
+ /** In the store's primary tax mode; null until the line is priced ("Pending"). */
62
+ unitPrice: number | null;
63
+ discountType: QuoteLineDiscountType | null;
64
+ /** Basis points (percentage) or minor units (fixed); 0 with no discount. */
65
+ discountValue: number;
66
+ discountLabel: string | null;
67
+ position: number;
68
+ /**
69
+ * What the converted order takes off the line, in the store's primary tax mode: (`unitPrice` −
70
+ * `effectiveUnitPrice`) × quantity. It can differ from the typed discount by the per-unit
71
+ * rounding (€1.00 off 3 × €10.00 takes €0.99). Null while unpriced.
72
+ */
73
+ discountAmount: number | null;
74
+ /**
75
+ * The per-unit price the converted order line gets: the discounted line total ÷ quantity,
76
+ * rounded. The figure to show as the line's unit price. Null while unpriced.
77
+ */
78
+ effectiveUnitPrice: number | null;
79
+ /**
80
+ * Net total of the order line the quote converts into. Null while unpriced or when the variant
81
+ * is unavailable.
82
+ */
83
+ lineTotal: number | null;
84
+ /**
85
+ * Gross total of the order line the quote converts into, at `taxRate`: the order charges
86
+ * exactly this unless its customer is taxed in another zone or reverse-charged (conversion
87
+ * then records a `priceNotice`). Null while unpriced or when the variant is unavailable.
88
+ */
89
+ lineTotalWithTax: number | null;
90
+ /** `lineTotalWithTax − lineTotal`. Null as those are. */
91
+ taxAmount: number | null;
92
+ /** The variant's applied tax rate as a percent (21, 13.5). Null when it is unavailable. */
93
+ taxRate: number | null;
94
+ /** Null when the variant was deleted or left the store. */
95
+ productVariant: QuoteLineVariant | null;
96
+ /**
97
+ * What the customer's price lists charge for the line (same basis as `unitPrice`), null when no
98
+ * list prices it. Only {@link QuotesModule.get} reads it: absent elsewhere.
99
+ */
100
+ suggestedUnitPrice?: number | null;
101
+ createdAt: string;
102
+ updatedAt: string;
103
+ }
104
+ export interface QuoteStatusLogEntry {
105
+ id: string;
106
+ status: QuoteStatus;
107
+ createdAt: string;
108
+ actorUserId: string | null;
109
+ /**
110
+ * What the change recorded. An `approved` row carries the offer the customer was sent
111
+ * (`offeredSubTotal`, `offeredTotalWithTax`); a `converted_to_order` row the order
112
+ * (`orderId`, `orderCode`), both totals, and `priceNotice`, a plain-words sentence, when the
113
+ * order does not total what the quote offered (the order's amount applies).
114
+ */
115
+ metadata: Record<string, unknown> | null;
116
+ }
117
+ export interface QuoteSalesRepresentative {
118
+ /** The administrator's id. */
119
+ id: string;
120
+ /** The administrator's user id: what `assignSalesRep` takes. */
121
+ userId: string;
122
+ firstName: string;
123
+ lastName: string;
124
+ emailAddress: string;
125
+ }
126
+ export interface QuoteDocument {
127
+ id: string;
128
+ documentNumber: string;
129
+ fileSize: number;
130
+ generatedAt: string;
131
+ lastSentAt: string | null;
132
+ /**
133
+ * A five-minute signed link to the PDF, minted per read: open it right away, never store it.
134
+ * Only {@link QuotesModule.get} reads it.
135
+ */
136
+ downloadUrl?: string;
137
+ }
138
+ export interface Quote {
139
+ id: string;
140
+ code: string;
141
+ customerId: string;
142
+ /** Every money figure on the quote is in this currency, and the order is created in it. */
143
+ currencyCode: string;
144
+ status: QuoteStatus;
145
+ /** Whether the lines and prices may still change (see the module docs). */
146
+ editable: boolean;
147
+ /** Whether {@link QuotesModule.convertToOrder} would create the order now. */
148
+ convertible: boolean;
149
+ /** ISO-8601 instant the offer lapses at; null for no end. */
150
+ expiresAt: string | null;
151
+ /**
152
+ * The last day the offer is open, `YYYY-MM-DD`, in the store's time zone: show this as "valid
153
+ * until", never a date derived from `expiresAt` in the reader's zone. Null for no end.
154
+ */
155
+ validUntil: string | null;
156
+ salesRepUserId: string | null;
157
+ customerNotes: string | null;
158
+ internalNotes: string | null;
159
+ /** The order the quote converted into, once it has. */
160
+ convertedOrderId: string | null;
161
+ customer: {
162
+ id: string;
163
+ firstName: string;
164
+ lastName: string;
165
+ emailAddress: string;
166
+ addresses: Array<{
167
+ company: string | null;
168
+ defaultBillingAddress: boolean;
169
+ defaultShippingAddress: boolean;
170
+ }> | null;
171
+ } | null;
172
+ salesRep: QuoteSalesRepresentative | null;
173
+ lines: QuoteLine[];
174
+ document: QuoteDocument | null;
175
+ /** Newest first. Only {@link QuotesModule.get} reads it. */
176
+ statusLogs?: QuoteStatusLogEntry[];
177
+ createdAt: string;
178
+ updatedAt: string;
179
+ /**
180
+ * Set when the caller's customer-data level blanked the customer (an app installation below
181
+ * `customerData: full`): read an empty name as "not granted", never as "none".
182
+ */
183
+ redacted?: true;
184
+ }
185
+ export interface QuoteListOptions {
186
+ /** 1 to 100; 25 when left out. */
187
+ take?: number;
188
+ skip?: number;
189
+ status?: QuoteStatus;
190
+ customerId?: string;
191
+ /** Part of the quote code, case-insensitive. */
192
+ code?: string;
193
+ }
194
+ export interface QuoteList {
195
+ items: Quote[];
196
+ totalItems: number;
197
+ }
198
+ export interface CreateDraftQuoteInput {
199
+ customerId: string;
200
+ /** One of the store's currencies (`settings.get().availableCurrencyCodes`). */
201
+ currencyCode: string;
202
+ customerNotes?: string | null;
203
+ internalNotes?: string | null;
204
+ /** Lines to start with; each starts unpriced ("Pending"). */
205
+ items?: Array<{
206
+ productVariantId: string;
207
+ quantity: number;
208
+ }>;
209
+ }
210
+ export interface AddQuoteLineInput {
211
+ productVariantId: string;
212
+ /** 1 to 1,000,000. */
213
+ quantity: number;
214
+ /**
215
+ * In the store's primary tax mode. Left out, the engine suggests one: the customer's price-list
216
+ * price, else the catalogue price (refused `ORDER_LINE_VARIANT_UNPRICED` for a variant the
217
+ * store has no price for).
218
+ */
219
+ unitPrice?: number | null;
220
+ discountType?: QuoteLineDiscountType | null;
221
+ discountValue?: number | null;
222
+ discountLabel?: string | null;
223
+ }
224
+ /** Each field left out keeps what the line has. */
225
+ export interface UpdateQuoteLineInput {
226
+ quantity?: number;
227
+ unitPrice?: number | null;
228
+ discountType?: QuoteLineDiscountType | null;
229
+ discountValue?: number | null;
230
+ discountLabel?: string | null;
231
+ position?: number;
232
+ }
233
+ export interface SetQuotePricingInput {
234
+ /**
235
+ * The last day the offer is open, `YYYY-MM-DD`: the engine stores the end of that day in the
236
+ * store's time zone. Null for no end; left out (with `expiresAt`) keeps the current one. Never
237
+ * together with `expiresAt` (`QUOTE_EXPIRY_INVALID`).
238
+ */
239
+ validUntil?: string | null;
240
+ /** ISO-8601 instant, with its offset; null for no end. Prefer `validUntil`. */
241
+ expiresAt?: string | null;
242
+ customerNotes?: string | null;
243
+ internalNotes?: string | null;
244
+ /** One entry per line to price; a line of another quote is refused `QUOTE_LINE_INVALID`. */
245
+ lines: Array<{
246
+ lineId: string;
247
+ unitPrice: number;
248
+ discountType?: QuoteLineDiscountType | null;
249
+ discountValue?: number | null;
250
+ discountLabel?: string | null;
251
+ }>;
252
+ }
253
+ /** The new end as exactly one of `validUntil` (preferred) and `expiresAt`. */
254
+ export type ExtendQuoteValidityInput = ({
255
+ /**
256
+ * The new last day the offer is open, `YYYY-MM-DD`, ended in the store's time zone: today
257
+ * or later there, else `QUOTE_EXPIRY_INVALID`.
258
+ */
259
+ validUntil: string;
260
+ expiresAt?: never;
261
+ } | {
262
+ /** A new end strictly after now (ISO-8601 with its offset); else `QUOTE_EXPIRY_INVALID`. */
263
+ expiresAt: string;
264
+ validUntil?: never;
265
+ }) & {
266
+ /** Left out: kept. Null: cleared. */
267
+ customerNotes?: string | null;
268
+ internalNotes?: string | null;
269
+ };
270
+ /** The order a quote converted into: awaiting payment (`ArrangingPayment`). */
271
+ export interface ConvertedQuoteOrder {
272
+ id: string;
273
+ code: string;
274
+ state: string;
275
+ currencyCode: string;
276
+ totalWithTax: number;
277
+ /** The key this attempt ran under (the one passed, or the one made up for it). */
278
+ idempotencyKey: string;
279
+ }
280
+ /** The store's quote PDF design and quote numbering. */
281
+ export interface QuoteConfig {
282
+ id: string;
283
+ channelId: string;
284
+ numberPrefix: string;
285
+ numberSuffix: string;
286
+ numberDigits: number;
287
+ /** `none`, `short` or `full`. */
288
+ yearFormat: string;
289
+ yearReset: boolean;
290
+ lastResetYear: number | null;
291
+ documentTitle: string;
292
+ footerText: string | null;
293
+ validityNoticeTemplate: string | null;
294
+ columnProduct: boolean;
295
+ columnSku: boolean;
296
+ columnQuantity: boolean;
297
+ columnUnitPriceExcl: boolean;
298
+ columnUnitPriceDiscount: boolean;
299
+ columnUnitPriceIncl: boolean;
300
+ columnUnitPriceAfterDiscount: boolean;
301
+ columnLineTotal: boolean;
302
+ columnLineDiscount: boolean;
303
+ columnTaxRate: boolean;
304
+ columnTaxAmount: boolean;
305
+ columnTotal: boolean;
306
+ showLogo: boolean;
307
+ defaultLanguage: string | null;
308
+ termsTitle: string | null;
309
+ termsBody: string | null;
310
+ acceptanceInstructions: string | null;
311
+ }
312
+ /** Each field left out keeps what the store has. */
313
+ export type UpdateQuoteConfigInput = Partial<Omit<QuoteConfig, 'id' | 'channelId' | 'lastResetYear'>>;
314
+ /** The store's OWN quote settings (an organization may apply its own `quotesEnabled` instead). */
315
+ export interface QuoteSettings {
316
+ /** Whether the storefront takes quote requests (the store's own switch). */
317
+ quotesEnabled: boolean;
318
+ defaultCurrencyCode: string;
319
+ /** The currencies a quote can be in. */
320
+ availableCurrencyCodes: string[];
321
+ }
322
+ /** One key per attempt for {@link QuotesModule.convertToOrder}. */
323
+ export interface KeyedQuoteCall extends Call {
324
+ /**
325
+ * Re-sent unchanged on a retry of THAT attempt (a timeout, a dropped connection). Left out, one
326
+ * is made up (a UUIDv7) and returned as `idempotencyKey` on the result, and on a thrown error as
327
+ * an untyped own property of the error. Never reuse a key for another quote or a fresh attempt.
328
+ */
329
+ idempotencyKey?: string;
330
+ }
331
+ export interface QuoteLinesModule {
332
+ /**
333
+ * Add a line to an editable quote. Needs `UpdateOrder`. Refused `QUOTE_NOT_EDITABLE`,
334
+ * `QUOTE_LINE_INVALID`, `QUOTE_DISCOUNT_INVALID`, `ORDER_LINE_VARIANT_UNPRICED`,
335
+ * `QUOTE_NOT_FOUND`.
336
+ *
337
+ * @effect write
338
+ */
339
+ add(quoteId: string, input: AddQuoteLineInput, options?: Call): Promise<Quote>;
340
+ /**
341
+ * Change a line of an editable quote; answers the quote. Needs `UpdateOrder`. Refused as
342
+ * {@link add}, and `QUOTE_NOT_FOUND` for a line the store does not have.
343
+ *
344
+ * @effect write
345
+ */
346
+ update(lineId: string, input: UpdateQuoteLineInput, options?: Call): Promise<Quote>;
347
+ /**
348
+ * Take a line off an editable quote; answers the quote. A draft edit of an offer not yet made
349
+ * (an approved quote is not editable), so it is a write, not a delete. Needs `UpdateOrder`.
350
+ *
351
+ * @effect write
352
+ */
353
+ remove(lineId: string, options?: Call): Promise<Quote>;
354
+ }
355
+ export interface QuoteConfigModule {
356
+ /**
357
+ * The store's quote PDF design and numbering (made with defaults on the first read; an
358
+ * organization's numbering format when the store inherits it). Needs `ReadSettings`.
359
+ *
360
+ * @effect read
361
+ */
362
+ get(options?: Call): Promise<QuoteConfig>;
363
+ /**
364
+ * Change the quote PDF design or numbering. Needs `UpdateSettings`. A `yearFormat` other than
365
+ * `none`, `short` or `full` is refused `NUMBERING_YEAR_FORMAT_INVALID`.
366
+ *
367
+ * @effect write
368
+ */
369
+ update(input: UpdateQuoteConfigInput, options?: Call): Promise<QuoteConfig>;
370
+ }
371
+ export interface QuoteSettingsModule {
372
+ /**
373
+ * The store's own quote switch and its currencies (ruling G80: typed per domain). Needs only a
374
+ * session in the store.
375
+ *
376
+ * @effect read
377
+ */
378
+ get(options?: Call): Promise<QuoteSettings>;
379
+ }
380
+ export interface QuotesModule {
381
+ /**
382
+ * A page of the store's quotes, newest first, each with its lines. Needs `ReadOrder`.
383
+ *
384
+ * @effect read
385
+ */
386
+ list(options?: QuoteListOptions & Call): Promise<QuoteList>;
387
+ /**
388
+ * One quote with its status history, each line's price-list suggestion and the PDF's download
389
+ * link; null for a quote the store does not have. Needs `ReadOrder`.
390
+ *
391
+ * @effect read
392
+ */
393
+ get(quoteId: string, options?: Call): Promise<Quote | null>;
394
+ /**
395
+ * A new quote in `draft`, for one of the store's customers, in one of its currencies (else
396
+ * `CURRENCY_NOT_AVAILABLE`). The caller becomes its sales rep when eligible. Needs `UpdateOrder`.
397
+ *
398
+ * @effect write
399
+ */
400
+ createDraft(input: CreateDraftQuoteInput, options?: Call): Promise<Quote>;
401
+ lines: QuoteLinesModule;
402
+ /**
403
+ * Price every line given, and set the expiry and notes, in one write. Only while the quote is
404
+ * editable (`QUOTE_NOT_EDITABLE`). Needs `UpdateOrder`.
405
+ *
406
+ * @effect write
407
+ */
408
+ setPricing(quoteId: string, input: SetQuotePricingInput, options?: Call): Promise<Quote>;
409
+ /**
410
+ * Move an APPROVED quote's expiry (and its notes) without reopening it. Refused
411
+ * `QUOTE_NOT_EXTENDABLE` otherwise, and for an offer that already lapsed. Needs `UpdateOrder`.
412
+ *
413
+ * @effect write
414
+ */
415
+ extendValidity(quoteId: string, input: ExtendQuoteValidityInput, options?: Call): Promise<Quote>;
416
+ /**
417
+ * Give the quote a sales rep (`salesRepresentatives` lists who qualifies), or none with `null`.
418
+ * Needs `UpdateOrder`.
419
+ *
420
+ * @effect write
421
+ */
422
+ assignSalesRep(quoteId: string, salesRepUserId: string | null, options?: Call): Promise<Quote>;
423
+ /**
424
+ * The store's staff who may own a quote (they hold `UpdateOrder` in the store), at most 50,
425
+ * filtered by `term` on the name or email. Needs `UpdateOrder`.
426
+ *
427
+ * @effect read
428
+ */
429
+ salesRepresentatives(term?: string | null, options?: Call): Promise<QuoteSalesRepresentative[]>;
430
+ /**
431
+ * `draft` or `requested` → `in_review`. Needs `UpdateOrder`.
432
+ *
433
+ * @effect write
434
+ */
435
+ submit(quoteId: string, options?: Call): Promise<Quote>;
436
+ /**
437
+ * `in_review` → `approved`: the offer the customer holds (emailed with its PDF when the store
438
+ * sends quote emails). Every line must be priced. Needs `UpdateOrder`.
439
+ *
440
+ * @effect write
441
+ */
442
+ approve(quoteId: string, options?: Call): Promise<Quote>;
443
+ /**
444
+ * Decline the quote, with the reason. Final: a declined quote never moves again. Needs
445
+ * `UpdateOrder`.
446
+ *
447
+ * @effect destructive
448
+ */
449
+ decline(quoteId: string, reason: string, options?: Call): Promise<Quote>;
450
+ /**
451
+ * Cancel the quote, optionally with a reason. Final: a cancelled quote never moves again.
452
+ * Needs `UpdateOrder`.
453
+ *
454
+ * @effect destructive
455
+ */
456
+ cancel(quoteId: string, reason?: string | null, options?: Call): Promise<Quote>;
457
+ /**
458
+ * Turn an approved quote into an order awaiting payment (`ArrangingPayment`), at the quoted
459
+ * prices, in the quote's currency. Needs `UpdateOrder`.
460
+ *
461
+ * It moves no money (the order is paid later, through its own methods), so it is a write; it
462
+ * creates an order, so it is keyed. One quote makes one order: a conversion that overlaps
463
+ * another waits for it and answers the same order, and a quote already converted answers its
464
+ * order. One key per attempt (`options.idempotencyKey`): a repeat under the same key answers the
465
+ * same order (as it stands now) or the same refusal; the same key with another quote is
466
+ * `IDEMPOTENCY_CONFLICT`.
467
+ *
468
+ * Refused, with nothing created: `QUOTE_CONVERT_STATE_INVALID` when `convertible` is false
469
+ * (`details` carry the `reason`: STATUS, EXPIRED, NO_LINES, LINE_UNPRICED), `QUOTE_NOT_FOUND`,
470
+ * `HUB_HAS_NO_ORDERS`, an order minimum or address the store refuses (the engine's sentence).
471
+ *
472
+ * @effect write
473
+ */
474
+ convertToOrder(quoteId: string, options?: KeyedQuoteCall): Promise<ConvertedQuoteOrder>;
475
+ /**
476
+ * Render the quote PDF again (it is stored privately; read its link with {@link get}). Needs
477
+ * `UpdateOrder`.
478
+ *
479
+ * @effect write
480
+ */
481
+ generateDocument(quoteId: string, options?: Call): Promise<QuoteDocument>;
482
+ /**
483
+ * Email the priced quote and its PDF (rendered first) to the customer. Refused when every line
484
+ * is not priced, or when the store's "Quote Approved" email is off or has no recipient. An
485
+ * email cannot be taken back.
486
+ *
487
+ * @effect irreversible
488
+ */
489
+ sendToCustomer(quoteId: string, options?: Call): Promise<void>;
490
+ config: QuoteConfigModule;
491
+ settings: QuoteSettingsModule;
492
+ }
493
+ export declare const QUOTE_FIELDS = "\n id\n code\n customerId\n currencyCode\n status\n editable\n convertible\n expiresAt\n validUntil\n salesRepUserId\n customerNotes\n internalNotes\n convertedOrderId\n createdAt\n updatedAt\n customer {\n id\n firstName\n lastName\n emailAddress\n addresses {\n company\n defaultBillingAddress\n defaultShippingAddress\n }\n }\n salesRep {\n id\n userId\n firstName\n lastName\n emailAddress\n }\n lines {\n \n id\n productVariantId\n quantity\n unitPrice\n discountType\n discountValue\n discountLabel\n position\n discountAmount\n effectiveUnitPrice\n lineTotal\n lineTotalWithTax\n taxAmount\n taxRate\n createdAt\n updatedAt\n productVariant {\n id\n name\n sku\n storePrice {\n price\n priceWithTax\n }\n product {\n id\n name\n featuredAsset {\n id\n preview\n }\n }\n }\n\n }\n document {\n \n id\n documentNumber\n fileSize\n generatedAt\n lastSentAt\n\n }\n";
494
+ export declare const QUOTES_LIST_QUERY = "\n query QuotesList($options: AdminQuoteListOptions) {\n quotes(options: $options) {\n items {\n \n id\n code\n customerId\n currencyCode\n status\n editable\n convertible\n expiresAt\n validUntil\n salesRepUserId\n customerNotes\n internalNotes\n convertedOrderId\n createdAt\n updatedAt\n customer {\n id\n firstName\n lastName\n emailAddress\n addresses {\n company\n defaultBillingAddress\n defaultShippingAddress\n }\n }\n salesRep {\n id\n userId\n firstName\n lastName\n emailAddress\n }\n lines {\n \n id\n productVariantId\n quantity\n unitPrice\n discountType\n discountValue\n discountLabel\n position\n discountAmount\n effectiveUnitPrice\n lineTotal\n lineTotalWithTax\n taxAmount\n taxRate\n createdAt\n updatedAt\n productVariant {\n id\n name\n sku\n storePrice {\n price\n priceWithTax\n }\n product {\n id\n name\n featuredAsset {\n id\n preview\n }\n }\n }\n\n }\n document {\n \n id\n documentNumber\n fileSize\n generatedAt\n lastSentAt\n\n }\n\n }\n totalItems\n }\n }\n";
495
+ /**
496
+ * The detail read adds what costs per read: the signed PDF link (a storage round trip) and each
497
+ * line's price-list suggestion (the price-list strategy per line). The list never selects them.
498
+ */
499
+ export declare const QUOTE_GET_QUERY = "\n query QuotesGet($id: ID!) {\n quote(id: $id) {\n \n id\n code\n customerId\n currencyCode\n status\n editable\n convertible\n expiresAt\n validUntil\n salesRepUserId\n customerNotes\n internalNotes\n convertedOrderId\n createdAt\n updatedAt\n customer {\n id\n firstName\n lastName\n emailAddress\n addresses {\n company\n defaultBillingAddress\n defaultShippingAddress\n }\n }\n salesRep {\n id\n userId\n firstName\n lastName\n emailAddress\n }\n lines {\n \n id\n productVariantId\n quantity\n unitPrice\n discountType\n discountValue\n discountLabel\n position\n discountAmount\n effectiveUnitPrice\n lineTotal\n lineTotalWithTax\n taxAmount\n taxRate\n createdAt\n updatedAt\n productVariant {\n id\n name\n sku\n storePrice {\n price\n priceWithTax\n }\n product {\n id\n name\n featuredAsset {\n id\n preview\n }\n }\n }\n\n }\n document {\n \n id\n documentNumber\n fileSize\n generatedAt\n lastSentAt\n\n }\n\n document {\n downloadUrl\n }\n lines {\n id\n suggestedUnitPrice\n }\n statusLogs {\n id\n status\n createdAt\n actorUserId\n metadata\n }\n }\n }\n";
500
+ export declare const QUOTE_CREATE_DRAFT_MUTATION = "\n mutation QuotesCreateDraft($input: CreateDraftQuoteInput!) {\n createDraftQuote(input: $input) {\n \n id\n code\n customerId\n currencyCode\n status\n editable\n convertible\n expiresAt\n validUntil\n salesRepUserId\n customerNotes\n internalNotes\n convertedOrderId\n createdAt\n updatedAt\n customer {\n id\n firstName\n lastName\n emailAddress\n addresses {\n company\n defaultBillingAddress\n defaultShippingAddress\n }\n }\n salesRep {\n id\n userId\n firstName\n lastName\n emailAddress\n }\n lines {\n \n id\n productVariantId\n quantity\n unitPrice\n discountType\n discountValue\n discountLabel\n position\n discountAmount\n effectiveUnitPrice\n lineTotal\n lineTotalWithTax\n taxAmount\n taxRate\n createdAt\n updatedAt\n productVariant {\n id\n name\n sku\n storePrice {\n price\n priceWithTax\n }\n product {\n id\n name\n featuredAsset {\n id\n preview\n }\n }\n }\n\n }\n document {\n \n id\n documentNumber\n fileSize\n generatedAt\n lastSentAt\n\n }\n\n }\n }\n";
501
+ export declare const QUOTE_ADD_LINE_MUTATION = "\n mutation QuotesAddLine($quoteId: ID!, $input: AddQuoteLineInput!) {\n addQuoteLine(quoteId: $quoteId, input: $input) {\n \n id\n code\n customerId\n currencyCode\n status\n editable\n convertible\n expiresAt\n validUntil\n salesRepUserId\n customerNotes\n internalNotes\n convertedOrderId\n createdAt\n updatedAt\n customer {\n id\n firstName\n lastName\n emailAddress\n addresses {\n company\n defaultBillingAddress\n defaultShippingAddress\n }\n }\n salesRep {\n id\n userId\n firstName\n lastName\n emailAddress\n }\n lines {\n \n id\n productVariantId\n quantity\n unitPrice\n discountType\n discountValue\n discountLabel\n position\n discountAmount\n effectiveUnitPrice\n lineTotal\n lineTotalWithTax\n taxAmount\n taxRate\n createdAt\n updatedAt\n productVariant {\n id\n name\n sku\n storePrice {\n price\n priceWithTax\n }\n product {\n id\n name\n featuredAsset {\n id\n preview\n }\n }\n }\n\n }\n document {\n \n id\n documentNumber\n fileSize\n generatedAt\n lastSentAt\n\n }\n\n }\n }\n";
502
+ export declare const QUOTE_UPDATE_LINE_MUTATION = "\n mutation QuotesUpdateLine($lineId: ID!, $input: UpdateQuoteLineInput!) {\n updateQuoteLine(lineId: $lineId, input: $input) {\n \n id\n code\n customerId\n currencyCode\n status\n editable\n convertible\n expiresAt\n validUntil\n salesRepUserId\n customerNotes\n internalNotes\n convertedOrderId\n createdAt\n updatedAt\n customer {\n id\n firstName\n lastName\n emailAddress\n addresses {\n company\n defaultBillingAddress\n defaultShippingAddress\n }\n }\n salesRep {\n id\n userId\n firstName\n lastName\n emailAddress\n }\n lines {\n \n id\n productVariantId\n quantity\n unitPrice\n discountType\n discountValue\n discountLabel\n position\n discountAmount\n effectiveUnitPrice\n lineTotal\n lineTotalWithTax\n taxAmount\n taxRate\n createdAt\n updatedAt\n productVariant {\n id\n name\n sku\n storePrice {\n price\n priceWithTax\n }\n product {\n id\n name\n featuredAsset {\n id\n preview\n }\n }\n }\n\n }\n document {\n \n id\n documentNumber\n fileSize\n generatedAt\n lastSentAt\n\n }\n\n }\n }\n";
503
+ export declare const QUOTE_REMOVE_LINE_MUTATION = "\n mutation QuotesRemoveLine($lineId: ID!) {\n removeQuoteLine(lineId: $lineId) {\n \n id\n code\n customerId\n currencyCode\n status\n editable\n convertible\n expiresAt\n validUntil\n salesRepUserId\n customerNotes\n internalNotes\n convertedOrderId\n createdAt\n updatedAt\n customer {\n id\n firstName\n lastName\n emailAddress\n addresses {\n company\n defaultBillingAddress\n defaultShippingAddress\n }\n }\n salesRep {\n id\n userId\n firstName\n lastName\n emailAddress\n }\n lines {\n \n id\n productVariantId\n quantity\n unitPrice\n discountType\n discountValue\n discountLabel\n position\n discountAmount\n effectiveUnitPrice\n lineTotal\n lineTotalWithTax\n taxAmount\n taxRate\n createdAt\n updatedAt\n productVariant {\n id\n name\n sku\n storePrice {\n price\n priceWithTax\n }\n product {\n id\n name\n featuredAsset {\n id\n preview\n }\n }\n }\n\n }\n document {\n \n id\n documentNumber\n fileSize\n generatedAt\n lastSentAt\n\n }\n\n }\n }\n";
504
+ export declare const QUOTE_SET_PRICING_MUTATION = "\n mutation QuotesSetPricing($quoteId: ID!, $input: SetQuotePricingInput!) {\n setQuotePricing(quoteId: $quoteId, input: $input) {\n \n id\n code\n customerId\n currencyCode\n status\n editable\n convertible\n expiresAt\n validUntil\n salesRepUserId\n customerNotes\n internalNotes\n convertedOrderId\n createdAt\n updatedAt\n customer {\n id\n firstName\n lastName\n emailAddress\n addresses {\n company\n defaultBillingAddress\n defaultShippingAddress\n }\n }\n salesRep {\n id\n userId\n firstName\n lastName\n emailAddress\n }\n lines {\n \n id\n productVariantId\n quantity\n unitPrice\n discountType\n discountValue\n discountLabel\n position\n discountAmount\n effectiveUnitPrice\n lineTotal\n lineTotalWithTax\n taxAmount\n taxRate\n createdAt\n updatedAt\n productVariant {\n id\n name\n sku\n storePrice {\n price\n priceWithTax\n }\n product {\n id\n name\n featuredAsset {\n id\n preview\n }\n }\n }\n\n }\n document {\n \n id\n documentNumber\n fileSize\n generatedAt\n lastSentAt\n\n }\n\n }\n }\n";
505
+ export declare const QUOTE_EXTEND_VALIDITY_MUTATION = "\n mutation QuotesExtendValidity($quoteId: ID!, $input: ExtendQuoteValidityInput!) {\n extendQuoteValidity(quoteId: $quoteId, input: $input) {\n \n id\n code\n customerId\n currencyCode\n status\n editable\n convertible\n expiresAt\n validUntil\n salesRepUserId\n customerNotes\n internalNotes\n convertedOrderId\n createdAt\n updatedAt\n customer {\n id\n firstName\n lastName\n emailAddress\n addresses {\n company\n defaultBillingAddress\n defaultShippingAddress\n }\n }\n salesRep {\n id\n userId\n firstName\n lastName\n emailAddress\n }\n lines {\n \n id\n productVariantId\n quantity\n unitPrice\n discountType\n discountValue\n discountLabel\n position\n discountAmount\n effectiveUnitPrice\n lineTotal\n lineTotalWithTax\n taxAmount\n taxRate\n createdAt\n updatedAt\n productVariant {\n id\n name\n sku\n storePrice {\n price\n priceWithTax\n }\n product {\n id\n name\n featuredAsset {\n id\n preview\n }\n }\n }\n\n }\n document {\n \n id\n documentNumber\n fileSize\n generatedAt\n lastSentAt\n\n }\n\n }\n }\n";
506
+ export declare const QUOTE_ASSIGN_SALES_REP_MUTATION = "\n mutation QuotesAssignSalesRep($quoteId: ID!, $salesRepUserId: ID) {\n assignQuoteSalesRep(quoteId: $quoteId, salesRepUserId: $salesRepUserId) {\n \n id\n code\n customerId\n currencyCode\n status\n editable\n convertible\n expiresAt\n validUntil\n salesRepUserId\n customerNotes\n internalNotes\n convertedOrderId\n createdAt\n updatedAt\n customer {\n id\n firstName\n lastName\n emailAddress\n addresses {\n company\n defaultBillingAddress\n defaultShippingAddress\n }\n }\n salesRep {\n id\n userId\n firstName\n lastName\n emailAddress\n }\n lines {\n \n id\n productVariantId\n quantity\n unitPrice\n discountType\n discountValue\n discountLabel\n position\n discountAmount\n effectiveUnitPrice\n lineTotal\n lineTotalWithTax\n taxAmount\n taxRate\n createdAt\n updatedAt\n productVariant {\n id\n name\n sku\n storePrice {\n price\n priceWithTax\n }\n product {\n id\n name\n featuredAsset {\n id\n preview\n }\n }\n }\n\n }\n document {\n \n id\n documentNumber\n fileSize\n generatedAt\n lastSentAt\n\n }\n\n }\n }\n";
507
+ export declare const QUOTE_SALES_REPRESENTATIVES_QUERY = "\n query QuotesSalesRepresentatives($search: String) {\n quoteSalesRepresentatives(search: $search) {\n id\n userId\n firstName\n lastName\n emailAddress\n }\n }\n";
508
+ export declare const QUOTE_SUBMIT_MUTATION = "\n mutation QuotesSubmit($quoteId: ID!) {\n submitQuoteForReview(quoteId: $quoteId) {\n \n id\n code\n customerId\n currencyCode\n status\n editable\n convertible\n expiresAt\n validUntil\n salesRepUserId\n customerNotes\n internalNotes\n convertedOrderId\n createdAt\n updatedAt\n customer {\n id\n firstName\n lastName\n emailAddress\n addresses {\n company\n defaultBillingAddress\n defaultShippingAddress\n }\n }\n salesRep {\n id\n userId\n firstName\n lastName\n emailAddress\n }\n lines {\n \n id\n productVariantId\n quantity\n unitPrice\n discountType\n discountValue\n discountLabel\n position\n discountAmount\n effectiveUnitPrice\n lineTotal\n lineTotalWithTax\n taxAmount\n taxRate\n createdAt\n updatedAt\n productVariant {\n id\n name\n sku\n storePrice {\n price\n priceWithTax\n }\n product {\n id\n name\n featuredAsset {\n id\n preview\n }\n }\n }\n\n }\n document {\n \n id\n documentNumber\n fileSize\n generatedAt\n lastSentAt\n\n }\n\n }\n }\n";
509
+ export declare const QUOTE_APPROVE_MUTATION = "\n mutation QuotesApprove($quoteId: ID!) {\n approveQuote(quoteId: $quoteId) {\n \n id\n code\n customerId\n currencyCode\n status\n editable\n convertible\n expiresAt\n validUntil\n salesRepUserId\n customerNotes\n internalNotes\n convertedOrderId\n createdAt\n updatedAt\n customer {\n id\n firstName\n lastName\n emailAddress\n addresses {\n company\n defaultBillingAddress\n defaultShippingAddress\n }\n }\n salesRep {\n id\n userId\n firstName\n lastName\n emailAddress\n }\n lines {\n \n id\n productVariantId\n quantity\n unitPrice\n discountType\n discountValue\n discountLabel\n position\n discountAmount\n effectiveUnitPrice\n lineTotal\n lineTotalWithTax\n taxAmount\n taxRate\n createdAt\n updatedAt\n productVariant {\n id\n name\n sku\n storePrice {\n price\n priceWithTax\n }\n product {\n id\n name\n featuredAsset {\n id\n preview\n }\n }\n }\n\n }\n document {\n \n id\n documentNumber\n fileSize\n generatedAt\n lastSentAt\n\n }\n\n }\n }\n";
510
+ export declare const QUOTE_DECLINE_MUTATION = "\n mutation QuotesDecline($quoteId: ID!, $reason: String!) {\n declineQuote(quoteId: $quoteId, reason: $reason) {\n \n id\n code\n customerId\n currencyCode\n status\n editable\n convertible\n expiresAt\n validUntil\n salesRepUserId\n customerNotes\n internalNotes\n convertedOrderId\n createdAt\n updatedAt\n customer {\n id\n firstName\n lastName\n emailAddress\n addresses {\n company\n defaultBillingAddress\n defaultShippingAddress\n }\n }\n salesRep {\n id\n userId\n firstName\n lastName\n emailAddress\n }\n lines {\n \n id\n productVariantId\n quantity\n unitPrice\n discountType\n discountValue\n discountLabel\n position\n discountAmount\n effectiveUnitPrice\n lineTotal\n lineTotalWithTax\n taxAmount\n taxRate\n createdAt\n updatedAt\n productVariant {\n id\n name\n sku\n storePrice {\n price\n priceWithTax\n }\n product {\n id\n name\n featuredAsset {\n id\n preview\n }\n }\n }\n\n }\n document {\n \n id\n documentNumber\n fileSize\n generatedAt\n lastSentAt\n\n }\n\n }\n }\n";
511
+ export declare const QUOTE_CANCEL_MUTATION = "\n mutation QuotesCancel($quoteId: ID!, $reason: String) {\n cancelQuote(quoteId: $quoteId, reason: $reason) {\n \n id\n code\n customerId\n currencyCode\n status\n editable\n convertible\n expiresAt\n validUntil\n salesRepUserId\n customerNotes\n internalNotes\n convertedOrderId\n createdAt\n updatedAt\n customer {\n id\n firstName\n lastName\n emailAddress\n addresses {\n company\n defaultBillingAddress\n defaultShippingAddress\n }\n }\n salesRep {\n id\n userId\n firstName\n lastName\n emailAddress\n }\n lines {\n \n id\n productVariantId\n quantity\n unitPrice\n discountType\n discountValue\n discountLabel\n position\n discountAmount\n effectiveUnitPrice\n lineTotal\n lineTotalWithTax\n taxAmount\n taxRate\n createdAt\n updatedAt\n productVariant {\n id\n name\n sku\n storePrice {\n price\n priceWithTax\n }\n product {\n id\n name\n featuredAsset {\n id\n preview\n }\n }\n }\n\n }\n document {\n \n id\n documentNumber\n fileSize\n generatedAt\n lastSentAt\n\n }\n\n }\n }\n";
512
+ export declare const QUOTE_CONVERT_MUTATION = "\n mutation QuotesConvertToOrder($quoteId: ID!, $idempotencyKey: String) {\n convertQuoteToOrder(quoteId: $quoteId, idempotencyKey: $idempotencyKey) {\n id\n code\n state\n currencyCode\n totalWithTax\n }\n }\n";
513
+ export declare const QUOTE_GENERATE_DOCUMENT_MUTATION = "\n mutation QuotesGenerateDocument($quoteId: ID!) {\n generateQuoteDocument(quoteId: $quoteId) {\n \n id\n documentNumber\n fileSize\n generatedAt\n lastSentAt\n\n }\n }\n";
514
+ export declare const QUOTE_SEND_TO_CUSTOMER_MUTATION = "\n mutation QuotesSendToCustomer($quoteId: ID!) {\n sendQuoteToCustomer(quoteId: $quoteId)\n }\n";
515
+ export declare const QUOTE_CONFIG_QUERY = "\n query QuotesConfig {\n quoteConfig {\n \n id\n channelId\n numberPrefix\n numberSuffix\n numberDigits\n yearFormat\n yearReset\n lastResetYear\n documentTitle\n footerText\n validityNoticeTemplate\n columnProduct\n columnSku\n columnQuantity\n columnUnitPriceExcl\n columnUnitPriceDiscount\n columnUnitPriceIncl\n columnUnitPriceAfterDiscount\n columnLineTotal\n columnLineDiscount\n columnTaxRate\n columnTaxAmount\n columnTotal\n showLogo\n defaultLanguage\n termsTitle\n termsBody\n acceptanceInstructions\n\n }\n }\n";
516
+ export declare const QUOTE_UPDATE_CONFIG_MUTATION = "\n mutation QuotesUpdateConfig($input: UpdateQuoteConfigInput!) {\n updateQuoteConfig(input: $input) {\n \n id\n channelId\n numberPrefix\n numberSuffix\n numberDigits\n yearFormat\n yearReset\n lastResetYear\n documentTitle\n footerText\n validityNoticeTemplate\n columnProduct\n columnSku\n columnQuantity\n columnUnitPriceExcl\n columnUnitPriceDiscount\n columnUnitPriceIncl\n columnUnitPriceAfterDiscount\n columnLineTotal\n columnLineDiscount\n columnTaxRate\n columnTaxAmount\n columnTotal\n showLogo\n defaultLanguage\n termsTitle\n termsBody\n acceptanceInstructions\n\n }\n }\n";
517
+ export declare const QUOTE_SETTINGS_QUERY = "\n query QuotesSettings {\n activeChannel {\n id\n defaultCurrencyCode\n availableCurrencyCodes\n customFields {\n quotesEnabled\n }\n }\n }\n";
518
+ export declare function createQuotesModule(transport: Transport): QuotesModule;