@ottochain/sdk 2.4.0 → 2.6.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 (227) 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 +1 -1
  5. package/dist/cjs/apps/contracts/state-machines/contract-agreement.js +126 -148
  6. package/dist/cjs/apps/contracts/state-machines/contract-escrow.js +153 -174
  7. package/dist/cjs/apps/contracts/state-machines/contract-universal.js +46 -58
  8. package/dist/cjs/apps/corporate/state-machines/corp-board.js +415 -481
  9. package/dist/cjs/apps/corporate/state-machines/corp-entity.js +368 -440
  10. package/dist/cjs/apps/corporate/state-machines/corp-securities.js +532 -647
  11. package/dist/cjs/apps/corporate/state-machines/corp-shareholders.js +499 -603
  12. package/dist/cjs/apps/governance/index.js +7 -7
  13. package/dist/cjs/apps/governance/state-machines/dao-multisig.js +170 -209
  14. package/dist/cjs/apps/governance/state-machines/dao-reputation.js +161 -214
  15. package/dist/cjs/apps/governance/state-machines/dao-single.js +92 -92
  16. package/dist/cjs/apps/governance/state-machines/dao-token.js +169 -223
  17. package/dist/cjs/apps/governance/state-machines/governance-simple.js +185 -217
  18. package/dist/cjs/apps/governance/state-machines/governance-universal.js +64 -64
  19. package/dist/cjs/apps/identity/constants.js +16 -24
  20. package/dist/cjs/apps/identity/index.js +1 -1
  21. package/dist/cjs/apps/identity/state-machines/identity-agent.js +124 -158
  22. package/dist/cjs/apps/identity/state-machines/identity-oracle.js +151 -169
  23. package/dist/cjs/apps/identity/state-machines/identity-registry.js +89 -115
  24. package/dist/cjs/apps/identity/state-machines/identity-universal.js +51 -57
  25. package/dist/cjs/apps/index.js +4 -1
  26. package/dist/cjs/apps/lending/assets.js +41 -17
  27. package/dist/cjs/apps/lending/credit-scoring.js +4 -4
  28. package/dist/cjs/apps/lending/eligibility.js +9 -25
  29. package/dist/cjs/apps/lending/index.js +1 -1
  30. package/dist/cjs/apps/lending/state-machines/lending-zk-loan.js +177 -156
  31. package/dist/cjs/apps/markets/index.js +1 -1
  32. package/dist/cjs/apps/markets/state-machines/market-auction.js +115 -134
  33. package/dist/cjs/apps/markets/state-machines/market-crowdfund.js +122 -137
  34. package/dist/cjs/apps/markets/state-machines/market-group-buy.js +158 -177
  35. package/dist/cjs/apps/markets/state-machines/market-prediction.js +193 -227
  36. package/dist/cjs/apps/markets/state-machines/market-universal.js +65 -80
  37. package/dist/cjs/apps/oracles/index.js +1 -1
  38. package/dist/cjs/apps/privacy/index.js +67 -0
  39. package/dist/cjs/apps/privacy/state-machines/index.js +17 -0
  40. package/dist/cjs/apps/privacy/state-machines/mixer-ddhRing.js +286 -0
  41. package/dist/cjs/apps/privacy/state-machines/note-pool.js +476 -0
  42. package/dist/cjs/apps/staked-pool/assets.js +103 -0
  43. package/dist/cjs/apps/staked-pool/base.js +498 -0
  44. package/dist/cjs/apps/staked-pool/consumer.js +55 -0
  45. package/dist/cjs/apps/staked-pool/index.js +83 -0
  46. package/dist/cjs/apps/staked-pool/state-machines/index.js +12 -0
  47. package/dist/cjs/apps/staked-pool/state-machines/staked-pool-base.js +49 -0
  48. package/dist/cjs/apps/staked-pool/state-machines/staked-pool-oracle.js +131 -0
  49. package/dist/cjs/generated/google/protobuf/struct.js +1 -1
  50. package/dist/cjs/generated/google/protobuf/timestamp.js +1 -1
  51. package/dist/cjs/generated/ottochain/apps/contracts/v1/contract.js +1 -1
  52. package/dist/cjs/generated/ottochain/apps/corporate/v1/corporate.js +1 -1
  53. package/dist/cjs/generated/ottochain/apps/governance/v1/governance.js +1 -1
  54. package/dist/cjs/generated/ottochain/apps/identity/v1/attestation.js +1 -1
  55. package/dist/cjs/generated/ottochain/apps/identity/v1/identity.js +1 -1
  56. package/dist/cjs/generated/ottochain/apps/markets/v1/market.js +1 -1
  57. package/dist/cjs/generated/ottochain/v1/common.js +1 -1
  58. package/dist/cjs/generated/ottochain/v1/fiber.js +40 -2
  59. package/dist/cjs/generated/ottochain/v1/messages.js +1 -1
  60. package/dist/cjs/generated/ottochain/v1/records.js +1 -1
  61. package/dist/cjs/index.js +21 -3
  62. package/dist/cjs/ottochain/genesis-manifest.js +6 -0
  63. package/dist/cjs/ottochain/metagraph-client.js +63 -11
  64. package/dist/cjs/ottochain/snapshot.js +2 -4
  65. package/dist/cjs/ottochain/transaction.js +10 -0
  66. package/dist/cjs/privacy/sealed-bid.js +85 -82
  67. package/dist/cjs/privacy/shield-app.js +32 -32
  68. package/dist/cjs/schema/effects.js +145 -1
  69. package/dist/cjs/schema/fiber-app.js +139 -5
  70. package/dist/cjs/schema/guard-lint.js +3 -12
  71. package/dist/cjs/schema/guards.js +38 -38
  72. package/dist/cjs/templates/asset-policy.js +190 -0
  73. package/dist/cjs/templates/index.js +86 -0
  74. package/dist/cjs/templates/machine.js +130 -0
  75. package/dist/cjs/templates/migration.js +39 -0
  76. package/dist/cjs/templates/state-shape.js +38 -0
  77. package/dist/cjs/validation.js +1 -3
  78. package/dist/esm/apps/compute/index.js +29 -0
  79. package/dist/esm/apps/compute/state-machines/compute-rule110.js +161 -0
  80. package/dist/esm/apps/compute/state-machines/index.js +5 -0
  81. package/dist/esm/apps/contracts/index.js +4 -4
  82. package/dist/esm/apps/contracts/state-machines/contract-agreement.js +128 -150
  83. package/dist/esm/apps/contracts/state-machines/contract-escrow.js +155 -176
  84. package/dist/esm/apps/contracts/state-machines/contract-universal.js +47 -59
  85. package/dist/esm/apps/corporate/index.js +2 -2
  86. package/dist/esm/apps/corporate/state-machines/corp-board.js +418 -484
  87. package/dist/esm/apps/corporate/state-machines/corp-entity.js +371 -443
  88. package/dist/esm/apps/corporate/state-machines/corp-securities.js +535 -650
  89. package/dist/esm/apps/corporate/state-machines/corp-shareholders.js +502 -606
  90. package/dist/esm/apps/governance/index.js +10 -10
  91. package/dist/esm/apps/governance/state-machines/dao-multisig.js +172 -211
  92. package/dist/esm/apps/governance/state-machines/dao-reputation.js +163 -216
  93. package/dist/esm/apps/governance/state-machines/dao-single.js +94 -94
  94. package/dist/esm/apps/governance/state-machines/dao-token.js +171 -225
  95. package/dist/esm/apps/governance/state-machines/governance-simple.js +187 -219
  96. package/dist/esm/apps/governance/state-machines/governance-universal.js +65 -65
  97. package/dist/esm/apps/identity/constants.js +18 -26
  98. package/dist/esm/apps/identity/index.js +8 -8
  99. package/dist/esm/apps/identity/state-machines/identity-agent.js +125 -159
  100. package/dist/esm/apps/identity/state-machines/identity-oracle.js +153 -171
  101. package/dist/esm/apps/identity/state-machines/identity-registry.js +91 -117
  102. package/dist/esm/apps/identity/state-machines/identity-universal.js +52 -58
  103. package/dist/esm/apps/index.js +9 -6
  104. package/dist/esm/apps/lending/assets.js +41 -17
  105. package/dist/esm/apps/lending/credit-scoring.js +6 -6
  106. package/dist/esm/apps/lending/eligibility.js +10 -26
  107. package/dist/esm/apps/lending/index.js +5 -5
  108. package/dist/esm/apps/lending/state-machines/lending-zk-loan.js +178 -157
  109. package/dist/esm/apps/markets/index.js +5 -5
  110. package/dist/esm/apps/markets/state-machines/market-auction.js +117 -136
  111. package/dist/esm/apps/markets/state-machines/market-crowdfund.js +124 -139
  112. package/dist/esm/apps/markets/state-machines/market-group-buy.js +160 -179
  113. package/dist/esm/apps/markets/state-machines/market-prediction.js +195 -229
  114. package/dist/esm/apps/markets/state-machines/market-universal.js +66 -81
  115. package/dist/esm/apps/oracles/index.js +3 -3
  116. package/dist/esm/apps/privacy/index.js +56 -0
  117. package/dist/esm/apps/privacy/state-machines/index.js +6 -0
  118. package/dist/esm/apps/privacy/state-machines/mixer-ddhRing.js +282 -0
  119. package/dist/esm/apps/privacy/state-machines/note-pool.js +470 -0
  120. package/dist/esm/apps/staked-pool/assets.js +91 -0
  121. package/dist/esm/apps/staked-pool/base.js +493 -0
  122. package/dist/esm/apps/staked-pool/consumer.js +49 -0
  123. package/dist/esm/apps/staked-pool/index.js +60 -0
  124. package/dist/esm/apps/staked-pool/state-machines/index.js +6 -0
  125. package/dist/esm/apps/staked-pool/state-machines/staked-pool-base.js +46 -0
  126. package/dist/esm/apps/staked-pool/state-machines/staked-pool-oracle.js +127 -0
  127. package/dist/esm/generated/google/protobuf/struct.js +1 -1
  128. package/dist/esm/generated/google/protobuf/timestamp.js +1 -1
  129. package/dist/esm/generated/ottochain/apps/contracts/v1/contract.js +1 -1
  130. package/dist/esm/generated/ottochain/apps/corporate/v1/corporate.js +1 -1
  131. package/dist/esm/generated/ottochain/apps/governance/v1/governance.js +1 -1
  132. package/dist/esm/generated/ottochain/apps/identity/v1/attestation.js +1 -1
  133. package/dist/esm/generated/ottochain/apps/identity/v1/identity.js +1 -1
  134. package/dist/esm/generated/ottochain/apps/markets/v1/market.js +1 -1
  135. package/dist/esm/generated/ottochain/v1/common.js +1 -1
  136. package/dist/esm/generated/ottochain/v1/fiber.js +40 -2
  137. package/dist/esm/generated/ottochain/v1/messages.js +1 -1
  138. package/dist/esm/generated/ottochain/v1/records.js +1 -1
  139. package/dist/esm/index.js +10 -4
  140. package/dist/esm/ottochain/genesis-manifest.js +6 -0
  141. package/dist/esm/ottochain/metagraph-client.js +63 -11
  142. package/dist/esm/ottochain/snapshot.js +2 -4
  143. package/dist/esm/ottochain/transaction.js +8 -0
  144. package/dist/esm/privacy/index.js +2 -2
  145. package/dist/esm/privacy/sealed-bid.js +87 -84
  146. package/dist/esm/privacy/shield-app.js +33 -33
  147. package/dist/esm/schema/effects.js +137 -0
  148. package/dist/esm/schema/fiber-app.js +134 -5
  149. package/dist/esm/schema/guard-lint.js +3 -12
  150. package/dist/esm/schema/guards.js +36 -37
  151. package/dist/esm/templates/asset-policy.js +182 -0
  152. package/dist/esm/templates/index.js +41 -0
  153. package/dist/esm/templates/machine.js +125 -0
  154. package/dist/esm/templates/migration.js +34 -0
  155. package/dist/esm/templates/state-shape.js +34 -0
  156. package/dist/esm/validation.js +1 -3
  157. package/dist/esm/zk/index.js +4 -4
  158. package/dist/types/apps/compute/index.d.ts +176 -0
  159. package/dist/types/apps/compute/state-machines/compute-rule110.d.ts +157 -0
  160. package/dist/types/apps/compute/state-machines/index.d.ts +5 -0
  161. package/dist/types/apps/contracts/index.d.ts +14 -14
  162. package/dist/types/apps/contracts/state-machines/contract-agreement.d.ts +3 -3
  163. package/dist/types/apps/contracts/state-machines/contract-escrow.d.ts +3 -3
  164. package/dist/types/apps/contracts/state-machines/contract-universal.d.ts +4 -4
  165. package/dist/types/apps/corporate/index.d.ts +162 -162
  166. package/dist/types/apps/corporate/state-machines/corp-board.d.ts +88 -88
  167. package/dist/types/apps/corporate/state-machines/corp-entity.d.ts +14 -14
  168. package/dist/types/apps/corporate/state-machines/corp-securities.d.ts +18 -18
  169. package/dist/types/apps/corporate/state-machines/corp-shareholders.d.ts +43 -43
  170. package/dist/types/apps/governance/index.d.ts +81 -81
  171. package/dist/types/apps/governance/state-machines/dao-multisig.d.ts +16 -16
  172. package/dist/types/apps/governance/state-machines/dao-reputation.d.ts +22 -22
  173. package/dist/types/apps/governance/state-machines/dao-token.d.ts +21 -21
  174. package/dist/types/apps/governance/state-machines/governance-simple.d.ts +11 -11
  175. package/dist/types/apps/governance/state-machines/governance-universal.d.ts +4 -4
  176. package/dist/types/apps/identity/constants.d.ts +2 -2
  177. package/dist/types/apps/identity/index.d.ts +70 -70
  178. package/dist/types/apps/identity/state-machines/identity-agent.d.ts +23 -23
  179. package/dist/types/apps/identity/state-machines/identity-oracle.d.ts +11 -11
  180. package/dist/types/apps/identity/state-machines/identity-registry.d.ts +27 -27
  181. package/dist/types/apps/identity/state-machines/identity-universal.d.ts +4 -4
  182. package/dist/types/apps/index.d.ts +9 -6
  183. package/dist/types/apps/lending/assets.d.ts +2 -2
  184. package/dist/types/apps/lending/credit-scoring.d.ts +5 -5
  185. package/dist/types/apps/lending/eligibility.d.ts +2 -2
  186. package/dist/types/apps/lending/index.d.ts +20 -12
  187. package/dist/types/apps/lending/state-machines/lending-zk-loan.d.ts +15 -7
  188. package/dist/types/apps/markets/index.d.ts +76 -76
  189. package/dist/types/apps/markets/state-machines/market-auction.d.ts +12 -12
  190. package/dist/types/apps/markets/state-machines/market-crowdfund.d.ts +19 -19
  191. package/dist/types/apps/markets/state-machines/market-group-buy.d.ts +18 -18
  192. package/dist/types/apps/markets/state-machines/market-prediction.d.ts +15 -15
  193. package/dist/types/apps/markets/state-machines/market-universal.d.ts +7 -7
  194. package/dist/types/apps/oracles/index.d.ts +1 -1
  195. package/dist/types/apps/privacy/index.d.ts +328 -0
  196. package/dist/types/apps/privacy/state-machines/index.d.ts +6 -0
  197. package/dist/types/apps/privacy/state-machines/mixer-ddhRing.d.ts +337 -0
  198. package/dist/types/apps/privacy/state-machines/note-pool.d.ts +196 -0
  199. package/dist/types/apps/staked-pool/assets.d.ts +53 -0
  200. package/dist/types/apps/staked-pool/base.d.ts +80 -0
  201. package/dist/types/apps/staked-pool/consumer.d.ts +29 -0
  202. package/dist/types/apps/staked-pool/index.d.ts +51 -0
  203. package/dist/types/apps/staked-pool/state-machines/index.d.ts +6 -0
  204. package/dist/types/apps/staked-pool/state-machines/staked-pool-base.d.ts +8 -0
  205. package/dist/types/apps/staked-pool/state-machines/staked-pool-oracle.d.ts +34 -0
  206. package/dist/types/generated/openapi.d.ts +13 -0
  207. package/dist/types/generated/ottochain/v1/fiber.d.ts +7 -0
  208. package/dist/types/index.d.ts +3 -3
  209. package/dist/types/openapi.d.ts +4 -2
  210. package/dist/types/ottochain/genesis-manifest.d.ts +6 -0
  211. package/dist/types/ottochain/index.d.ts +1 -1
  212. package/dist/types/ottochain/metagraph-client.d.ts +69 -15
  213. package/dist/types/ottochain/transaction.d.ts +9 -1
  214. package/dist/types/ottochain/types.d.ts +1 -1
  215. package/dist/types/privacy/index.d.ts +2 -2
  216. package/dist/types/privacy/sealed-bid.d.ts +9 -9
  217. package/dist/types/privacy/shield-app.d.ts +1 -1
  218. package/dist/types/schema/effects.d.ts +132 -0
  219. package/dist/types/schema/fiber-app.d.ts +281 -0
  220. package/dist/types/schema/guards.d.ts +12 -0
  221. package/dist/types/templates/asset-policy.d.ts +119 -0
  222. package/dist/types/templates/index.d.ts +26 -0
  223. package/dist/types/templates/machine.d.ts +139 -0
  224. package/dist/types/templates/migration.d.ts +34 -0
  225. package/dist/types/templates/state-shape.d.ts +30 -0
  226. package/dist/types/zk/index.d.ts +4 -4
  227. package/package.json +31 -13
