@ottochain/sdk 2.2.5 → 2.4.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 (222) hide show
  1. package/dist/cjs/apps/contracts/index.js +15 -8
  2. package/dist/cjs/apps/contracts/state-machines/contract-agreement.js +89 -46
  3. package/dist/cjs/apps/contracts/state-machines/contract-escrow.js +152 -45
  4. package/dist/cjs/apps/contracts/state-machines/contract-universal.js +40 -8
  5. package/dist/cjs/apps/corporate/index.js +2 -2
  6. package/dist/cjs/apps/corporate/state-machines/corp-board.js +169 -59
  7. package/dist/cjs/apps/corporate/state-machines/corp-entity.js +245 -47
  8. package/dist/cjs/apps/corporate/state-machines/corp-securities.js +407 -99
  9. package/dist/cjs/apps/corporate/state-machines/corp-shareholders.js +151 -37
  10. package/dist/cjs/apps/governance/index.js +14 -14
  11. package/dist/cjs/apps/governance/state-machines/dao-multisig.js +85 -43
  12. package/dist/cjs/apps/governance/state-machines/dao-reputation.js +73 -43
  13. package/dist/cjs/apps/governance/state-machines/dao-single.js +55 -14
  14. package/dist/cjs/apps/governance/state-machines/dao-token.js +103 -45
  15. package/dist/cjs/apps/governance/state-machines/governance-simple.js +129 -65
  16. package/dist/cjs/apps/governance/state-machines/governance-universal.js +29 -5
  17. package/dist/cjs/apps/identity/constants.js +55 -14
  18. package/dist/cjs/apps/identity/index.js +27 -11
  19. package/dist/cjs/apps/identity/state-machines/identity-agent.js +57 -9
  20. package/dist/cjs/apps/identity/state-machines/identity-oracle.js +70 -27
  21. package/dist/cjs/apps/identity/state-machines/identity-registry.js +288 -0
  22. package/dist/cjs/apps/identity/state-machines/identity-universal.js +30 -6
  23. package/dist/cjs/apps/identity/state-machines/index.js +3 -1
  24. package/dist/cjs/apps/index.js +19 -8
  25. package/dist/cjs/apps/lending/assets.js +223 -0
  26. package/dist/cjs/apps/lending/credit-scoring.js +87 -0
  27. package/dist/cjs/apps/lending/eligibility.js +121 -0
  28. package/dist/cjs/apps/lending/index.js +91 -0
  29. package/dist/cjs/apps/lending/state-machines/index.js +9 -0
  30. package/dist/cjs/apps/lending/state-machines/lending-zk-loan.js +412 -0
  31. package/dist/cjs/apps/markets/index.js +21 -11
  32. package/dist/cjs/apps/markets/state-machines/market-auction.js +44 -19
  33. package/dist/cjs/apps/markets/state-machines/market-crowdfund.js +54 -29
  34. package/dist/cjs/apps/markets/state-machines/market-group-buy.js +53 -31
  35. package/dist/cjs/apps/markets/state-machines/market-prediction.js +120 -61
  36. package/dist/cjs/apps/markets/state-machines/market-universal.js +50 -10
  37. package/dist/cjs/apps/oracles/index.js +2 -2
  38. package/dist/cjs/errors.js +3 -3
  39. package/dist/cjs/generated/google/protobuf/struct.js +4 -4
  40. package/dist/cjs/generated/index.js +11 -7
  41. package/dist/cjs/generated/openapi.js +6 -0
  42. package/dist/cjs/generated/ottochain/apps/contracts/v1/contract.js +50 -50
  43. package/dist/cjs/generated/ottochain/apps/corporate/v1/corporate.js +19 -20
  44. package/dist/cjs/generated/ottochain/apps/governance/v1/governance.js +13 -13
  45. package/dist/cjs/generated/ottochain/apps/identity/v1/attestation.js +4 -4
  46. package/dist/cjs/generated/ottochain/apps/identity/v1/identity.js +124 -130
  47. package/dist/cjs/generated/ottochain/apps/markets/v1/market.js +107 -107
  48. package/dist/cjs/generated/ottochain/v1/common.js +1722 -1
  49. package/dist/cjs/generated/ottochain/v1/fiber.js +355 -5
  50. package/dist/cjs/generated/ottochain/v1/messages.js +775 -3
  51. package/dist/cjs/generated/ottochain/v1/records.js +350 -3
  52. package/dist/cjs/index.js +45 -7
  53. package/dist/cjs/openapi.js +2 -0
  54. package/dist/cjs/ottochain/drop-nulls.js +1 -2
  55. package/dist/cjs/ottochain/genesis-manifest.js +193 -0
  56. package/dist/cjs/ottochain/index.js +27 -13
  57. package/dist/cjs/ottochain/metagraph-client.js +65 -8
  58. package/dist/cjs/ottochain/snapshot.js +11 -12
  59. package/dist/cjs/ottochain/transaction.js +57 -14
  60. package/dist/cjs/ottochain/types.js +19 -1
  61. package/dist/cjs/privacy/index.js +14 -0
  62. package/dist/cjs/privacy/sealed-bid.js +210 -0
  63. package/dist/cjs/privacy/shield-app.js +131 -0
  64. package/dist/cjs/schema/effects.js +40 -0
  65. package/dist/cjs/schema/fiber-app.js +19 -13
  66. package/dist/cjs/schema/guard-lint.js +352 -0
  67. package/dist/cjs/schema/guards.js +246 -0
  68. package/dist/cjs/signing.js +80 -0
  69. package/dist/cjs/types.js +2 -3
  70. package/dist/cjs/validation.js +8 -8
  71. package/dist/cjs/verify.js +9 -4
  72. package/dist/cjs/zk/commit.js +53 -0
  73. package/dist/cjs/zk/guard.js +107 -0
  74. package/dist/cjs/zk/index.js +48 -0
  75. package/dist/cjs/zk/preimage.js +37 -0
  76. package/dist/cjs/zk/prover.js +87 -0
  77. package/dist/cjs/zk/registry.js +62 -0
  78. package/dist/cjs/zk/types.js +28 -0
  79. package/dist/cjs/zk/witness.js +19 -0
  80. package/dist/esm/apps/contracts/index.js +7 -3
  81. package/dist/esm/apps/contracts/state-machines/contract-agreement.js +89 -46
  82. package/dist/esm/apps/contracts/state-machines/contract-escrow.js +152 -45
  83. package/dist/esm/apps/contracts/state-machines/contract-universal.js +40 -8
  84. package/dist/esm/apps/corporate/state-machines/corp-board.js +169 -59
  85. package/dist/esm/apps/corporate/state-machines/corp-entity.js +245 -47
  86. package/dist/esm/apps/corporate/state-machines/corp-securities.js +407 -99
  87. package/dist/esm/apps/corporate/state-machines/corp-shareholders.js +151 -37
  88. package/dist/esm/apps/governance/state-machines/dao-multisig.js +85 -43
  89. package/dist/esm/apps/governance/state-machines/dao-reputation.js +73 -43
  90. package/dist/esm/apps/governance/state-machines/dao-single.js +55 -14
  91. package/dist/esm/apps/governance/state-machines/dao-token.js +103 -45
  92. package/dist/esm/apps/governance/state-machines/governance-simple.js +129 -65
  93. package/dist/esm/apps/governance/state-machines/governance-universal.js +29 -5
  94. package/dist/esm/apps/identity/constants.js +51 -12
  95. package/dist/esm/apps/identity/index.js +12 -7
  96. package/dist/esm/apps/identity/state-machines/identity-agent.js +57 -9
  97. package/dist/esm/apps/identity/state-machines/identity-oracle.js +70 -27
  98. package/dist/esm/apps/identity/state-machines/identity-registry.js +285 -0
  99. package/dist/esm/apps/identity/state-machines/identity-universal.js +30 -6
  100. package/dist/esm/apps/identity/state-machines/index.js +1 -0
  101. package/dist/esm/apps/index.js +1 -0
  102. package/dist/esm/apps/lending/assets.js +207 -0
  103. package/dist/esm/apps/lending/credit-scoring.js +81 -0
  104. package/dist/esm/apps/lending/eligibility.js +115 -0
  105. package/dist/esm/apps/lending/index.js +69 -0
  106. package/dist/esm/apps/lending/state-machines/index.js +5 -0
  107. package/dist/esm/apps/lending/state-machines/lending-zk-loan.js +409 -0
  108. package/dist/esm/apps/markets/index.js +8 -4
  109. package/dist/esm/apps/markets/state-machines/market-auction.js +44 -19
  110. package/dist/esm/apps/markets/state-machines/market-crowdfund.js +54 -29
  111. package/dist/esm/apps/markets/state-machines/market-group-buy.js +53 -31
  112. package/dist/esm/apps/markets/state-machines/market-prediction.js +120 -61
  113. package/dist/esm/apps/markets/state-machines/market-universal.js +50 -10
  114. package/dist/esm/generated/index.js +9 -5
  115. package/dist/esm/generated/openapi.js +5 -0
  116. package/dist/esm/generated/ottochain/apps/contracts/v1/contract.js +46 -46
  117. package/dist/esm/generated/ottochain/apps/identity/v1/identity.js +114 -120
  118. package/dist/esm/generated/ottochain/apps/markets/v1/market.js +100 -100
  119. package/dist/esm/generated/ottochain/v1/common.js +1718 -0
  120. package/dist/esm/generated/ottochain/v1/fiber.js +351 -1
  121. package/dist/esm/generated/ottochain/v1/messages.js +774 -2
  122. package/dist/esm/generated/ottochain/v1/records.js +349 -2
  123. package/dist/esm/index.js +23 -2
  124. package/dist/esm/openapi.js +1 -0
  125. package/dist/esm/ottochain/genesis-manifest.js +189 -0
  126. package/dist/esm/ottochain/index.js +4 -3
  127. package/dist/esm/ottochain/metagraph-client.js +65 -8
  128. package/dist/esm/ottochain/snapshot.js +4 -4
  129. package/dist/esm/ottochain/transaction.js +43 -3
  130. package/dist/esm/ottochain/types.js +18 -0
  131. package/dist/esm/privacy/index.js +6 -0
  132. package/dist/esm/privacy/sealed-bid.js +206 -0
  133. package/dist/esm/privacy/shield-app.js +127 -0
  134. package/dist/esm/schema/effects.js +35 -0
  135. package/dist/esm/schema/fiber-app.js +13 -6
  136. package/dist/esm/schema/guard-lint.js +346 -0
  137. package/dist/esm/schema/guards.js +229 -0
  138. package/dist/esm/signing.js +74 -0
  139. package/dist/esm/verify.js +8 -2
  140. package/dist/esm/zk/commit.js +44 -0
  141. package/dist/esm/zk/guard.js +99 -0
  142. package/dist/esm/zk/index.js +19 -0
  143. package/dist/esm/zk/preimage.js +30 -0
  144. package/dist/esm/zk/prover.js +82 -0
  145. package/dist/esm/zk/registry.js +55 -0
  146. package/dist/esm/zk/types.js +25 -0
  147. package/dist/esm/zk/witness.js +15 -0
  148. package/dist/types/apps/contracts/index.d.ts +159 -227
  149. package/dist/types/apps/contracts/state-machines/contract-agreement.d.ts +50 -101
  150. package/dist/types/apps/contracts/state-machines/contract-escrow.d.ts +86 -120
  151. package/dist/types/apps/contracts/state-machines/contract-universal.d.ts +20 -4
  152. package/dist/types/apps/corporate/index.d.ts +1040 -304
  153. package/dist/types/apps/corporate/state-machines/corp-board.d.ts +188 -52
  154. package/dist/types/apps/corporate/state-machines/corp-entity.d.ts +267 -62
  155. package/dist/types/apps/corporate/state-machines/corp-securities.d.ts +355 -131
  156. package/dist/types/apps/corporate/state-machines/corp-shareholders.d.ts +225 -53
  157. package/dist/types/apps/governance/index.d.ts +396 -417
  158. package/dist/types/apps/governance/state-machines/dao-multisig.d.ts +92 -95
  159. package/dist/types/apps/governance/state-machines/dao-reputation.d.ts +57 -69
  160. package/dist/types/apps/governance/state-machines/dao-single.d.ts +40 -50
  161. package/dist/types/apps/governance/state-machines/dao-token.d.ts +80 -53
  162. package/dist/types/apps/governance/state-machines/governance-simple.d.ts +107 -121
  163. package/dist/types/apps/governance/state-machines/governance-universal.d.ts +17 -5
  164. package/dist/types/apps/identity/constants.d.ts +32 -4
  165. package/dist/types/apps/identity/index.d.ts +449 -100
  166. package/dist/types/apps/identity/state-machines/identity-agent.d.ts +30 -0
  167. package/dist/types/apps/identity/state-machines/identity-oracle.d.ts +41 -87
  168. package/dist/types/apps/identity/state-machines/identity-registry.d.ts +379 -0
  169. package/dist/types/apps/identity/state-machines/identity-universal.d.ts +15 -0
  170. package/dist/types/apps/identity/state-machines/index.d.ts +1 -0
  171. package/dist/types/apps/index.d.ts +1 -0
  172. package/dist/types/apps/lending/assets.d.ts +258 -0
  173. package/dist/types/apps/lending/credit-scoring.d.ts +80 -0
  174. package/dist/types/apps/lending/eligibility.d.ts +83 -0
  175. package/dist/types/apps/lending/index.d.ts +548 -0
  176. package/dist/types/apps/lending/state-machines/index.d.ts +5 -0
  177. package/dist/types/apps/lending/state-machines/lending-zk-loan.d.ts +528 -0
  178. package/dist/types/apps/markets/index.d.ts +184 -204
  179. package/dist/types/apps/markets/state-machines/market-auction.d.ts +25 -37
  180. package/dist/types/apps/markets/state-machines/market-crowdfund.d.ts +26 -34
  181. package/dist/types/apps/markets/state-machines/market-group-buy.d.ts +31 -43
  182. package/dist/types/apps/markets/state-machines/market-prediction.d.ts +67 -72
  183. package/dist/types/apps/markets/state-machines/market-universal.d.ts +30 -10
  184. package/dist/types/generated/index.d.ts +5 -5
  185. package/dist/types/generated/openapi.d.ts +1257 -0
  186. package/dist/types/generated/ottochain/apps/contracts/v1/contract.d.ts +5 -5
  187. package/dist/types/generated/ottochain/apps/identity/v1/identity.d.ts +12 -12
  188. package/dist/types/generated/ottochain/apps/markets/v1/market.d.ts +11 -11
  189. package/dist/types/generated/ottochain/v1/common.d.ts +228 -0
  190. package/dist/types/generated/ottochain/v1/fiber.d.ts +32 -1
  191. package/dist/types/generated/ottochain/v1/messages.d.ts +84 -0
  192. package/dist/types/generated/ottochain/v1/records.d.ts +34 -0
  193. package/dist/types/index.d.ts +8 -2
  194. package/dist/types/openapi.d.ts +22 -0
  195. package/dist/types/ottochain/genesis-manifest.d.ts +130 -0
  196. package/dist/types/ottochain/index.d.ts +6 -5
  197. package/dist/types/ottochain/metagraph-client.d.ts +49 -7
  198. package/dist/types/ottochain/snapshot.d.ts +6 -6
  199. package/dist/types/ottochain/transaction.d.ts +33 -1
  200. package/dist/types/ottochain/types.d.ts +602 -11
  201. package/dist/types/privacy/index.d.ts +6 -0
  202. package/dist/types/privacy/sealed-bid.d.ts +348 -0
  203. package/dist/types/privacy/shield-app.d.ts +48 -0
  204. package/dist/types/schema/effects.d.ts +34 -0
  205. package/dist/types/schema/fiber-app.d.ts +41 -3
  206. package/dist/types/schema/guard-lint.d.ts +111 -0
  207. package/dist/types/schema/guards.d.ts +134 -0
  208. package/dist/types/signing.d.ts +45 -0
  209. package/dist/types/validation.d.ts +22 -217
  210. package/dist/types/verify.d.ts +4 -0
  211. package/dist/types/zk/commit.d.ts +28 -0
  212. package/dist/types/zk/guard.d.ts +46 -0
  213. package/dist/types/zk/index.d.ts +19 -0
  214. package/dist/types/zk/preimage.d.ts +10 -0
  215. package/dist/types/zk/prover.d.ts +34 -0
  216. package/dist/types/zk/registry.d.ts +34 -0
  217. package/dist/types/zk/types.d.ts +33 -0
  218. package/dist/types/zk/witness.d.ts +40 -0
  219. package/package.json +52 -35
  220. package/dist/cjs/ottochain/normalize.js +0 -186
  221. package/dist/esm/ottochain/normalize.js +0 -179
  222. package/dist/types/ottochain/normalize.d.ts +0 -79
