@hyperscale0/hsx 1.0.0-alpha.6 → 1.0.0-rc.1

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 (234) hide show
  1. package/CHANGELOG.md +48 -10
  2. package/LICENSING.md +3 -3
  3. package/README.md +37 -149
  4. package/TRADEMARKS.md +4 -4
  5. package/dist/src/ast.d.ts +129 -10
  6. package/dist/src/ast.d.ts.map +1 -1
  7. package/dist/src/cli.d.ts +2 -1
  8. package/dist/src/cli.d.ts.map +1 -1
  9. package/dist/src/cli.js +148 -12
  10. package/dist/src/cli.js.map +1 -1
  11. package/dist/src/compile.d.ts +41 -4
  12. package/dist/src/compile.d.ts.map +1 -1
  13. package/dist/src/compile.js +82 -15
  14. package/dist/src/compile.js.map +1 -1
  15. package/dist/src/cost.d.ts +78 -0
  16. package/dist/src/cost.d.ts.map +1 -0
  17. package/dist/src/cost.js +369 -0
  18. package/dist/src/cost.js.map +1 -0
  19. package/dist/src/diagnostics.d.ts +11 -0
  20. package/dist/src/diagnostics.d.ts.map +1 -0
  21. package/dist/src/diagnostics.js +420 -0
  22. package/dist/src/diagnostics.js.map +1 -0
  23. package/dist/src/emit.d.ts +35 -0
  24. package/dist/src/emit.d.ts.map +1 -0
  25. package/dist/src/emit.js +359 -0
  26. package/dist/src/emit.js.map +1 -0
  27. package/dist/src/entry-overrides.d.ts +17 -3
  28. package/dist/src/entry-overrides.d.ts.map +1 -1
  29. package/dist/src/entry-overrides.js +180 -35
  30. package/dist/src/entry-overrides.js.map +1 -1
  31. package/dist/src/format.d.ts +10 -0
  32. package/dist/src/format.d.ts.map +1 -0
  33. package/dist/src/format.js +183 -0
  34. package/dist/src/format.js.map +1 -0
  35. package/dist/src/index.d.ts +10 -4
  36. package/dist/src/index.d.ts.map +1 -1
  37. package/dist/src/index.js +8 -3
  38. package/dist/src/index.js.map +1 -1
  39. package/dist/src/ir.d.ts +66 -0
  40. package/dist/src/ir.d.ts.map +1 -0
  41. package/dist/src/ir.js +15 -0
  42. package/dist/src/ir.js.map +1 -0
  43. package/dist/src/lex.d.ts +9 -1
  44. package/dist/src/lex.d.ts.map +1 -1
  45. package/dist/src/lex.js +50 -4
  46. package/dist/src/lex.js.map +1 -1
  47. package/dist/src/limits.d.ts +2 -3
  48. package/dist/src/limits.d.ts.map +1 -1
  49. package/dist/src/limits.js +2 -3
  50. package/dist/src/limits.js.map +1 -1
  51. package/dist/src/modules.d.ts +36 -0
  52. package/dist/src/modules.d.ts.map +1 -0
  53. package/dist/src/modules.js +372 -0
  54. package/dist/src/modules.js.map +1 -0
  55. package/dist/src/parse.d.ts.map +1 -1
  56. package/dist/src/parse.js +590 -17
  57. package/dist/src/parse.js.map +1 -1
  58. package/dist/src/typecheck.d.ts +8 -0
  59. package/dist/src/typecheck.d.ts.map +1 -0
  60. package/dist/src/typecheck.js +2958 -0
  61. package/dist/src/typecheck.js.map +1 -0
  62. package/dist/src/version.d.ts +4 -15
  63. package/dist/src/version.d.ts.map +1 -1
  64. package/dist/src/version.js +4 -15
  65. package/dist/src/version.js.map +1 -1
  66. package/docs/README.md +23 -0
  67. package/docs/guide/01-first-program.md +24 -0
  68. package/docs/guide/02-money.md +25 -0
  69. package/docs/guide/03-instruments.md +22 -0
  70. package/docs/guide/04-lifecycles.md +25 -0
  71. package/docs/guide/05-fees-and-splits.md +45 -0
  72. package/docs/guide/06-schedules.md +22 -0
  73. package/docs/guide/07-composition.md +46 -0
  74. package/docs/guide/08-writing-a-module.md +26 -0
  75. package/docs/guide/09-cost.md +24 -0
  76. package/docs/guide/10-diagnostics.md +27 -0
  77. package/docs/llms-full.txt +1738 -0
  78. package/docs/llms.txt +45 -0
  79. package/docs/reference/cli.md +33 -0
  80. package/docs/reference/diagnostics.md +619 -0
  81. package/docs/reference/grammar.md +39 -0
  82. package/docs/reference/std/advance.md +35 -0
  83. package/docs/reference/std/cancellable_booking.md +35 -0
  84. package/docs/reference/std/captured_payment.md +43 -0
  85. package/docs/reference/std/conditional_disbursement.md +33 -0
  86. package/docs/reference/std/credit_facility.md +35 -0
  87. package/docs/reference/std/held_payment.md +64 -0
  88. package/docs/reference/std/instant_transfer.md +30 -0
  89. package/docs/reference/std/metered.md +27 -0
  90. package/docs/reference/std/pooled_split.md +26 -0
  91. package/docs/reference/std/premium_forward.md +39 -0
  92. package/docs/reference/std/reconciled_payout.md +33 -0
  93. package/docs/reference/std/recurring_collection.md +25 -0
  94. package/docs/reference/std/rotating_pool.md +42 -0
  95. package/docs/reference/std/scheduled.md +51 -0
  96. package/docs/reference/std/security_deposit.md +46 -0
  97. package/docs/reference/std/settlement_batch.md +42 -0
  98. package/docs/reference/std/swap.md +46 -0
  99. package/docs/reference/std/threshold_pool.md +47 -0
  100. package/docs/reference/std/weighted_distribution.md +39 -0
  101. package/docs/reference/types.md +20 -0
  102. package/docs/reference/udl-output.md +14 -0
  103. package/docs/sessions/2026-09-02-two-instruments.hsx +21 -0
  104. package/docs/sessions/2026-09-02-two-instruments.md +41 -0
  105. package/examples/01-first-program/README.md +45 -0
  106. package/examples/01-first-program/tip-jar.hsx +17 -0
  107. package/examples/02-imports-and-archetypes/README.md +99 -0
  108. package/examples/02-imports-and-archetypes/photo-booth.hsx +37 -0
  109. package/examples/03-diagnostics/README.md +68 -0
  110. package/examples/03-diagnostics/corner-shop-fixed.hsx +22 -0
  111. package/examples/03-diagnostics/corner-shop.hsx +19 -0
  112. package/examples/04-complete-product/README.md +87 -0
  113. package/examples/04-complete-product/study-hall.hsx +67 -0
  114. package/examples/05-watch-club/README.md +9 -0
  115. package/examples/05-watch-club/watch-club.hsx +124 -0
  116. package/examples/README.md +18 -0
  117. package/examples/advance/README.md +3 -0
  118. package/examples/advance/advance.hsx +13 -0
  119. package/examples/advance/advance.udl +339 -0
  120. package/examples/cancellable_booking/README.md +3 -0
  121. package/examples/cancellable_booking/cancellable_booking.hsx +14 -0
  122. package/examples/cancellable_booking/cancellable_booking.udl +391 -0
  123. package/examples/captured_payment/README.md +3 -0
  124. package/examples/captured_payment/captured_payment.hsx +21 -0
  125. package/examples/captured_payment/captured_payment.udl +677 -0
  126. package/examples/conditional_disbursement/README.md +3 -0
  127. package/examples/conditional_disbursement/conditional_disbursement.hsx +17 -0
  128. package/examples/conditional_disbursement/conditional_disbursement.udl +412 -0
  129. package/examples/cost-table.json +386 -0
  130. package/examples/credit_facility/README.md +3 -0
  131. package/examples/credit_facility/credit_facility.hsx +27 -0
  132. package/examples/credit_facility/credit_facility.udl +1373 -0
  133. package/examples/held_payment/README.md +3 -0
  134. package/examples/held_payment/held_payment.hsx +13 -0
  135. package/examples/held_payment/held_payment.udl +507 -0
  136. package/examples/instant_transfer/README.md +3 -0
  137. package/examples/instant_transfer/instant_transfer.hsx +16 -0
  138. package/examples/instant_transfer/instant_transfer.udl +364 -0
  139. package/examples/metered/README.md +3 -0
  140. package/examples/metered/metered.hsx +13 -0
  141. package/examples/metered/metered.udl +247 -0
  142. package/examples/pooled_split/README.md +3 -0
  143. package/examples/pooled_split/pooled_split.hsx +15 -0
  144. package/examples/pooled_split/pooled_split.udl +425 -0
  145. package/examples/premium_forward/README.md +3 -0
  146. package/examples/premium_forward/premium_forward.hsx +19 -0
  147. package/examples/premium_forward/premium_forward.udl +594 -0
  148. package/examples/reconciled_payout/README.md +3 -0
  149. package/examples/reconciled_payout/reconciled_payout.hsx +13 -0
  150. package/examples/reconciled_payout/reconciled_payout.udl +303 -0
  151. package/examples/recurring_collection/README.md +3 -0
  152. package/examples/recurring_collection/recurring_collection.hsx +21 -0
  153. package/examples/recurring_collection/recurring_collection.udl +1130 -0
  154. package/examples/rotating_pool/README.md +3 -0
  155. package/examples/rotating_pool/rotating_pool.hsx +18 -0
  156. package/examples/rotating_pool/rotating_pool.udl +4352 -0
  157. package/examples/scheduled/README.md +3 -0
  158. package/examples/scheduled/scheduled.hsx +12 -0
  159. package/examples/scheduled/scheduled.udl +335 -0
  160. package/examples/security_deposit/README.md +3 -0
  161. package/examples/security_deposit/security_deposit.hsx +21 -0
  162. package/examples/security_deposit/security_deposit.udl +293 -0
  163. package/examples/settlement_batch/README.md +3 -0
  164. package/examples/settlement_batch/settlement_batch.hsx +19 -0
  165. package/examples/settlement_batch/settlement_batch.udl +753 -0
  166. package/examples/swap/README.md +3 -0
  167. package/examples/swap/swap.hsx +19 -0
  168. package/examples/swap/swap.udl +876 -0
  169. package/examples/threshold_pool/README.md +3 -0
  170. package/examples/threshold_pool/threshold_pool.hsx +16 -0
  171. package/examples/threshold_pool/threshold_pool.udl +667 -0
  172. package/examples/weighted_distribution/README.md +3 -0
  173. package/examples/weighted_distribution/weighted_distribution.hsx +20 -0
  174. package/examples/weighted_distribution/weighted_distribution.udl +337 -0
  175. package/package.json +19 -6
  176. package/skills/hsx/SKILL.md +483 -0
  177. package/src/ast.ts +163 -9
  178. package/src/cli.ts +164 -12
  179. package/src/compile.ts +160 -20
  180. package/src/cost.ts +579 -0
  181. package/src/diagnostics.ts +442 -0
  182. package/src/emit.ts +447 -0
  183. package/src/entry-overrides.ts +263 -48
  184. package/src/format.ts +261 -0
  185. package/src/index.ts +32 -4
  186. package/src/ir.ts +99 -0
  187. package/src/lex.ts +59 -4
  188. package/src/limits.ts +2 -3
  189. package/src/modules.ts +444 -0
  190. package/src/parse.ts +655 -21
  191. package/src/typecheck.ts +3876 -0
  192. package/src/version.ts +4 -16
  193. package/std/SEMANTICS.md +130 -0
  194. package/std/settlements/advance.hsx +177 -0
  195. package/std/settlements/cancellable_booking.hsx +87 -0
  196. package/std/settlements/captured_payment.hsx +144 -0
  197. package/std/settlements/conditional_disbursement.hsx +185 -0
  198. package/std/settlements/credit_facility.hsx +167 -0
  199. package/std/settlements/held_payment.hsx +578 -0
  200. package/std/settlements/index.hsx +3 -0
  201. package/std/settlements/instant_transfer.hsx +190 -0
  202. package/std/settlements/metered.hsx +67 -0
  203. package/std/settlements/pooled_split.hsx +68 -0
  204. package/std/settlements/premium_forward.hsx +257 -0
  205. package/std/settlements/reconciled_payout.hsx +77 -0
  206. package/std/settlements/recurring_collection.hsx +27 -0
  207. package/std/settlements/rotating_pool.hsx +252 -0
  208. package/std/settlements/scheduled.hsx +641 -0
  209. package/std/settlements/security_deposit.hsx +166 -0
  210. package/std/settlements/settlement_batch.hsx +122 -0
  211. package/std/settlements/swap.hsx +1114 -0
  212. package/std/settlements/threshold_pool.hsx +221 -0
  213. package/std/settlements/weighted_distribution.hsx +141 -0
  214. package/dist/src/archetypes.d.ts +0 -17
  215. package/dist/src/archetypes.d.ts.map +0 -1
  216. package/dist/src/archetypes.js +0 -327
  217. package/dist/src/archetypes.js.map +0 -1
  218. package/dist/src/check.d.ts +0 -12
  219. package/dist/src/check.d.ts.map +0 -1
  220. package/dist/src/check.js +0 -1910
  221. package/dist/src/check.js.map +0 -1
  222. package/dist/src/lower.d.ts +0 -146
  223. package/dist/src/lower.d.ts.map +0 -1
  224. package/dist/src/lower.js +0 -4570
  225. package/dist/src/lower.js.map +0 -1
  226. package/dist/src/model.d.ts +0 -467
  227. package/dist/src/model.d.ts.map +0 -1
  228. package/dist/src/model.js +0 -15
  229. package/dist/src/model.js.map +0 -1
  230. package/spec/hsx-ir.schema.json +0 -920
  231. package/src/archetypes.ts +0 -340
  232. package/src/check.ts +0 -2938
  233. package/src/lower.ts +0 -5416
  234. package/src/model.ts +0 -519