@@ -8,201 +8,186 @@ const guards_js_1 = require("../../../schema/guards.js");
8
8
  */
9
9
  exports.daoTokenDef = (0, fiber_app_js_1.defineFiberApp)({
10
10
  metadata: {
11
- name: "TokenDAO",
12
- app: "governance",
13
- type: "daoToken",
14
- version: "1.0.0",
15
- description: "Token-weighted voting. Voting power proportional to token holdings.",
16
- category: "governance/dao",
11
+ name: 'TokenDAO',
12
+ app: 'governance',
13
+ type: 'daoToken',
14
+ version: '1.0.0',
15
+ description: 'Token-weighted voting. Voting power proportional to token holdings.',
16
+ category: 'governance/dao',
17
17
  crossReferences: {
18
- Identity: "voter verification",
19
- Token: "balance snapshots",
20
- Contract: "action execution",
21
- Treasury: "fund management",
18
+ Identity: 'voter verification',
19
+ Token: 'balance snapshots',
20
+ Contract: 'action execution',
21
+ Treasury: 'fund management',
22
22
  },
23
23
  },
24
24
  createSchema: {
25
- required: [
26
- "balances",
27
- "proposalThreshold",
28
- "quorum",
29
- "votingPeriodMs",
30
- "timelockMs",
31
- ],
25
+ required: ['balances', 'proposalThreshold', 'quorum', 'votingPeriodMs', 'timelockMs'],
32
26
  properties: {
33
27
  balances: {
34
- type: "object",
35
- description: "Initial token balances by address",
28
+ type: 'object',
29
+ description: 'Initial token balances by address',
36
30
  },
37
31
  proposalThreshold: {
38
- type: "number",
39
- description: "Min token balance to submit a proposal",
32
+ type: 'number',
33
+ description: 'Min token balance to submit a proposal',
40
34
  },
41
35
  quorum: {
42
- type: "number",
43
- description: "Min total votes (weighted) to pass",
36
+ type: 'number',
37
+ description: 'Min total votes (weighted) to pass',
44
38
  },
45
39
  votingPeriodMs: {
46
- type: "number",
47
- description: "Voting window in milliseconds",
40
+ type: 'number',
41
+ description: 'Voting window in milliseconds',
48
42
  },
49
43
  timelockMs: {
50
- type: "number",
51
- description: "Time-lock delay before execution",
44
+ type: 'number',
45
+ description: 'Time-lock delay before execution',
52
46
  },
53
47
  },
54
48
  },
55
49
  stateSchema: {
56
50
  properties: {
57
- balances: { type: "object" },
58
- delegations: { type: "object", computed: true },
59
- proposalThreshold: { type: "number" },
60
- quorum: { type: "number" },
61
- votingPeriodMs: { type: "number" },
62
- timelockMs: { type: "number" },
63
- proposal: { type: "object" },
64
- votes: { type: "object", computed: true },
65
- executedProposals: { type: "array", computed: true },
66
- rejectedProposals: { type: "array", computed: true },
67
- cancelledProposals: { type: "array", computed: true },
51
+ balances: { type: 'object' },
52
+ delegations: { type: 'object', computed: true },
53
+ proposalThreshold: { type: 'number' },
54
+ quorum: { type: 'number' },
55
+ votingPeriodMs: { type: 'number' },
56
+ timelockMs: { type: 'number' },
57
+ proposal: { type: 'object' },
58
+ votes: { type: 'object', computed: true },
59
+ executedProposals: { type: 'array', computed: true },
60
+ rejectedProposals: { type: 'array', computed: true },
61
+ cancelledProposals: { type: 'array', computed: true },
68
62
  },
69
63
  },
70
64
  eventSchemas: {
71
65
  propose: {
72
- description: "Submit a proposal (requires >= proposalThreshold tokens)",
73
- required: [
74
- "proposalId",
75
- "title",
76
- "description",
77
- "actionType",
78
- "payload",
79
- ],
66
+ description: 'Submit a proposal (requires >= proposalThreshold tokens)',
67
+ required: ['proposalId', 'title', 'description', 'actionType', 'payload'],
80
68
  properties: {
81
- agent: { type: "address" },
82
- proposalId: { type: "string" },
83
- title: { type: "string" },
84
- description: { type: "string" },
85
- actionType: { type: "string" },
86
- payload: { type: "object" },
87
- snapshotBlock: { type: "string" },
69
+ agent: { type: 'address' },
70
+ proposalId: { type: 'string' },
71
+ title: { type: 'string' },
72
+ description: { type: 'string' },
73
+ actionType: { type: 'string' },
74
+ payload: { type: 'object' },
75
+ snapshotBlock: { type: 'string' },
88
76
  },
89
77
  },
90
78
  vote: {
91
- description: "Cast a token-weighted vote (must hold tokens, no double-vote, within window)",
92
- required: ["vote"],
79
+ description: 'Cast a token-weighted vote (must hold tokens, no double-vote, within window)',
80
+ required: ['vote'],
93
81
  properties: {
94
- agent: { type: "address" },
95
- vote: { type: "string", description: '"for" | "against" | "abstain"' },
82
+ agent: { type: 'address' },
83
+ vote: { type: 'string', description: '"for" | "against" | "abstain"' },
96
84
  },
97
85
  },
98
86
  queue: {
99
- description: "Queue passing proposal into timelock (voting ended, for > against, quorum met)",
87
+ description: 'Queue passing proposal into timelock (voting ended, for > against, quorum met)',
100
88
  properties: {},
101
89
  },
102
90
  execute: {
103
- description: "Execute queued proposal after timelock expires",
91
+ description: 'Execute queued proposal after timelock expires',
104
92
  properties: {},
105
93
  },
106
94
  reject: {
107
- description: "Formally reject a failed proposal (voting ended, failed conditions)",
95
+ description: 'Formally reject a failed proposal (voting ended, failed conditions)',
108
96
  properties: {},
109
97
  },
110
98
  cancel: {
111
- description: "Cancel a queued proposal (proposer only)",
99
+ description: 'Cancel a queued proposal (proposer only)',
112
100
  properties: {
113
- agent: { type: "address" },
101
+ agent: { type: 'address' },
114
102
  },
115
103
  },
116
104
  delegate: {
117
- description: "Delegate voting power to another address",
118
- required: ["delegateTo"],
105
+ description: 'Delegate voting power to another address',
106
+ required: ['delegateTo'],
119
107
  properties: {
120
- agent: { type: "address" },
121
- delegateTo: { type: "address" },
108
+ agent: { type: 'address' },
109
+ delegateTo: { type: 'address' },
122
110
  },
123
111
  },
124
112
  undelegate: {
125
- description: "Revoke delegation",
113
+ description: 'Revoke delegation',
126
114
  properties: {
127
- agent: { type: "address" },
115
+ agent: { type: 'address' },
128
116
  },
129
117
  },
130
118
  },
131
119
  states: {
132
120
  ACTIVE: {
133
- id: "ACTIVE",
121
+ id: 'ACTIVE',
134
122
  isFinal: false,
135
123
  metadata: {
136
- label: "Active",
137
- description: "DAO is idle and ready to accept a proposal",
138
- category: "initial",
124
+ label: 'Active',
125
+ description: 'DAO is idle and ready to accept a proposal',
126
+ category: 'initial',
139
127
  },
140
128
  },
141
129
  VOTING: {
142
- id: "VOTING",
130
+ id: 'VOTING',
143
131
  isFinal: false,
144
132
  metadata: {
145
- label: "Voting",
146
- description: "Token holders are voting on the active proposal",
147
- category: "pending",
133
+ label: 'Voting',
134
+ description: 'Token holders are voting on the active proposal',
135
+ category: 'pending',
148
136
  },
149
137
  },
150
138
  QUEUED: {
151
- id: "QUEUED",
139
+ id: 'QUEUED',
152
140
  isFinal: false,
153
141
  metadata: {
154
- label: "Queued",
155
- description: "Passed proposal queued in timelock before execution",
156
- category: "pending",
142
+ label: 'Queued',
143
+ description: 'Passed proposal queued in timelock before execution',
144
+ category: 'pending',
157
145
  },
158
146
  },
159
147
  DISSOLVED: {
160
- id: "DISSOLVED",
148
+ id: 'DISSOLVED',
161
149
  isFinal: true,
162
150
  metadata: {
163
- label: "Dissolved",
164
- description: "Token DAO dissolved (terminal)",
165
- category: "terminal",
151
+ label: 'Dissolved',
152
+ description: 'Token DAO dissolved (terminal)',
153
+ category: 'terminal',
166
154
  },
167
155
  },
168
156
  },
169
- initialState: "ACTIVE",
157
+ initialState: 'ACTIVE',
170
158
  transitions: [
171
159
  // ACTIVE → VOTING: propose (enough tokens)
172
160
  {
173
- from: "ACTIVE",
174
- to: "VOTING",
175
- eventName: "propose",
161
+ from: 'ACTIVE',
162
+ to: 'VOTING',
163
+ eventName: 'propose',
176
164
  // S1/A2 coupled fix: a CHAIN-VERIFIED signer must hold >= proposalThreshold
177
165
  // tokens. Iterate proofs[].address and read each balance via `get` (getKey is
178
166
  // not a JLVM opcode); never trust the forgeable event.agent for the lookup.
179
167
  guard: {
180
168
  some: [
181
- { map: [{ var: "proofs" }, { var: "address" }] },
169
+ { map: [{ var: 'proofs' }, { var: 'address' }] },
182
170
  {
183
- ">=": [
184
- { get: [{ var: "state.balances" }, { var: "" }] },
185
- { var: "state.proposalThreshold" },
186
- ],
171
+ '>=': [{ get: [{ var: 'state.balances' }, { var: '' }] }, { var: 'state.proposalThreshold' }],
187
172
  },
188
173
  ],
189
174
  },
190
175
  effect: {
191
176
  merge: [
192
- { var: "state" },
177
+ { var: 'state' },
193
178
  {
194
179
  proposal: {
195
- id: { var: "event.proposalId" },
196
- title: { var: "event.title" },
197
- description: { var: "event.description" },
198
- actionType: { var: "event.actionType" },
199
- payload: { var: "event.payload" },
200
- proposer: { var: "event.agent" },
201
- proposedAt: { var: "$ordinal" },
180
+ id: { var: 'event.proposalId' },
181
+ title: { var: 'event.title' },
182
+ description: { var: 'event.description' },
183
+ actionType: { var: 'event.actionType' },
184
+ payload: { var: 'event.payload' },
185
+ proposer: { var: 'event.agent' },
186
+ proposedAt: { var: '$ordinal' },
202
187
  votingEndsAt: {
203
- "+": [{ var: "$ordinal" }, { var: "state.votingPeriodMs" }],
188
+ '+': [{ var: '$ordinal' }, { var: 'state.votingPeriodMs' }],
204
189
  },
205
- snapshotBlock: { var: "event.snapshotBlock" },
190
+ snapshotBlock: { var: 'event.snapshotBlock' },
206
191
  },
207
192
  votes: { for: 0, against: 0, abstain: 0, voters: {} },
208
193
  },
@@ -212,9 +197,9 @@ exports.daoTokenDef = (0, fiber_app_js_1.defineFiberApp)({
212
197
  },
213
198
  // VOTING → VOTING: vote (token holder, no double-vote, within window)
214
199
  {
215
- from: "VOTING",
216
- to: "VOTING",
217
- eventName: "vote",
200
+ from: 'VOTING',
201
+ to: 'VOTING',
202
+ eventName: 'vote',
218
203
  // S1+A2 coupled fix: bind event.agent to a verified signer (actorIsSigner) so the
219
204
  // balance lookup, the no-double-vote check, and the voters write below all key on the
220
205
  // CHAIN-VERIFIED actor — never a forgeable claim. getKey→get (value), getKey→has
@@ -223,69 +208,57 @@ exports.daoTokenDef = (0, fiber_app_js_1.defineFiberApp)({
223
208
  and: [
224
209
  (0, guards_js_1.actorIsSigner)(),
225
210
  {
226
- ">": [
227
- { get: [{ var: "state.balances" }, { var: "event.agent" }] },
228
- 0,
229
- ],
211
+ '>': [{ get: [{ var: 'state.balances' }, { var: 'event.agent' }] }, 0],
230
212
  },
231
213
  {
232
- "!": [
214
+ '!': [
233
215
  {
234
- has: [{ var: "state.votes.voters" }, { var: "event.agent" }],
216
+ has: [{ var: 'state.votes.voters' }, { var: 'event.agent' }],
235
217
  },
236
218
  ],
237
219
  },
238
220
  {
239
- "<=": [{ var: "$ordinal" }, { var: "state.proposal.votingEndsAt" }],
221
+ '<=': [{ var: '$ordinal' }, { var: 'state.proposal.votingEndsAt' }],
240
222
  },
241
223
  ],
242
224
  },
243
225
  effect: {
244
226
  merge: [
245
- { var: "state" },
227
+ { var: 'state' },
246
228
  {
247
229
  votes: {
248
230
  merge: [
249
- { var: "state.votes" },
231
+ { var: 'state.votes' },
250
232
  {
251
233
  if: [
252
- { "===": [{ var: "event.vote" }, "for"] },
234
+ { '===': [{ var: 'event.vote' }, 'for'] },
253
235
  {
254
236
  for: {
255
- "+": [
256
- { var: "state.votes.for" },
237
+ '+': [
238
+ { var: 'state.votes.for' },
257
239
  {
258
- get: [
259
- { var: "state.balances" },
260
- { var: "event.agent" },
261
- ],
240
+ get: [{ var: 'state.balances' }, { var: 'event.agent' }],
262
241
  },
263
242
  ],
264
243
  },
265
244
  },
266
- { "===": [{ var: "event.vote" }, "against"] },
245
+ { '===': [{ var: 'event.vote' }, 'against'] },
267
246
  {
268
247
  against: {
269
- "+": [
270
- { var: "state.votes.against" },
248
+ '+': [
249
+ { var: 'state.votes.against' },
271
250
  {
272
- get: [
273
- { var: "state.balances" },
274
- { var: "event.agent" },
275
- ],
251
+ get: [{ var: 'state.balances' }, { var: 'event.agent' }],
276
252
  },
277
253
  ],
278
254
  },
279
255
  },
280
256
  {
281
257
  abstain: {
282
- "+": [
283
- { var: "state.votes.abstain" },
258
+ '+': [
259
+ { var: 'state.votes.abstain' },
284
260
  {
285
- get: [
286
- { var: "state.balances" },
287
- { var: "event.agent" },
288
- ],
261
+ get: [{ var: 'state.balances' }, { var: 'event.agent' }],
289
262
  },
290
263
  ],
291
264
  },
@@ -295,17 +268,14 @@ exports.daoTokenDef = (0, fiber_app_js_1.defineFiberApp)({
295
268
  {
296
269
  voters: {
297
270
  set: [
298
- { var: "state.votes.voters" },
299
- { var: "event.agent" },
271
+ { var: 'state.votes.voters' },
272
+ { var: 'event.agent' },
300
273
  {
301
- vote: { var: "event.vote" },
274
+ vote: { var: 'event.vote' },
302
275
  weight: {
303
- get: [
304
- { var: "state.balances" },
305
- { var: "event.agent" },
306
- ],
276
+ get: [{ var: 'state.balances' }, { var: 'event.agent' }],
307
277
  },
308
- votedAt: { var: "$ordinal" },
278
+ votedAt: { var: '$ordinal' },
309
279
  },
310
280
  ],
311
281
  },
@@ -319,40 +289,36 @@ exports.daoTokenDef = (0, fiber_app_js_1.defineFiberApp)({
319
289
  },
320
290
  // VOTING → QUEUED: queue (voting ended, for > against, quorum met)
321
291
  {
322
- from: "VOTING",
323
- to: "QUEUED",
324
- eventName: "queue",
292
+ from: 'VOTING',
293
+ to: 'QUEUED',
294
+ eventName: 'queue',
325
295
  guard: {
326
296
  and: [
327
297
  {
328
- ">": [{ var: "$ordinal" }, { var: "state.proposal.votingEndsAt" }],
298
+ '>': [{ var: '$ordinal' }, { var: 'state.proposal.votingEndsAt' }],
329
299
  },
330
- { ">": [{ var: "state.votes.for" }, { var: "state.votes.against" }] },
300
+ { '>': [{ var: 'state.votes.for' }, { var: 'state.votes.against' }] },
331
301
  {
332
- ">=": [
302
+ '>=': [
333
303
  {
334
- "+": [
335
- { var: "state.votes.for" },
336
- { var: "state.votes.against" },
337
- { var: "state.votes.abstain" },
338
- ],
304
+ '+': [{ var: 'state.votes.for' }, { var: 'state.votes.against' }, { var: 'state.votes.abstain' }],
339
305
  },
340
- { var: "state.quorum" },
306
+ { var: 'state.quorum' },
341
307
  ],
342
308
  },
343
309
  ],
344
310
  },
345
311
  effect: {
346
312
  merge: [
347
- { var: "state" },
313
+ { var: 'state' },
348
314
  {
349
315
  proposal: {
350
316
  merge: [
351
- { var: "state.proposal" },
317
+ { var: 'state.proposal' },
352
318
  {
353
- queuedAt: { var: "$ordinal" },
319
+ queuedAt: { var: '$ordinal' },
354
320
  executableAt: {
355
- "+": [{ var: "$ordinal" }, { var: "state.timelockMs" }],
321
+ '+': [{ var: '$ordinal' }, { var: 'state.timelockMs' }],
356
322
  },
357
323
  },
358
324
  ],
@@ -364,26 +330,26 @@ exports.daoTokenDef = (0, fiber_app_js_1.defineFiberApp)({
364
330
  },
365
331
  // QUEUED → ACTIVE: execute (timelock expired)
366
332
  {
367
- from: "QUEUED",
368
- to: "ACTIVE",
369
- eventName: "execute",
333
+ from: 'QUEUED',
334
+ to: 'ACTIVE',
335
+ eventName: 'execute',
370
336
  guard: {
371
- ">=": [{ var: "$ordinal" }, { var: "state.proposal.executableAt" }],
337
+ '>=': [{ var: '$ordinal' }, { var: 'state.proposal.executableAt' }],
372
338
  },
373
339
  effect: {
374
340
  merge: [
375
- { var: "state" },
341
+ { var: 'state' },
376
342
  {
377
343
  executedProposals: {
378
344
  cat: [
379
- { var: "state.executedProposals" },
345
+ { var: 'state.executedProposals' },
380
346
  [
381
347
  {
382
348
  merge: [
383
- { var: "state.proposal" },
349
+ { var: 'state.proposal' },
384
350
  {
385
- votes: { var: "state.votes" },
386
- executedAt: { var: "$ordinal" },
351
+ votes: { var: 'state.votes' },
352
+ executedAt: { var: '$ordinal' },
387
353
  },
388
354
  ],
389
355
  },
@@ -396,9 +362,9 @@ exports.daoTokenDef = (0, fiber_app_js_1.defineFiberApp)({
396
362
  // under the reserved `_emit` key (extracted as an EmittedEvent, stripped from state).
397
363
  _emit: [
398
364
  {
399
- name: "proposal_executed",
400
- data: { proposalId: { var: "state.proposal.id" } },
401
- destination: "external",
365
+ name: 'proposal_executed',
366
+ data: { proposalId: { var: 'state.proposal.id' } },
367
+ destination: 'external',
402
368
  },
403
369
  ],
404
370
  },
@@ -408,32 +374,25 @@ exports.daoTokenDef = (0, fiber_app_js_1.defineFiberApp)({
408
374
  },
409
375
  // VOTING → ACTIVE: reject (voting ended, failed quorum or for <= against)
410
376
  {
411
- from: "VOTING",
412
- to: "ACTIVE",
413
- eventName: "reject",
377
+ from: 'VOTING',
378
+ to: 'ACTIVE',
379
+ eventName: 'reject',
414
380
  guard: {
415
381
  and: [
416
382
  {
417
- ">": [{ var: "$ordinal" }, { var: "state.proposal.votingEndsAt" }],
383
+ '>': [{ var: '$ordinal' }, { var: 'state.proposal.votingEndsAt' }],
418
384
  },
419
385
  {
420
386
  or: [
421
387
  {
422
- "<=": [
423
- { var: "state.votes.for" },
424
- { var: "state.votes.against" },
425
- ],
388
+ '<=': [{ var: 'state.votes.for' }, { var: 'state.votes.against' }],
426
389
  },
427
390
  {
428
- "<": [
391
+ '<': [
429
392
  {
430
- "+": [
431
- { var: "state.votes.for" },
432
- { var: "state.votes.against" },
433
- { var: "state.votes.abstain" },
434
- ],
393
+ '+': [{ var: 'state.votes.for' }, { var: 'state.votes.against' }, { var: 'state.votes.abstain' }],
435
394
  },
436
- { var: "state.quorum" },
395
+ { var: 'state.quorum' },
437
396
  ],
438
397
  },
439
398
  ],
@@ -442,18 +401,18 @@ exports.daoTokenDef = (0, fiber_app_js_1.defineFiberApp)({
442
401
  },
443
402
  effect: {
444
403
  merge: [
445
- { var: "state" },
404
+ { var: 'state' },
446
405
  {
447
406
  rejectedProposals: {
448
407
  cat: [
449
- { var: "state.rejectedProposals" },
408
+ { var: 'state.rejectedProposals' },
450
409
  [
451
410
  {
452
411
  merge: [
453
- { var: "state.proposal" },
412
+ { var: 'state.proposal' },
454
413
  {
455
- votes: { var: "state.votes" },
456
- rejectedAt: { var: "$ordinal" },
414
+ votes: { var: 'state.votes' },
415
+ rejectedAt: { var: '$ordinal' },
457
416
  },
458
417
  ],
459
418
  },
@@ -469,23 +428,20 @@ exports.daoTokenDef = (0, fiber_app_js_1.defineFiberApp)({
469
428
  },
470
429
  // QUEUED → ACTIVE: cancel (proposer only)
471
430
  {
472
- from: "QUEUED",
473
- to: "ACTIVE",
474
- eventName: "cancel",
475
- guard: (0, guards_js_1.signerIsParty)("state.proposal.proposer"),
431
+ from: 'QUEUED',
432
+ to: 'ACTIVE',
433
+ eventName: 'cancel',
434
+ guard: (0, guards_js_1.signerIsParty)('state.proposal.proposer'),
476
435
  effect: {
477
436
  merge: [
478
- { var: "state" },
437
+ { var: 'state' },
479
438
  {
480
439
  cancelledProposals: {
481
440
  cat: [
482
- { var: "state.cancelledProposals" },
441
+ { var: 'state.cancelledProposals' },
483
442
  [
484
443
  {
485
- merge: [
486
- { var: "state.proposal" },
487
- { cancelledAt: { var: "$ordinal" } },
488
- ],
444
+ merge: [{ var: 'state.proposal' }, { cancelledAt: { var: '$ordinal' } }],
489
445
  },
490
446
  ],
491
447
  ],
@@ -499,32 +455,25 @@ exports.daoTokenDef = (0, fiber_app_js_1.defineFiberApp)({
499
455
  },
500
456
  // ACTIVE → ACTIVE: delegate
501
457
  {
502
- from: "ACTIVE",
503
- to: "ACTIVE",
504
- eventName: "delegate",
458
+ from: 'ACTIVE',
459
+ to: 'ACTIVE',
460
+ eventName: 'delegate',
505
461
  // S1+A2: bind event.agent to a verified signer so the delegation is written under the
506
462
  // CHAIN-VERIFIED delegator's key (set), keyed on the same actor whose balance is checked (get).
507
463
  guard: {
508
464
  and: [
509
465
  (0, guards_js_1.actorIsSigner)(),
510
466
  {
511
- ">": [
512
- { get: [{ var: "state.balances" }, { var: "event.agent" }] },
513
- 0,
514
- ],
467
+ '>': [{ get: [{ var: 'state.balances' }, { var: 'event.agent' }] }, 0],
515
468
  },
516
469
  ],
517
470
  },
518
471
  effect: {
519
472
  merge: [
520
- { var: "state" },
473
+ { var: 'state' },
521
474
  {
522
475
  delegations: {
523
- set: [
524
- { var: "state.delegations" },
525
- { var: "event.agent" },
526
- { var: "event.delegateTo" },
527
- ],
476
+ set: [{ var: 'state.delegations' }, { var: 'event.agent' }, { var: 'event.delegateTo' }],
528
477
  },
529
478
  },
530
479
  ],
@@ -533,24 +482,21 @@ exports.daoTokenDef = (0, fiber_app_js_1.defineFiberApp)({
533
482
  },
534
483
  // ACTIVE → ACTIVE: undelegate
535
484
  {
536
- from: "ACTIVE",
537
- to: "ACTIVE",
538
- eventName: "undelegate",
485
+ from: 'ACTIVE',
486
+ to: 'ACTIVE',
487
+ eventName: 'undelegate',
539
488
  // S1+A2: bind event.agent to a verified signer; presence via has, removal via unset (the rc.5
540
489
  // map opcodes — getKey/deleteKey do not exist). Only the verified delegator can clear their own
541
490
  // delegation.
542
491
  guard: {
543
- and: [
544
- (0, guards_js_1.actorIsSigner)(),
545
- { has: [{ var: "state.delegations" }, { var: "event.agent" }] },
546
- ],
492
+ and: [(0, guards_js_1.actorIsSigner)(), { has: [{ var: 'state.delegations' }, { var: 'event.agent' }] }],
547
493
  },
548
494
  effect: {
549
495
  merge: [
550
- { var: "state" },
496
+ { var: 'state' },
551
497
  {
552
498
  delegations: {
553
- unset: [{ var: "state.delegations" }, { var: "event.agent" }],
499
+ unset: [{ var: 'state.delegations' }, { var: 'event.agent' }],
554
500
  },
555
501
  },
556
502
  ],