@@ -132,12 +132,60 @@ exports.identityAgentDef = (0, fiber_app_js_1.defineFiberApp)({
132
132
  },
133
133
  },
134
134
  states: {
135
- REGISTERED: { id: "REGISTERED", isFinal: false },
136
- ACTIVE: { id: "ACTIVE", isFinal: false },
137
- CHALLENGED: { id: "CHALLENGED", isFinal: false },
138
- SUSPENDED: { id: "SUSPENDED", isFinal: false },
139
- PROBATION: { id: "PROBATION", isFinal: false },
140
- WITHDRAWN: { id: "WITHDRAWN", isFinal: true },
135
+ REGISTERED: {
136
+ id: "REGISTERED",
137
+ isFinal: false,
138
+ metadata: {
139
+ label: "Registered",
140
+ description: "Agent registered but not yet activated",
141
+ category: "initial",
142
+ },
143
+ },
144
+ ACTIVE: {
145
+ id: "ACTIVE",
146
+ isFinal: false,
147
+ metadata: {
148
+ label: "Active",
149
+ description: "Agent is active and accruing reputation",
150
+ category: "active",
151
+ },
152
+ },
153
+ CHALLENGED: {
154
+ id: "CHALLENGED",
155
+ isFinal: false,
156
+ metadata: {
157
+ label: "Challenged",
158
+ description: "A challenge has been raised; awaiting resolution",
159
+ category: "pending",
160
+ },
161
+ },
162
+ SUSPENDED: {
163
+ id: "SUSPENDED",
164
+ isFinal: false,
165
+ metadata: {
166
+ label: "Suspended",
167
+ description: "Agent suspended after an upheld challenge",
168
+ category: "pending",
169
+ },
170
+ },
171
+ PROBATION: {
172
+ id: "PROBATION",
173
+ isFinal: false,
174
+ metadata: {
175
+ label: "Probation",
176
+ description: "Conditional reinstatement under monitoring",
177
+ category: "active",
178
+ },
179
+ },
180
+ WITHDRAWN: {
181
+ id: "WITHDRAWN",
182
+ isFinal: true,
183
+ metadata: {
184
+ label: "Withdrawn",
185
+ description: "Agent withdrawn from the registry (terminal)",
186
+ category: "terminal",
187
+ },
188
+ },
141
189
  },
