@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
@@ -2,186 +2,171 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.daoReputationDef = void 0;
4
4
  const fiber_app_js_1 = require("../../../schema/fiber-app.js");
5
+ const guards_js_1 = require("../../../schema/guards.js");
5
6
  /**
6
7
  * Reputation-based governance. Minimum reputation required for participation.
7
8
  */
8
9
  exports.daoReputationDef = (0, fiber_app_js_1.defineFiberApp)({
9
10
  metadata: {
10
- name: "DAOReputation",
11
- app: "governance",
12
- type: "daoReputation",
13
- version: "1.0.0",
14
- description: "Reputation-based governance. Minimum reputation required for participation.",
15
- category: "governance/dao",
11
+ name: 'DAOReputation',
12
+ app: 'governance',
13
+ type: 'daoReputation',
14
+ version: '1.0.0',
15
+ description: 'Reputation-based governance. Minimum reputation required for participation.',
16
+ category: 'governance/dao',
16
17
  crossReferences: {
17
- Identity: "member verification",
18
- Reputation: "threshold checks",
19
- Contract: "action execution",
18
+ Identity: 'member verification',
19
+ Reputation: 'threshold checks',
20
+ Contract: 'action execution',
20
21
  },
21
22
  },
22
23
  createSchema: {
23
- required: [
24
- "memberThreshold",
25
- "voteThreshold",
26
- "proposeThreshold",
27
- "quorum",
28
- "votingPeriodMs",
29
- ],
24
+ required: ['memberThreshold', 'voteThreshold', 'proposeThreshold', 'quorum', 'votingPeriodMs'],
30
25
  properties: {
31
26
  memberThreshold: {
32
- type: "number",
33
- description: "Min reputation to join as a member",
27
+ type: 'number',
28
+ description: 'Min reputation to join as a member',
34
29
  },
35
- voteThreshold: { type: "number", description: "Min reputation to vote" },
30
+ voteThreshold: { type: 'number', description: 'Min reputation to vote' },
36
31
  proposeThreshold: {
37
- type: "number",
38
- description: "Min reputation to submit a proposal",
32
+ type: 'number',
33
+ description: 'Min reputation to submit a proposal',
39
34
  },
40
35
  quorum: {
41
- type: "number",
42
- description: "Min total votes (count) to execute",
36
+ type: 'number',
37
+ description: 'Min total votes (count) to execute',
43
38
  },
44
39
  votingPeriodMs: {
45
- type: "number",
46
- description: "Voting window in milliseconds",
40
+ type: 'number',
41
+ description: 'Voting window in milliseconds',
47
42
  },
48
43
  },
49
44
  },
50
45
  stateSchema: {
51
46
  properties: {
52
- members: { type: "array", computed: true },
53
- memberJoinedAt: { type: "object", computed: true },
54
- memberThreshold: { type: "number" },
55
- voteThreshold: { type: "number" },
56
- proposeThreshold: { type: "number" },
57
- quorum: { type: "number" },
58
- votingPeriodMs: { type: "number" },
59
- proposal: { type: "object" },
60
- votes: { type: "object", computed: true },
61
- history: { type: "array", computed: true },
47
+ members: { type: 'array', computed: true },
48
+ memberJoinedAt: { type: 'object', computed: true },
49
+ memberThreshold: { type: 'number' },
50
+ voteThreshold: { type: 'number' },
51
+ proposeThreshold: { type: 'number' },
52
+ quorum: { type: 'number' },
53
+ votingPeriodMs: { type: 'number' },
54
+ proposal: { type: 'object' },
55
+ votes: { type: 'object', computed: true },
56
+ history: { type: 'array', computed: true },
62
57
  },
63
58
  },
64
59
  eventSchemas: {
65
60
  propose: {
66
- description: "Submit a proposal (requires >= proposeThreshold reputation)",
67
- required: [
68
- "proposalId",
69
- "title",
70
- "description",
71
- "actionType",
72
- "payload",
73
- "agentReputation",
74
- ],
61
+ description: 'Submit a proposal (requires >= proposeThreshold reputation)',
62
+ required: ['proposalId', 'title', 'description', 'actionType', 'payload', 'agentReputation'],
75
63
  properties: {
76
- agent: { type: "address" },
77
- agentReputation: { type: "number" },
78
- proposalId: { type: "string" },
79
- title: { type: "string" },
80
- description: { type: "string" },
81
- actionType: { type: "string" },
82
- payload: { type: "object" },
64
+ agent: { type: 'address' },
65
+ agentReputation: { type: 'number' },
66
+ proposalId: { type: 'string' },
67
+ title: { type: 'string' },
68
+ description: { type: 'string' },
69
+ actionType: { type: 'string' },
70
+ payload: { type: 'object' },
83
71
  },
84
72
  },
85
73
  vote: {
86
- description: "Cast a vote (requires >= voteThreshold, no double-vote, within window)",
87
- required: ["vote", "agentReputation"],
74
+ description: 'Cast a vote (requires >= voteThreshold, no double-vote, within window)',
75
+ required: ['vote', 'agentReputation'],
88
76
  properties: {
89
- agent: { type: "address" },
90
- agentReputation: { type: "number" },
91
- vote: { type: "string", description: '"for" | "against" | "abstain"' },
77
+ agent: { type: 'address' },
78
+ agentReputation: { type: 'number' },
79
+ vote: { type: 'string', description: '"for" | "against" | "abstain"' },
92
80
  },
93
81
  },
94
82
  execute: {
95
- description: "Execute a passing proposal after voting ends",
83
+ description: 'Execute a passing proposal after voting ends',
96
84
  properties: {},
97
85
  },
98
86
  reject: {
99
- description: "Formally reject a failed proposal",
87
+ description: 'Formally reject a failed proposal',
100
88
  properties: {},
101
89
  },
102
90
  join: {
103
- description: "Join the DAO (requires >= memberThreshold reputation)",
104
- required: ["agentReputation"],
91
+ description: 'Join the DAO (requires >= memberThreshold reputation)',
92
+ required: ['agentReputation'],
105
93
  properties: {
106
- agent: { type: "address" },
107
- agentReputation: { type: "number" },
94
+ agent: { type: 'address' },
95
+ agentReputation: { type: 'number' },
108
96
  },
109
97
  },
110
98
  leave: {
111
- description: "Leave the DAO voluntarily",
99
+ description: 'Leave the DAO voluntarily',
112
100
  properties: {
113
- agent: { type: "address" },
101
+ agent: { type: 'address' },
114
102
  },
115
103
  },
116
104
  propose_threshold_change: {
117
- description: "Propose changing reputation thresholds",
118
- required: ["proposalId", "agentReputation"],
105
+ description: 'Propose changing reputation thresholds',
106
+ required: ['proposalId', 'agentReputation'],
119
107
  properties: {
120
- agent: { type: "address" },
121
- agentReputation: { type: "number" },
122
- proposalId: { type: "string" },
123
- memberThreshold: { type: "number" },
124
- voteThreshold: { type: "number" },
125
- proposeThreshold: { type: "number" },
108
+ agent: { type: 'address' },
109
+ agentReputation: { type: 'number' },
110
+ proposalId: { type: 'string' },
111
+ memberThreshold: { type: 'number' },
112
+ voteThreshold: { type: 'number' },
113
+ proposeThreshold: { type: 'number' },
126
114
  },
127
115
  },
128
116
  },
129
117
  states: {
130
118
  ACTIVE: {
131
- id: "ACTIVE",
119
+ id: 'ACTIVE',
132
120
  isFinal: false,
133
121
  metadata: {
134
- label: "Active",
135
- description: "DAO is idle and ready to accept a proposal",
136
- category: "initial",
122
+ label: 'Active',
123
+ description: 'DAO is idle and ready to accept a proposal',
124
+ category: 'initial',
137
125
  },
138
126
  },
139
127
  VOTING: {
140
- id: "VOTING",
128
+ id: 'VOTING',
141
129
  isFinal: false,
142
130
  metadata: {
143
- label: "Voting",
144
- description: "Members vote with reputation-weighted power",
145
- category: "pending",
131
+ label: 'Voting',
132
+ description: 'Members vote with reputation-weighted power',
133
+ category: 'pending',
146
134
  },
147
135
  },
148
136
  DISSOLVED: {
149
- id: "DISSOLVED",
137
+ id: 'DISSOLVED',
150
138
  isFinal: true,
151
139
  metadata: {
152
- label: "Dissolved",
153
- description: "Reputation DAO dissolved (terminal)",
154
- category: "terminal",
140
+ label: 'Dissolved',
141
+ description: 'Reputation DAO dissolved (terminal)',
142
+ category: 'terminal',
155
143
  },
156
144
  },
157
145
  },
158
- initialState: "ACTIVE",
146
+ initialState: 'ACTIVE',
159
147
  transitions: [
160
148
  // ACTIVE → VOTING: propose (reputation check)
161
149
  {
162
- from: "ACTIVE",
163
- to: "VOTING",
164
- eventName: "propose",
150
+ from: 'ACTIVE',
151
+ to: 'VOTING',
152
+ eventName: 'propose',
165
153
  guard: {
166
- ">=": [
167
- { var: "event.agentReputation" },
168
- { var: "state.proposeThreshold" },
169
- ],
154
+ '>=': [{ var: 'event.agentReputation' }, { var: 'state.proposeThreshold' }],
170
155
  },
171
156
  effect: {
172
157
  merge: [
173
- { var: "state" },
158
+ { var: 'state' },
174
159
  {
175
160
  proposal: {
176
- id: { var: "event.proposalId" },
177
- title: { var: "event.title" },
178
- description: { var: "event.description" },
179
- actionType: { var: "event.actionType" },
180
- payload: { var: "event.payload" },
181
- proposer: { var: "event.agent" },
182
- proposedAt: { var: "$timestamp" },
161
+ id: { var: 'event.proposalId' },
162
+ title: { var: 'event.title' },
163
+ description: { var: 'event.description' },
164
+ actionType: { var: 'event.actionType' },
165
+ payload: { var: 'event.payload' },
166
+ proposer: { var: 'event.agent' },
167
+ proposedAt: { var: '$ordinal' },
183
168
  deadline: {
184
- "+": [{ var: "$timestamp" }, { var: "state.votingPeriodMs" }],
169
+ '+': [{ var: '$ordinal' }, { var: 'state.votingPeriodMs' }],
185
170
  },
186
171
  },
187
172
  votes: { for: [], against: [], abstain: [] },
@@ -192,76 +177,54 @@ exports.daoReputationDef = (0, fiber_app_js_1.defineFiberApp)({
192
177
  },
193
178
  // VOTING → VOTING: vote (reputation check, no double-vote, within window)
194
179
  {
195
- from: "VOTING",
196
- to: "VOTING",
197
- eventName: "vote",
180
+ from: 'VOTING',
181
+ to: 'VOTING',
182
+ eventName: 'vote',
198
183
  guard: {
199
184
  and: [
200
185
  {
201
- ">=": [
202
- { var: "event.agentReputation" },
203
- { var: "state.voteThreshold" },
204
- ],
205
- },
206
- {
207
- "!": [{ in: [{ var: "event.agent" }, { var: "state.votes.for" }] }],
208
- },
209
- {
210
- "!": [
211
- { in: [{ var: "event.agent" }, { var: "state.votes.against" }] },
212
- ],
213
- },
214
- {
215
- "!": [
216
- { in: [{ var: "event.agent" }, { var: "state.votes.abstain" }] },
217
- ],
186
+ '>=': [{ var: 'event.agentReputation' }, { var: 'state.voteThreshold' }],
218
187
  },
219
- { "<=": [{ var: "$timestamp" }, { var: "state.proposal.deadline" }] },
188
+ { '!': [(0, guards_js_1.signerInSet)('state.votes.for')] },
189
+ { '!': [(0, guards_js_1.signerInSet)('state.votes.against')] },
190
+ { '!': [(0, guards_js_1.signerInSet)('state.votes.abstain')] },
191
+ { '<=': [{ var: '$ordinal' }, { var: 'state.proposal.deadline' }] },
220
192
  ],
221
193
  },
222
194
  effect: {
223
195
  merge: [
224
- { var: "state" },
196
+ { var: 'state' },
225
197
  {
226
198
  votes: {
227
199
  if: [
228
- { "===": [{ var: "event.vote" }, "for"] },
200
+ { '===': [{ var: 'event.vote' }, 'for'] },
229
201
  {
230
202
  merge: [
231
- { var: "state.votes" },
203
+ { var: 'state.votes' },
232
204
  {
233
205
  for: {
234
- cat: [
235
- { var: "state.votes.for" },
236
- [{ var: "event.agent" }],
237
- ],
206
+ cat: [{ var: 'state.votes.for' }, [{ var: 'event.agent' }]],
238
207
  },
239
208
  },
240
209
  ],
241
210
  },
242
- { "===": [{ var: "event.vote" }, "against"] },
211
+ { '===': [{ var: 'event.vote' }, 'against'] },
243
212
  {
244
213
  merge: [
245
- { var: "state.votes" },
214
+ { var: 'state.votes' },
246
215
  {
247
216
  against: {
248
- cat: [
249
- { var: "state.votes.against" },
250
- [{ var: "event.agent" }],
251
- ],
217
+ cat: [{ var: 'state.votes.against' }, [{ var: 'event.agent' }]],
252
218
  },
253
219
  },
254
220
  ],
255
221
  },
256
222
  {
257
223
  merge: [
258
- { var: "state.votes" },
224
+ { var: 'state.votes' },
259
225
  {
260
226
  abstain: {
261
- cat: [
262
- { var: "state.votes.abstain" },
263
- [{ var: "event.agent" }],
264
- ],
227
+ cat: [{ var: 'state.votes.abstain' }, [{ var: 'event.agent' }]],
265
228
  },
266
229
  },
267
230
  ],
@@ -275,87 +238,81 @@ exports.daoReputationDef = (0, fiber_app_js_1.defineFiberApp)({
275
238
  },
276
239
  // VOTING → ACTIVE: execute (voting ended, for > against, quorum met)
277
240
  {
278
- from: "VOTING",
279
- to: "ACTIVE",
280
- eventName: "execute",
241
+ from: 'VOTING',
242
+ to: 'ACTIVE',
243
+ eventName: 'execute',
244
+ // A2 fix: votes.for/against/abstain are arrays of voter addresses; count with
245
+ // `length` (size is not a JLVM opcode).
281
246
  guard: {
282
247
  and: [
283
- { ">": [{ var: "$timestamp" }, { var: "state.proposal.deadline" }] },
248
+ { '>': [{ var: '$ordinal' }, { var: 'state.proposal.deadline' }] },
284
249
  {
285
- ">": [
286
- { size: { var: "state.votes.for" } },
287
- { size: { var: "state.votes.against" } },
288
- ],
250
+ '>': [{ length: [{ var: 'state.votes.for' }] }, { length: [{ var: 'state.votes.against' }] }],
289
251
  },
290
252
  {
291
- ">=": [
253
+ '>=': [
292
254
  {
293
- "+": [
294
- { size: { var: "state.votes.for" } },
295
- { size: { var: "state.votes.against" } },
296
- ],
255
+ '+': [{ length: [{ var: 'state.votes.for' }] }, { length: [{ var: 'state.votes.against' }] }],
297
256
  },
298
- { var: "state.quorum" },
257
+ { var: 'state.quorum' },
299
258
  ],
300
259
  },
301
260
  ],
302
261
  },
303
262
  effect: {
304
263
  merge: [
305
- { var: "state" },
264
+ { var: 'state' },
306
265
  {
307
266
  history: {
308
267
  cat: [
309
- { var: "state.history" },
268
+ { var: 'state.history' },
310
269
  [
311
270
  {
312
- type: "executed",
313
- proposal: { var: "state.proposal" },
314
- votes: { var: "state.votes" },
315
- at: { var: "$timestamp" },
271
+ type: 'executed',
272
+ proposal: { var: 'state.proposal' },
273
+ votes: { var: 'state.votes' },
274
+ at: { var: '$ordinal' },
316
275
  },
317
276
  ],
318
277
  ],
319
278
  },
320
279
  proposal: null,
321
280
  votes: null,
281
+ // A3 fix: transition-level `emits` is dropped by the chain; emit from INSIDE the effect
282
+ // under the reserved `_emit` key (extracted as an EmittedEvent, stripped from state).
283
+ _emit: [
284
+ {
285
+ name: 'proposal_executed',
286
+ data: { action: 'increase', agents: { var: 'state.votes.for' } },
287
+ destination: 'Reputation',
288
+ },
289
+ ],
322
290
  },
323
291
  ],
324
292
  },
325
- emits: [
326
- {
327
- event: "proposal_executed",
328
- to: "Reputation",
329
- payload: { action: "increase", agents: { var: "state.votes.for" } },
330
- },
331
- ],
332
293
  dependencies: [],
333
294
  },
334
295
  // VOTING → ACTIVE: reject (voting ended, for <= against or quorum not met)
335
296
  {
336
- from: "VOTING",
337
- to: "ACTIVE",
338
- eventName: "reject",
297
+ from: 'VOTING',
298
+ to: 'ACTIVE',
299
+ eventName: 'reject',
300
+ // A2 fix: count the array-shaped vote tallies with `length` (size is not a JLVM
301
+ // opcode).
339
302
  guard: {
340
303
  and: [
341
- { ">": [{ var: "$timestamp" }, { var: "state.proposal.deadline" }] },
304
+ { '>': [{ var: '$ordinal' }, { var: 'state.proposal.deadline' }] },
342
305
  {
343
306
  or: [
344
307
  {
345
- "<=": [
346
- { size: { var: "state.votes.for" } },
347
- { size: { var: "state.votes.against" } },
348
- ],
308
+ '<=': [{ length: [{ var: 'state.votes.for' }] }, { length: [{ var: 'state.votes.against' }] }],
349
309
  },
350
310
  {
351
- "<": [
311
+ '<': [
352
312
  {
353
- "+": [
354
- { size: { var: "state.votes.for" } },
355
- { size: { var: "state.votes.against" } },
356
- ],
313
+ '+': [{ length: [{ var: 'state.votes.for' }] }, { length: [{ var: 'state.votes.against' }] }],
357
314
  },
358
- { var: "state.quorum" },
315
+ { var: 'state.quorum' },
359
316
  ],
360
317
  },
361
318
  ],
@@ -364,17 +321,17 @@ exports.daoReputationDef = (0, fiber_app_js_1.defineFiberApp)({
364
321
  },
365
322
  effect: {
366
323
  merge: [
367
- { var: "state" },
324
+ { var: 'state' },
368
325
  {
369
326
  history: {
370
327
  cat: [
371
- { var: "state.history" },
328
+ { var: 'state.history' },
372
329
  [
373
330
  {
374
- type: "rejected",
375
- proposal: { var: "state.proposal" },
376
- votes: { var: "state.votes" },
377
- at: { var: "$timestamp" },
331
+ type: 'rejected',
332
+ proposal: { var: 'state.proposal' },
333
+ votes: { var: 'state.votes' },
334
+ at: { var: '$ordinal' },
378
335
  },
379
336
  ],
380
337
  ],
@@ -388,33 +345,35 @@ exports.daoReputationDef = (0, fiber_app_js_1.defineFiberApp)({
388
345
  },
389
346
  // ACTIVE → ACTIVE: join (reputation check, not already member)
390
347
  {
391
- from: "ACTIVE",
392
- to: "ACTIVE",
393
- eventName: "join",
348
+ from: 'ACTIVE',
349
+ to: 'ACTIVE',
350
+ eventName: 'join',
351
+ // S1/A2: bind event.agent to a verified signer (actorIsSigner) so the member is appended to the
352
+ // array and keyed into memberJoinedAt under a CHAIN-VERIFIED address (set is the rc.5 map-write
353
+ // opcode), and dedup on that bound actor.
354
+ // TODO(#24): event.agentReputation is self-asserted. Replace the reputation clause with
355
+ // signerHasReputation(registryReputationPath(<registryDep>), "state.memberThreshold") once
356
+ // runtime-updatable dependencies (#24) let a std-app bind the identity-registry instance — the
357
+ // same gate as corp-board's removal-resolution. The registry foundation + read helper already
358
+ // exist (src/apps/identity/state-machines/identity-registry.ts, guards.signerHasReputation).
394
359
  guard: {
395
360
  and: [
361
+ (0, guards_js_1.actorIsSigner)(),
396
362
  {
397
- ">=": [
398
- { var: "event.agentReputation" },
399
- { var: "state.memberThreshold" },
400
- ],
363
+ '>=': [{ var: 'event.agentReputation' }, { var: 'state.memberThreshold' }],
401
364
  },
402
- { "!": [{ in: [{ var: "event.agent" }, { var: "state.members" }] }] },
365
+ { '!': [{ in: [{ var: 'event.agent' }, { var: 'state.members' }] }] },
403
366
  ],
404
367
  },
405
368
  effect: {
406
369
  merge: [
407
- { var: "state" },
370
+ { var: 'state' },
408
371
  {
409
372
  members: {
410
- cat: [{ var: "state.members" }, [{ var: "event.agent" }]],
373
+ cat: [{ var: 'state.members' }, [{ var: 'event.agent' }]],
411
374
  },
412
375
  memberJoinedAt: {
413
- setKey: [
414
- { var: "state.memberJoinedAt" },
415
- { var: "event.agent" },
416
- { var: "$timestamp" },
417
- ],
376
+ set: [{ var: 'state.memberJoinedAt' }, { var: 'event.agent' }, { var: '$ordinal' }],
418
377
  },
419
378
  },
420
379
  ],
@@ -423,19 +382,16 @@ exports.daoReputationDef = (0, fiber_app_js_1.defineFiberApp)({
423
382
  },
424
383
  // ACTIVE → ACTIVE: leave (member only)
425
384
  {
426
- from: "ACTIVE",
427
- to: "ACTIVE",
428
- eventName: "leave",
429
- guard: { in: [{ var: "event.agent" }, { var: "state.members" }] },
385
+ from: 'ACTIVE',
386
+ to: 'ACTIVE',
387
+ eventName: 'leave',
388
+ guard: (0, guards_js_1.signerInSet)('state.members'),
430
389
  effect: {
431
390
  merge: [
432
- { var: "state" },
391
+ { var: 'state' },
433
392
  {
434
393
  members: {
435
- filter: [
436
- { var: "state.members" },
437
- { "!==": [{ var: "" }, { var: "event.agent" }] },
438
- ],
394
+ filter: [{ var: 'state.members' }, { '!==': [{ var: '' }, { var: 'event.agent' }] }],
439
395
  },
440
396
  },
441
397
  ],
@@ -444,32 +400,29 @@ exports.daoReputationDef = (0, fiber_app_js_1.defineFiberApp)({
444
400
  },
445
401
  // ACTIVE → VOTING: propose_threshold_change
446
402
  {
447
- from: "ACTIVE",
448
- to: "VOTING",
449
- eventName: "propose_threshold_change",
403
+ from: 'ACTIVE',
404
+ to: 'VOTING',
405
+ eventName: 'propose_threshold_change',
450
406
  guard: {
451
- ">=": [
452
- { var: "event.agentReputation" },
453
- { var: "state.proposeThreshold" },
454
- ],
407
+ '>=': [{ var: 'event.agentReputation' }, { var: 'state.proposeThreshold' }],
455
408
  },
456
409
  effect: {
457
410
  merge: [
458
- { var: "state" },
411
+ { var: 'state' },
459
412
  {
460
413
  proposal: {
461
- id: { var: "event.proposalId" },
462
- title: "Threshold Change",
463
- actionType: "threshold_change",
414
+ id: { var: 'event.proposalId' },
415
+ title: 'Threshold Change',
416
+ actionType: 'threshold_change',
464
417
  payload: {
465
- memberThreshold: { var: "event.memberThreshold" },
466
- voteThreshold: { var: "event.voteThreshold" },
467
- proposeThreshold: { var: "event.proposeThreshold" },
418
+ memberThreshold: { var: 'event.memberThreshold' },
419
+ voteThreshold: { var: 'event.voteThreshold' },
420
+ proposeThreshold: { var: 'event.proposeThreshold' },
468
421
  },
469
- proposer: { var: "event.agent" },
470
- proposedAt: { var: "$timestamp" },
422
+ proposer: { var: 'event.agent' },
423
+ proposedAt: { var: '$ordinal' },
471
424
  deadline: {
472
- "+": [{ var: "$timestamp" }, { var: "state.votingPeriodMs" }],
425
+ '+': [{ var: '$ordinal' }, { var: 'state.votingPeriodMs' }],
473
426
  },
474
427
  },
475
428
  votes: { for: [], against: [], abstain: [] },