@endora-commerce/contracts 0.100.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 (327) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +34 -0
  3. package/dist/actor.d.ts +79 -0
  4. package/dist/actor.d.ts.map +1 -0
  5. package/dist/actor.js +41 -0
  6. package/dist/actor.js.map +1 -0
  7. package/dist/addresses.d.ts +134 -0
  8. package/dist/addresses.d.ts.map +1 -0
  9. package/dist/addresses.js +16 -0
  10. package/dist/addresses.js.map +1 -0
  11. package/dist/admin-actions.d.ts +367 -0
  12. package/dist/admin-actions.d.ts.map +1 -0
  13. package/dist/admin-actions.js +287 -0
  14. package/dist/admin-actions.js.map +1 -0
  15. package/dist/admin-contributions.d.ts +518 -0
  16. package/dist/admin-contributions.d.ts.map +1 -0
  17. package/dist/admin-contributions.js +495 -0
  18. package/dist/admin-contributions.js.map +1 -0
  19. package/dist/admin-i18n.d.ts +135 -0
  20. package/dist/admin-i18n.d.ts.map +1 -0
  21. package/dist/admin-i18n.js +72 -0
  22. package/dist/admin-i18n.js.map +1 -0
  23. package/dist/admin-notifications.d.ts +55 -0
  24. package/dist/admin-notifications.d.ts.map +1 -0
  25. package/dist/admin-notifications.js +16 -0
  26. package/dist/admin-notifications.js.map +1 -0
  27. package/dist/admin-roles.d.ts +125 -0
  28. package/dist/admin-roles.d.ts.map +1 -0
  29. package/dist/admin-roles.js +2 -0
  30. package/dist/admin-roles.js.map +1 -0
  31. package/dist/admin-users.d.ts +178 -0
  32. package/dist/admin-users.d.ts.map +1 -0
  33. package/dist/admin-users.js +14 -0
  34. package/dist/admin-users.js.map +1 -0
  35. package/dist/admin.d.ts +243 -0
  36. package/dist/admin.d.ts.map +1 -0
  37. package/dist/admin.js +246 -0
  38. package/dist/admin.js.map +1 -0
  39. package/dist/analytics.d.ts +123 -0
  40. package/dist/analytics.d.ts.map +1 -0
  41. package/dist/analytics.js +68 -0
  42. package/dist/analytics.js.map +1 -0
  43. package/dist/api-keys.d.ts +97 -0
  44. package/dist/api-keys.d.ts.map +1 -0
  45. package/dist/api-keys.js +64 -0
  46. package/dist/api-keys.js.map +1 -0
  47. package/dist/assets-library.d.ts +684 -0
  48. package/dist/assets-library.d.ts.map +1 -0
  49. package/dist/assets-library.js +181 -0
  50. package/dist/assets-library.js.map +1 -0
  51. package/dist/audit-logs.d.ts +141 -0
  52. package/dist/audit-logs.d.ts.map +1 -0
  53. package/dist/audit-logs.js +31 -0
  54. package/dist/audit-logs.js.map +1 -0
  55. package/dist/auth.d.ts +174 -0
  56. package/dist/auth.d.ts.map +1 -0
  57. package/dist/auth.js +27 -0
  58. package/dist/auth.js.map +1 -0
  59. package/dist/blog.d.ts +669 -0
  60. package/dist/blog.d.ts.map +1 -0
  61. package/dist/blog.js +360 -0
  62. package/dist/blog.js.map +1 -0
  63. package/dist/capabilities.d.ts +40 -0
  64. package/dist/capabilities.d.ts.map +1 -0
  65. package/dist/capabilities.js +38 -0
  66. package/dist/capabilities.js.map +1 -0
  67. package/dist/carts.d.ts +1367 -0
  68. package/dist/carts.d.ts.map +1 -0
  69. package/dist/carts.js +405 -0
  70. package/dist/carts.js.map +1 -0
  71. package/dist/catalog.d.ts +2855 -0
  72. package/dist/catalog.d.ts.map +1 -0
  73. package/dist/catalog.js +1543 -0
  74. package/dist/catalog.js.map +1 -0
  75. package/dist/cms.d.ts +872 -0
  76. package/dist/cms.d.ts.map +1 -0
  77. package/dist/cms.js +468 -0
  78. package/dist/cms.js.map +1 -0
  79. package/dist/common.d.ts +82 -0
  80. package/dist/common.d.ts.map +1 -0
  81. package/dist/common.js +72 -0
  82. package/dist/common.js.map +1 -0
  83. package/dist/comparisons.d.ts +487 -0
  84. package/dist/comparisons.d.ts.map +1 -0
  85. package/dist/comparisons.js +221 -0
  86. package/dist/comparisons.js.map +1 -0
  87. package/dist/credentials.d.ts +292 -0
  88. package/dist/credentials.d.ts.map +1 -0
  89. package/dist/credentials.js +142 -0
  90. package/dist/credentials.js.map +1 -0
  91. package/dist/credit-limits.d.ts +111 -0
  92. package/dist/credit-limits.d.ts.map +1 -0
  93. package/dist/credit-limits.js +35 -0
  94. package/dist/credit-limits.js.map +1 -0
  95. package/dist/currencies.d.ts +127 -0
  96. package/dist/currencies.d.ts.map +1 -0
  97. package/dist/currencies.js +20 -0
  98. package/dist/currencies.js.map +1 -0
  99. package/dist/custom-fields.d.ts +345 -0
  100. package/dist/custom-fields.d.ts.map +1 -0
  101. package/dist/custom-fields.js +185 -0
  102. package/dist/custom-fields.js.map +1 -0
  103. package/dist/customer-accounts.d.ts +690 -0
  104. package/dist/customer-accounts.d.ts.map +1 -0
  105. package/dist/customer-accounts.js +41 -0
  106. package/dist/customer-accounts.js.map +1 -0
  107. package/dist/customers.d.ts +305 -0
  108. package/dist/customers.d.ts.map +1 -0
  109. package/dist/customers.js +158 -0
  110. package/dist/customers.js.map +1 -0
  111. package/dist/dictionary.d.ts +580 -0
  112. package/dist/dictionary.d.ts.map +1 -0
  113. package/dist/dictionary.js +297 -0
  114. package/dist/dictionary.js.map +1 -0
  115. package/dist/email-address.d.ts +62 -0
  116. package/dist/email-address.d.ts.map +1 -0
  117. package/dist/email-address.js +64 -0
  118. package/dist/email-address.js.map +1 -0
  119. package/dist/email.d.ts +175 -0
  120. package/dist/email.d.ts.map +1 -0
  121. package/dist/email.js +45 -0
  122. package/dist/email.js.map +1 -0
  123. package/dist/envelopes.d.ts +15 -0
  124. package/dist/envelopes.d.ts.map +1 -0
  125. package/dist/envelopes.js +16 -0
  126. package/dist/envelopes.js.map +1 -0
  127. package/dist/environment-inputs.d.ts +306 -0
  128. package/dist/environment-inputs.d.ts.map +1 -0
  129. package/dist/environment-inputs.js +277 -0
  130. package/dist/environment-inputs.js.map +1 -0
  131. package/dist/erp-connector.d.ts +52 -0
  132. package/dist/erp-connector.d.ts.map +1 -0
  133. package/dist/erp-connector.js +34 -0
  134. package/dist/erp-connector.js.map +1 -0
  135. package/dist/errors.d.ts +455 -0
  136. package/dist/errors.d.ts.map +1 -0
  137. package/dist/errors.js +532 -0
  138. package/dist/errors.js.map +1 -0
  139. package/dist/google-analytics.d.ts +181 -0
  140. package/dist/google-analytics.d.ts.map +1 -0
  141. package/dist/google-analytics.js +176 -0
  142. package/dist/google-analytics.js.map +1 -0
  143. package/dist/google-tag-manager.d.ts +111 -0
  144. package/dist/google-tag-manager.d.ts.map +1 -0
  145. package/dist/google-tag-manager.js +129 -0
  146. package/dist/google-tag-manager.js.map +1 -0
  147. package/dist/i18n.d.ts +69 -0
  148. package/dist/i18n.d.ts.map +1 -0
  149. package/dist/i18n.js +59 -0
  150. package/dist/i18n.js.map +1 -0
  151. package/dist/import-export.d.ts +63 -0
  152. package/dist/import-export.d.ts.map +1 -0
  153. package/dist/import-export.js +37 -0
  154. package/dist/import-export.js.map +1 -0
  155. package/dist/index.d.ts +82 -0
  156. package/dist/index.d.ts.map +1 -0
  157. package/dist/index.js +126 -0
  158. package/dist/index.js.map +1 -0
  159. package/dist/inventory.d.ts +673 -0
  160. package/dist/inventory.d.ts.map +1 -0
  161. package/dist/inventory.js +412 -0
  162. package/dist/inventory.js.map +1 -0
  163. package/dist/invoice-ledger.d.ts +366 -0
  164. package/dist/invoice-ledger.d.ts.map +1 -0
  165. package/dist/invoice-ledger.js +114 -0
  166. package/dist/invoice-ledger.js.map +1 -0
  167. package/dist/invoices.d.ts +845 -0
  168. package/dist/invoices.d.ts.map +1 -0
  169. package/dist/invoices.js +314 -0
  170. package/dist/invoices.js.map +1 -0
  171. package/dist/kernel.d.ts +49 -0
  172. package/dist/kernel.d.ts.map +1 -0
  173. package/dist/kernel.js +19 -0
  174. package/dist/kernel.js.map +1 -0
  175. package/dist/languages.d.ts +122 -0
  176. package/dist/languages.d.ts.map +1 -0
  177. package/dist/languages.js +24 -0
  178. package/dist/languages.js.map +1 -0
  179. package/dist/linkedin-ads.d.ts +167 -0
  180. package/dist/linkedin-ads.d.ts.map +1 -0
  181. package/dist/linkedin-ads.js +156 -0
  182. package/dist/linkedin-ads.js.map +1 -0
  183. package/dist/megamenu.d.ts +556 -0
  184. package/dist/megamenu.d.ts.map +1 -0
  185. package/dist/megamenu.js +186 -0
  186. package/dist/megamenu.js.map +1 -0
  187. package/dist/meta-ads.d.ts +126 -0
  188. package/dist/meta-ads.d.ts.map +1 -0
  189. package/dist/meta-ads.js +112 -0
  190. package/dist/meta-ads.js.map +1 -0
  191. package/dist/mfa.d.ts +274 -0
  192. package/dist/mfa.d.ts.map +1 -0
  193. package/dist/mfa.js +187 -0
  194. package/dist/mfa.js.map +1 -0
  195. package/dist/modules.d.ts +1706 -0
  196. package/dist/modules.d.ts.map +1 -0
  197. package/dist/modules.js +1390 -0
  198. package/dist/modules.js.map +1 -0
  199. package/dist/newsletter.d.ts +611 -0
  200. package/dist/newsletter.d.ts.map +1 -0
  201. package/dist/newsletter.js +345 -0
  202. package/dist/newsletter.js.map +1 -0
  203. package/dist/orders.d.ts +1175 -0
  204. package/dist/orders.d.ts.map +1 -0
  205. package/dist/orders.js +630 -0
  206. package/dist/orders.js.map +1 -0
  207. package/dist/organizations.d.ts +938 -0
  208. package/dist/organizations.d.ts.map +1 -0
  209. package/dist/organizations.js +418 -0
  210. package/dist/organizations.js.map +1 -0
  211. package/dist/pagination.d.ts +21 -0
  212. package/dist/pagination.d.ts.map +1 -0
  213. package/dist/pagination.js +22 -0
  214. package/dist/pagination.js.map +1 -0
  215. package/dist/payment-methods.d.ts +472 -0
  216. package/dist/payment-methods.d.ts.map +1 -0
  217. package/dist/payment-methods.js +175 -0
  218. package/dist/payment-methods.js.map +1 -0
  219. package/dist/payment-return-url.d.ts +53 -0
  220. package/dist/payment-return-url.d.ts.map +1 -0
  221. package/dist/payment-return-url.js +35 -0
  222. package/dist/payment-return-url.js.map +1 -0
  223. package/dist/payments.d.ts +386 -0
  224. package/dist/payments.d.ts.map +1 -0
  225. package/dist/payments.js +84 -0
  226. package/dist/payments.js.map +1 -0
  227. package/dist/pim-connector.d.ts +60 -0
  228. package/dist/pim-connector.d.ts.map +1 -0
  229. package/dist/pim-connector.js +43 -0
  230. package/dist/pim-connector.js.map +1 -0
  231. package/dist/pim-field-path.d.ts +6 -0
  232. package/dist/pim-field-path.d.ts.map +1 -0
  233. package/dist/pim-field-path.js +101 -0
  234. package/dist/pim-field-path.js.map +1 -0
  235. package/dist/platform-language.d.ts +20 -0
  236. package/dist/platform-language.d.ts.map +1 -0
  237. package/dist/platform-language.js +22 -0
  238. package/dist/platform-language.js.map +1 -0
  239. package/dist/price-lists.d.ts +685 -0
  240. package/dist/price-lists.d.ts.map +1 -0
  241. package/dist/price-lists.js +330 -0
  242. package/dist/price-lists.js.map +1 -0
  243. package/dist/product-feeds.d.ts +2837 -0
  244. package/dist/product-feeds.d.ts.map +1 -0
  245. package/dist/product-feeds.js +1504 -0
  246. package/dist/product-feeds.js.map +1 -0
  247. package/dist/product-scope-overrides.d.ts +134 -0
  248. package/dist/product-scope-overrides.d.ts.map +1 -0
  249. package/dist/product-scope-overrides.js +82 -0
  250. package/dist/product-scope-overrides.js.map +1 -0
  251. package/dist/product-value-resolver.d.ts +88 -0
  252. package/dist/product-value-resolver.d.ts.map +1 -0
  253. package/dist/product-value-resolver.js +128 -0
  254. package/dist/product-value-resolver.js.map +1 -0
  255. package/dist/promotions.d.ts +678 -0
  256. package/dist/promotions.d.ts.map +1 -0
  257. package/dist/promotions.js +479 -0
  258. package/dist/promotions.js.map +1 -0
  259. package/dist/prompt-actions.d.ts +582 -0
  260. package/dist/prompt-actions.d.ts.map +1 -0
  261. package/dist/prompt-actions.js +221 -0
  262. package/dist/prompt-actions.js.map +1 -0
  263. package/dist/pwa.d.ts +293 -0
  264. package/dist/pwa.d.ts.map +1 -0
  265. package/dist/pwa.js +204 -0
  266. package/dist/pwa.js.map +1 -0
  267. package/dist/quick-order.d.ts +340 -0
  268. package/dist/quick-order.d.ts.map +1 -0
  269. package/dist/quick-order.js +177 -0
  270. package/dist/quick-order.js.map +1 -0
  271. package/dist/quote-requests.d.ts +538 -0
  272. package/dist/quote-requests.d.ts.map +1 -0
  273. package/dist/quote-requests.js +308 -0
  274. package/dist/quote-requests.js.map +1 -0
  275. package/dist/returns.d.ts +774 -0
  276. package/dist/returns.d.ts.map +1 -0
  277. package/dist/returns.js +389 -0
  278. package/dist/returns.js.map +1 -0
  279. package/dist/sales-channels.d.ts +392 -0
  280. package/dist/sales-channels.d.ts.map +1 -0
  281. package/dist/sales-channels.js +285 -0
  282. package/dist/sales-channels.js.map +1 -0
  283. package/dist/scope-notice.d.ts +60 -0
  284. package/dist/scope-notice.d.ts.map +1 -0
  285. package/dist/scope-notice.js +56 -0
  286. package/dist/scope-notice.js.map +1 -0
  287. package/dist/search.d.ts +321 -0
  288. package/dist/search.d.ts.map +1 -0
  289. package/dist/search.js +160 -0
  290. package/dist/search.js.map +1 -0
  291. package/dist/seo.d.ts +113 -0
  292. package/dist/seo.d.ts.map +1 -0
  293. package/dist/seo.js +63 -0
  294. package/dist/seo.js.map +1 -0
  295. package/dist/settings.d.ts +453 -0
  296. package/dist/settings.d.ts.map +1 -0
  297. package/dist/settings.js +337 -0
  298. package/dist/settings.js.map +1 -0
  299. package/dist/shipments.d.ts +140 -0
  300. package/dist/shipments.d.ts.map +1 -0
  301. package/dist/shipments.js +14 -0
  302. package/dist/shipments.js.map +1 -0
  303. package/dist/shipping-methods.d.ts +350 -0
  304. package/dist/shipping-methods.d.ts.map +1 -0
  305. package/dist/shipping-methods.js +99 -0
  306. package/dist/shipping-methods.js.map +1 -0
  307. package/dist/shopping-lists.d.ts +122 -0
  308. package/dist/shopping-lists.d.ts.map +1 -0
  309. package/dist/shopping-lists.js +92 -0
  310. package/dist/shopping-lists.js.map +1 -0
  311. package/dist/taxes.d.ts +106 -0
  312. package/dist/taxes.d.ts.map +1 -0
  313. package/dist/taxes.js +80 -0
  314. package/dist/taxes.js.map +1 -0
  315. package/dist/text-normalization.d.ts +199 -0
  316. package/dist/text-normalization.d.ts.map +1 -0
  317. package/dist/text-normalization.js +205 -0
  318. package/dist/text-normalization.js.map +1 -0
  319. package/dist/transactional-emails.d.ts +459 -0
  320. package/dist/transactional-emails.d.ts.map +1 -0
  321. package/dist/transactional-emails.js +212 -0
  322. package/dist/transactional-emails.js.map +1 -0
  323. package/dist/webhooks.d.ts +69 -0
  324. package/dist/webhooks.d.ts.map +1 -0
  325. package/dist/webhooks.js +53 -0
  326. package/dist/webhooks.js.map +1 -0
  327. package/package.json +46 -0
