pi-kiosk-shared 2.1.87 → 2.1.89

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/analyticsCatalogVersion.d.ts +2 -1
  2. package/dist/analyticsCatalogVersion.d.ts.map +1 -1
  3. package/dist/analyticsCatalogVersion.js +1 -0
  4. package/dist/analyticsCatalogVersion.js.map +1 -1
  5. package/dist/analyticsIngestOutboxPolicy.d.ts +19 -0
  6. package/dist/analyticsIngestOutboxPolicy.d.ts.map +1 -0
  7. package/dist/analyticsIngestOutboxPolicy.js +78 -0
  8. package/dist/analyticsIngestOutboxPolicy.js.map +1 -0
  9. package/dist/auditEventCodes.d.ts +1 -1
  10. package/dist/auditEventCodes.d.ts.map +1 -1
  11. package/dist/auditEventCodes.js +1 -0
  12. package/dist/auditEventCodes.js.map +1 -1
  13. package/dist/auditEventDescriptions.d.ts.map +1 -1
  14. package/dist/auditEventDescriptions.js +4 -0
  15. package/dist/auditEventDescriptions.js.map +1 -1
  16. package/dist/auditEventLabels.d.ts.map +1 -1
  17. package/dist/auditEventLabels.js +4 -0
  18. package/dist/auditEventLabels.js.map +1 -1
  19. package/dist/index.d.ts +1 -0
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +1 -0
  22. package/dist/index.js.map +1 -1
  23. package/dist/sales-point/salesPointPublicConfig.d.ts +20 -0
  24. package/dist/sales-point/salesPointPublicConfig.d.ts.map +1 -1
  25. package/dist/sales-point/salesPointPublicConfig.js +18 -0
  26. package/dist/sales-point/salesPointPublicConfig.js.map +1 -1
  27. package/dist/tenant-entitlements/applySimpleStateDependencyImplications.d.ts +7 -0
  28. package/dist/tenant-entitlements/applySimpleStateDependencyImplications.d.ts.map +1 -0
  29. package/dist/tenant-entitlements/applySimpleStateDependencyImplications.js +38 -0
  30. package/dist/tenant-entitlements/applySimpleStateDependencyImplications.js.map +1 -0
  31. package/dist/tenant-entitlements/catalog.d.ts +11 -0
  32. package/dist/tenant-entitlements/catalog.d.ts.map +1 -0
  33. package/dist/tenant-entitlements/catalog.js +347 -0
  34. package/dist/tenant-entitlements/catalog.js.map +1 -0
  35. package/dist/tenant-entitlements/evaluateNavEntitlement.d.ts +14 -0
  36. package/dist/tenant-entitlements/evaluateNavEntitlement.d.ts.map +1 -0
  37. package/dist/tenant-entitlements/evaluateNavEntitlement.js +19 -0
  38. package/dist/tenant-entitlements/evaluateNavEntitlement.js.map +1 -0
  39. package/dist/tenant-entitlements/evaluatePosture.d.ts +11 -0
  40. package/dist/tenant-entitlements/evaluatePosture.d.ts.map +1 -0
  41. package/dist/tenant-entitlements/evaluatePosture.js +21 -0
  42. package/dist/tenant-entitlements/evaluatePosture.js.map +1 -0
  43. package/dist/tenant-entitlements/index.d.ts +10 -0
  44. package/dist/tenant-entitlements/index.d.ts.map +1 -0
  45. package/dist/tenant-entitlements/index.js +7 -0
  46. package/dist/tenant-entitlements/index.js.map +1 -0
  47. package/dist/tenant-entitlements/types.d.ts +63 -0
  48. package/dist/tenant-entitlements/types.d.ts.map +1 -0
  49. package/dist/tenant-entitlements/types.js +114 -0
  50. package/dist/tenant-entitlements/types.js.map +1 -0
  51. package/package.json +11 -1
