@ottochain/sdk 2.3.0 → 2.5.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 (287) hide show
  1. package/dist/cjs/apps/compute/index.js +33 -0
  2. package/dist/cjs/apps/compute/state-machines/compute-rule110.js +164 -0
  3. package/dist/cjs/apps/compute/state-machines/index.js +9 -0
  4. package/dist/cjs/apps/contracts/index.js +16 -9
  5. package/dist/cjs/apps/contracts/state-machines/contract-agreement.js +134 -161
  6. package/dist/cjs/apps/contracts/state-machines/contract-escrow.js +192 -170
  7. package/dist/cjs/apps/contracts/state-machines/contract-universal.js +46 -58
  8. package/dist/cjs/apps/corporate/index.js +2 -2
  9. package/dist/cjs/apps/corporate/state-machines/corp-board.js +500 -456
  10. package/dist/cjs/apps/corporate/state-machines/corp-entity.js +487 -361
  11. package/dist/cjs/apps/corporate/state-machines/corp-securities.js +769 -576
  12. package/dist/cjs/apps/corporate/state-machines/corp-shareholders.js +567 -557
  13. package/dist/cjs/apps/governance/index.js +21 -21
  14. package/dist/cjs/apps/governance/state-machines/dao-multisig.js +188 -209
  15. package/dist/cjs/apps/governance/state-machines/dao-reputation.js +181 -228
  16. package/dist/cjs/apps/governance/state-machines/dao-single.js +105 -88
  17. package/dist/cjs/apps/governance/state-machines/dao-token.js +199 -227
  18. package/dist/cjs/apps/governance/state-machines/governance-simple.js +231 -231
  19. package/dist/cjs/apps/governance/state-machines/governance-universal.js +64 -64
  20. package/dist/cjs/apps/identity/constants.js +55 -22
  21. package/dist/cjs/apps/identity/index.js +28 -12
  22. package/dist/cjs/apps/identity/state-machines/identity-agent.js +124 -158
  23. package/dist/cjs/apps/identity/state-machines/identity-oracle.js +158 -173
  24. package/dist/cjs/apps/identity/state-machines/identity-registry.js +262 -0
  25. package/dist/cjs/apps/identity/state-machines/identity-universal.js +51 -57
  26. package/dist/cjs/apps/identity/state-machines/index.js +3 -1
  27. package/dist/cjs/apps/index.js +22 -8
  28. package/dist/cjs/apps/lending/assets.js +247 -0
  29. package/dist/cjs/apps/lending/credit-scoring.js +87 -0
  30. package/dist/cjs/apps/lending/eligibility.js +105 -0
  31. package/dist/cjs/apps/lending/index.js +91 -0
  32. package/dist/cjs/apps/lending/state-machines/index.js +9 -0
  33. package/dist/cjs/apps/lending/state-machines/lending-zk-loan.js +433 -0
  34. package/dist/cjs/apps/markets/index.js +22 -12
  35. package/dist/cjs/apps/markets/state-machines/market-auction.js +116 -134
  36. package/dist/cjs/apps/markets/state-machines/market-crowdfund.js +131 -141
  37. package/dist/cjs/apps/markets/state-machines/market-group-buy.js +163 -184
  38. package/dist/cjs/apps/markets/state-machines/market-prediction.js +226 -233
  39. package/dist/cjs/apps/markets/state-machines/market-universal.js +65 -80
  40. package/dist/cjs/apps/oracles/index.js +3 -3
  41. package/dist/cjs/apps/privacy/index.js +67 -0
  42. package/dist/cjs/apps/privacy/state-machines/index.js +17 -0
  43. package/dist/cjs/apps/privacy/state-machines/mixer-ddhRing.js +286 -0
  44. package/dist/cjs/apps/privacy/state-machines/note-pool.js +476 -0
  45. package/dist/cjs/apps/staked-pool/assets.js +103 -0
  46. package/dist/cjs/apps/staked-pool/base.js +498 -0
  47. package/dist/cjs/apps/staked-pool/consumer.js +55 -0
  48. package/dist/cjs/apps/staked-pool/index.js +83 -0
  49. package/dist/cjs/apps/staked-pool/state-machines/index.js +12 -0
  50. package/dist/cjs/apps/staked-pool/state-machines/staked-pool-base.js +49 -0
  51. package/dist/cjs/apps/staked-pool/state-machines/staked-pool-oracle.js +131 -0
  52. package/dist/cjs/errors.js +3 -3
  53. package/dist/cjs/generated/google/protobuf/struct.js +5 -5
  54. package/dist/cjs/generated/google/protobuf/timestamp.js +1 -1
  55. package/dist/cjs/generated/index.js +11 -7
  56. package/dist/cjs/generated/openapi.js +6 -0
  57. package/dist/cjs/generated/ottochain/apps/contracts/v1/contract.js +51 -51
  58. package/dist/cjs/generated/ottochain/apps/corporate/v1/corporate.js +20 -21
  59. package/dist/cjs/generated/ottochain/apps/governance/v1/governance.js +14 -14
  60. package/dist/cjs/generated/ottochain/apps/identity/v1/attestation.js +5 -5
  61. package/dist/cjs/generated/ottochain/apps/identity/v1/identity.js +125 -131
  62. package/dist/cjs/generated/ottochain/apps/markets/v1/market.js +108 -108
  63. package/dist/cjs/generated/ottochain/v1/common.js +5 -5
  64. package/dist/cjs/generated/ottochain/v1/fiber.js +44 -6
  65. package/dist/cjs/generated/ottochain/v1/messages.js +1 -1
  66. package/dist/cjs/generated/ottochain/v1/records.js +1 -1
  67. package/dist/cjs/index.js +58 -7
  68. package/dist/cjs/openapi.js +2 -0
  69. package/dist/cjs/ottochain/drop-nulls.js +1 -2
  70. package/dist/cjs/ottochain/genesis-manifest.js +17 -11
  71. package/dist/cjs/ottochain/index.js +23 -13
  72. package/dist/cjs/ottochain/metagraph-client.js +81 -16
  73. package/dist/cjs/ottochain/snapshot.js +13 -16
  74. package/dist/cjs/ottochain/transaction.js +67 -14
  75. package/dist/cjs/ottochain/types.js +16 -2
  76. package/dist/cjs/privacy/index.js +14 -0
  77. package/dist/cjs/privacy/sealed-bid.js +213 -0
  78. package/dist/cjs/privacy/shield-app.js +131 -0
  79. package/dist/cjs/schema/effects.js +156 -0
  80. package/dist/cjs/schema/fiber-app.js +150 -15
  81. package/dist/cjs/schema/guard-lint.js +343 -0
  82. package/dist/cjs/schema/guards.js +246 -0
  83. package/dist/cjs/signing.js +80 -0
  84. package/dist/cjs/templates/asset-policy.js +190 -0
  85. package/dist/cjs/templates/index.js +86 -0
  86. package/dist/cjs/templates/machine.js +130 -0
  87. package/dist/cjs/templates/migration.js +39 -0
  88. package/dist/cjs/templates/state-shape.js +38 -0
  89. package/dist/cjs/types.js +2 -3
  90. package/dist/cjs/validation.js +9 -11
  91. package/dist/cjs/verify.js +9 -4
  92. package/dist/cjs/zk/commit.js +53 -0
  93. package/dist/cjs/zk/guard.js +107 -0
  94. package/dist/cjs/zk/index.js +48 -0
  95. package/dist/cjs/zk/preimage.js +37 -0
  96. package/dist/cjs/zk/prover.js +87 -0
  97. package/dist/cjs/zk/registry.js +62 -0
  98. package/dist/cjs/zk/types.js +28 -0
  99. package/dist/cjs/zk/witness.js +19 -0
  100. package/dist/esm/apps/compute/index.js +29 -0
  101. package/dist/esm/apps/compute/state-machines/compute-rule110.js +161 -0
  102. package/dist/esm/apps/compute/state-machines/index.js +5 -0
  103. package/dist/esm/apps/contracts/index.js +9 -5
  104. package/dist/esm/apps/contracts/state-machines/contract-agreement.js +135 -162
  105. package/dist/esm/apps/contracts/state-machines/contract-escrow.js +193 -171
  106. package/dist/esm/apps/contracts/state-machines/contract-universal.js +47 -59
  107. package/dist/esm/apps/corporate/index.js +2 -2
  108. package/dist/esm/apps/corporate/state-machines/corp-board.js +501 -457
  109. package/dist/esm/apps/corporate/state-machines/corp-entity.js +488 -362
  110. package/dist/esm/apps/corporate/state-machines/corp-securities.js +770 -577
  111. package/dist/esm/apps/corporate/state-machines/corp-shareholders.js +568 -558
  112. package/dist/esm/apps/governance/index.js +10 -10
  113. package/dist/esm/apps/governance/state-machines/dao-multisig.js +189 -210
  114. package/dist/esm/apps/governance/state-machines/dao-reputation.js +182 -229
  115. package/dist/esm/apps/governance/state-machines/dao-single.js +106 -89
  116. package/dist/esm/apps/governance/state-machines/dao-token.js +200 -228
  117. package/dist/esm/apps/governance/state-machines/governance-simple.js +232 -232
  118. package/dist/esm/apps/governance/state-machines/governance-universal.js +65 -65
  119. package/dist/esm/apps/identity/constants.js +52 -21
  120. package/dist/esm/apps/identity/index.js +14 -9
  121. package/dist/esm/apps/identity/state-machines/identity-agent.js +125 -159
  122. package/dist/esm/apps/identity/state-machines/identity-oracle.js +159 -174
  123. package/dist/esm/apps/identity/state-machines/identity-registry.js +259 -0
  124. package/dist/esm/apps/identity/state-machines/identity-universal.js +52 -58
  125. package/dist/esm/apps/identity/state-machines/index.js +1 -0
  126. package/dist/esm/apps/index.js +9 -5
  127. package/dist/esm/apps/lending/assets.js +231 -0
  128. package/dist/esm/apps/lending/credit-scoring.js +81 -0
  129. package/dist/esm/apps/lending/eligibility.js +99 -0
  130. package/dist/esm/apps/lending/index.js +69 -0
  131. package/dist/esm/apps/lending/state-machines/index.js +5 -0
  132. package/dist/esm/apps/lending/state-machines/lending-zk-loan.js +430 -0
  133. package/dist/esm/apps/markets/index.js +11 -7
  134. package/dist/esm/apps/markets/state-machines/market-auction.js +117 -135
  135. package/dist/esm/apps/markets/state-machines/market-crowdfund.js +132 -142
  136. package/dist/esm/apps/markets/state-machines/market-group-buy.js +164 -185
  137. package/dist/esm/apps/markets/state-machines/market-prediction.js +227 -234
  138. package/dist/esm/apps/markets/state-machines/market-universal.js +66 -81
  139. package/dist/esm/apps/oracles/index.js +3 -3
  140. package/dist/esm/apps/privacy/index.js +56 -0
  141. package/dist/esm/apps/privacy/state-machines/index.js +6 -0
  142. package/dist/esm/apps/privacy/state-machines/mixer-ddhRing.js +282 -0
  143. package/dist/esm/apps/privacy/state-machines/note-pool.js +470 -0
  144. package/dist/esm/apps/staked-pool/assets.js +91 -0
  145. package/dist/esm/apps/staked-pool/base.js +493 -0
  146. package/dist/esm/apps/staked-pool/consumer.js +49 -0
  147. package/dist/esm/apps/staked-pool/index.js +60 -0
  148. package/dist/esm/apps/staked-pool/state-machines/index.js +6 -0
  149. package/dist/esm/apps/staked-pool/state-machines/staked-pool-base.js +46 -0
  150. package/dist/esm/apps/staked-pool/state-machines/staked-pool-oracle.js +127 -0
  151. package/dist/esm/generated/google/protobuf/struct.js +1 -1
  152. package/dist/esm/generated/google/protobuf/timestamp.js +1 -1
  153. package/dist/esm/generated/index.js +9 -5
  154. package/dist/esm/generated/openapi.js +5 -0
  155. package/dist/esm/generated/ottochain/apps/contracts/v1/contract.js +47 -47
  156. package/dist/esm/generated/ottochain/apps/corporate/v1/corporate.js +1 -1
  157. package/dist/esm/generated/ottochain/apps/governance/v1/governance.js +1 -1
  158. package/dist/esm/generated/ottochain/apps/identity/v1/attestation.js +1 -1
  159. package/dist/esm/generated/ottochain/apps/identity/v1/identity.js +115 -121
  160. package/dist/esm/generated/ottochain/apps/markets/v1/market.js +101 -101
  161. package/dist/esm/generated/ottochain/v1/common.js +1 -1
  162. package/dist/esm/generated/ottochain/v1/fiber.js +40 -2
  163. package/dist/esm/generated/ottochain/v1/messages.js +1 -1
  164. package/dist/esm/generated/ottochain/v1/records.js +1 -1
  165. package/dist/esm/index.js +28 -3
  166. package/dist/esm/openapi.js +1 -0
  167. package/dist/esm/ottochain/genesis-manifest.js +15 -9
  168. package/dist/esm/ottochain/index.js +2 -3
  169. package/dist/esm/ottochain/metagraph-client.js +81 -16
  170. package/dist/esm/ottochain/snapshot.js +6 -8
  171. package/dist/esm/ottochain/transaction.js +51 -3
  172. package/dist/esm/ottochain/types.js +15 -1
  173. package/dist/esm/privacy/index.js +6 -0
  174. package/dist/esm/privacy/sealed-bid.js +209 -0
  175. package/dist/esm/privacy/shield-app.js +127 -0
  176. package/dist/esm/schema/effects.js +145 -0
  177. package/dist/esm/schema/fiber-app.js +139 -8
  178. package/dist/esm/schema/guard-lint.js +337 -0
  179. package/dist/esm/schema/guards.js +228 -0
  180. package/dist/esm/signing.js +74 -0
  181. package/dist/esm/templates/asset-policy.js +182 -0
  182. package/dist/esm/templates/index.js +41 -0
  183. package/dist/esm/templates/machine.js +125 -0
  184. package/dist/esm/templates/migration.js +34 -0
  185. package/dist/esm/templates/state-shape.js +34 -0
  186. package/dist/esm/validation.js +1 -3
  187. package/dist/esm/verify.js +8 -2
  188. package/dist/esm/zk/commit.js +44 -0
  189. package/dist/esm/zk/guard.js +99 -0
  190. package/dist/esm/zk/index.js +19 -0
  191. package/dist/esm/zk/preimage.js +30 -0
  192. package/dist/esm/zk/prover.js +82 -0
  193. package/dist/esm/zk/registry.js +55 -0
  194. package/dist/esm/zk/types.js +25 -0
  195. package/dist/esm/zk/witness.js +15 -0
  196. package/dist/types/apps/compute/index.d.ts +176 -0
  197. package/dist/types/apps/compute/state-machines/compute-rule110.d.ts +157 -0
  198. package/dist/types/apps/compute/state-machines/index.d.ts +5 -0
  199. package/dist/types/apps/contracts/index.d.ts +81 -221
  200. package/dist/types/apps/contracts/state-machines/contract-agreement.d.ts +23 -98
  201. package/dist/types/apps/contracts/state-machines/contract-escrow.d.ts +49 -115
  202. package/dist/types/apps/contracts/state-machines/contract-universal.d.ts +4 -4
  203. package/dist/types/apps/corporate/index.d.ts +1176 -440
  204. package/dist/types/apps/corporate/state-machines/corp-board.d.ts +271 -135
  205. package/dist/types/apps/corporate/state-machines/corp-entity.d.ts +279 -74
  206. package/dist/types/apps/corporate/state-machines/corp-securities.d.ts +373 -149
  207. package/dist/types/apps/corporate/state-machines/corp-shareholders.d.ts +252 -80
  208. package/dist/types/apps/governance/index.d.ts +368 -470
  209. package/dist/types/apps/governance/state-machines/dao-multisig.d.ts +92 -107
  210. package/dist/types/apps/governance/state-machines/dao-reputation.d.ts +61 -85
  211. package/dist/types/apps/governance/state-machines/dao-single.d.ts +25 -47
  212. package/dist/types/apps/governance/state-machines/dao-token.d.ts +79 -68
  213. package/dist/types/apps/governance/state-machines/governance-simple.d.ts +95 -125
  214. package/dist/types/apps/governance/state-machines/governance-universal.d.ts +6 -6
  215. package/dist/types/apps/identity/constants.d.ts +33 -5
  216. package/dist/types/apps/identity/index.d.ts +415 -131
  217. package/dist/types/apps/identity/state-machines/identity-agent.d.ts +23 -23
  218. package/dist/types/apps/identity/state-machines/identity-oracle.d.ts +27 -98
  219. package/dist/types/apps/identity/state-machines/identity-registry.d.ts +379 -0
  220. package/dist/types/apps/identity/state-machines/identity-universal.d.ts +4 -4
  221. package/dist/types/apps/identity/state-machines/index.d.ts +1 -0
  222. package/dist/types/apps/index.d.ts +9 -5
  223. package/dist/types/apps/lending/assets.d.ts +258 -0
  224. package/dist/types/apps/lending/credit-scoring.d.ts +80 -0
  225. package/dist/types/apps/lending/eligibility.d.ts +83 -0
  226. package/dist/types/apps/lending/index.d.ts +556 -0
  227. package/dist/types/apps/lending/state-machines/index.d.ts +5 -0
  228. package/dist/types/apps/lending/state-machines/lending-zk-loan.d.ts +536 -0
  229. package/dist/types/apps/markets/index.d.ts +181 -276
  230. package/dist/types/apps/markets/state-machines/market-auction.d.ts +25 -49
  231. package/dist/types/apps/markets/state-machines/market-crowdfund.d.ts +35 -53
  232. package/dist/types/apps/markets/state-machines/market-group-buy.d.ts +35 -61
  233. package/dist/types/apps/markets/state-machines/market-prediction.d.ts +65 -86
  234. package/dist/types/apps/markets/state-machines/market-universal.d.ts +12 -12
  235. package/dist/types/apps/oracles/index.d.ts +1 -1
  236. package/dist/types/apps/privacy/index.d.ts +328 -0
  237. package/dist/types/apps/privacy/state-machines/index.d.ts +6 -0
  238. package/dist/types/apps/privacy/state-machines/mixer-ddhRing.d.ts +337 -0
  239. package/dist/types/apps/privacy/state-machines/note-pool.d.ts +196 -0
  240. package/dist/types/apps/staked-pool/assets.d.ts +53 -0
  241. package/dist/types/apps/staked-pool/base.d.ts +80 -0
  242. package/dist/types/apps/staked-pool/consumer.d.ts +29 -0
  243. package/dist/types/apps/staked-pool/index.d.ts +51 -0
  244. package/dist/types/apps/staked-pool/state-machines/index.d.ts +6 -0
  245. package/dist/types/apps/staked-pool/state-machines/staked-pool-base.d.ts +8 -0
  246. package/dist/types/apps/staked-pool/state-machines/staked-pool-oracle.d.ts +34 -0
  247. package/dist/types/generated/index.d.ts +5 -5
  248. package/dist/types/generated/openapi.d.ts +1270 -0
  249. package/dist/types/generated/ottochain/apps/contracts/v1/contract.d.ts +5 -5
  250. package/dist/types/generated/ottochain/apps/identity/v1/identity.d.ts +12 -12
  251. package/dist/types/generated/ottochain/apps/markets/v1/market.d.ts +11 -11
  252. package/dist/types/generated/ottochain/v1/fiber.d.ts +7 -0
  253. package/dist/types/index.d.ts +7 -3
  254. package/dist/types/openapi.d.ts +24 -0
  255. package/dist/types/ottochain/genesis-manifest.d.ts +11 -5
  256. package/dist/types/ottochain/index.d.ts +5 -6
  257. package/dist/types/ottochain/metagraph-client.d.ts +49 -7
  258. package/dist/types/ottochain/snapshot.d.ts +6 -6
  259. package/dist/types/ottochain/transaction.d.ts +41 -1
  260. package/dist/types/ottochain/types.d.ts +336 -31
  261. package/dist/types/privacy/index.d.ts +6 -0
  262. package/dist/types/privacy/sealed-bid.d.ts +348 -0
  263. package/dist/types/privacy/shield-app.d.ts +48 -0
  264. package/dist/types/schema/effects.d.ts +141 -0
  265. package/dist/types/schema/fiber-app.d.ts +282 -2
  266. package/dist/types/schema/guard-lint.d.ts +111 -0
  267. package/dist/types/schema/guards.d.ts +146 -0
  268. package/dist/types/signing.d.ts +45 -0
  269. package/dist/types/templates/asset-policy.d.ts +119 -0
  270. package/dist/types/templates/index.d.ts +26 -0
  271. package/dist/types/templates/machine.d.ts +139 -0
  272. package/dist/types/templates/migration.d.ts +34 -0
  273. package/dist/types/templates/state-shape.d.ts +30 -0
  274. package/dist/types/validation.d.ts +22 -217
  275. package/dist/types/verify.d.ts +4 -0
  276. package/dist/types/zk/commit.d.ts +28 -0
  277. package/dist/types/zk/guard.d.ts +46 -0
  278. package/dist/types/zk/index.d.ts +19 -0
  279. package/dist/types/zk/preimage.d.ts +10 -0
  280. package/dist/types/zk/prover.d.ts +34 -0
  281. package/dist/types/zk/registry.d.ts +34 -0
  282. package/dist/types/zk/types.d.ts +33 -0
  283. package/dist/types/zk/witness.d.ts +40 -0
  284. package/package.json +47 -15
  285. package/dist/cjs/ottochain/normalize.js +0 -186
  286. package/dist/esm/ottochain/normalize.js +0 -179
  287. package/dist/types/ottochain/normalize.d.ts +0 -79