@@ -0,0 +1,386 @@
1
+ {
2
+ "currency": "SAR",
3
+ "declaredMeters": [
4
+ "account.active_month",
5
+ "collection.pay_in.count",
6
+ "collection.pay_in.volume_sar",
7
+ "deposit.attributed.count",
8
+ "deposit.attributed.volume_sar",
9
+ "financial_address.active_month",
10
+ "financial_address.issued.count",
11
+ "instrument.event.count",
12
+ "instrument.event.volume_sar",
13
+ "kyb.application.review",
14
+ "payout.external.count",
15
+ "payout.external.volume_sar",
16
+ "transfer.internal.count",
17
+ "transfer.internal.volume_sar",
18
+ "verification.kyb.count",
19
+ "verification.kyc.basic.count",
20
+ "verification.kyc.investment.count",
21
+ "verification.kyc.standard.count"
22
+ ],
23
+ "effectiveTableDigest": "fb8466c7f277cc471493654413d088bb526f12ddaca0c869d51e39771f37b59e",
24
+ "fixed": {
25
+ "activationBaseMinor": "500000",
26
+ "activationPerPointMinor": "100000",
27
+ "monthlyBaseMinor": "100000",
28
+ "monthlyPerPointMinor": "20000",
29
+ "weights": {
30
+ "aggregate_invariant": 2,
31
+ "blueprint": 5,
32
+ "flow": 1,
33
+ "gate": 1,
34
+ "instrument": 3,
35
+ "move": 3,
36
+ "provider_decision": 5,
37
+ "subject_kind": 2,
38
+ "timer": 1,
39
+ "unwind": 4
40
+ }
41
+ },
42
+ "rows": [
43
+ {
44
+ "bps": 0,
45
+ "meter": "instrument.event.count",
46
+ "payer": "product",
47
+ "perEventMinor": "0",
48
+ "settlement": "invoice",
49
+ "signature": "decides.accounts_ledger_first_party"
50
+ },
51
+ {
52
+ "bps": 0,
53
+ "meter": "instrument.event.count",
54
+ "payer": "product",
55
+ "perEventMinor": "0",
56
+ "settlement": "invoice",
57
+ "signature": "decides.air_carrier"
58
+ },
59
+ {
60
+ "bps": 0,
61
+ "meter": "instrument.event.count",
62
+ "payer": "product",
63
+ "perEventMinor": "0",
64
+ "settlement": "invoice",
65
+ "signature": "decides.banking_or_card_issuing"
66
+ },
67
+ {
68
+ "bps": 0,
69
+ "meter": "instrument.event.count",
70
+ "payer": "product",
71
+ "perEventMinor": "0",
72
+ "settlement": "invoice",
73
+ "signature": "decides.collections_agency"
74
+ },
75
+ {
76
+ "bps": 0,
77
+ "meter": "instrument.event.count",
78
+ "payer": "product",
79
+ "perEventMinor": "0",
80
+ "settlement": "invoice",
81
+ "signature": "decides.credit_bureau"
82
+ },
83
+ {
84
+ "bps": 0,
85
+ "meter": "instrument.event.count",
86
+ "payer": "product",
87
+ "perEventMinor": "0",
88
+ "settlement": "invoice",
89
+ "signature": "decides.credit_servicing"
90
+ },
91
+ {
92
+ "bps": 0,
93
+ "meter": "instrument.event.count",
94
+ "payer": "product",
95
+ "perEventMinor": "0",
96
+ "settlement": "invoice",
97
+ "signature": "decides.email_or_notification"
98
+ },
99
+ {
100
+ "bps": 0,
101
+ "meter": "instrument.event.count",
102
+ "payer": "product",
103
+ "perEventMinor": "0",
104
+ "settlement": "invoice",
105
+ "signature": "decides.enforcement_instrument"
106
+ },
107
+ {
108
+ "bps": 0,
109
+ "meter": "instrument.event.count",
110
+ "payer": "product",
111
+ "perEventMinor": "0",
112
+ "settlement": "invoice",
113
+ "signature": "decides.identity_verification"
114
+ },
115
+ {
116
+ "bps": 0,
117
+ "meter": "instrument.event.count",
118
+ "payer": "product",
119
+ "perEventMinor": "0",
120
+ "settlement": "invoice",
121
+ "signature": "decides.insurance_carrier"
122
+ },
123
+ {
124
+ "bps": 0,
125
+ "meter": "instrument.event.count",
126
+ "payer": "product",
127
+ "perEventMinor": "0",
128
+ "settlement": "invoice",
129
+ "signature": "decides.insurance_claims_adjuster"
130
+ },
131
+ {
132
+ "bps": 0,
133
+ "meter": "verification.kyb.count",
134
+ "payer": "product",
135
+ "perEventMinor": "8000",
136
+ "settlement": "invoice",
137
+ "signature": "decides.kyb"
138
+ },
139
+ {
140
+ "bps": 0,
141
+ "meter": "verification.kyc.basic.count",
142
+ "payer": "product",
143
+ "perEventMinor": "2500",
144
+ "settlement": "invoice",
145
+ "signature": "decides.kyc.basic"
146
+ },
147
+ {
148
+ "bps": 0,
149
+ "meter": "verification.kyc.investment.count",
150
+ "payer": "product",
151
+ "perEventMinor": "7500",
152
+ "settlement": "invoice",
153
+ "signature": "decides.kyc.investment"
154
+ },
155
+ {
156
+ "bps": 0,
157
+ "meter": "verification.kyc.standard.count",
158
+ "payer": "product",
159
+ "perEventMinor": "4000",
160
+ "settlement": "invoice",
161
+ "signature": "decides.kyc.standard"
162
+ },
163
+ {
164
+ "bps": 0,
165
+ "meter": "instrument.event.count",
166
+ "payer": "product",
167
+ "perEventMinor": "0",
168
+ "settlement": "invoice",
169
+ "signature": "decides.lodging_supplier"
170
+ },
171
+ {
172
+ "bps": 0,
173
+ "meter": "instrument.event.count",
174
+ "payer": "product",
175
+ "perEventMinor": "0",
176
+ "settlement": "invoice",
177
+ "signature": "decides.national_identity"
178
+ },
179
+ {
180
+ "bps": 0,
181
+ "meter": "instrument.event.count",
182
+ "payer": "product",
183
+ "perEventMinor": "0",
184
+ "settlement": "invoice",
185
+ "signature": "decides.payouts"
186
+ },
187
+ {
188
+ "bps": 0,
189
+ "meter": "instrument.event.count",
190
+ "payer": "product",
191
+ "perEventMinor": "0",
192
+ "settlement": "invoice",
193
+ "signature": "decides.sanctions_screening"
194
+ },
195
+ {
196
+ "bps": 0,
197
+ "meter": "instrument.event.count",
198
+ "payer": "product",
199
+ "perEventMinor": "0",
200
+ "settlement": "invoice",
201
+ "signature": "decides.settlement_ingestion"
202
+ },
203
+ {
204
+ "bps": 0,
205
+ "meter": "instrument.event.count",
206
+ "payer": "product",
207
+ "perEventMinor": "0",
208
+ "settlement": "invoice",
209
+ "signature": "decides.tenant_port"
210
+ },
211
+ {
212
+ "bps": 0,
213
+ "meter": "instrument.event.count",
214
+ "payer": "product",
215
+ "perEventMinor": "0",
216
+ "settlement": "invoice",
217
+ "signature": "holds.quote"
218
+ },
219
+ {
220
+ "bps": 0,
221
+ "meter": "instrument.event.count",
222
+ "payer": "product",
223
+ "perEventMinor": "0",
224
+ "settlement": "invoice",
225
+ "signature": "holds.reserve"
226
+ },
227
+ {
228
+ "bps": 0,
229
+ "meter": "account.active_month",
230
+ "payer": "product",
231
+ "perEventMinor": "27500",
232
+ "settlement": "invoice",
233
+ "signature": "meters.account.active_month"
234
+ },
235
+ {
236
+ "bps": 0,
237
+ "meter": "billing.invoice.settlement",
238
+ "payer": "product",
239
+ "perEventMinor": "1",
240
+ "settlement": "invoice",
241
+ "signature": "meters.billing.invoice.settlement"
242
+ },
243
+ {
244
+ "bps": 0,
245
+ "meter": "financial_address.active_month",
246
+ "payer": "product",
247
+ "perEventMinor": "800",
248
+ "settlement": "invoice",
249
+ "signature": "meters.financial_address.active_month"
250
+ },
251
+ {
252
+ "bps": 0,
253
+ "meter": "financial_address.issued.count",
254
+ "payer": "product",
255
+ "perEventMinor": "2000",
256
+ "settlement": "invoice",
257
+ "signature": "meters.financial_address.issued.count"
258
+ },
259
+ {
260
+ "bps": 0,
261
+ "meter": "instrument.event.count",
262
+ "payer": "product",
263
+ "perEventMinor": "150",
264
+ "settlement": "invoice",
265
+ "signature": "meters.instrument.event.count"
266
+ },
267
+ {
268
+ "bps": 40,
269
+ "meter": "instrument.event.volume_sar",
270
+ "payer": "product",
271
+ "perEventMinor": "0",
272
+ "settlement": "invoice",
273
+ "signature": "meters.instrument.event.volume_sar",
274
+ "volumeMeter": "instrument.event.volume_sar"
275
+ },
276
+ {
277
+ "bps": 0,
278
+ "meter": "kyb.application.review",
279
+ "payer": "product",
280
+ "perEventMinor": "20000",
281
+ "settlement": "invoice",
282
+ "signature": "meters.kyb.application.review"
283
+ },
284
+ {
285
+ "bps": 16,
286
+ "meter": "collection.pay_in.count",
287
+ "payer": "end_customer",
288
+ "perEventMinor": "250",
289
+ "settlement": "per_event",
290
+ "signature": "moves.collection.pay_in",
291
+ "volumeMeter": "collection.pay_in.volume_sar"
292
+ },
293
+ {
294
+ "bps": 6,
295
+ "meter": "deposit.attributed.count",
296
+ "payer": "end_customer",
297
+ "perEventMinor": "150",
298
+ "settlement": "per_event",
299
+ "signature": "moves.deposit.attributed",
300
+ "volumeMeter": "deposit.attributed.volume_sar"
301
+ },
302
+ {
303
+ "bps": 15,
304
+ "meter": "payout.external.count",
305
+ "payer": "product",
306
+ "perEventMinor": "400",
307
+ "settlement": "per_event",
308
+ "signature": "moves.payout.external",
309
+ "volumeMeter": "payout.external.volume_sar"
310
+ },
311
+ {
312
+ "bps": 11,
313
+ "meter": "transfer.internal.count",
314
+ "payer": "end_customer",
315
+ "perEventMinor": "75",
316
+ "settlement": "per_event",
317
+ "signature": "moves.transfer.internal",
318
+ "volumeMeter": "transfer.internal.volume_sar"
319
+ },
320
+ {
321
+ "bps": 0,
322
+ "meter": "instrument.event.count",
323
+ "payer": "product",
324
+ "perEventMinor": "0",
325
+ "settlement": "invoice",
326
+ "signature": "notifies.email"
327
+ },
328
+ {
329
+ "bps": 0,
330
+ "meter": "instrument.event.count",
331
+ "payer": "product",
332
+ "perEventMinor": "0",
333
+ "settlement": "invoice",
334
+ "signature": "reads.reconcile"
335
+ },
336
+ {
337
+ "bps": 0,
338
+ "meter": "instrument.event.count",
339
+ "payer": "product",
340
+ "perEventMinor": "0",
341
+ "settlement": "invoice",
342
+ "signature": "reads.requires_aggregate"
343
+ },
344
+ {
345
+ "bps": 0,
346
+ "meter": "instrument.event.count",
347
+ "payer": "product",
348
+ "perEventMinor": "0",
349
+ "settlement": "invoice",
350
+ "signature": "reads.requires_checks"
351
+ },
352
+ {
353
+ "bps": 0,
354
+ "meter": "instrument.event.count",
355
+ "payer": "product",
356
+ "perEventMinor": "0",
357
+ "settlement": "invoice",
358
+ "signature": "reads.requires_refs"
359
+ },
360
+ {
361
+ "bps": 0,
362
+ "meter": "instrument.event.count",
363
+ "payer": "product",
364
+ "perEventMinor": "0",
365
+ "settlement": "invoice",
366
+ "signature": "schedules.deadline"
367
+ },
368
+ {
369
+ "bps": 0,
370
+ "meter": "instrument.event.count",
371
+ "payer": "product",
372
+ "perEventMinor": "0",
373
+ "settlement": "invoice",
374
+ "signature": "schedules.due"
375
+ },
376
+ {
377
+ "bps": 0,
378
+ "meter": "instrument.event.count",
379
+ "payer": "product",
380
+ "perEventMinor": "0",
381
+ "settlement": "invoice",
382
+ "signature": "schedules.expiry"
383
+ }
384
+ ],
385
+ "version": "2026-09-02.1"
386
+ }
@@ -0,0 +1,3 @@
1
+ # credit_facility
2
+
3
+ This example applies the `credit_facility` standard-library module. Its sibling UDL file pins the canonical compiler output byte for byte. The company and parties are invented.
@@ -0,0 +1,27 @@
1
+ program credit_facility_example "Credit facility example"
2
+ import { credit_facility, scheduled } from "std/settlements"
3
+ party lender: business
4
+ party borrower: business
5
+ party draw_destination: business
6
+ party repayment_source: business
7
+ settlement repayment = scheduled {
8
+ mode: obligation
9
+ payer: repayment_source
10
+ payee: lender
11
+ debtor: borrower
12
+ amount: principal: money(SAR)
13
+ count: 2
14
+ every: P30D
15
+ first_due: firstDueAt
16
+ }
17
+ settlement facility = credit_facility {
18
+ lender: lender
19
+ borrower: borrower
20
+ draw_destination: draw_destination
21
+ limit: facilityLimit: money(SAR)
22
+ expires_at: expiresAt
23
+ obligation: repayment.obligation
24
+ availability_policy: revolving
25
+ expiry_policy: freeze_draws
26
+ close_policy: no_open_draws
27
+ }