142
190
  initialState: "REGISTERED",
143
191
  transitions: [
@@ -149,7 +197,7 @@ exports.identityAgentDef = (0, fiber_app_js_1.defineFiberApp)({
149
197
  effect: {
150
198
  merge: [
151
199
  { var: "state" },
152
- { status: "ACTIVE", activatedAt: { var: "$timestamp" } },
200
+ { status: "ACTIVE", activatedAt: { var: "$ordinal" } },
153
201
  ],
154
202
  },
155
203
  },
@@ -206,7 +254,7 @@ exports.identityAgentDef = (0, fiber_app_js_1.defineFiberApp)({
206
254
  effect: {
207
255
  merge: [
208
256
  { var: "state" },
209
- { status: "SUSPENDED", suspendedAt: { var: "$timestamp" } },
257
+ { status: "SUSPENDED", suspendedAt: { var: "$ordinal" } },
210
258
  ],
211
259
  },
212
260
  },
@@ -218,7 +266,7 @@ exports.identityAgentDef = (0, fiber_app_js_1.defineFiberApp)({
218
266
  effect: {
219
267
  merge: [
220
268
  { var: "state" },
221
- { status: "PROBATION", probationStartedAt: { var: "$timestamp" } },
269
+ { status: "PROBATION", probationStartedAt: { var: "$ordinal" } },
222
270
  ],
223
271
  },
224
272
  },
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.identityOracleDef = 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
  * Oracle identity with staking, attestations, reputation, and slashing mechanics.
7
8
  */
@@ -14,13 +15,18 @@ exports.identityOracleDef = (0, fiber_app_js_1.defineFiberApp)({
14
15
  description: "Oracle identity with staking, attestations, reputation, and slashing mechanics",
15
16
  },
16
17
  createSchema: {
17
- required: ["owner", "stake", "domains"],
18
+ required: ["owner", "stake", "domains", "slasher"],
18
19
  properties: {
19
20
  owner: {
20
21
  type: "address",
21
22
  description: "Oracle owner DAG address",
22
23
  immutable: true,
23
24
  },
25
+ slasher: {
26
+ type: "address",
27
+ description: "DAG address of the slasher authorized to penalize this oracle's stake",
28
+ immutable: true,
29
+ },
24
30
  stake: {
25
31
  type: "integer",
26
32
  minimum: 0,
@@ -41,6 +47,7 @@ exports.identityOracleDef = (0, fiber_app_js_1.defineFiberApp)({
41
47
  stateSchema: {
42
48
  properties: {
43
49
  owner: { type: "address", immutable: true },
50
+ slasher: { type: "address", immutable: true },
44
51
  address: { type: "address", computed: true },
45
52
  stake: { type: "integer", computed: true },
46
53
  minStake: { type: "integer" },
@@ -88,7 +95,6 @@ exports.identityOracleDef = (0, fiber_app_js_1.defineFiberApp)({
88
95
  required: ["agent"],
89
96
  properties: {
90
97
  agent: { type: "address" },
91
- adminOverride: { type: "boolean", default: false },
92
98
  },
93
99
  },
94
100
  add_stake: {
@@ -132,11 +138,51 @@ exports.identityOracleDef = (0, fiber_app_js_1.defineFiberApp)({
132
138
  },
133
139
  },
134
140
  states: {
135
- UNREGISTERED: { id: "UNREGISTERED", isFinal: false },
136
- REGISTERED: { id: "REGISTERED", isFinal: false },
137
- ACTIVE: { id: "ACTIVE", isFinal: false },
138
- SLASHED: { id: "SLASHED", isFinal: false },
139
- WITHDRAWN: { id: "WITHDRAWN", isFinal: true },
141
+ UNREGISTERED: {
142
+ id: "UNREGISTERED",
143
+ isFinal: false,
144
+ metadata: {
145
+ label: "Unregistered",
146
+ description: "Oracle not yet registered; awaiting stake",
147
+ category: "initial",
148
+ },
149
+ },
150
+ REGISTERED: {
151
+ id: "REGISTERED",
152
+ isFinal: false,
153
+ metadata: {
154
+ label: "Registered",
155
+ description: "Oracle staked and registered but not yet active",
156
+ category: "pending",
157
+ },
158
+ },
159
+ ACTIVE: {
160
+ id: "ACTIVE",
161
+ isFinal: false,
162
+ metadata: {
163
+ label: "Active",
164
+ description: "Oracle is active and may submit resolutions",
165
+ category: "active",
166
+ },
167
+ },
168
+ SLASHED: {
169
+ id: "SLASHED",
170
+ isFinal: false,
171
+ metadata: {
172
+ label: "Slashed",
173
+ description: "Oracle penalized for a lost dispute; stake reduced",
174
+ category: "pending",
175
+ },
176
+ },
177
+ WITHDRAWN: {
178
+ id: "WITHDRAWN",
179
+ isFinal: true,
180
+ metadata: {
181
+ label: "Withdrawn",
182
+ description: "Oracle withdrawn and stake reclaimed (terminal)",
183
+ category: "terminal",
184
+ },
185
+ },
140
186
  },
141
187
  initialState: "UNREGISTERED",
142
188
  transitions: [
@@ -152,7 +198,7 @@ exports.identityOracleDef = (0, fiber_app_js_1.defineFiberApp)({
152
198
  status: "REGISTERED",
153
199
  address: { var: "event.agent" },
154
200
  stake: { var: "event.stake" },
155
- registeredAt: { var: "$timestamp" },
201
+ registeredAt: { var: "$ordinal" },
156
202
  reputation: {
157
203
  accuracy: 100,
158
204
  totalResolutions: 0,
@@ -169,16 +215,12 @@ exports.identityOracleDef = (0, fiber_app_js_1.defineFiberApp)({
169
215
  from: "REGISTERED",
170
216
  to: "ACTIVE",
171
217
  eventName: "activate",
172
- guard: {
173
- or: [
174
- { "===": [{ var: "event.agent" }, { var: "state.address" }] },
175
- { var: "event.adminOverride" },
176
- ],
177
- },
218
+ // authority gate — an ARBITER/SLASHER attestation check layers on additively when the identity registry lands (see docs/design/app-hardening-identity-integration.md §4.2)
219
+ guard: (0, guards_js_1.signerIsParty)("state.address"),
178
220
  effect: {
179
221
  merge: [
180
222
  { var: "state" },
181
- { status: "ACTIVE", activatedAt: { var: "$timestamp" } },
223
+ { status: "ACTIVE", activatedAt: { var: "$ordinal" } },
182
224
  ],
183
225
  },
184
226
  },
@@ -188,7 +230,7 @@ exports.identityOracleDef = (0, fiber_app_js_1.defineFiberApp)({
188
230
  eventName: "add_stake",
189
231
  guard: {
190
232
  and: [
191
- { "===": [{ var: "event.agent" }, { var: "state.address" }] },
233
+ (0, guards_js_1.signerIsParty)("state.address"),
192
234
  { ">": [{ var: "event.amount" }, 0] },
193
235
  ],
194
236
  },
@@ -197,7 +239,7 @@ exports.identityOracleDef = (0, fiber_app_js_1.defineFiberApp)({
197
239
  { var: "state" },
198
240
  {
199
241
  stake: { "+": [{ var: "state.stake" }, { var: "event.amount" }] },
200
- lastStakeAt: { var: "$timestamp" },
242
+ lastStakeAt: { var: "$ordinal" },
201
243
  },
202
244
  ],
203
245
  },
@@ -228,7 +270,7 @@ exports.identityOracleDef = (0, fiber_app_js_1.defineFiberApp)({
228
270
  },
229
271
  ],
230
272
  },
231
- lastResolutionAt: { var: "$timestamp" },
273
+ lastResolutionAt: { var: "$ordinal" },
232
274
  },
233
275
  ],
234
276
  },
@@ -237,9 +279,10 @@ exports.identityOracleDef = (0, fiber_app_js_1.defineFiberApp)({
237
279
  from: "ACTIVE",
238
280
  to: "SLASHED",
239
281
  eventName: "slash",
282
+ // authority gate — an ARBITER/SLASHER attestation check layers on additively when the identity registry lands (see docs/design/app-hardening-identity-integration.md §4.2)
240
283
  guard: {
241
284
  and: [
242
- { var: "event.reason" },
285
+ (0, guards_js_1.signerIsParty)("state.slasher"),
243
286
  { ">": [{ var: "event.amount" }, 0] },
244
287
  { "<=": [{ var: "event.amount" }, { var: "state.stake" }] },
245
288
  ],
@@ -258,12 +301,12 @@ exports.identityOracleDef = (0, fiber_app_js_1.defineFiberApp)({
258
301
  reason: { var: "event.reason" },
259
302
  amount: { var: "event.amount" },
260
303
  marketId: { var: "event.marketId" },
261
- slashedAt: { var: "$timestamp" },
304
+ slashedAt: { var: "$ordinal" },
262
305
  },
263
306
  ],
264
307
  ],
265
308
  },
266
- slashedAt: { var: "$timestamp" },
309
+ slashedAt: { var: "$ordinal" },
267
310
  },
268
311
  ],
269
312
  },
@@ -274,14 +317,14 @@ exports.identityOracleDef = (0, fiber_app_js_1.defineFiberApp)({
274
317
  eventName: "reactivate",
275
318
  guard: {
276
319
  and: [
277
- { "===": [{ var: "event.agent" }, { var: "state.address" }] },
320
+ (0, guards_js_1.signerIsParty)("state.address"),
278
321
  { ">=": [{ var: "state.stake" }, { var: "state.minStake" }] },
279
322
  ],
280
323
  },
281
324
  effect: {
282
325
  merge: [
283
326
  { var: "state" },
284
- { status: "ACTIVE", reactivatedAt: { var: "$timestamp" } },
327
+ { status: "ACTIVE", reactivatedAt: { var: "$ordinal" } },
285
328
  ],
286
329
  },
287
330
  },
@@ -289,13 +332,13 @@ exports.identityOracleDef = (0, fiber_app_js_1.defineFiberApp)({
289
332
  from: "ACTIVE",
290
333
  to: "WITHDRAWN",
291
334
  eventName: "withdraw",
292
- guard: { "===": [{ var: "event.agent" }, { var: "state.address" }] },
335
+ guard: (0, guards_js_1.signerIsParty)("state.address"),
293
336
  effect: {
294
337
  merge: [
295
338
  { var: "state" },
296
339
  {
297
340
  status: "WITHDRAWN",
298
- withdrawnAt: { var: "$timestamp" },
341
+ withdrawnAt: { var: "$ordinal" },
299
342
  finalStake: { var: "state.stake" },
300
343
  },
301
344
  ],
@@ -305,13 +348,13 @@ exports.identityOracleDef = (0, fiber_app_js_1.defineFiberApp)({
305
348
  from: "SLASHED",
306
349
  to: "WITHDRAWN",
307
350
  eventName: "withdraw",
308
- guard: { "===": [{ var: "event.agent" }, { var: "state.address" }] },
351
+ guard: (0, guards_js_1.signerIsParty)("state.address"),
309
352
  effect: {
310
353
  merge: [
311
354
  { var: "state" },
312
355
  {
313
356
  status: "WITHDRAWN",
314
- withdrawnAt: { var: "$timestamp" },
357
+ withdrawnAt: { var: "$ordinal" },
315
358
  finalStake: { var: "state.stake" },
316
359
  },
317
360
  ],
@@ -0,0 +1,288 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.identityRegistryDef = void 0;
4
+ const fiber_app_js_1 = require("../../../schema/fiber-app.js");
5
+ const guards_js_1 = require("../../../schema/guards.js");
6
+ /**
7
+ * Identity Registry — the ecosystem authority & reputation source.
8
+ *
9
+ * Aggregates, under a single authority-governed fiber:
10
+ * - `reputations: { <address>: int }` — the public reputation read by reputation-gated apps
11
+ * (dao-reputation, credit-scoring) via a declared dependency + the `signerHasReputation` helper.
12
+ * - role attestations (ARBITER / SLASHER / ISSUER / BOARD_MEMBER) as FLAT per-role maps
13
+ * `{ <address>: true }`, read via the `signerHasRole` helper for judicial / issuance / governance
14
+ * authority gates.
15
+ *
16
+ * Writes are gated to the registry's pinned `authority` (immutable, set at create) and bound to the
17
+ * CHAIN-VERIFIED signer via `signerIsParty("state.authority")` — never `event.agent`. Reads happen
18
+ * cross-fiber: a consumer app declares this registry as a dependency and reads
19
+ * `machines.<registryDep>.state.reputations` / `.arbiters` / … bound to `proofs[].address`.
20
+ *
21
+ * Roles are flat per-role maps rather than a nested `roles[addr][ROLE]` map on purpose: metakit
22
+ * `get`/`has` on a NULL inner map throw (they are not null-total), so a nested read would error for
23
+ * any signer with no roles entry — the common case. Flat maps keep both the write (`set`/`unset`) and
24
+ * the read (`has`) total and fail-closed. New role types are added as new state maps + a cascade arm.
25
+ *
26
+ * See docs/design/app-hardening-identity-integration.md §3–§4 and src/schema/guards.ts
27
+ * (signerHasReputation / signerHasRole).
28
+ */
29
+ exports.identityRegistryDef = (0, fiber_app_js_1.defineFiberApp)({
30
+ metadata: {
31
+ name: "IdentityRegistry",
32
+ app: "identity",
33
+ type: "registry",
34
+ version: "1.0.0",
35
+ description: "Ecosystem reputation + role-attestation registry; authority-gated writes, dependency reads.",
36
+ crossReferences: {
37
+ IdentityAgent: "per-agent reputation source",
38
+ Governance: "reputation-gated participation",
39
+ Contracts: "ARBITER-gated dispute settlement",
40
+ Corporate: "ISSUER / BOARD_MEMBER authority",
41
+ },
42
+ },
43
+ createSchema: {
44
+ required: ["authority"],
45
+ properties: {
46
+ authority: {
47
+ type: "address",
48
+ description: "DAG address authorized to write reputation + role attestations (immutable)",
49
+ immutable: true,
50
+ },
51
+ },
52
+ },
53
+ stateSchema: {
54
+ properties: {
55
+ authority: { type: "address", immutable: true },
56
+ // { <address>: int } — public reputation, read via signerHasReputation
57
+ reputations: { type: "object", computed: true },
58
+ // FLAT per-role attestation maps { <address>: true }, read via signerHasRole
59
+ arbiters: { type: "object", computed: true },
60
+ slashers: { type: "object", computed: true },
61
+ issuers: { type: "object", computed: true },
62
+ boardMembers: { type: "object", computed: true },
63
+ },
64
+ },
65
+ eventSchemas: {
66
+ set_reputation: {
67
+ description: "Authority sets an address's reputation to an absolute score",
68
+ required: ["subject", "score"],
69
+ properties: {
70
+ subject: { type: "address" },
71
+ score: { type: "integer" },
72
+ },
73
+ },
74
+ adjust_reputation: {
75
+ description: "Authority adjusts an address's reputation by a signed delta",
76
+ required: ["subject", "delta"],
77
+ properties: {
78
+ subject: { type: "address" },
79
+ delta: { type: "integer" },
80
+ },
81
+ },
82
+ grant_role: {
83
+ description: "Authority grants a role attestation (ARBITER|SLASHER|ISSUER|BOARD_MEMBER) to an address",
84
+ required: ["subject", "role"],
85
+ properties: {
86
+ subject: { type: "address" },
87
+ role: {
88
+ type: "string",
89
+ enum: ["ARBITER", "SLASHER", "ISSUER", "BOARD_MEMBER"],
90
+ },
91
+ },
92
+ },
93
+ revoke_role: {
94
+ description: "Authority revokes a role attestation from an address",
95
+ required: ["subject", "role"],
96
+ properties: {
97
+ subject: { type: "address" },
98
+ role: {
99
+ type: "string",
100
+ enum: ["ARBITER", "SLASHER", "ISSUER", "BOARD_MEMBER"],
101
+ },
102
+ },
103
+ },
104
+ },
105
+ states: {
106
+ ACTIVE: {
107
+ id: "ACTIVE",
108
+ isFinal: false,
109
+ metadata: {
110
+ label: "Active",
111
+ description: "Registry accepting authority writes",
112
+ category: "active",
113
+ },
114
+ },
115
+ },
116
+ initialState: "ACTIVE",
117
+ transitions: [
118
+ // ACTIVE → ACTIVE: set_reputation (absolute)
119
+ {
120
+ from: "ACTIVE",
121
+ to: "ACTIVE",
122
+ eventName: "set_reputation",
123
+ guard: (0, guards_js_1.signerIsParty)("state.authority"),
124
+ effect: {
125
+ merge: [
126
+ { var: "state" },
127
+ {
128
+ reputations: {
129
+ set: [
130
+ { var: "state.reputations" },
131
+ { var: "event.subject" },
132
+ { var: "event.score" },
133
+ ],
134
+ },
135
+ },
136
+ ],
137
+ },
138
+ dependencies: [],
139
+ },
140
+ // ACTIVE → ACTIVE: adjust_reputation (signed delta; absent subject starts from 0)
141
+ {
142
+ from: "ACTIVE",
143
+ to: "ACTIVE",
144
+ eventName: "adjust_reputation",
145
+ guard: (0, guards_js_1.signerIsParty)("state.authority"),
146
+ effect: {
147
+ merge: [
148
+ { var: "state" },
149
+ {
150
+ reputations: {
151
+ set: [
152
+ { var: "state.reputations" },
153
+ { var: "event.subject" },
154
+ {
155
+ "+": [
156
+ {
157
+ get: [
158
+ { var: "state.reputations" },
159
+ { var: "event.subject" },
160
+ ],
161
+ },
162
+ { var: "event.delta" },
163
+ ],
164
+ },
165
+ ],
166
+ },
167
+ },
168
+ ],
169
+ },
170
+ dependencies: [],
171
+ },
172
+ // ACTIVE → ACTIVE: grant_role (cascade selects the flat per-role map)
173
+ {
174
+ from: "ACTIVE",
175
+ to: "ACTIVE",
176
+ eventName: "grant_role",
177
+ guard: (0, guards_js_1.signerIsParty)("state.authority"),
178
+ effect: {
179
+ merge: [
180
+ { var: "state" },
181
+ {
182
+ arbiters: {
183
+ if: [
184
+ { "==": [{ var: "event.role" }, "ARBITER"] },
185
+ {
186
+ set: [
187
+ { var: "state.arbiters" },
188
+ { var: "event.subject" },
189
+ true,
190
+ ],
191
+ },
192
+ { var: "state.arbiters" },
193
+ ],
194
+ },
195
+ slashers: {
196
+ if: [
197
+ { "==": [{ var: "event.role" }, "SLASHER"] },
198
+ {
199
+ set: [
200
+ { var: "state.slashers" },
201
+ { var: "event.subject" },
202
+ true,
203
+ ],
204
+ },
205
+ { var: "state.slashers" },
206
+ ],
207
+ },
208
+ issuers: {
209
+ if: [
210
+ { "==": [{ var: "event.role" }, "ISSUER"] },
211
+ {
212
+ set: [
213
+ { var: "state.issuers" },
214
+ { var: "event.subject" },
215
+ true,
216
+ ],
217
+ },
218
+ { var: "state.issuers" },
219
+ ],
220
+ },
221
+ boardMembers: {
222
+ if: [
223
+ { "==": [{ var: "event.role" }, "BOARD_MEMBER"] },
224
+ {
225
+ set: [
226
+ { var: "state.boardMembers" },
227
+ { var: "event.subject" },
228
+ true,
229
+ ],
230
+ },
231
+ { var: "state.boardMembers" },
232
+ ],
233
+ },
234
+ },
235
+ ],
236
+ },
237
+ dependencies: [],
238
+ },
239
+ // ACTIVE → ACTIVE: revoke_role (cascade unsets from the flat per-role map)
240
+ {
241
+ from: "ACTIVE",
242
+ to: "ACTIVE",
243
+ eventName: "revoke_role",
244
+ guard: (0, guards_js_1.signerIsParty)("state.authority"),
245
+ effect: {
246
+ merge: [
247
+ { var: "state" },
248
+ {
249
+ arbiters: {
250
+ if: [
251
+ { "==": [{ var: "event.role" }, "ARBITER"] },
252
+ { unset: [{ var: "state.arbiters" }, { var: "event.subject" }] },
253
+ { var: "state.arbiters" },
254
+ ],
255
+ },
256
+ slashers: {
257
+ if: [
258
+ { "==": [{ var: "event.role" }, "SLASHER"] },
259
+ { unset: [{ var: "state.slashers" }, { var: "event.subject" }] },
260
+ { var: "state.slashers" },
261
+ ],
262
+ },
263
+ issuers: {
264
+ if: [
265
+ { "==": [{ var: "event.role" }, "ISSUER"] },
266
+ { unset: [{ var: "state.issuers" }, { var: "event.subject" }] },
267
+ { var: "state.issuers" },
268
+ ],
269
+ },
270
+ boardMembers: {
271
+ if: [
272
+ { "==": [{ var: "event.role" }, "BOARD_MEMBER"] },
273
+ {
274
+ unset: [
275
+ { var: "state.boardMembers" },
276
+ { var: "event.subject" },
277
+ ],
278
+ },
279
+ { var: "state.boardMembers" },
280
+ ],
281
+ },
282
+ },
283
+ ],
284
+ },
285
+ dependencies: [],
286
+ },
287
+ ],
288
+ });
@@ -57,9 +57,33 @@ exports.identityUniversalDef = (0, fiber_app_js_1.defineFiberApp)({
57
57
  },
58
58
  },
59
59
  states: {
60
- CREATED: { id: "CREATED", isFinal: false },
61
- ACTIVE: { id: "ACTIVE", isFinal: false },
62
- INACTIVE: { id: "INACTIVE", isFinal: true },
60
+ CREATED: {
61
+ id: "CREATED",
62
+ isFinal: false,
63
+ metadata: {
64
+ label: "Created",
65
+ description: "Identity registered but not yet activated",
66
+ category: "initial",
67
+ },
68
+ },
69
+ ACTIVE: {
70
+ id: "ACTIVE",
71
+ isFinal: false,
72
+ metadata: {
73
+ label: "Active",
74
+ description: "Identity is active and can be updated",
75
+ category: "active",
76
+ },
77
+ },
78
+ INACTIVE: {
79
+ id: "INACTIVE",
80
+ isFinal: true,
81
+ metadata: {
82
+ label: "Inactive",
83
+ description: "Identity deactivated by its owner (terminal)",
84
+ category: "terminal",
85
+ },
86
+ },
63
87
  },
64
88
  initialState: "CREATED",
65
89
  transitions: [
@@ -71,7 +95,7 @@ exports.identityUniversalDef = (0, fiber_app_js_1.defineFiberApp)({
71
95
  effect: {
72
96
  merge: [
73
97
  { var: "state" },
74
- { status: "ACTIVE", activatedAt: { var: "$timestamp" } },
98
+ { status: "ACTIVE", activatedAt: { var: "$ordinal" } },
75
99
  ],
76
100
  },
77
101
  },
@@ -84,7 +108,7 @@ exports.identityUniversalDef = (0, fiber_app_js_1.defineFiberApp)({
84
108
  merge: [
85
109
  { var: "state" },
86
110
  {
87
- updatedAt: { var: "$timestamp" },
111
+ updatedAt: { var: "$ordinal" },
88
112
  metadata: { var: "event.metadata" },
89
113
  },
90
114
  ],
@@ -98,7 +122,7 @@ exports.identityUniversalDef = (0, fiber_app_js_1.defineFiberApp)({
98
122
  effect: {
99
123
  merge: [
100
124
  { var: "state" },
101
- { status: "INACTIVE", deactivatedAt: { var: "$timestamp" } },
125
+ { status: "INACTIVE", deactivatedAt: { var: "$ordinal" } },
102
126
  ],
103
127
  },
104
128
  },