@sixtyninecommerce/admin 0.9.0 → 0.11.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 (258) hide show
  1. package/README.md +4598 -128
  2. package/dist/catalog/assets.d.ts +120 -8
  3. package/dist/catalog/assets.js +98 -12
  4. package/dist/catalog/collections.d.ts +279 -14
  5. package/dist/catalog/collections.js +246 -15
  6. package/dist/catalog/index.d.ts +9 -2
  7. package/dist/catalog/index.js +4 -0
  8. package/dist/catalog/products.d.ts +318 -17
  9. package/dist/catalog/products.js +182 -14
  10. package/dist/catalog/properties.d.ts +102 -14
  11. package/dist/catalog/properties.js +13 -0
  12. package/dist/catalog/recommendations.d.ts +261 -0
  13. package/dist/catalog/recommendations.js +145 -0
  14. package/dist/catalog/reviews.d.ts +368 -0
  15. package/dist/catalog/reviews.js +318 -0
  16. package/dist/catalog/types.d.ts +17 -1
  17. package/dist/catalog/types.js +10 -0
  18. package/dist/catalog/variant-find.d.ts +136 -0
  19. package/dist/catalog/variant-find.js +239 -0
  20. package/dist/catalog/variants.d.ts +282 -25
  21. package/dist/catalog/variants.js +173 -25
  22. package/dist/catalog/visibility.d.ts +20 -5
  23. package/dist/catalog/visibility.js +19 -1
  24. package/dist/client.d.ts +116 -9
  25. package/dist/client.js +41 -7
  26. package/dist/content/assets.d.ts +286 -0
  27. package/dist/content/assets.js +181 -0
  28. package/dist/content/items.d.ts +269 -0
  29. package/dist/content/items.js +170 -0
  30. package/dist/content/types.d.ts +282 -0
  31. package/dist/content/types.js +100 -0
  32. package/dist/customers/age-verification.d.ts +66 -0
  33. package/dist/customers/age-verification.js +79 -0
  34. package/dist/customers/credit.d.ts +263 -0
  35. package/dist/customers/credit.js +244 -0
  36. package/dist/customers/delivery-preferences.d.ts +120 -0
  37. package/dist/customers/delivery-preferences.js +97 -0
  38. package/dist/customers/groups.d.ts +207 -0
  39. package/dist/customers/groups.js +438 -0
  40. package/dist/customers/index.d.ts +447 -37
  41. package/dist/customers/index.js +313 -40
  42. package/dist/customers/invitation-status.d.ts +57 -0
  43. package/dist/customers/invitation-status.js +21 -0
  44. package/dist/customers/notes.d.ts +67 -0
  45. package/dist/customers/notes.js +51 -0
  46. package/dist/customers/notification-recipients.d.ts +97 -0
  47. package/dist/customers/notification-recipients.js +84 -0
  48. package/dist/customers/saved-lists.d.ts +42 -0
  49. package/dist/customers/saved-lists.js +61 -0
  50. package/dist/customers/vat.d.ts +83 -0
  51. package/dist/customers/vat.js +46 -0
  52. package/dist/customers/wire.d.ts +20 -0
  53. package/dist/customers/wire.js +35 -0
  54. package/dist/documents/ar.d.ts +307 -0
  55. package/dist/documents/ar.js +254 -0
  56. package/dist/documents/index.d.ts +731 -21
  57. package/dist/documents/index.js +436 -24
  58. package/dist/documents/pdf.d.ts +2 -0
  59. package/dist/documents/pdf.js +11 -0
  60. package/dist/fulfillments/create.d.ts +167 -0
  61. package/dist/fulfillments/create.js +216 -0
  62. package/dist/fulfillments/index.d.ts +121 -10
  63. package/dist/fulfillments/index.js +120 -2
  64. package/dist/fulfillments/payment-policy.d.ts +64 -0
  65. package/dist/fulfillments/payment-policy.js +140 -0
  66. package/dist/fulfillments/warehouse.d.ts +724 -0
  67. package/dist/fulfillments/warehouse.js +914 -0
  68. package/dist/geo/index.d.ts +119 -0
  69. package/dist/geo/index.js +107 -0
  70. package/dist/index.d.ts +129 -30
  71. package/dist/index.js +47 -9
  72. package/dist/integrations/afas-actions.d.ts +234 -0
  73. package/dist/integrations/afas-actions.js +310 -0
  74. package/dist/integrations/afas-types.d.ts +483 -0
  75. package/dist/integrations/afas-types.js +5 -0
  76. package/dist/integrations/afas.d.ts +234 -0
  77. package/dist/integrations/afas.js +290 -0
  78. package/dist/integrations/connections.d.ts +103 -0
  79. package/dist/integrations/connections.js +55 -0
  80. package/dist/integrations/esp.d.ts +313 -0
  81. package/dist/integrations/esp.js +169 -0
  82. package/dist/integrations/exact-online-types.d.ts +423 -0
  83. package/dist/integrations/exact-online-types.js +6 -0
  84. package/dist/integrations/exact-online.d.ts +248 -0
  85. package/dist/integrations/exact-online.js +376 -0
  86. package/dist/integrations/index.d.ts +40 -0
  87. package/dist/integrations/index.js +24 -0
  88. package/dist/integrations/pipeline-keys.d.ts +13 -0
  89. package/dist/integrations/pipeline-keys.js +22 -0
  90. package/dist/integrations/pipelines.d.ts +114 -0
  91. package/dist/integrations/pipelines.js +46 -0
  92. package/dist/integrations/types.d.ts +322 -0
  93. package/dist/integrations/types.js +8 -0
  94. package/dist/jobs/bulk-action-run.d.ts +11 -2
  95. package/dist/jobs/bulk-action-run.js +4 -5
  96. package/dist/locations/index.d.ts +66 -0
  97. package/dist/locations/index.js +31 -0
  98. package/dist/meta/index.d.ts +162 -0
  99. package/dist/orders/bulk.d.ts +75 -0
  100. package/dist/orders/bulk.js +150 -0
  101. package/dist/orders/cancel-with-money.d.ts +227 -0
  102. package/dist/orders/cancel-with-money.js +153 -0
  103. package/dist/orders/commit-edit.d.ts +7 -1
  104. package/dist/orders/commit-edit.js +5 -1
  105. package/dist/orders/deposit-policy.d.ts +103 -0
  106. package/dist/orders/deposit-policy.js +202 -0
  107. package/dist/orders/drafts.d.ts +800 -0
  108. package/dist/orders/drafts.js +771 -0
  109. package/dist/orders/fields.d.ts +245 -0
  110. package/dist/orders/fields.js +188 -0
  111. package/dist/orders/get.d.ts +29 -19
  112. package/dist/orders/get.js +17 -8
  113. package/dist/orders/index.d.ts +125 -5
  114. package/dist/orders/index.js +35 -2
  115. package/dist/orders/lifecycle.d.ts +128 -0
  116. package/dist/orders/lifecycle.js +158 -0
  117. package/dist/orders/line-price-preview.d.ts +7 -2
  118. package/dist/orders/list.d.ts +222 -0
  119. package/dist/orders/list.js +377 -0
  120. package/dist/orders/manual-discounts.d.ts +11 -2
  121. package/dist/orders/manual-discounts.js +2 -0
  122. package/dist/orders/manual-pricing.d.ts +5 -0
  123. package/dist/orders/order-entry.d.ts +20 -7
  124. package/dist/orders/plan-edit.d.ts +1 -1
  125. package/dist/orders/plan-edit.js +4 -1
  126. package/dist/orders/settings.d.ts +201 -0
  127. package/dist/orders/settings.js +325 -0
  128. package/dist/orders/status.d.ts +159 -13
  129. package/dist/orders/status.js +21 -0
  130. package/dist/orders/surcharges.d.ts +8 -1
  131. package/dist/orders/surcharges.js +3 -2
  132. package/dist/payments/account-credit.d.ts +30 -0
  133. package/dist/payments/account-credit.js +19 -0
  134. package/dist/payments/ar.d.ts +292 -0
  135. package/dist/payments/ar.js +223 -0
  136. package/dist/payments/connected-account.d.ts +47 -0
  137. package/dist/payments/connected-account.js +61 -0
  138. package/dist/payments/credit-noted-fields.d.ts +12 -0
  139. package/dist/payments/credit-noted-fields.js +37 -0
  140. package/dist/payments/index.d.ts +263 -10
  141. package/dist/payments/index.js +133 -1
  142. package/dist/payments/methods.d.ts +332 -0
  143. package/dist/payments/methods.js +363 -0
  144. package/dist/payments/mollie-methods.d.ts +159 -0
  145. package/dist/payments/mollie-methods.js +141 -0
  146. package/dist/payments/payment-links.d.ts +180 -0
  147. package/dist/payments/payment-links.js +97 -0
  148. package/dist/payments/provider-keys.d.ts +150 -0
  149. package/dist/payments/provider-keys.js +118 -0
  150. package/dist/payments/providers.d.ts +86 -11
  151. package/dist/payments/providers.js +29 -0
  152. package/dist/payments/requests.d.ts +144 -0
  153. package/dist/payments/requests.js +92 -0
  154. package/dist/payments/store-credit-fields.d.ts +15 -0
  155. package/dist/payments/store-credit-fields.js +51 -0
  156. package/dist/pickups/index.d.ts +104 -0
  157. package/dist/pickups/index.js +105 -0
  158. package/dist/platform/channels.d.ts +132 -0
  159. package/dist/platform/channels.js +128 -0
  160. package/dist/platform/geo.d.ts +123 -0
  161. package/dist/platform/geo.js +144 -0
  162. package/dist/platform/tax.d.ts +154 -0
  163. package/dist/platform/tax.js +139 -0
  164. package/dist/pos/anomalies.d.ts +158 -0
  165. package/dist/pos/anomalies.js +64 -0
  166. package/dist/pos/assisted-selling.d.ts +79 -0
  167. package/dist/pos/assisted-selling.js +38 -0
  168. package/dist/pos/exchanges.d.ts +103 -0
  169. package/dist/pos/exchanges.js +22 -0
  170. package/dist/pos/gift-cards.d.ts +135 -0
  171. package/dist/pos/gift-cards.js +47 -0
  172. package/dist/pos/index.d.ts +2125 -32
  173. package/dist/pos/index.js +742 -4
  174. package/dist/pos/no-receipt.d.ts +94 -0
  175. package/dist/pos/no-receipt.js +25 -0
  176. package/dist/pos/offline-sales.d.ts +187 -0
  177. package/dist/pos/offline-sales.js +116 -0
  178. package/dist/pos/pay-by-link.d.ts +143 -0
  179. package/dist/pos/pay-by-link.js +57 -0
  180. package/dist/pos/quick-keys.d.ts +103 -0
  181. package/dist/pos/quick-keys.js +45 -0
  182. package/dist/pos/reports.d.ts +360 -0
  183. package/dist/pos/reports.js +62 -0
  184. package/dist/pos/returns.d.ts +217 -0
  185. package/dist/pos/returns.js +53 -0
  186. package/dist/pricing/bulk-coupons.d.ts +139 -0
  187. package/dist/pricing/bulk-coupons.js +112 -0
  188. package/dist/pricing/index.d.ts +177 -4
  189. package/dist/pricing/index.js +176 -1
  190. package/dist/pricing/price-lists.d.ts +604 -0
  191. package/dist/pricing/price-lists.js +600 -0
  192. package/dist/pricing/vouchers.d.ts +103 -0
  193. package/dist/pricing/vouchers.js +69 -0
  194. package/dist/purchasing/alerts.d.ts +89 -0
  195. package/dist/purchasing/alerts.js +62 -0
  196. package/dist/purchasing/cost.d.ts +110 -0
  197. package/dist/purchasing/cost.js +86 -0
  198. package/dist/purchasing/index.d.ts +36 -0
  199. package/dist/purchasing/index.js +16 -0
  200. package/dist/purchasing/purchase-orders.d.ts +548 -0
  201. package/dist/purchasing/purchase-orders.js +491 -0
  202. package/dist/purchasing/replenishment.d.ts +281 -0
  203. package/dist/purchasing/replenishment.js +240 -0
  204. package/dist/purchasing/settings.d.ts +152 -0
  205. package/dist/purchasing/settings.js +181 -0
  206. package/dist/purchasing/suppliers.d.ts +476 -0
  207. package/dist/purchasing/suppliers.js +438 -0
  208. package/dist/quotes/index.d.ts +501 -0
  209. package/dist/quotes/index.js +439 -0
  210. package/dist/reports/index.d.ts +71 -8
  211. package/dist/reports/index.js +74 -11
  212. package/dist/returns/index.d.ts +818 -0
  213. package/dist/returns/index.js +844 -0
  214. package/dist/search/index.d.ts +174 -0
  215. package/dist/search/index.js +125 -0
  216. package/dist/shipping/definitions.d.ts +29 -0
  217. package/dist/shipping/definitions.js +47 -0
  218. package/dist/shipping/fulfillment-profiles.d.ts +174 -0
  219. package/dist/shipping/fulfillment-profiles.js +104 -0
  220. package/dist/shipping/hendriks.d.ts +97 -0
  221. package/dist/shipping/hendriks.js +50 -0
  222. package/dist/shipping/index.d.ts +48 -0
  223. package/dist/shipping/index.js +25 -0
  224. package/dist/shipping/methods.d.ts +198 -0
  225. package/dist/shipping/methods.js +240 -0
  226. package/dist/shipping/myparcel.d.ts +254 -0
  227. package/dist/shipping/myparcel.js +178 -0
  228. package/dist/shipping/parcel-count-suggestion.d.ts +2 -0
  229. package/dist/shipping/parcel-rule.d.ts +6 -5
  230. package/dist/shipping/parcel-rule.js +21 -23
  231. package/dist/shipping/rate-tables.d.ts +179 -0
  232. package/dist/shipping/rate-tables.js +184 -0
  233. package/dist/stock/index.d.ts +10 -3
  234. package/dist/stock/index.js +3 -0
  235. package/dist/stock/locations.d.ts +144 -0
  236. package/dist/stock/locations.js +168 -0
  237. package/dist/stock/transfers.d.ts +216 -43
  238. package/dist/stock/transfers.js +140 -13
  239. package/dist/stored-value/index.d.ts +214 -4
  240. package/dist/stored-value/index.js +152 -0
  241. package/dist/subscriptions/index.d.ts +682 -0
  242. package/dist/subscriptions/index.js +815 -0
  243. package/dist/tax/index.d.ts +76 -1
  244. package/dist/tax/index.js +50 -0
  245. package/dist/tenant/email-style.d.ts +102 -0
  246. package/dist/tenant/email-style.js +72 -0
  247. package/dist/tenant/email-templates.d.ts +66 -0
  248. package/dist/tenant/email-templates.js +54 -0
  249. package/dist/tenant/notifications.d.ts +23 -17
  250. package/dist/tenant/settings-sources.d.ts +1 -1
  251. package/dist/tenant/time-zone.d.ts +17 -0
  252. package/dist/tenant/time-zone.js +11 -0
  253. package/dist/types.d.ts +51 -4
  254. package/dist/users/index.d.ts +3 -0
  255. package/dist/users/index.js +2 -0
  256. package/dist/users/warehouses.d.ts +50 -0
  257. package/dist/users/warehouses.js +51 -0
  258. package/package.json +2 -2