@@ -0,0 +1,347 @@
1
+ import { ENTITLEMENT_BLOCK_KEYS, TENANT_ENTITLEMENT_BLOCK_COUNT, TENANT_ENTITLEMENT_CATALOG_VERSION, } from './types.js';
2
+ const ALWAYS_ON_IMMUTABLE = {
3
+ runtimeMode: 'ALWAYS_ON',
4
+ visibilityMode: 'VISIBLE',
5
+ mutationMode: 'READ_ONLY',
6
+ };
7
+ const PAYMENT_RECONCILIATION_DEFAULT_STRATEGY = {
8
+ allowedModes: ['MODE_1', 'MODE_2'],
9
+ };
10
+ export const TENANT_ENTITLEMENT_BLOCK_CATALOG = [
11
+ {
12
+ blockKey: 'platform_core',
13
+ blockClass: 'CORE_IMMUTABLE',
14
+ parentKeys: [],
15
+ immutableDefaults: {
16
+ runtimeMode: 'ALWAYS_ON',
17
+ visibilityMode: 'HIDDEN',
18
+ mutationMode: 'READ_ONLY',
19
+ },
20
+ notes: 'Internal resolver health',
21
+ },
22
+ {
23
+ blockKey: 'dev_entitlement_policy_editor',
24
+ blockClass: 'CORE_IMMUTABLE',
25
+ parentKeys: [],
26
+ immutableDefaults: ALWAYS_ON_IMMUTABLE,
27
+ notes: 'DEV catalog GET/PUT; cross_tenant_dev exempt',
28
+ },
29
+ {
30
+ blockKey: 'transactions',
31
+ blockClass: 'CORE_REQUIRED',
32
+ parentKeys: [],
33
+ adminNavSectionId: 'transactions',
34
+ notes: 'transactionRoutes',
35
+ },
36
+ {
37
+ blockKey: 'sales_point_management',
38
+ blockClass: 'CORE_REQUIRED',
39
+ parentKeys: [],
40
+ adminNavSectionId: 'kiosks',
41
+ notes: 'DEV may HIDDEN+READ_ONLY (D-ENT-26)',
42
+ },
43
+ {
44
+ blockKey: 'catalog_administration',
45
+ blockClass: 'CONDITIONAL',
46
+ parentKeys: ['product_vending'],
47
+ notes: 'DONATION_ONLY → deny reads; SIMPLE Off → allow GET; HARD_OFF BLOCK_ALL → deny reads',
48
+ },
49
+ {
50
+ blockKey: 'audit_event_collection',
51
+ blockClass: 'CORE_IMMUTABLE',
52
+ parentKeys: [],
53
+ immutableDefaults: {
54
+ runtimeMode: 'ALWAYS_ON',
55
+ visibilityMode: 'HIDDEN',
56
+ mutationMode: 'BLOCK_ALL',
57
+ },
58
+ notes: 'Workers always collect; mutation BLOCK_ALL',
59
+ },
60
+ {
61
+ blockKey: 'audit_logs_admin_ui',
62
+ blockClass: 'CORE_IMMUTABLE',
63
+ parentKeys: [],
64
+ adminNavSectionId: 'audit-logs',
65
+ capabilityHint: 'system:logs:read',
66
+ immutableDefaults: ALWAYS_ON_IMMUTABLE,
67
+ notes: 'DEV visibility toggle',
68
+ },
69
+ {
70
+ blockKey: 'gdpr_consent_admin_ui',
71
+ blockClass: 'CORE_IMMUTABLE',
72
+ parentKeys: [],
73
+ adminNavSectionId: 'consent-management',
74
+ capabilityHint: 'system:pii:read',
75
+ immutableDefaults: ALWAYS_ON_IMMUTABLE,
76
+ notes: 'Not compliance_fiscal_modules',
77
+ },
78
+ {
79
+ blockKey: 'incident_centre_ui',
80
+ blockClass: 'CORE_IMMUTABLE',
81
+ parentKeys: [],
82
+ routeSuffix: 'success-incident-centre',
83
+ immutableDefaults: ALWAYS_ON_IMMUTABLE,
84
+ notes: 'DEV visibility toggle',
85
+ },
86
+ {
87
+ blockKey: 'payment_processing_runtime',
88
+ blockClass: 'CORE_IMMUTABLE',
89
+ parentKeys: [],
90
+ immutableDefaults: {
91
+ runtimeMode: 'ALWAYS_ON',
92
+ visibilityMode: 'HIDDEN',
93
+ mutationMode: 'ALLOW_WRITES',
94
+ },
95
+ notes: 'Webhooks; never 403 in-flight',
96
+ },
97
+ {
98
+ blockKey: 'outbox_runtime',
99
+ blockClass: 'CORE_IMMUTABLE',
100
+ parentKeys: [],
101
+ immutableDefaults: {
102
+ runtimeMode: 'ALWAYS_ON',
103
+ visibilityMode: 'HIDDEN',
104
+ mutationMode: 'ALLOW_WRITES',
105
+ },
106
+ notes: 'Workers always run',
107
+ },
108
+ {
109
+ blockKey: 'product_vending',
110
+ blockClass: 'CONDITIONAL',
111
+ parentKeys: ['sales_point_management'],
112
+ adminNavSectionId: 'products',
113
+ capabilityHint: 'ops:products:read',
114
+ },
115
+ {
116
+ blockKey: 'donation',
117
+ blockClass: 'CONDITIONAL',
118
+ parentKeys: ['sales_point_management'],
119
+ adminNavSectionId: 'donation-projects',
120
+ capabilityHint: 'ops:donation-projects:read',
121
+ },
122
+ {
123
+ blockKey: 'inventory_management',
124
+ blockClass: 'CONDITIONAL',
125
+ parentKeys: ['product_vending', 'sales_point_management'],
126
+ parentOperator: 'AND',
127
+ adminNavSectionId: 'inventory',
128
+ capabilityHint: 'ops:inventory:read',
129
+ },
130
+ {
131
+ blockKey: 'loyalty_program',
132
+ blockClass: 'CONDITIONAL',
133
+ parentKeys: ['product_vending'],
134
+ capabilityHint: 'loyalty:coupons:read',
135
+ notes: 'Parent product_vending only; RETAIN ALL data on disable (§6.5)',
136
+ },
137
+ {
138
+ blockKey: 'payment_rails_strategy',
139
+ blockClass: 'STRATEGY',
140
+ parentKeys: ['sales_point_management'],
141
+ notes: 'Bank/rails; which channels exist',
142
+ },
143
+ {
144
+ blockKey: 'payment_reconciliation',
145
+ blockClass: 'STRATEGY',
146
+ parentKeys: ['payment_rails_strategy'],
147
+ defaultStrategy: PAYMENT_RECONCILIATION_DEFAULT_STRATEGY,
148
+ notes: 'allowedModes MODE_1/MODE_2 (§7.5)',
149
+ },
150
+ {
151
+ blockKey: 'payments_hub_ui',
152
+ blockClass: 'CONDITIONAL',
153
+ parentKeys: ['payment_reconciliation'],
154
+ adminNavSectionId: 'payments-hub',
155
+ capabilityHint: 'tenant.reconciliation.read',
156
+ notes: 'paymentsHub section — UI shell',
157
+ },
158
+ {
159
+ blockKey: 'stripe_integration_strategy',
160
+ blockClass: 'STRATEGY',
161
+ parentKeys: [],
162
+ notes: 'Mirrors Tenant.stripeIntegrationMode',
163
+ },
164
+ {
165
+ blockKey: 'fulfillment_queue',
166
+ blockClass: 'CONDITIONAL',
167
+ parentKeys: ['order_pickup_infrastructure'],
168
+ adminNavSectionId: 'fulfillment',
169
+ capabilityHint: 'tenant.orders.fulfill.*',
170
+ notes: 'fulfillment + orders sections',
171
+ },
172
+ {
173
+ blockKey: 'order_pickup_infrastructure',
174
+ blockClass: 'CONDITIONAL',
175
+ parentKeys: ['surface_kiosk', 'surface_customer'],
176
+ parentOperator: 'OR',
177
+ notes: 'OR-parent §7.3; syncs Tenant PWA/pickup knobs',
178
+ },
179
+ {
180
+ blockKey: 'pickup_points',
181
+ blockClass: 'CONDITIONAL',
182
+ parentKeys: ['order_pickup_infrastructure'],
183
+ adminNavSectionId: 'pickup-points',
184
+ capabilityHint: 'ops:sales-points:read',
185
+ notes: 'Default ENABLED when parent on; auto-mirror (D-ENT-04)',
186
+ },
187
+ {
188
+ blockKey: 'immediate_self_pickup',
189
+ blockClass: 'CONDITIONAL',
190
+ parentKeys: ['order_pickup_infrastructure'],
191
+ notes: 'Mirror mode; syncs Tenant.immediatePickupGraceMinutes',
192
+ },
193
+ {
194
+ blockKey: 'customer_self_collect',
195
+ blockClass: 'CONDITIONAL',
196
+ parentKeys: ['immediate_self_pickup'],
197
+ notes: 'Customer collect flows',
198
+ },
199
+ {
200
+ blockKey: 'scheduled_pickup',
201
+ blockClass: 'CONDITIONAL',
202
+ parentKeys: ['order_pickup_infrastructure'],
203
+ notes: 'Syncs Tenant.scheduledPickup* fields',
204
+ },
205
+ {
206
+ blockKey: 'staff_pickup_scan',
207
+ blockClass: 'CONDITIONAL',
208
+ parentKeys: ['pickup_points'],
209
+ parentOperator: 'OR',
210
+ notes: 'Pickup staff app; pickup_points OR mirror mode (resolved ENT-PR-03)',
211
+ },
212
+ {
213
+ blockKey: 'surface_kiosk',
214
+ blockClass: 'CONDITIONAL',
215
+ parentKeys: [],
216
+ notes: 'Kiosk bootstrap',
217
+ },
218
+ {
219
+ blockKey: 'surface_customer',
220
+ blockClass: 'CONDITIONAL',
221
+ parentKeys: [],
222
+ notes: 'Customer PWA',
223
+ },
224
+ {
225
+ blockKey: 'realtime_device_transport',
226
+ blockClass: 'CONDITIONAL',
227
+ parentKeys: ['surface_kiosk'],
228
+ notes: 'WS/SSE',
229
+ },
230
+ {
231
+ blockKey: 'customer_auth_pwa',
232
+ blockClass: 'CONDITIONAL',
233
+ parentKeys: ['surface_customer'],
234
+ notes: 'Account routes',
235
+ },
236
+ {
237
+ blockKey: 'analytics',
238
+ blockClass: 'CONDITIONAL',
239
+ parentKeys: [],
240
+ notes: 'Parent umbrella',
241
+ },
242
+ {
243
+ blockKey: 'analytics_summary',
244
+ blockClass: 'CONDITIONAL',
245
+ parentKeys: ['analytics'],
246
+ adminNavSectionId: 'analytics',
247
+ capabilityHint: 'analytics:summary:read',
248
+ notes: 'Summary tab',
249
+ },
250
+ {
251
+ blockKey: 'analytics_detailed',
252
+ blockClass: 'CONDITIONAL',
253
+ parentKeys: ['analytics'],
254
+ notes: 'Advanced explore',
255
+ },
256
+ {
257
+ blockKey: 'analytics_pii',
258
+ blockClass: 'CONDITIONAL',
259
+ parentKeys: ['analytics_detailed'],
260
+ capabilityHint: 'analytics:pii:read',
261
+ notes: 'Legacy customer-explore redirect',
262
+ },
263
+ {
264
+ blockKey: 'customer_behavior_funnels',
265
+ blockClass: 'CONDITIONAL',
266
+ parentKeys: ['analytics_detailed'],
267
+ notes: 'Ingest tier ANALYTICS per CONSENT_TIER_MATRIX',
268
+ },
269
+ {
270
+ blockKey: 'analytics_benchmark',
271
+ blockClass: 'CONDITIONAL',
272
+ parentKeys: ['analytics'],
273
+ notes: 'Absorbs analytics_benchmark_enabled flag',
274
+ },
275
+ {
276
+ blockKey: 'tax_management',
277
+ blockClass: 'CONDITIONAL',
278
+ parentKeys: [],
279
+ adminNavSectionId: 'tax-management',
280
+ capabilityHint: 'config:pricing:read',
281
+ },
282
+ {
283
+ blockKey: 'compliance_fiscal_modules',
284
+ blockClass: 'CONDITIONAL',
285
+ parentKeys: ['tax_management'],
286
+ optionalParentKeys: ['tax_management'],
287
+ notes: 'EET only — EnableComplianceModuleForTenantUseCase; tax optional',
288
+ },
289
+ {
290
+ blockKey: 'comms_governance',
291
+ blockClass: 'CONDITIONAL',
292
+ parentKeys: [],
293
+ notes: 'DEV comms-governance tab',
294
+ },
295
+ {
296
+ blockKey: 'permission_management_rbac',
297
+ blockClass: 'CONDITIONAL',
298
+ parentKeys: [],
299
+ adminNavSectionId: 'capabilities',
300
+ capabilityHint: 'users:admins:create',
301
+ },
302
+ {
303
+ blockKey: 'tenant_ops_settings',
304
+ blockClass: 'CONDITIONAL',
305
+ parentKeys: [],
306
+ adminNavSectionId: 'account-settings',
307
+ notes: 'account-settings + ops-settings tab',
308
+ },
309
+ {
310
+ blockKey: 'bank_account_administration',
311
+ blockClass: 'CONDITIONAL',
312
+ parentKeys: ['payment_rails_strategy'],
313
+ notes: 'Bank CRUD APIs',
314
+ },
315
+ {
316
+ blockKey: 'receipt_delivery',
317
+ blockClass: 'CONDITIONAL',
318
+ parentKeys: ['comms_governance'],
319
+ notes: 'Receipt provider overrides',
320
+ },
321
+ {
322
+ blockKey: 'bank_inbox_claims_api',
323
+ blockClass: 'CONDITIONAL',
324
+ parentKeys: ['payment_reconciliation'],
325
+ notes: 'bank-inbox + payment-claims APIs (distinct from payments_hub_ui)',
326
+ },
327
+ ];
328
+ const CATALOG_BY_KEY = new Map(TENANT_ENTITLEMENT_BLOCK_CATALOG.map((entry) => [entry.blockKey, entry]));
329
+ if (TENANT_ENTITLEMENT_BLOCK_CATALOG.length !== TENANT_ENTITLEMENT_BLOCK_COUNT) {
330
+ throw new Error(`Tenant entitlement catalog must contain ${TENANT_ENTITLEMENT_BLOCK_COUNT} blocks; got ${TENANT_ENTITLEMENT_BLOCK_CATALOG.length}`);
331
+ }
332
+ if (TENANT_ENTITLEMENT_BLOCK_CATALOG.length !== ENTITLEMENT_BLOCK_KEYS.length ||
333
+ !ENTITLEMENT_BLOCK_KEYS.every((key, index) => TENANT_ENTITLEMENT_BLOCK_CATALOG[index]?.blockKey === key)) {
334
+ throw new Error('Tenant entitlement catalog blockKey order must match ENTITLEMENT_BLOCK_KEYS');
335
+ }
336
+ export function isEntitlementBlockKey(value) {
337
+ return CATALOG_BY_KEY.has(value);
338
+ }
339
+ export function getEntitlementBlockCatalogEntry(blockKey) {
340
+ const entry = CATALOG_BY_KEY.get(blockKey);
341
+ if (entry === undefined) {
342
+ throw new Error(`Unknown entitlement blockKey: ${blockKey}`);
343
+ }
344
+ return entry;
345
+ }
346
+ export { TENANT_ENTITLEMENT_CATALOG_VERSION, TENANT_ENTITLEMENT_BLOCK_COUNT, ENTITLEMENT_BLOCK_KEYS, };
347
+ //# sourceMappingURL=catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/tenant-entitlements/catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { EntitlementBlockAxes } from './types.js';
2
+ export interface EvaluateNavEntitlementInput {
3
+ readonly blockAxes: EntitlementBlockAxes;
4
+ readonly grants: readonly string[];
5
+ readonly requiredCapability: string;
6
+ }
7
+ export interface EvaluateNavEntitlementFromVisibleInput {
8
+ readonly entitlementVisible: boolean;
9
+ readonly grants: readonly string[];
10
+ readonly requiredCapability: string;
11
+ }
12
+ export declare function evaluateNavEntitlementFromVisible(input: EvaluateNavEntitlementFromVisibleInput): boolean;
13
+ export declare function evaluateNavEntitlement(input: EvaluateNavEntitlementInput): boolean;
14
+ //# sourceMappingURL=evaluateNavEntitlement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluateNavEntitlement.d.ts","sourceRoot":"","sources":["../../src/tenant-entitlements/evaluateNavEntitlement.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGvD,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,sCAAsC;IACrD,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC;AAED,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,sCAAsC,GAC5C,OAAO,CAKT;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,2BAA2B,GAAG,OAAO,CAMlF"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Admin nav entitlement ∩ RBAC evaluation (§11.0).
3
+ *
4
+ * effectiveNavVisible = entitlement.visible(block) AND rbacHasCap(item.cap)
5
+ */
6
+ import { hasEffectiveCapability } from '../permissions/effectiveCapabilities.js';
7
+ import { isEntitlementVisible } from './evaluatePosture.js';
8
+ export function evaluateNavEntitlementFromVisible(input) {
9
+ return (input.entitlementVisible &&
10
+ hasEffectiveCapability(input.grants, input.requiredCapability));
11
+ }
12
+ export function evaluateNavEntitlement(input) {
13
+ return evaluateNavEntitlementFromVisible({
14
+ entitlementVisible: isEntitlementVisible(input.blockAxes),
15
+ grants: input.grants,
16
+ requiredCapability: input.requiredCapability,
17
+ });
18
+ }
19
+ //# sourceMappingURL=evaluateNavEntitlement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluateNavEntitlement.js","sourceRoot":"","sources":["../../src/tenant-entitlements/evaluateNavEntitlement.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAEjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAc5D,MAAM,UAAU,iCAAiC,CAC/C,KAA6C;IAE7C,OAAO,CACL,KAAK,CAAC,kBAAkB;QACxB,sBAAsB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAC/D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAkC;IACvE,OAAO,iCAAiC,CAAC;QACvC,kBAAkB,EAAE,oBAAoB,CAAC,KAAK,CAAC,SAAS,CAAC;QACzD,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;KAC7C,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Derives read/write posture from entitlement block axes (§6.1).
3
+ */
4
+ import type { EntitlementBlockAxes, EntitlementMutationMode, EntitlementVisibilityMode, EvaluatedEntitlementPosture } from './types.js';
5
+ /** Nav/API visibility — true when block is not hidden from admin nav (§11.0). */
6
+ export declare function isEntitlementVisible(axes: EntitlementBlockAxes): boolean;
7
+ export declare function allowReadsForMutationMode(mutationMode: EntitlementMutationMode): boolean;
8
+ export declare function allowWritesForMutationMode(mutationMode: EntitlementMutationMode): boolean;
9
+ export declare function evaluatePosture(axes: EntitlementBlockAxes): EvaluatedEntitlementPosture;
10
+ export declare function isVisibleForVisibilityMode(visibilityMode: EntitlementVisibilityMode): boolean;
11
+ //# sourceMappingURL=evaluatePosture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluatePosture.d.ts","sourceRoot":"","sources":["../../src/tenant-entitlements/evaluatePosture.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EACV,oBAAoB,EACpB,uBAAuB,EACvB,yBAAyB,EACzB,2BAA2B,EAC5B,MAAM,YAAY,CAAC;AAEpB,iFAAiF;AACjF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAExE;AAED,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,uBAAuB,GAAG,OAAO,CAExF;AAED,wBAAgB,0BAA0B,CAAC,YAAY,EAAE,uBAAuB,GAAG,OAAO,CAEzF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,oBAAoB,GAAG,2BAA2B,CAMvF;AAED,wBAAgB,0BAA0B,CAAC,cAAc,EAAE,yBAAyB,GAAG,OAAO,CAE7F"}
@@ -0,0 +1,21 @@
1
+ /** Nav/API visibility — true when block is not hidden from admin nav (§11.0). */
2
+ export function isEntitlementVisible(axes) {
3
+ return axes.visibilityMode === 'VISIBLE';
4
+ }
5
+ export function allowReadsForMutationMode(mutationMode) {
6
+ return mutationMode !== 'BLOCK_ALL';
7
+ }
8
+ export function allowWritesForMutationMode(mutationMode) {
9
+ return mutationMode === 'ALLOW_WRITES';
10
+ }
11
+ export function evaluatePosture(axes) {
12
+ return {
13
+ visible: isEntitlementVisible(axes),
14
+ allowReads: allowReadsForMutationMode(axes.mutationMode),
15
+ allowWrites: allowWritesForMutationMode(axes.mutationMode),
16
+ };
17
+ }
18
+ export function isVisibleForVisibilityMode(visibilityMode) {
19
+ return visibilityMode === 'VISIBLE';
20
+ }
21
+ //# sourceMappingURL=evaluatePosture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluatePosture.js","sourceRoot":"","sources":["../../src/tenant-entitlements/evaluatePosture.ts"],"names":[],"mappings":"AAUA,iFAAiF;AACjF,MAAM,UAAU,oBAAoB,CAAC,IAA0B;IAC7D,OAAO,IAAI,CAAC,cAAc,KAAK,SAAS,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,YAAqC;IAC7E,OAAO,YAAY,KAAK,WAAW,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,YAAqC;IAC9E,OAAO,YAAY,KAAK,cAAc,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAA0B;IACxD,OAAO;QACL,OAAO,EAAE,oBAAoB,CAAC,IAAI,CAAC;QACnC,UAAU,EAAE,yBAAyB,CAAC,IAAI,CAAC,YAAY,CAAC;QACxD,WAAW,EAAE,0BAA0B,CAAC,IAAI,CAAC,YAAY,CAAC;KAC3D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,cAAyC;IAClF,OAAO,cAAc,KAAK,SAAS,CAAC;AACtC,CAAC"}
@@ -0,0 +1,10 @@
1
+ export { TENANT_ENTITLEMENT_BLOCK_CATALOG, TENANT_ENTITLEMENT_CATALOG_VERSION, TENANT_ENTITLEMENT_BLOCK_COUNT, ENTITLEMENT_BLOCK_KEYS, getEntitlementBlockCatalogEntry, isEntitlementBlockKey, } from './catalog.js';
2
+ export { ENTITLEMENT_BLOCK_CLASSES, ENTITLEMENT_MUTATION_MODES, ENTITLEMENT_PARENT_OPERATORS, ENTITLEMENT_RUNTIME_MODES, ENTITLEMENT_VISIBILITY_MODES, RECONCILIATION_MODES, SIMPLE_ENTITLEMENT_STATES, TENANT_SURFACE_PRESET_IDS, simpleEntitlementStateToAxes, } from './types.js';
3
+ export { applySimpleStateDependencyImplications } from './applySimpleStateDependencyImplications.js';
4
+ export type { EntitlementBlockAxes, EntitlementBlockCatalogEntry, EntitlementBlockClass, EntitlementBlockKey, EntitlementMutationMode, EntitlementParentOperator, EntitlementRuntimeMode, EntitlementStrategyJson, EntitlementVisibilityMode, EvaluatedEntitlementPosture, PaymentReconciliationStrategy, ReconciliationMode, SimpleEntitlementState, StripeIntegrationStrategy, TenantSurfacePresetId, } from './types.js';
5
+ export { allowReadsForMutationMode, allowWritesForMutationMode, evaluatePosture, isEntitlementVisible, isVisibleForVisibilityMode, } from './evaluatePosture.js';
6
+ export { evaluateNavEntitlement, evaluateNavEntitlementFromVisible, } from './evaluateNavEntitlement.js';
7
+ export type { EvaluateNavEntitlementFromVisibleInput, EvaluateNavEntitlementInput, } from './evaluateNavEntitlement.js';
8
+ export { resolveSalesPointEntitlementCeiling, DEFAULT_ENTITLED_PUBLIC_POSTURE, ENTITLEMENT_SURFACE_DISABLED_CODE, } from '../sales-point/salesPointPublicConfig.js';
9
+ export type { SalesPointPublicEntitlementBlockPosture, SalesPointPublicEntitlementCeiling, } from '../sales-point/salesPointPublicConfig.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tenant-entitlements/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gCAAgC,EAChC,kCAAkC,EAClC,8BAA8B,EAC9B,sBAAsB,EACtB,+BAA+B,EAC/B,qBAAqB,GACtB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,4BAA4B,EAC5B,yBAAyB,EACzB,4BAA4B,EAC5B,oBAAoB,EACpB,yBAAyB,EACzB,yBAAyB,EACzB,4BAA4B,GAC7B,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,sCAAsC,EAAE,MAAM,6CAA6C,CAAC;AAErG,YAAY,EACV,oBAAoB,EACpB,4BAA4B,EAC5B,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,EACvB,yBAAyB,EACzB,sBAAsB,EACtB,uBAAuB,EACvB,yBAAyB,EACzB,2BAA2B,EAC3B,6BAA6B,EAC7B,kBAAkB,EAClB,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,eAAe,EACf,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,sBAAsB,EACtB,iCAAiC,GAClC,MAAM,6BAA6B,CAAC;AAErC,YAAY,EACV,sCAAsC,EACtC,2BAA2B,GAC5B,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,mCAAmC,EACnC,+BAA+B,EAC/B,iCAAiC,GAClC,MAAM,0CAA0C,CAAC;AAElD,YAAY,EACV,uCAAuC,EACvC,kCAAkC,GACnC,MAAM,0CAA0C,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { TENANT_ENTITLEMENT_BLOCK_CATALOG, TENANT_ENTITLEMENT_CATALOG_VERSION, TENANT_ENTITLEMENT_BLOCK_COUNT, ENTITLEMENT_BLOCK_KEYS, getEntitlementBlockCatalogEntry, isEntitlementBlockKey, } from './catalog.js';
2
+ export { ENTITLEMENT_BLOCK_CLASSES, ENTITLEMENT_MUTATION_MODES, ENTITLEMENT_PARENT_OPERATORS, ENTITLEMENT_RUNTIME_MODES, ENTITLEMENT_VISIBILITY_MODES, RECONCILIATION_MODES, SIMPLE_ENTITLEMENT_STATES, TENANT_SURFACE_PRESET_IDS, simpleEntitlementStateToAxes, } from './types.js';
3
+ export { applySimpleStateDependencyImplications } from './applySimpleStateDependencyImplications.js';
4
+ export { allowReadsForMutationMode, allowWritesForMutationMode, evaluatePosture, isEntitlementVisible, isVisibleForVisibilityMode, } from './evaluatePosture.js';
5
+ export { evaluateNavEntitlement, evaluateNavEntitlementFromVisible, } from './evaluateNavEntitlement.js';
6
+ export { resolveSalesPointEntitlementCeiling, DEFAULT_ENTITLED_PUBLIC_POSTURE, ENTITLEMENT_SURFACE_DISABLED_CODE, } from '../sales-point/salesPointPublicConfig.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tenant-entitlements/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gCAAgC,EAChC,kCAAkC,EAClC,8BAA8B,EAC9B,sBAAsB,EACtB,+BAA+B,EAC/B,qBAAqB,GACtB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,4BAA4B,EAC5B,yBAAyB,EACzB,4BAA4B,EAC5B,oBAAoB,EACpB,yBAAyB,EACzB,yBAAyB,EACzB,4BAA4B,GAC7B,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,sCAAsC,EAAE,MAAM,6CAA6C,CAAC;AAoBrG,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,eAAe,EACf,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,sBAAsB,EACtB,iCAAiC,GAClC,MAAM,6BAA6B,CAAC;AAOrC,OAAO,EACL,mCAAmC,EACnC,+BAA+B,EAC/B,iCAAiC,GAClC,MAAM,0CAA0C,CAAC"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Tenant entitlement policy — shared axis types and strategy shapes (ENT-PR-00).
3
+ * Authoritative block list lives in catalog.ts (§6.3, 44 blocks).
4
+ */
5
+ export declare const ENTITLEMENT_RUNTIME_MODES: readonly ["ALWAYS_ON", "ENABLED", "DISABLED"];
6
+ export type EntitlementRuntimeMode = (typeof ENTITLEMENT_RUNTIME_MODES)[number];
7
+ export declare const ENTITLEMENT_VISIBILITY_MODES: readonly ["VISIBLE", "HIDDEN"];
8
+ export type EntitlementVisibilityMode = (typeof ENTITLEMENT_VISIBILITY_MODES)[number];
9
+ export declare const ENTITLEMENT_MUTATION_MODES: readonly ["ALLOW_WRITES", "READ_ONLY", "BLOCK_ALL"];
10
+ export type EntitlementMutationMode = (typeof ENTITLEMENT_MUTATION_MODES)[number];
11
+ export declare const ENTITLEMENT_BLOCK_CLASSES: readonly ["CORE_IMMUTABLE", "CORE_REQUIRED", "CONDITIONAL", "STRATEGY"];
12
+ export type EntitlementBlockClass = (typeof ENTITLEMENT_BLOCK_CLASSES)[number];
13
+ export declare const ENTITLEMENT_PARENT_OPERATORS: readonly ["AND", "OR"];
14
+ export type EntitlementParentOperator = (typeof ENTITLEMENT_PARENT_OPERATORS)[number];
15
+ /** SIMPLE profile → three-axis mapping (§6.4). */
16
+ export declare const SIMPLE_ENTITLEMENT_STATES: readonly ["on", "softOffVisible", "softOffHidden", "off", "hardOff"];
17
+ export type SimpleEntitlementState = (typeof SIMPLE_ENTITLEMENT_STATES)[number];
18
+ export declare const RECONCILIATION_MODES: readonly ["MODE_1", "MODE_2"];
19
+ export type ReconciliationMode = (typeof RECONCILIATION_MODES)[number];
20
+ /** STRATEGY block: payment_reconciliation allowedModes (§7.5). */
21
+ export interface PaymentReconciliationStrategy {
22
+ readonly allowedModes: readonly ReconciliationMode[];
23
+ }
24
+ /** STRATEGY block: stripe_integration_strategy mirrors Tenant.stripeIntegrationMode. */
25
+ export interface StripeIntegrationStrategy {
26
+ readonly integrationMode: string;
27
+ }
28
+ export type EntitlementStrategyJson = PaymentReconciliationStrategy | StripeIntegrationStrategy | Record<string, unknown>;
29
+ /** Per-block three-axis posture stored on tenant policy rows. */
30
+ export interface EntitlementBlockAxes {
31
+ readonly runtimeMode: EntitlementRuntimeMode;
32
+ readonly visibilityMode: EntitlementVisibilityMode;
33
+ readonly mutationMode: EntitlementMutationMode;
34
+ }
35
+ /** Read/write + nav visibility derived from axes (§6.1, §11.0). */
36
+ export interface EvaluatedEntitlementPosture {
37
+ readonly visible: boolean;
38
+ readonly allowReads: boolean;
39
+ readonly allowWrites: boolean;
40
+ }
41
+ export interface EntitlementBlockCatalogEntry {
42
+ readonly blockKey: EntitlementBlockKey;
43
+ readonly blockClass: EntitlementBlockClass;
44
+ readonly parentKeys: readonly EntitlementBlockKey[];
45
+ readonly parentOperator?: EntitlementParentOperator;
46
+ /** Parents that may be absent without blocking entitlement (e.g. tax_management for fiscal). */
47
+ readonly optionalParentKeys?: readonly EntitlementBlockKey[];
48
+ readonly adminNavSectionId?: string;
49
+ readonly routeSuffix?: string;
50
+ readonly capabilityHint?: string;
51
+ readonly immutableDefaults?: EntitlementBlockAxes;
52
+ readonly defaultStrategy?: PaymentReconciliationStrategy;
53
+ readonly notes?: string;
54
+ }
55
+ export declare const ENTITLEMENT_BLOCK_KEYS: readonly ["platform_core", "dev_entitlement_policy_editor", "transactions", "sales_point_management", "catalog_administration", "audit_event_collection", "audit_logs_admin_ui", "gdpr_consent_admin_ui", "incident_centre_ui", "payment_processing_runtime", "outbox_runtime", "product_vending", "donation", "inventory_management", "loyalty_program", "payment_rails_strategy", "payment_reconciliation", "payments_hub_ui", "stripe_integration_strategy", "fulfillment_queue", "order_pickup_infrastructure", "pickup_points", "immediate_self_pickup", "customer_self_collect", "scheduled_pickup", "staff_pickup_scan", "surface_kiosk", "surface_customer", "realtime_device_transport", "customer_auth_pwa", "analytics", "analytics_summary", "analytics_detailed", "analytics_pii", "customer_behavior_funnels", "analytics_benchmark", "tax_management", "compliance_fiscal_modules", "comms_governance", "permission_management_rbac", "tenant_ops_settings", "bank_account_administration", "receipt_delivery", "bank_inbox_claims_api"];
56
+ export type EntitlementBlockKey = (typeof ENTITLEMENT_BLOCK_KEYS)[number];
57
+ export declare const TENANT_ENTITLEMENT_CATALOG_VERSION: 1;
58
+ export declare const TENANT_ENTITLEMENT_BLOCK_COUNT: 44;
59
+ export declare const TENANT_SURFACE_PRESET_IDS: readonly ["KIOSK_ONLY", "CUSTOMER_ONLY", "BOTH_SURFACES", "DONATION_ONLY", "VENDING_ONLY"];
60
+ export type TenantSurfacePresetId = (typeof TENANT_SURFACE_PRESET_IDS)[number];
61
+ /** Maps SIMPLE UI state to three-axis posture (§6.4). */
62
+ export declare function simpleEntitlementStateToAxes(state: SimpleEntitlementState): EntitlementBlockAxes;
63
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tenant-entitlements/types.ts"],"names":[],"mappings":"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"}