@@ -1,159 +1,160 @@
1
- import { defineFiberApp } from "../../../schema/fiber-app.js";
1
+ import { defineFiberApp } from '../../../schema/fiber-app.js';
2
+ import { signerIsParty, signerIsAnyParty } from '../../../schema/guards.js';
2
3
  /**
3
4
  * Collective purchasing with quantity thresholds and tiered pricing.
4
5
  */
5
6
  export const marketGroupBuyDef = defineFiberApp({
6
7
  metadata: {
7
- name: "MarketGroupBuy",
8
- app: "markets",
9
- type: "groupBuy",
10
- version: "1.0.0",
11
- description: "Collective purchasing with quantity thresholds and tiered pricing",
8
+ name: 'MarketGroupBuy',
9
+ app: 'markets',
10
+ type: 'groupBuy',
11
+ version: '1.0.0',
12
+ description: 'Collective purchasing with quantity thresholds and tiered pricing',
12
13
  crossReferences: {
13
14
  vendorIdentityId: "Links to vendor's IdentityAgent",
14
- escrowId: "Links to ContractEscrow for payment custody",
15
+ escrowId: 'Links to ContractEscrow for payment custody',
15
16
  },
16
17
  },
17
18
  createSchema: {
18
- required: ["organizer", "minQuantity", "deadline"],
19
+ required: ['organizer', 'minQuantity', 'deadline'],
19
20
  properties: {
20
21
  organizer: {
21
- type: "address",
22
- description: "DAG address of group buy organizer",
22
+ type: 'address',
23
+ description: 'DAG address of group buy organizer',
23
24
  immutable: true,
24
25
  },
25
26
  minQuantity: {
26
- type: "number",
27
+ type: 'number',
27
28
  minimum: 1,
28
- description: "Minimum quantity to proceed",
29
+ description: 'Minimum quantity to proceed',
29
30
  immutable: true,
30
31
  },
31
32
  deadline: {
32
- type: "timestamp",
33
- description: "Order deadline",
33
+ type: 'timestamp',
34
+ description: 'Order deadline',
34
35
  immutable: true,
35
36
  },
36
- vendor: { type: "address", description: "DAG address of the vendor" },
37
+ vendor: { type: 'address', description: 'DAG address of the vendor' },
37
38
  maxPerBuyer: {
38
- type: "number",
39
+ type: 'number',
39
40
  minimum: 1,
40
- description: "Max quantity per buyer",
41
+ description: 'Max quantity per buyer',
41
42
  },
42
43
  priceTiers: {
43
- type: "array",
44
- description: "Quantity-based pricing tiers",
44
+ type: 'array',
45
+ description: 'Quantity-based pricing tiers',
45
46
  },
46
47
  },
47
48
  },
48
49
  stateSchema: {
49
50
  properties: {
50
- status: { type: "string", computed: true },
51
- organizer: { type: "address", immutable: true },
52
- vendor: { type: "address" },
53
- minQuantity: { type: "number", immutable: true },
54
- maxPerBuyer: { type: "number" },
55
- deadline: { type: "timestamp", immutable: true },
56
- priceTiers: { type: "array" },
57
- orders: { type: "array", computed: true },
58
- totalQuantity: { type: "number", computed: true },
59
- currentTier: { type: "number", computed: true },
60
- refundsClaimed: { type: "array", computed: true },
51
+ status: { type: 'string', computed: true },
52
+ organizer: { type: 'address', immutable: true },
53
+ vendor: { type: 'address' },
54
+ minQuantity: { type: 'number', immutable: true },
55
+ maxPerBuyer: { type: 'number' },
56
+ deadline: { type: 'timestamp', immutable: true },
57
+ priceTiers: { type: 'array' },
58
+ orders: { type: 'array', computed: true },
59
+ totalQuantity: { type: 'number', computed: true },
60
+ currentTier: { type: 'number', computed: true },
61
+ refundsClaimed: { type: 'array', computed: true },
61
62
  },
62
63
  },
63
64
  eventSchemas: {
64
- open: { description: "Open the group buy for orders" },
65
- cancel: { description: "Cancel the group buy" },
65
+ open: { description: 'Open the group buy for orders' },
66
+ cancel: { description: 'Cancel the group buy' },
66
67
  order: {
67
- description: "Place an order",
68
- required: ["quantity"],
68
+ description: 'Place an order',
69
+ required: ['quantity'],
69
70
  properties: {
70
- quantity: { type: "number", minimum: 1 },
71
- shippingInfo: { type: "object" },
71
+ quantity: { type: 'number', minimum: 1 },
72
+ shippingInfo: { type: 'object' },
72
73
  },
73
74
  },
74
- check_threshold: { description: "Check if minimum threshold reached" },
75
- finalize: { description: "Finalize after deadline" },
76
- fulfill: { description: "Mark group buy as fulfilled by vendor/organizer" },
77
- claim_refund: { description: "Claim refund if threshold not met" },
75
+ check_threshold: { description: 'Check if minimum threshold reached' },
76
+ finalize: { description: 'Finalize after deadline' },
77
+ fulfill: { description: 'Mark group buy as fulfilled by vendor/organizer' },
78
+ claim_refund: { description: 'Claim refund if threshold not met' },
78
79
  },
79
80
  states: {
80
81
  PROPOSED: {
81
- id: "PROPOSED",
82
+ id: 'PROPOSED',
82
83
  isFinal: false,
83
84
  metadata: {
84
- label: "Proposed",
85
- description: "Group buy created but not yet open",
86
- category: "initial",
85
+ label: 'Proposed',
86
+ description: 'Group buy created but not yet open',
87
+ category: 'initial',
87
88
  },
88
89
  },
89
90
  OPEN: {
90
- id: "OPEN",
91
+ id: 'OPEN',
91
92
  isFinal: false,
92
93
  metadata: {
93
- label: "Open",
94
- description: "Accepting orders",
95
- category: "active",
94
+ label: 'Open',
95
+ description: 'Accepting orders',
96
+ category: 'active',
96
97
  },
97
98
  },
98
99
  THRESHOLD_MET: {
99
- id: "THRESHOLD_MET",
100
+ id: 'THRESHOLD_MET',
100
101
  isFinal: false,
101
102
  metadata: {
102
- label: "Threshold met",
103
- description: "Minimum quantity reached, continuing for better tier",
104
- category: "active",
103
+ label: 'Threshold met',
104
+ description: 'Minimum quantity reached, continuing for better tier',
105
+ category: 'active',
105
106
  },
106
107
  },
107
108
  PROCESSING: {
108
- id: "PROCESSING",
109
+ id: 'PROCESSING',
109
110
  isFinal: false,
110
111
  metadata: {
111
- label: "Processing",
112
- description: "Order placed with vendor, awaiting fulfillment",
113
- category: "pending",
112
+ label: 'Processing',
113
+ description: 'Order placed with vendor, awaiting fulfillment',
114
+ category: 'pending',
114
115
  },
115
116
  },
116
117
  FULFILLED: {
117
- id: "FULFILLED",
118
+ id: 'FULFILLED',
118
119
  isFinal: true,
119
120
  metadata: {
120
- label: "Fulfilled",
121
- description: "All items delivered to buyers",
122
- category: "terminal",
121
+ label: 'Fulfilled',
122
+ description: 'All items delivered to buyers',
123
+ category: 'terminal',
123
124
  },
124
125
  },
125
126
  REFUNDED: {
126
- id: "REFUNDED",
127
+ id: 'REFUNDED',
127
128
  isFinal: true,
128
129
  metadata: {
129
- label: "Refunded",
130
- description: "Threshold not met, all orders refunded",
131
- category: "terminal",
130
+ label: 'Refunded',
131
+ description: 'Threshold not met, all orders refunded',
132
+ category: 'terminal',
132
133
  },
133
134
  },
134
135
  CANCELLED: {
135
- id: "CANCELLED",
136
+ id: 'CANCELLED',
136
137
  isFinal: true,
137
138
  metadata: {
138
- label: "Cancelled",
139
- description: "Group buy cancelled",
140
- category: "terminal",
139
+ label: 'Cancelled',
140
+ description: 'Group buy cancelled',
141
+ category: 'terminal',
141
142
  },
142
143
  },
143
144
  },
144
- initialState: "PROPOSED",
145
+ initialState: 'PROPOSED',
145
146
  transitions: [
146
147
  {
147
- from: "PROPOSED",
148
- to: "OPEN",
149
- eventName: "open",
150
- guard: { "===": [{ var: "event.agent" }, { var: "state.organizer" }] },
148
+ from: 'PROPOSED',
149
+ to: 'OPEN',
150
+ eventName: 'open',
151
+ guard: signerIsParty('state.organizer'),
151
152
  effect: {
152
153
  merge: [
153
- { var: "state" },
154
+ { var: 'state' },
154
155
  {
155
- status: "OPEN",
156
- openedAt: { var: "$timestamp" },
156
+ status: 'OPEN',
157
+ openedAt: { var: '$ordinal' },
157
158
  orders: [],
158
159
  totalQuantity: 0,
159
160
  currentTier: 0,
@@ -163,55 +164,52 @@ export const marketGroupBuyDef = defineFiberApp({
163
164
  dependencies: [],
164
165
  },
165
166
  {
166
- from: "PROPOSED",
167
- to: "CANCELLED",
168
- eventName: "cancel",
169
- guard: { "===": [{ var: "event.agent" }, { var: "state.organizer" }] },
167
+ from: 'PROPOSED',
168
+ to: 'CANCELLED',
169
+ eventName: 'cancel',
170
+ guard: signerIsParty('state.organizer'),
170
171
  effect: {
171
- merge: [
172
- { var: "state" },
173
- { status: "CANCELLED", cancelledAt: { var: "$timestamp" } },
174
- ],
172
+ merge: [{ var: 'state' }, { status: 'CANCELLED', cancelledAt: { var: '$ordinal' } }],
175
173
  },
176
174
  dependencies: [],
177
175
  },
178
176
  {
179
- from: "OPEN",
180
- to: "OPEN",
181
- eventName: "order",
177
+ from: 'OPEN',
178
+ to: 'OPEN',
179
+ eventName: 'order',
182
180
  guard: {
183
181
  and: [
184
- { ">": [{ var: "event.quantity" }, 0] },
182
+ { '>': [{ var: 'event.quantity' }, 0] },
185
183
  {
186
184
  or: [
187
- { "!": [{ var: "state.maxPerBuyer" }] },
185
+ { '!': [{ var: 'state.maxPerBuyer' }] },
188
186
  {
189
- "<=": [{ var: "event.quantity" }, { var: "state.maxPerBuyer" }],
187
+ '<=': [{ var: 'event.quantity' }, { var: 'state.maxPerBuyer' }],
190
188
  },
191
189
  ],
192
190
  },
193
- { "<=": [{ var: "$timestamp" }, { var: "state.deadline" }] },
191
+ { '<=': [{ var: '$ordinal' }, { var: 'state.deadline' }] },
194
192
  ],
195
193
  },
196
194
  effect: {
197
195
  merge: [
198
- { var: "state" },
196
+ { var: 'state' },
199
197
  {
200
198
  orders: {
201
199
  cat: [
202
- { var: "state.orders" },
200
+ { var: 'state.orders' },
203
201
  [
204
202
  {
205
- buyer: { var: "event.agent" },
206
- quantity: { var: "event.quantity" },
207
- shippingInfo: { var: "event.shippingInfo" },
208
- orderedAt: { var: "$timestamp" },
203
+ buyer: { var: 'event.agent' },
204
+ quantity: { var: 'event.quantity' },
205
+ shippingInfo: { var: 'event.shippingInfo' },
206
+ orderedAt: { var: '$ordinal' },
209
207
  },
210
208
  ],
211
209
  ],
212
210
  },
213
211
  totalQuantity: {
214
- "+": [{ var: "state.totalQuantity" }, { var: "event.quantity" }],
212
+ '+': [{ var: 'state.totalQuantity' }, { var: 'event.quantity' }],
215
213
  },
216
214
  },
217
215
  ],
@@ -219,31 +217,28 @@ export const marketGroupBuyDef = defineFiberApp({
219
217
  dependencies: [],
220
218
  },
221
219
  {
222
- from: "OPEN",
223
- to: "THRESHOLD_MET",
224
- eventName: "check_threshold",
220
+ from: 'OPEN',
221
+ to: 'THRESHOLD_MET',
222
+ eventName: 'check_threshold',
225
223
  guard: {
226
- ">=": [{ var: "state.totalQuantity" }, { var: "state.minQuantity" }],
224
+ '>=': [{ var: 'state.totalQuantity' }, { var: 'state.minQuantity' }],
227
225
  },
228
226
  effect: {
229
227
  merge: [
230
- { var: "state" },
228
+ { var: 'state' },
231
229
  {
232
- status: "THRESHOLD_MET",
233
- thresholdMetAt: { var: "$timestamp" },
230
+ status: 'THRESHOLD_MET',
231
+ thresholdMetAt: { var: '$ordinal' },
234
232
  currentTier: {
235
233
  reduce: [
236
- { var: "state.priceTiers" },
234
+ { var: 'state.priceTiers' },
237
235
  {
238
236
  if: [
239
237
  {
240
- "<=": [
241
- { var: "current.minQuantity" },
242
- { var: "state.totalQuantity" },
243
- ],
238
+ '<=': [{ var: 'current.minQuantity' }, { var: 'state.totalQuantity' }],
244
239
  },
245
- { var: "current.tier" },
246
- { var: "accumulator" },
240
+ { var: 'current.tier' },
241
+ { var: 'accumulator' },
247
242
  ],
248
243
  },
249
244
  0,
@@ -255,56 +250,50 @@ export const marketGroupBuyDef = defineFiberApp({
255
250
  dependencies: [],
256
251
  },
257
252
  {
258
- from: "THRESHOLD_MET",
259
- to: "THRESHOLD_MET",
260
- eventName: "order",
253
+ from: 'THRESHOLD_MET',
254
+ to: 'THRESHOLD_MET',
255
+ eventName: 'order',
261
256
  guard: {
262
- and: [
263
- { ">": [{ var: "event.quantity" }, 0] },
264
- { "<=": [{ var: "$timestamp" }, { var: "state.deadline" }] },
265
- ],
257
+ and: [{ '>': [{ var: 'event.quantity' }, 0] }, { '<=': [{ var: '$ordinal' }, { var: 'state.deadline' }] }],
266
258
  },
267
259
  effect: {
268
260
  merge: [
269
- { var: "state" },
261
+ { var: 'state' },
270
262
  {
271
263
  orders: {
272
264
  cat: [
273
- { var: "state.orders" },
265
+ { var: 'state.orders' },
274
266
  [
275
267
  {
276
- buyer: { var: "event.agent" },
277
- quantity: { var: "event.quantity" },
278
- shippingInfo: { var: "event.shippingInfo" },
279
- orderedAt: { var: "$timestamp" },
268
+ buyer: { var: 'event.agent' },
269
+ quantity: { var: 'event.quantity' },
270
+ shippingInfo: { var: 'event.shippingInfo' },
271
+ orderedAt: { var: '$ordinal' },
280
272
  },
281
273
  ],
282
274
  ],
283
275
  },
284
276
  totalQuantity: {
285
- "+": [{ var: "state.totalQuantity" }, { var: "event.quantity" }],
277
+ '+': [{ var: 'state.totalQuantity' }, { var: 'event.quantity' }],
286
278
  },
287
279
  currentTier: {
288
280
  reduce: [
289
- { var: "state.priceTiers" },
281
+ { var: 'state.priceTiers' },
290
282
  {
291
283
  if: [
292
284
  {
293
- "<=": [
294
- { var: "current.minQuantity" },
285
+ '<=': [
286
+ { var: 'current.minQuantity' },
295
287
  {
296
- "+": [
297
- { var: "state.totalQuantity" },
298
- { var: "event.quantity" },
299
- ],
288
+ '+': [{ var: 'state.totalQuantity' }, { var: 'event.quantity' }],
300
289
  },
301
290
  ],
302
291
  },
303
- { var: "current.tier" },
304
- { var: "accumulator" },
292
+ { var: 'current.tier' },
293
+ { var: 'accumulator' },
305
294
  ],
306
295
  },
307
- { var: "state.currentTier" },
296
+ { var: 'state.currentTier' },
308
297
  ],
309
298
  },
310
299
  },
@@ -313,24 +302,20 @@ export const marketGroupBuyDef = defineFiberApp({
313
302
  dependencies: [],
314
303
  },
315
304
  {
316
- from: "THRESHOLD_MET",
317
- to: "PROCESSING",
318
- eventName: "finalize",
319
- guard: { ">=": [{ var: "$timestamp" }, { var: "state.deadline" }] },
305
+ from: 'THRESHOLD_MET',
306
+ to: 'PROCESSING',
307
+ eventName: 'finalize',
308
+ guard: { '>=': [{ var: '$ordinal' }, { var: 'state.deadline' }] },
320
309
  effect: {
321
310
  merge: [
322
- { var: "state" },
311
+ { var: 'state' },
323
312
  {
324
- status: "PROCESSING",
325
- finalizedAt: { var: "$timestamp" },
326
- finalTier: { var: "state.currentTier" },
313
+ status: 'PROCESSING',
314
+ finalizedAt: { var: '$ordinal' },
315
+ finalTier: { var: 'state.currentTier' },
327
316
  finalPricePerUnit: {
328
317
  var: {
329
- cat: [
330
- "state.priceTiers.",
331
- { var: "state.currentTier" },
332
- ".pricePerUnit",
333
- ],
318
+ cat: ['state.priceTiers.', { var: 'state.currentTier' }, '.pricePerUnit'],
334
319
  },
335
320
  },
336
321
  },
@@ -339,74 +324,68 @@ export const marketGroupBuyDef = defineFiberApp({
339
324
  dependencies: [],
340
325
  },
341
326
  {
342
- from: "PROCESSING",
343
- to: "FULFILLED",
344
- eventName: "fulfill",
345
- guard: {
346
- or: [
347
- { "===": [{ var: "event.agent" }, { var: "state.vendor" }] },
348
- { "===": [{ var: "event.agent" }, { var: "state.organizer" }] },
349
- ],
350
- },
327
+ from: 'PROCESSING',
328
+ to: 'FULFILLED',
329
+ eventName: 'fulfill',
330
+ guard: signerIsAnyParty(['state.vendor', 'state.organizer']),
351
331
  effect: {
352
332
  merge: [
353
- { var: "state" },
333
+ { var: 'state' },
354
334
  {
355
- status: "FULFILLED",
356
- fulfilledAt: { var: "$timestamp" },
357
- trackingInfo: { var: "event.trackingInfo" },
335
+ status: 'FULFILLED',
336
+ fulfilledAt: { var: '$ordinal' },
337
+ trackingInfo: { var: 'event.trackingInfo' },
358
338
  },
359
339
  ],
360
340
  },
361
341
  dependencies: [],
362
342
  },
363
343
  {
364
- from: "OPEN",
365
- to: "REFUNDED",
366
- eventName: "finalize",
344
+ from: 'OPEN',
345
+ to: 'REFUNDED',
346
+ eventName: 'finalize',
367
347
  guard: {
368
348
  and: [
369
349
  {
370
- "<": [{ var: "state.totalQuantity" }, { var: "state.minQuantity" }],
350
+ '<': [{ var: 'state.totalQuantity' }, { var: 'state.minQuantity' }],
371
351
  },
372
- { ">=": [{ var: "$timestamp" }, { var: "state.deadline" }] },
352
+ { '>=': [{ var: '$ordinal' }, { var: 'state.deadline' }] },
373
353
  ],
374
354
  },
375
355
  effect: {
376
356
  merge: [
377
- { var: "state" },
357
+ { var: 'state' },
378
358
  {
379
- status: "REFUNDED",
380
- refundedAt: { var: "$timestamp" },
381
- reason: "threshold_not_met",
359
+ status: 'REFUNDED',
360
+ refundedAt: { var: '$ordinal' },
361
+ reason: 'threshold_not_met',
382
362
  },
383
363
  ],
384
364
  },
385
365
  dependencies: [],
386
366
  },
387
367
  {
388
- from: "REFUNDED",
389
- to: "REFUNDED",
390
- eventName: "claim_refund",
368
+ from: 'REFUNDED',
369
+ to: 'REFUNDED',
370
+ eventName: 'claim_refund',
391
371
  guard: {
392
372
  and: [
393
373
  {
394
- ">": [
374
+ '>': [
395
375
  {
396
- size: {
397
- filter: [
398
- { var: "state.orders" },
399
- { "===": [{ var: "buyer" }, { var: "event.agent" }] },
400
- ],
401
- },
376
+ length: [
377
+ {
378
+ filter: [{ var: 'state.orders' }, { '===': [{ var: 'buyer' }, { var: 'event.agent' }] }],
379
+ },
380
+ ],
402
381
  },
403
382
  0,
404
383
  ],
405
384
  },
406
385
  {
407
- "!": [
386
+ '!': [
408
387
  {
409
- in: [{ var: "event.agent" }, { var: "state.refundsClaimed" }],
388
+ in: [{ var: 'event.agent' }, { var: 'state.refundsClaimed' }],
410
389
  },
411
390
  ],
412
391
  },
@@ -414,10 +393,10 @@ export const marketGroupBuyDef = defineFiberApp({
414
393
  },
415
394
  effect: {
416
395
  merge: [
417
- { var: "state" },
396
+ { var: 'state' },
418
397
  {
419
398
  refundsClaimed: {
420
- cat: [{ var: "state.refundsClaimed" }, [{ var: "event.agent" }]],
399
+ cat: [{ var: 'state.refundsClaimed' }, [{ var: 'event.agent' }]],
421
400
  },
422
401
  },
423
402
  ],