@@ -0,0 +1,97 @@
1
+ import { assertDeleted, fieldOf } from '../catalog/types.js';
2
+ import { customerDataField } from './wire.js';
3
+ export const DELIVERY_PREFERENCE_FIELDS = /* GraphQL */ `
4
+ id
5
+ createdAt
6
+ updatedAt
7
+ fulfillmentHandlerCode
8
+ name
9
+ values
10
+ isDefault
11
+ `;
12
+ export const DELIVERY_PREFERENCES_QUERY = /* GraphQL */ `
13
+ query CustomerDeliveryPreferences($id: ID!, $fulfillmentHandlerCode: String) {
14
+ customer(id: $id) {
15
+ id
16
+ deliveryPreferences(fulfillmentHandlerCode: $fulfillmentHandlerCode) {
17
+ ${DELIVERY_PREFERENCE_FIELDS}
18
+ }
19
+ }
20
+ }
21
+ `;
22
+ export const DELIVERY_PREFERENCE_SCHEMAS_QUERY = /* GraphQL */ `
23
+ query DeliveryPreferenceSchemas {
24
+ deliveryPreferenceSchemas {
25
+ handlerCode
26
+ fields {
27
+ name
28
+ type
29
+ uiComponent
30
+ label
31
+ options {
32
+ value
33
+ label
34
+ }
35
+ defaultValue
36
+ }
37
+ }
38
+ }
39
+ `;
40
+ export const CREATE_DELIVERY_PREFERENCE_MUTATION = /* GraphQL */ `
41
+ mutation CreateCustomerDeliveryPreference($input: CreateCustomerDeliveryPreferenceInput!) {
42
+ createCustomerDeliveryPreference(input: $input) {
43
+ ${DELIVERY_PREFERENCE_FIELDS}
44
+ }
45
+ }
46
+ `;
47
+ export const UPDATE_DELIVERY_PREFERENCE_MUTATION = /* GraphQL */ `
48
+ mutation UpdateCustomerDeliveryPreference($input: UpdateCustomerDeliveryPreferenceInput!) {
49
+ updateCustomerDeliveryPreference(input: $input) {
50
+ ${DELIVERY_PREFERENCE_FIELDS}
51
+ }
52
+ }
53
+ `;
54
+ export const DELETE_DELIVERY_PREFERENCE_MUTATION = /* GraphQL */ `
55
+ mutation DeleteCustomerDeliveryPreference($id: ID!) {
56
+ deleteCustomerDeliveryPreference(id: $id) {
57
+ result
58
+ message
59
+ }
60
+ }
61
+ `;
62
+ export function createCustomerDeliveryPreferencesModule(transport) {
63
+ return {
64
+ async list(customerId, options) {
65
+ const { value: customer, mark } = await customerDataField(transport, DELIVERY_PREFERENCES_QUERY, 'customer',
66
+ // `undefined`, never an explicit null: without a handler the argument stays off the wire.
67
+ { id: customerId, fulfillmentHandlerCode: options?.handlerCode }, options);
68
+ return (customer?.deliveryPreferences ?? []).map(mark);
69
+ },
70
+ schemas(options) {
71
+ return fieldOf(transport, DELIVERY_PREFERENCE_SCHEMAS_QUERY, 'deliveryPreferenceSchemas', {}, options);
72
+ },
73
+ async create(input, options) {
74
+ const { value, mark } = await customerDataField(transport, CREATE_DELIVERY_PREFERENCE_MUTATION, 'createCustomerDeliveryPreference', {
75
+ input: {
76
+ customerId: input.customerId,
77
+ fulfillmentHandlerCode: input.fulfillmentHandlerCode,
78
+ name: input.name,
79
+ values: input.values,
80
+ isDefault: input.isDefault,
81
+ },
82
+ }, options);
83
+ return mark(value);
84
+ },
85
+ async update(id, input, options) {
86
+ const { value, mark } = await customerDataField(transport, UPDATE_DELIVERY_PREFERENCE_MUTATION, 'updateCustomerDeliveryPreference',
87
+ // `undefined`, never an explicit null: what is left out stays off the wire, and kept.
88
+ { input: { id, name: input.name, values: input.values, isDefault: input.isDefault } }, options);
89
+ return mark(value);
90
+ },
91
+ async delete(id, options) {
92
+ assertDeleted('CUSTOMER_DELIVERY_PREFERENCE_NOT_DELETED', [
93
+ await fieldOf(transport, DELETE_DELIVERY_PREFERENCE_MUTATION, 'deleteCustomerDeliveryPreference', { id }, options),
94
+ ]);
95
+ },
96
+ };
97
+ }
@@ -0,0 +1,207 @@
1
+ /**
2
+ * Customer groups: the store's list, one group with a page of its members, create, change and
3
+ * delete, and which groups the store treats as trade (headless spec §9.2 `customers` "groups";
4
+ * W10-34). The membership doors (`add`, `remove`) and the customer master's external keys are
5
+ * wired beside these in `index.ts`.
6
+ *
7
+ * A group is the store's own row, or its organization's (`catalogueOwnership`): one row for every
8
+ * store that holds it. Its members are always the store's own customers.
9
+ */
10
+ import { type Page, type Transport } from '@sixtyninecommerce/core';
11
+ import { type CatalogueOwnership } from '../catalog/types.js';
12
+ import type { Call, ListOptions } from '../types.js';
13
+ import { type CustomerAddressSummary } from './wire.js';
14
+ /** One of the store's customer groups, as `get`, `create` and `update` answer it. */
15
+ export interface CustomerGroup {
16
+ id: string;
17
+ /** ISO-8601 UTC. */
18
+ createdAt: string;
19
+ /** ISO-8601 UTC. */
20
+ updatedAt: string;
21
+ name: string;
22
+ /** This store's key for the group in the customer master, or `null` when no master keys it. */
23
+ externalKey: string | null;
24
+ /** Members see incoming (planned) stock on the storefront, where the store shows stock at all. */
25
+ canViewIncomingStock: boolean;
26
+ /** Members may order more than is in stock, within the store's or the variant's backorder policy. */
27
+ canBackorder: boolean;
28
+ /**
29
+ * The store's own group, or its organization's (shared while the organization shares
30
+ * `customer_groups`); see {@link CatalogueOwnership}. `editableHere` false: rename it, change
31
+ * its flags or delete it in the workspace.
32
+ */
33
+ catalogueOwnership: CatalogueOwnership;
34
+ }
35
+ /** One member of a group: a customer of the store. */
36
+ export interface CustomerGroupMember {
37
+ id: string;
38
+ /** When the CUSTOMER was created, ISO-8601 UTC. The engine does not record when they joined. */
39
+ createdAt: string;
40
+ firstName: string;
41
+ lastName: string;
42
+ emailAddress: string;
43
+ /** The company flags of every address in the customer's book. */
44
+ addresses: CustomerAddressSummary[];
45
+ /**
46
+ * The customer's company: the default billing address's, else the default shipping address's,
47
+ * else the first address that names one; `null` when none does.
48
+ */
49
+ company: string | null;
50
+ /**
51
+ * Set when the caller's customer-data level blanked fields of this member (an app installation
52
+ * below `customerData: full`): `""` and `null` then mean "not granted".
53
+ */
54
+ redacted?: true;
55
+ }
56
+ /** A group read with `members`. */
57
+ export interface CustomerGroupWithMembers extends CustomerGroup {
58
+ /**
59
+ * One page of the group's members in this store (`items`), and how many members the group has
60
+ * here in all, or how many of `filter.ids` are members (`total`). The members come in one fixed
61
+ * order (by id, not by name), so the pages of a walk never repeat or skip one.
62
+ */
63
+ members: {
64
+ items: CustomerGroupMember[];
65
+ total: number;
66
+ };
67
+ }
68
+ /** The engine's `adminListQueryLimit`: a larger page is refused. */
69
+ export declare const MAX_CUSTOMER_GROUP_LIST_TAKE = 1000;
70
+ /** Which page of a group's members `get` reads. */
71
+ export interface CustomerGroupMembersOptions {
72
+ /** Members to skip, 0 when omitted. */
73
+ skip?: number;
74
+ /** Members per page, 1 to {@link MAX_CUSTOMER_GROUP_LIST_TAKE}; 25 when omitted. */
75
+ take?: number;
76
+ /**
77
+ * `ids`: only these customers. The answer then holds those of them that ARE members, which is
78
+ * how to ask "which of these are already in the group". An empty list matches nothing.
79
+ */
80
+ filter?: {
81
+ ids?: readonly string[];
82
+ };
83
+ }
84
+ /** One group as `list` answers it. */
85
+ export interface CustomerGroupListItem {
86
+ id: string;
87
+ /** ISO-8601 UTC. */
88
+ createdAt: string;
89
+ /** ISO-8601 UTC. */
90
+ updatedAt: string;
91
+ name: string;
92
+ canViewIncomingStock: boolean;
93
+ canBackorder: boolean;
94
+ /**
95
+ * How many of the store's customers are in the group, present only when the call asked for
96
+ * `include: ['memberCount']`.
97
+ */
98
+ memberCount?: number;
99
+ }
100
+ /** What a group list can be narrowed by. Several keys combine with AND. */
101
+ export interface CustomerGroupListFilter {
102
+ /** These groups only. An empty list matches nothing. */
103
+ ids?: readonly string[];
104
+ /**
105
+ * The name contains this, ignoring case. The engine trims it, and reads `%` and `_` in it as
106
+ * wildcards.
107
+ */
108
+ name?: string;
109
+ }
110
+ export declare const CUSTOMER_GROUP_LIST_SORT_FIELDS: readonly ["name", "createdAt", "updatedAt"];
111
+ export type CustomerGroupListSortField = (typeof CUSTOMER_GROUP_LIST_SORT_FIELDS)[number];
112
+ export interface CustomerGroupListSort {
113
+ field: CustomerGroupListSortField;
114
+ direction: 'ASC' | 'DESC';
115
+ }
116
+ /** The blocks a list row can add: `memberCount`, how many of the store's customers are in it. */
117
+ export declare const CUSTOMER_GROUP_LIST_INCLUDES: readonly ["memberCount"];
118
+ export type CustomerGroupListInclude = (typeof CUSTOMER_GROUP_LIST_INCLUDES)[number];
119
+ export interface CustomerGroupListOptions extends ListOptions {
120
+ filter?: CustomerGroupListFilter;
121
+ /** By name, A to Z, when omitted. */
122
+ sort?: CustomerGroupListSort;
123
+ /** Rows to skip, 0 when omitted. Not together with `after`. */
124
+ skip?: number;
125
+ /** Rows per page, 1 to {@link MAX_CUSTOMER_GROUP_LIST_TAKE}; `limit`, else 25, when omitted. */
126
+ take?: number;
127
+ include?: readonly CustomerGroupListInclude[];
128
+ }
129
+ export interface CreateCustomerGroupInput {
130
+ name: string;
131
+ /** Customers of the store to put in the group at once. One the store does not hold is left out. */
132
+ customerIds?: readonly string[];
133
+ /** See {@link CustomerGroup.canViewIncomingStock}. Off when omitted. */
134
+ canViewIncomingStock?: boolean;
135
+ /** See {@link CustomerGroup.canBackorder}. Off when omitted. */
136
+ canBackorder?: boolean;
137
+ }
138
+ /** A PATCH: an absent field keeps what the group has. */
139
+ export interface UpdateCustomerGroupInput {
140
+ name?: string;
141
+ canViewIncomingStock?: boolean;
142
+ canBackorder?: boolean;
143
+ }
144
+ /** A group by id and name. */
145
+ export interface CustomerGroupRef {
146
+ id: string;
147
+ name: string;
148
+ }
149
+ export interface CustomerB2BGroupsModule {
150
+ /**
151
+ * The groups this store treats as trade (B2B). A customer in one of them is a trade customer
152
+ * of the store: the storefront answers `isB2B` for them, and quote requests and B2B tax display
153
+ * follow it. Needs `ReadCustomerGroup`. `[]` when the store marked none.
154
+ *
155
+ * @effect read
156
+ */
157
+ list(options?: Call): Promise<CustomerGroupRef[]>;
158
+ /**
159
+ * REPLACE the store's trade groups with exactly these, and answer the new set. Read
160
+ * {@link list} first and send what should stay: a group left out stops being a trade group,
161
+ * and its members stop being trade customers. `[]` clears the set. Needs `UpdateCustomerGroup`.
162
+ *
163
+ * A group the store does not hold is a `NotFoundError` (`ENTITY_NOT_FOUND`), and nothing is
164
+ * changed.
165
+ *
166
+ * @effect write
167
+ */
168
+ set(groupIds: readonly string[], options?: Call): Promise<CustomerGroupRef[]>;
169
+ }
170
+ /** A customer group as `get`, `create` and `update` read it. */
171
+ export declare const CUSTOMER_GROUP_FIELDS = "\n id\n createdAt\n updatedAt\n name\n externalKey\n \n customFields {\n canViewIncomingStock\n canBackorder\n }\n\n \n catalogueOwnership {\n state\n organizationName\n editableHere\n }\n\n";
172
+ export declare const CUSTOMER_GROUP_QUERY = "\n query CustomerGroup($id: ID!) {\n customerGroup(id: $id) { \n id\n createdAt\n updatedAt\n name\n externalKey\n \n customFields {\n canViewIncomingStock\n canBackorder\n }\n\n \n catalogueOwnership {\n state\n organizationName\n editableHere\n }\n\n }\n }\n";
173
+ export declare const CUSTOMER_GROUP_MEMBERS_QUERY = "\n query CustomerGroupWithMembers($id: ID!, $members: CustomerListOptions) {\n customerGroup(id: $id) {\n \n id\n createdAt\n updatedAt\n name\n externalKey\n \n customFields {\n canViewIncomingStock\n canBackorder\n }\n\n \n catalogueOwnership {\n state\n organizationName\n editableHere\n }\n\n\n customers(options: $members) {\n items {\n id\n createdAt\n firstName\n lastName\n emailAddress\n addresses {\n company\n defaultBillingAddress\n defaultShippingAddress\n }\n }\n totalItems\n }\n }\n }\n";
174
+ /**
175
+ * The list document for a set of blocks. The member count is the `totalItems` of a one-row page
176
+ * of the group's customers: a `take` of 0 would make that page every member.
177
+ *
178
+ * The count is still not a one-row read on the engine. channel-customer's `customerGroups` and
179
+ * `customerGroup` resolvers carry core's bare `@Relations(CustomerGroup)`, so for a document that
180
+ * selects `customers` under a group they also hand the service the `customers` relation, and it
181
+ * loads every member of each answered group before the field resolver counts or pages them (read
182
+ * in the plugin and core 3.6.3, not measured; the dashboard's documents before this module had
183
+ * the same shape). So `memberCount` is an `include`, asked for only where a count is shown. The
184
+ * fix is `omit: ['customers']` on those two resolvers, which this package cannot make.
185
+ */
186
+ export declare function customerGroupListQuery(include: readonly CustomerGroupListInclude[]): string;
187
+ export declare const CREATE_CUSTOMER_GROUP_MUTATION = "\n mutation CreateCustomerGroup($input: CreateCustomerGroupInput!) {\n createCustomerGroup(input: $input) { \n id\n createdAt\n updatedAt\n name\n externalKey\n \n customFields {\n canViewIncomingStock\n canBackorder\n }\n\n \n catalogueOwnership {\n state\n organizationName\n editableHere\n }\n\n }\n }\n";
188
+ export declare const UPDATE_CUSTOMER_GROUP_MUTATION = "\n mutation UpdateCustomerGroup($input: UpdateCustomerGroupInput!) {\n updateCustomerGroup(input: $input) { \n id\n createdAt\n updatedAt\n name\n externalKey\n \n customFields {\n canViewIncomingStock\n canBackorder\n }\n\n \n catalogueOwnership {\n state\n organizationName\n editableHere\n }\n\n }\n }\n";
189
+ export declare const DELETE_CUSTOMER_GROUP_MUTATION = "\n mutation DeleteCustomerGroup($id: ID!) {\n deleteCustomerGroup(id: $id) { \n result\n message\n }\n }\n";
190
+ export declare const DELETE_CUSTOMER_GROUPS_MUTATION = "\n mutation DeleteCustomerGroups($ids: [ID!]!) {\n deleteCustomerGroups(ids: $ids) { \n result\n message\n }\n }\n";
191
+ export declare const B2B_CUSTOMER_GROUPS_QUERY = "\n query CustomerGroupRefs {\n b2bCustomerGroups {\n id\n name\n }\n }\n";
192
+ export declare const SET_B2B_CUSTOMER_GROUPS_MUTATION = "\n mutation SetCustomerGroupRefs($groupIds: [ID!]!) {\n setB2BCustomerGroups(groupIds: $groupIds) {\n id\n name\n }\n }\n";
193
+ /** `customers.groups.get`. */
194
+ export declare function readCustomerGroup(transport: Transport, id: string, options?: Call & {
195
+ members?: CustomerGroupMembersOptions;
196
+ }): Promise<CustomerGroup | CustomerGroupWithMembers | null>;
197
+ /** `customers.groups.list`. A refused option rejects the promise, like an engine refusal. */
198
+ export declare function listCustomerGroups(transport: Transport, options?: CustomerGroupListOptions): Promise<Page<CustomerGroupListItem>>;
199
+ /** `customers.groups.create`. */
200
+ export declare function createCustomerGroup(transport: Transport, input: CreateCustomerGroupInput, options?: Call): Promise<CustomerGroup>;
201
+ /** `customers.groups.update`. */
202
+ export declare function updateCustomerGroup(transport: Transport, id: string, input: UpdateCustomerGroupInput, options?: Call): Promise<CustomerGroup>;
203
+ /** `customers.groups.delete`. */
204
+ export declare function deleteCustomerGroup(transport: Transport, id: string, options?: Call): Promise<void>;
205
+ /** `customers.groups.deleteMany`. */
206
+ export declare function deleteCustomerGroups(transport: Transport, ids: readonly string[], options?: Call): Promise<void>;
207
+ export declare function createCustomerB2BGroupsModule(transport: Transport): CustomerB2BGroupsModule;