@@ -0,0 +1,518 @@
1
+ /**
2
+ * What a module package's `./admin` layer declares (feature 091, Principle II).
3
+ *
4
+ * These are **declarations, not components**, and the distinction is the whole
5
+ * design. Three consumers need a contribution to be enumerable without being
6
+ * executed: the registry generator, which writes an artefact naming every
7
+ * contribution and must not import a React tree to do it; the bundler, which
8
+ * has to see a `() => import('…')` factory as a split point and cannot follow a
9
+ * computed specifier; and the gating predicate, which decides visibility from
10
+ * `{ module, requiredPermission }` before anything renders. So a contribution
11
+ * is a plain object whose only function-valued field is a dynamic-import
12
+ * factory — the shape a `manifest.ts`'s `actions` array already has one layer
13
+ * up, and the reason the ⌘K palette is the one admin extension mechanism that
14
+ * needs no host edit today.
15
+ *
16
+ * They live here rather than in a types-only package because they cross a
17
+ * package boundary and Principle II puts a shape that does in
18
+ * `packages/contracts/`, beside `ModuleManifest` and `ModuleActionSchema`.
19
+ *
20
+ * **The component factory is a TypeScript type and not a Zod schema, and the
21
+ * split is deliberate.** Everything a generator, a check or a server can
22
+ * validate is a schema below; the factory is `unknown` to Zod because a
23
+ * function value carries nothing to validate beyond its arity, and pretending
24
+ * otherwise would put a `z.function()` in a package `admin` and `storefront`
25
+ * both compile while telling a reader it was checked. The data half is
26
+ * `AdminRouteDeclarationSchema`; the whole declaration, factory included, is
27
+ * the `AdminRouteDeclaration` interface.
28
+ */
29
+ import { z } from 'zod';
30
+ import type { InvoiceKind } from './invoices.js';
31
+ import type { ShipmentStatus } from './shipping-methods.js';
32
+ /**
33
+ * A permission code, or a set of codes any one of which suffices.
34
+ *
35
+ * The array form exists because the routes have it: `requireAdminAny([…])` is
36
+ * satisfied by either member, and naming only the first in the UI hides the
37
+ * screen from a role that holds the second. It is the shape
38
+ * `admin/src/lib/surface-visibility.ts` already defines, published here so a
39
+ * module package declares it without reaching into the admin for the type.
40
+ */
41
+ export declare const PermissionRequirementSchema: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>;
42
+ export type PermissionRequirement = z.infer<typeof PermissionRequirementSchema>;
43
+ /**
44
+ * The sidebar sections a module may join — closed, and derived from the ones
45
+ * `admin/src/components/AppShell.tsx` already declares.
46
+ *
47
+ * A module may not invent a section, for D-23's reason: an invented section is
48
+ * a heading nobody else can join, so two modules that belong together end up in
49
+ * two headings of one each and the operator reads it as two features.
50
+ */
51
+ export declare const AdminNavSectionNameSchema: z.ZodEnum<{
52
+ system: "system";
53
+ catalog: "catalog";
54
+ customers: "customers";
55
+ content: "content";
56
+ newsletter: "newsletter";
57
+ main: "main";
58
+ sales: "sales";
59
+ inventory: "inventory";
60
+ pricing: "pricing";
61
+ channels: "channels";
62
+ messaging: "messaging";
63
+ analyticsAds: "analyticsAds";
64
+ }>;
65
+ export type AdminNavSectionName = z.infer<typeof AdminNavSectionNameSchema>;
66
+ /**
67
+ * The places in a screen one module owns where another module's contribution
68
+ * may appear — closed, hierarchical, dot-separated, and the platform's.
69
+ *
70
+ * **A member exists when a host renders it, and not before.** The four members
71
+ * this enum opened with were derived from the places module additions had
72
+ * reached into by editing another module's file, which was the right derivation
73
+ * and produced a set nothing rendered and nothing contributed to — four names
74
+ * that had been silent since the enum landed. `check:admin-zones` reports every
75
+ * one of those as `unrendered-zone`, and it carries **no ledger**, deliberately:
76
+ * the remedy is always available in the same merge request, and it is either to
77
+ * render the place or to remove the name. So the set grows with the batch that
78
+ * mounts it, one member per place a host screen actually renders.
79
+ *
80
+ * `payment_method.row.actions` is the member that shows why. Measured, nothing
81
+ * under the payment-methods admin surface names a gateway id at all — the five
82
+ * gateways were given their own routes and settings screens — so there was
83
+ * nothing waiting to contribute and inventing a host for it would have been
84
+ * inventing a host.
85
+ *
86
+ * **Closed and unparameterised, and that is load-bearing.** A parameter in the
87
+ * name (`product.editor.field:<fieldPath>`, or a `z.templateLiteral`) was
88
+ * rejected: the refusal below compares declared names to rendered ones, and a
89
+ * name computed from a field path compares to nothing. The parameter is a prop
90
+ * — see {@link AdminZonePropsMap} — and one member may be mounted many times on
91
+ * one screen, each mount carrying its own.
92
+ *
93
+ * Both directions refuse: a contribution to a zone nobody declares is a build
94
+ * refusal, and a zone the platform declares that no host screen renders is one
95
+ * too. A contribution that silently renders nowhere is worse than one that
96
+ * fails.
97
+ */
98
+ export declare const AdminZoneNameSchema: z.ZodEnum<{
99
+ "product.editor.details.before": "product.editor.details.before";
100
+ "product.editor.pricing.before": "product.editor.pricing.before";
101
+ "product.editor.field.after": "product.editor.field.after";
102
+ "delivery_method.list.integrations": "delivery_method.list.integrations";
103
+ "payment_method.list.integrations": "payment_method.list.integrations";
104
+ "invoice.detail.after": "invoice.detail.after";
105
+ "category.editor.after": "category.editor.after";
106
+ "product.editor.pricing.after": "product.editor.pricing.after";
107
+ "product.editor.channels": "product.editor.channels";
108
+ "sales_channel.editor.after": "sales_channel.editor.after";
109
+ "organization.detail.after": "organization.detail.after";
110
+ "customer.detail.after": "customer.detail.after";
111
+ "order.detail.payment": "order.detail.payment";
112
+ "order.shipment.row.actions": "order.shipment.row.actions";
113
+ "order.shipments.tab.actions": "order.shipments.tab.actions";
114
+ "order.entry.tabs": "order.entry.tabs";
115
+ "ledger.section.tabs": "ledger.section.tabs";
116
+ }>;
117
+ export type AdminZoneName = z.infer<typeof AdminZoneNameSchema>;
118
+ /** A zone mounted once per product editor. */
119
+ export interface ProductEditorZoneProps {
120
+ readonly productId: string;
121
+ }
122
+ /**
123
+ * A zone mounted once on the delivery-methods list, carrying nothing.
124
+ *
125
+ * Empty **by measurement, not by omission**: the host renders one card per
126
+ * shipping integration and has no identifier to name one by — a contributor is
127
+ * the integration. Declared as a named interface rather than as `object`
128
+ * inline so the map's entry reads like every other one and so a prop this zone
129
+ * later needs has one place to arrive.
130
+ */
131
+ export interface DeliveryMethodIntegrationsZoneProps {
132
+ }
133
+ /** The payment-method integrations mount carries no host-owned data. */
134
+ export interface PaymentMethodIntegrationsZoneProps {
135
+ }
136
+ /**
137
+ * A zone mounted once at the end of the invoice detail's totals column.
138
+ *
139
+ * Three props and not just the id, read off the one contribution's declared
140
+ * signature rather than from the rule of thumb that a detail member carries
141
+ * its entity's id: `kind` decides whether a KSeF panel applies at all (a
142
+ * proforma is never filed) and `ksefReferenceNumber` is the invoice's own
143
+ * stored reference, which the contributor shows until its first submission
144
+ * carries one. Both are already loaded by the host — the mount costs no
145
+ * request — and neither is `ksef`'s to fetch.
146
+ */
147
+ export interface InvoiceDetailZoneProps {
148
+ readonly invoiceId: string;
149
+ /** `proforma` | `invoice` | `correction` — {@link InvoiceKind}. */
150
+ readonly kind: InvoiceKind;
151
+ readonly ksefReferenceNumber: string | null;
152
+ }
153
+ /**
154
+ * A zone mounted once at the end of the category editor's form.
155
+ *
156
+ * The entity's own id and nothing else, which is what the one contribution
157
+ * reads: `DisplayModeOverrideRow` takes a scope and a target id, and the scope
158
+ * is the contributor's constant — `catalog`'s editor is always editing a
159
+ * category.
160
+ */
161
+ export interface CategoryEditorZoneProps {
162
+ readonly categoryId: string;
163
+ }
164
+ /**
165
+ * A zone mounted once below the sales-channel editor's identity form.
166
+ *
167
+ * The channel's **id**, not its code: every route the one contribution calls is
168
+ * `/api/v1/admin/sales-channels/:channelId/warehouses`, and `channelId` there
169
+ * is the id. The host has both loaded, so the mount costs no request.
170
+ */
171
+ export interface SalesChannelEditorZoneProps {
172
+ readonly channelId: string;
173
+ }
174
+ /**
175
+ * A zone mounted once at the end of an organization's detail screen.
176
+ *
177
+ * The organization's own id and nothing else, which is the union of what the
178
+ * four contributions read: three of them take an entity id and their own
179
+ * constant scope, and the fourth — `carts`' approval policy — reads its own
180
+ * initial state from a route of its own rather than taking the boolean the
181
+ * host used to pass (§10.5). A prop only one contributor wants is a prop the
182
+ * other three would have to be given a reason for (Z3).
183
+ */
184
+ export interface OrganizationDetailZoneProps {
185
+ readonly organizationId: string;
186
+ }
187
+ /**
188
+ * A zone mounted once at the end of a customer's detail screen.
189
+ *
190
+ * The customer's own id, on the same terms as its organization twin. Not
191
+ * aliased to {@link OrganizationDetailZoneProps} and not merged with it: the
192
+ * prop is named for the entity the mount carries, and the two members are two
193
+ * places (Z13).
194
+ */
195
+ export interface CustomerDetailZoneProps {
196
+ readonly customerId: string;
197
+ }
198
+ /**
199
+ * A zone mounted once as the body of the order detail's Payment tab.
200
+ *
201
+ * The order's own id and nothing else, which is what the one contribution
202
+ * reads: the panel fetches the order's payments and its invoices from two
203
+ * routes that take an order id, and it owns both requests.
204
+ */
205
+ export interface OrderDetailZoneProps {
206
+ readonly orderId: string;
207
+ }
208
+ /**
209
+ * A zone mounted once per shipment attempt on the order detail's Delivery tab.
210
+ *
211
+ * Five props, and the last two are here **because a contribution matches on
212
+ * them**. `match` compares by string value against the mount's props and a key
213
+ * the props do not carry never agrees, so a `providerCode` or a `status` left
214
+ * out of this interface would hide its contribution rather than widen it — the
215
+ * one way this conversion can regress in silence, and a `tsc` error at the
216
+ * mount rather than at the declaration.
217
+ *
218
+ * `providerCode` is nullable because an attempt the carrier never answered has
219
+ * no provider envelope, and a `null` there is the fail-closed direction: no
220
+ * carrier's contribution agrees with it.
221
+ */
222
+ export interface OrderShipmentRowZoneProps {
223
+ readonly orderId: string;
224
+ readonly shipmentId: string;
225
+ /** The order's delivery-method code, e.g. `dhl_parcel_courier`. */
226
+ readonly deliveryMethodCode: string;
227
+ /**
228
+ * Which carrier opened *this attempt*, from the adapter's own envelope —
229
+ * `inpost`, `dhl_parcel`, or `null` when nothing was recorded.
230
+ *
231
+ * A provider code and not a module id: they coincide for both carriers today
232
+ * and the string is data the adapter deposited, which is why
233
+ * `check:admin-zones` reads it as neither.
234
+ */
235
+ readonly providerCode: string | null;
236
+ /** {@link ShipmentStatus} — the attempt's own state, matched on. */
237
+ readonly status: ShipmentStatus;
238
+ }
239
+ /**
240
+ * A zone mounted once in the footer action bar of the order detail's Delivery
241
+ * tab.
242
+ *
243
+ * The **latest** attempt and not the list: every action a carrier offers here
244
+ * acts on the most recent attempt, which is the only one an operator can still
245
+ * do anything about, and the host already computes it. Both latest fields are
246
+ * nullable for an order with no attempt yet — a contributor that needs one
247
+ * renders nothing, which it decides for itself rather than through `match`,
248
+ * because `match` compares strings and has no negation.
249
+ */
250
+ export interface OrderShipmentsActionsZoneProps {
251
+ readonly orderId: string;
252
+ /** The order's delivery-method code, which is what `dhl_parcel` matches on. */
253
+ readonly deliveryMethodCode: string;
254
+ readonly latestShipmentId: string | null;
255
+ /** {@link ShipmentStatus} of the latest attempt, or `null` when there is none. */
256
+ readonly latestStatus: ShipmentStatus | null;
257
+ }
258
+ /**
259
+ * A zone mounted on the order-entry tab strip, carrying nothing.
260
+ *
261
+ * Empty **by measurement, not by omission**, on
262
+ * {@link DeliveryMethodIntegrationsZoneProps}' terms: the contributions *are*
263
+ * the tabs, and the host has no identifier to name one by — it is a switch
264
+ * between two entry modes, not a view of an entity. Declared as a named
265
+ * interface rather than inline so the map's entry reads like every other one.
266
+ */
267
+ export interface OrderEntryTabsZoneProps {
268
+ }
269
+ /**
270
+ * A zone mounted on the invoice-ledger section strip, carrying nothing.
271
+ *
272
+ * Empty on {@link OrderEntryTabsZoneProps}' terms: the contributions are the
273
+ * tabs, and the host has no entity id to pass.
274
+ */
275
+ export interface LedgerSectionTabsZoneProps {
276
+ }
277
+ /** A zone mounted beside one field of the product editor. */
278
+ export interface ProductEditorFieldZoneProps {
279
+ readonly productId: string;
280
+ /**
281
+ * `name`, `description`, `categories`, `gallery`, `attachments`, or
282
+ * `attributeValues.<key>`.
283
+ */
284
+ readonly fieldPath: string;
285
+ /**
286
+ * The locales this field is edited in, or `null` for a field that is not
287
+ * language-scoped.
288
+ *
289
+ * The host passes the set; a contributor that wants one control per locale
290
+ * fans out over it. That is what collapses the two `LOCALES.map(...)` loops
291
+ * the product editor used to write around a foreign module's component into
292
+ * one mount, and it is why the parameter is a prop rather than a parameter in
293
+ * the zone name — see the rejection recorded on
294
+ * {@link AdminZoneNameSchema}'s contract.
295
+ */
296
+ readonly languageCodes: readonly string[] | null;
297
+ }
298
+ /**
299
+ * The props each zone carries, and the contract both ends are checked against.
300
+ *
301
+ * Declared as a `Record<AdminZoneName, object>`, so a member added to
302
+ * {@link AdminZoneNameSchema} without a props type is a compile error in this
303
+ * package — the half of the two-way refusal that needs no check.
304
+ *
305
+ * **`tsc` at both ends, and nothing at runtime.** The host writes
306
+ * `<AdminZone name="product.editor.field.after" props={{ ... }} />`, generic on
307
+ * the literal name; the contributor writes `zoneComponent('...', () => import(...))`,
308
+ * whose type constrains its module's default export to
309
+ * `ComponentType<AdminZoneProps<...>>`. The registry in the middle stays
310
+ * `unknown` deliberately: both ends are checked against this one map, so the
311
+ * map is the contract and the registry is a courier. A Zod schema parsed by the
312
+ * renderer was rejected — the props flow host to contributor, so a wrong prop
313
+ * is the first-party host's defect and `tsc` has already refused it, while the
314
+ * failure a parse cannot catch (a contributor assuming a prop the zone does not
315
+ * carry) is on the other side of the parse.
316
+ */
317
+ export interface AdminZonePropsMap extends Record<AdminZoneName, object> {
318
+ 'product.editor.details.before': ProductEditorZoneProps;
319
+ 'product.editor.pricing.before': ProductEditorZoneProps;
320
+ 'product.editor.field.after': ProductEditorFieldZoneProps;
321
+ 'delivery_method.list.integrations': DeliveryMethodIntegrationsZoneProps;
322
+ 'payment_method.list.integrations': PaymentMethodIntegrationsZoneProps;
323
+ 'invoice.detail.after': InvoiceDetailZoneProps;
324
+ 'category.editor.after': CategoryEditorZoneProps;
325
+ 'product.editor.pricing.after': ProductEditorZoneProps;
326
+ 'product.editor.channels': ProductEditorZoneProps;
327
+ 'sales_channel.editor.after': SalesChannelEditorZoneProps;
328
+ 'organization.detail.after': OrganizationDetailZoneProps;
329
+ 'customer.detail.after': CustomerDetailZoneProps;
330
+ 'order.detail.payment': OrderDetailZoneProps;
331
+ 'order.shipment.row.actions': OrderShipmentRowZoneProps;
332
+ 'order.shipments.tab.actions': OrderShipmentsActionsZoneProps;
333
+ 'order.entry.tabs': OrderEntryTabsZoneProps;
334
+ 'ledger.section.tabs': LedgerSectionTabsZoneProps;
335
+ }
336
+ /** The props of one zone, by name. */
337
+ export type AdminZoneProps<Z extends AdminZoneName> = AdminZonePropsMap[Z];
338
+ /**
339
+ * The data half of a route declaration — everything a generator or a check can
340
+ * read without evaluating the module's UI code.
341
+ *
342
+ * **Owner attribution is not a field.** The module id is the registry entry's
343
+ * key, so a declaration cannot claim to belong to a module other than the one
344
+ * that shipped it — the same reason a packaged migration is attributed to
345
+ * `endora.id` and never to a path segment (D-142). An attribution a module can
346
+ * write is an attribution a module can get wrong.
347
+ */
348
+ export declare const AdminRouteDeclarationSchema: z.ZodObject<{
349
+ path: z.ZodString;
350
+ requiredPermission: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
351
+ index: z.ZodOptional<z.ZodBoolean>;
352
+ }, z.core.$strip>;
353
+ /**
354
+ * The data half of a sidebar entry.
355
+ *
356
+ * Deliberately the same five fields `NAV` already carries in
357
+ * `admin/src/components/AppShell.tsx`, so the sidebar renders
358
+ * `[...hostNav, ...registryNav]` through the one existing predicate with no
359
+ * second gate. Issue #230's finding — three surfaces answering the visibility
360
+ * question three ways — does not get a fourth chance.
361
+ */
362
+ export declare const AdminNavDeclarationSchema: z.ZodObject<{
363
+ to: z.ZodString;
364
+ labelKey: z.ZodString;
365
+ icon: z.ZodEnum<{
366
+ Plus: "Plus";
367
+ Sparkles: "Sparkles";
368
+ Settings: "Settings";
369
+ Search: "Search";
370
+ Boxes: "Boxes";
371
+ Layers: "Layers";
372
+ Menu: "Menu";
373
+ PlusCircle: "PlusCircle";
374
+ PlusSquare: "PlusSquare";
375
+ FilePlus: "FilePlus";
376
+ FolderPlus: "FolderPlus";
377
+ Upload: "Upload";
378
+ FileUp: "FileUp";
379
+ CloudUpload: "CloudUpload";
380
+ Download: "Download";
381
+ FileDown: "FileDown";
382
+ FileText: "FileText";
383
+ BookOpen: "BookOpen";
384
+ Rss: "Rss";
385
+ Package: "Package";
386
+ Tag: "Tag";
387
+ ShoppingCart: "ShoppingCart";
388
+ Receipt: "Receipt";
389
+ CreditCard: "CreditCard";
390
+ Users: "Users";
391
+ UserPlus: "UserPlus";
392
+ Inbox: "Inbox";
393
+ ListChecks: "ListChecks";
394
+ ClipboardList: "ClipboardList";
395
+ Image: "Image";
396
+ Video: "Video";
397
+ LayoutDashboard: "LayoutDashboard";
398
+ PanelLeft: "PanelLeft";
399
+ KeyRound: "KeyRound";
400
+ ShieldCheck: "ShieldCheck";
401
+ Edit: "Edit";
402
+ Archive: "Archive";
403
+ Box: "Box";
404
+ Truck: "Truck";
405
+ CircleDollarSign: "CircleDollarSign";
406
+ Activity: "Activity";
407
+ LineChart: "LineChart";
408
+ Smartphone: "Smartphone";
409
+ Webhook: "Webhook";
410
+ Scale: "Scale";
411
+ PlugZap: "PlugZap";
412
+ PercentDiamond: "PercentDiamond";
413
+ Newspaper: "Newspaper";
414
+ Languages: "Languages";
415
+ Eraser: "Eraser";
416
+ Warehouse: "Warehouse";
417
+ TrendingDown: "TrendingDown";
418
+ Bell: "Bell";
419
+ PackageOpen: "PackageOpen";
420
+ Building2: "Building2";
421
+ Store: "Store";
422
+ ClipboardCheck: "ClipboardCheck";
423
+ }>;
424
+ section: z.ZodEnum<{
425
+ system: "system";
426
+ catalog: "catalog";
427
+ customers: "customers";
428
+ content: "content";
429
+ newsletter: "newsletter";
430
+ main: "main";
431
+ sales: "sales";
432
+ inventory: "inventory";
433
+ pricing: "pricing";
434
+ channels: "channels";
435
+ messaging: "messaging";
436
+ analyticsAds: "analyticsAds";
437
+ }>;
438
+ weight: z.ZodNumber;
439
+ requiredPermission: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
440
+ }, z.core.$strip>;
441
+ /**
442
+ * The data half of a contribution into another module's screen.
443
+ *
444
+ * A contribution declares **one** zone, so a component appearing in two zones
445
+ * is two contributions — and only the one that needs narrowing carries a
446
+ * {@link AdminZoneContributionSchema.shape.match}.
447
+ */
448
+ export declare const AdminZoneContributionSchema: z.ZodObject<{
449
+ zone: z.ZodEnum<{
450
+ "product.editor.details.before": "product.editor.details.before";
451
+ "product.editor.pricing.before": "product.editor.pricing.before";
452
+ "product.editor.field.after": "product.editor.field.after";
453
+ "delivery_method.list.integrations": "delivery_method.list.integrations";
454
+ "payment_method.list.integrations": "payment_method.list.integrations";
455
+ "invoice.detail.after": "invoice.detail.after";
456
+ "category.editor.after": "category.editor.after";
457
+ "product.editor.pricing.after": "product.editor.pricing.after";
458
+ "product.editor.channels": "product.editor.channels";
459
+ "sales_channel.editor.after": "sales_channel.editor.after";
460
+ "organization.detail.after": "organization.detail.after";
461
+ "customer.detail.after": "customer.detail.after";
462
+ "order.detail.payment": "order.detail.payment";
463
+ "order.shipment.row.actions": "order.shipment.row.actions";
464
+ "order.shipments.tab.actions": "order.shipments.tab.actions";
465
+ "order.entry.tabs": "order.entry.tabs";
466
+ "ledger.section.tabs": "ledger.section.tabs";
467
+ }>;
468
+ weight: z.ZodNumber;
469
+ requiredPermission: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
470
+ match: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodReadonly<z.ZodArray<z.ZodString>>]>>>;
471
+ }, z.core.$strip>;
472
+ /**
473
+ * A lazily-loaded React component.
474
+ *
475
+ * Typed structurally rather than against `react`, because
476
+ * `@endora-commerce/contracts` is compiled by the backend and must acquire no
477
+ * React dependency: a module's admin layer resolves the application's own copy
478
+ * of React through `@endora-commerce/admin-kit`'s peer dependencies, and the
479
+ * declaration only has to say "a default export a bundler can split on".
480
+ */
481
+ export type AdminComponentFactory = () => Promise<{
482
+ readonly default: unknown;
483
+ }>;
484
+ /** A route a module adds to the admin's route table. */
485
+ export interface AdminRouteDeclaration extends z.infer<typeof AdminRouteDeclarationSchema> {
486
+ /**
487
+ * A dynamic-import factory, and the **only** function-valued field.
488
+ *
489
+ * A statically imported component defeats FR-013 — an operator downloads the
490
+ * page code of modules they cannot reach — and makes the registry evaluate
491
+ * module UI code in order to be enumerated.
492
+ */
493
+ readonly component: AdminComponentFactory;
494
+ }
495
+ /** A sidebar entry a module adds. */
496
+ export type AdminNavDeclaration = z.infer<typeof AdminNavDeclarationSchema>;
497
+ /** A contribution a module makes into a zone another module's screen renders. */
498
+ export interface AdminZoneContribution extends z.infer<typeof AdminZoneContributionSchema> {
499
+ readonly component: AdminComponentFactory;
500
+ }
501
+ /**
502
+ * What a module package's `src/admin/index.ts` exports — and the only thing it
503
+ * exports.
504
+ *
505
+ * All three arrays are optional, so a module shipping only a nav entry pointing
506
+ * at a host route is legal and so is one shipping only a zone contribution.
507
+ * The entry may not export a component, a hook or a service:
508
+ * `check:module-boundary`'s D-171 rule designates a subpath as contract surface
509
+ * when it emits **no runtime binding**, and `./admin` deliberately does not
510
+ * qualify — it exports an object — so a consumer reaching into another module's
511
+ * `./admin` is a counted boundary reach, which is the correct answer.
512
+ */
513
+ export interface AdminContributions {
514
+ readonly routes?: readonly AdminRouteDeclaration[];
515
+ readonly nav?: readonly AdminNavDeclaration[];
516
+ readonly zones?: readonly AdminZoneContribution[];
517
+ }
518
+ //# sourceMappingURL=admin-contributions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-contributions.d.ts","sourceRoot":"","sources":["../src/admin-contributions.ts"],"names":[],"mappings":"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"}