@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
@@ -1,358 +1,340 @@
1
- import { defineFiberApp } from "../../../schema/fiber-app.js";
2
- import { signerIsParty } from "../../../schema/guards.js";
1
+ import { defineFiberApp } from '../../../schema/fiber-app.js';
2
+ import { signerIsParty } from '../../../schema/guards.js';
3
3
  /**
4
4
  * Oracle identity with staking, attestations, reputation, and slashing mechanics.
5
5
  */
6
6
  export const identityOracleDef = defineFiberApp({
7
7
  metadata: {
8
- name: "IdentityOracle",
9
- app: "identity",
10
- type: "oracle",
11
- version: "1.0.0",
12
- description: "Oracle identity with staking, attestations, reputation, and slashing mechanics",
8
+ name: 'IdentityOracle',
9
+ app: 'identity',
10
+ type: 'oracle',
11
+ version: '1.0.0',
12
+ description: 'Oracle identity with staking, attestations, reputation, and slashing mechanics',
13
13
  },
14
14
  createSchema: {
15
- required: ["owner", "stake", "domains", "slasher"],
15
+ required: ['owner', 'stake', 'domains', 'slasher'],
16
16
  properties: {
17
17
  owner: {
18
- type: "address",
19
- description: "Oracle owner DAG address",
18
+ type: 'address',
19
+ description: 'Oracle owner DAG address',
20
20
  immutable: true,
21
21
  },
22
22
  slasher: {
23
- type: "address",
23
+ type: 'address',
24
24
  description: "DAG address of the slasher authorized to penalize this oracle's stake",
25
25
  immutable: true,
26
26
  },
27
27
  stake: {
28
- type: "integer",
28
+ type: 'integer',
29
29
  minimum: 0,
30
- description: "Initial stake amount",
30
+ description: 'Initial stake amount',
31
31
  },
32
32
  domains: {
33
- type: "array",
34
- items: { type: "string" },
35
- description: "Oracle specialization domains",
33
+ type: 'array',
34
+ items: { type: 'string' },
35
+ description: 'Oracle specialization domains',
36
36
  },
37
37
  minStake: {
38
- type: "integer",
38
+ type: 'integer',
39
39
  default: 1000,
40
- description: "Minimum stake required",
40
+ description: 'Minimum stake required',
41
41
  },
42
42
  },
43
43
  },
44
44
  stateSchema: {
45
45
  properties: {
46
- owner: { type: "address", immutable: true },
47
- slasher: { type: "address", immutable: true },
48
- address: { type: "address", computed: true },
49
- stake: { type: "integer", computed: true },
50
- minStake: { type: "integer" },
51
- domains: { type: "array", items: { type: "string" } },
46
+ owner: { type: 'address', immutable: true },
47
+ slasher: { type: 'address', immutable: true },
48
+ address: { type: 'address', computed: true },
49
+ stake: { type: 'integer', computed: true },
50
+ minStake: { type: 'integer' },
51
+ domains: { type: 'array', items: { type: 'string' } },
52
52
  status: {
53
- type: "string",
54
- enum: [
55
- "UNREGISTERED",
56
- "REGISTERED",
57
- "ACTIVE",
58
- "SLASHED",
59
- "WITHDRAWN",
60
- ],
53
+ type: 'string',
54
+ enum: ['UNREGISTERED', 'REGISTERED', 'ACTIVE', 'SLASHED', 'WITHDRAWN'],
61
55
  computed: true,
62
56
  },
63
57
  reputation: {
64
- type: "object",
58
+ type: 'object',
65
59
  properties: {
66
- accuracy: { type: "integer" },
67
- totalResolutions: { type: "integer" },
68
- disputesWon: { type: "integer" },
69
- disputesLost: { type: "integer" },
60
+ accuracy: { type: 'integer' },
61
+ totalResolutions: { type: 'integer' },
62
+ disputesWon: { type: 'integer' },
63
+ disputesLost: { type: 'integer' },
70
64
  },
71
65
  computed: true,
72
66
  },
73
- slashingHistory: { type: "array", computed: true },
74
- registeredAt: { type: "timestamp", computed: true },
75
- activatedAt: { type: "timestamp", computed: true },
76
- slashedAt: { type: "timestamp", computed: true },
77
- withdrawnAt: { type: "timestamp", computed: true },
67
+ slashingHistory: { type: 'array', computed: true },
68
+ registeredAt: { type: 'timestamp', computed: true },
69
+ activatedAt: { type: 'timestamp', computed: true },
70
+ slashedAt: { type: 'timestamp', computed: true },
71
+ withdrawnAt: { type: 'timestamp', computed: true },
78
72
  },
79
73
  },
80
74
  eventSchemas: {
81
75
  register: {
82
- description: "Register as an oracle with initial stake",
83
- required: ["agent", "stake", "domains"],
76
+ description: 'Register as an oracle with initial stake',
77
+ required: ['agent', 'stake', 'domains'],
84
78
  properties: {
85
- agent: { type: "address" },
86
- stake: { type: "integer", minimum: 0 },
87
- domains: { type: "array", items: { type: "string" } },
79
+ agent: { type: 'address' },
80
+ stake: { type: 'integer', minimum: 0 },
81
+ domains: { type: 'array', items: { type: 'string' } },
88
82
  },
89
83
  },
90
84
  activate: {
91
- description: "Activate a registered oracle",
92
- required: ["agent"],
85
+ description: 'Activate a registered oracle',
86
+ required: ['agent'],
93
87
  properties: {
94
- agent: { type: "address" },
88
+ agent: { type: 'address' },
95
89
  },
96
90
  },
97
91
  add_stake: {
98
- description: "Add stake to an active oracle",
99
- required: ["agent", "amount"],
92
+ description: 'Add stake to an active oracle',
93
+ required: ['agent', 'amount'],
100
94
  properties: {
101
- agent: { type: "address" },
102
- amount: { type: "integer", minimum: 1 },
95
+ agent: { type: 'address' },
96
+ amount: { type: 'integer', minimum: 1 },
103
97
  },
104
98
  },
105
99
  record_resolution: {
106
- description: "Record a market resolution outcome",
107
- required: ["marketId", "correct"],
100
+ description: 'Record a market resolution outcome',
101
+ required: ['marketId', 'correct'],
108
102
  properties: {
109
- marketId: { type: "uuid" },
110
- correct: { type: "boolean" },
103
+ marketId: { type: 'uuid' },
104
+ correct: { type: 'boolean' },
111
105
  },
112
106
  },
113
107
  slash: {
114
- description: "Slash oracle stake for misconduct",
115
- required: ["reason", "amount"],
108
+ description: 'Slash oracle stake for misconduct',
109
+ required: ['reason', 'amount'],
116
110
  properties: {
117
- reason: { type: "string" },
118
- amount: { type: "integer", minimum: 1 },
119
- marketId: { type: "uuid" },
111
+ reason: { type: 'string' },
112
+ amount: { type: 'integer', minimum: 1 },
113
+ marketId: { type: 'uuid' },
120
114
  },
121
115
  },
122
116
  reactivate: {
123
- description: "Reactivate a slashed oracle",
124
- required: ["agent"],
117
+ description: 'Reactivate a slashed oracle',
118
+ required: ['agent'],
125
119
  properties: {
126
- agent: { type: "address" },
120
+ agent: { type: 'address' },
127
121
  },
128
122
  },
129
123
  withdraw: {
130
- description: "Withdraw oracle and reclaim stake",
131
- required: ["agent"],
124
+ description: 'Withdraw oracle and reclaim stake',
125
+ required: ['agent'],
132
126
  properties: {
133
- agent: { type: "address" },
127
+ agent: { type: 'address' },
134
128
  },
135
129
  },
136
130
  },
137
131
  states: {
138
132
  UNREGISTERED: {
139
- id: "UNREGISTERED",
133
+ id: 'UNREGISTERED',
140
134
  isFinal: false,
141
135
  metadata: {
142
- label: "Unregistered",
143
- description: "Oracle not yet registered; awaiting stake",
144
- category: "initial",
136
+ label: 'Unregistered',
137
+ description: 'Oracle not yet registered; awaiting stake',
138
+ category: 'initial',
145
139
  },
146
140
  },
147
141
  REGISTERED: {
148
- id: "REGISTERED",
142
+ id: 'REGISTERED',
149
143
  isFinal: false,
150
144
  metadata: {
151
- label: "Registered",
152
- description: "Oracle staked and registered but not yet active",
153
- category: "pending",
145
+ label: 'Registered',
146
+ description: 'Oracle staked and registered but not yet active',
147
+ category: 'pending',
154
148
  },
155
149
  },
156
150
  ACTIVE: {
157
- id: "ACTIVE",
151
+ id: 'ACTIVE',
158
152
  isFinal: false,
159
153
  metadata: {
160
- label: "Active",
161
- description: "Oracle is active and may submit resolutions",
162
- category: "active",
154
+ label: 'Active',
155
+ description: 'Oracle is active and may submit resolutions',
156
+ category: 'active',
163
157
  },
164
158
  },
165
159
  SLASHED: {
166
- id: "SLASHED",
160
+ id: 'SLASHED',
167
161
  isFinal: false,
168
162
  metadata: {
169
- label: "Slashed",
170
- description: "Oracle penalized for a lost dispute; stake reduced",
171
- category: "pending",
163
+ label: 'Slashed',
164
+ description: 'Oracle penalized for a lost dispute; stake reduced',
165
+ category: 'pending',
172
166
  },
173
167
  },
174
168
  WITHDRAWN: {
175
- id: "WITHDRAWN",
169
+ id: 'WITHDRAWN',
176
170
  isFinal: true,
177
171
  metadata: {
178
- label: "Withdrawn",
179
- description: "Oracle withdrawn and stake reclaimed (terminal)",
180
- category: "terminal",
172
+ label: 'Withdrawn',
173
+ description: 'Oracle withdrawn and stake reclaimed (terminal)',
174
+ category: 'terminal',
181
175
  },
182
176
  },
183
177
  },
184
- initialState: "UNREGISTERED",
178
+ initialState: 'UNREGISTERED',
185
179
  transitions: [
186
180
  {
187
- from: "UNREGISTERED",
188
- to: "REGISTERED",
189
- eventName: "register",
190
- guard: { ">=": [{ var: "event.stake" }, { var: "state.minStake" }] },
181
+ from: 'UNREGISTERED',
182
+ to: 'REGISTERED',
183
+ eventName: 'register',
184
+ guard: { '>=': [{ var: 'event.stake' }, { var: 'state.minStake' }] },
191
185
  effect: {
192
186
  merge: [
193
- { var: "state" },
187
+ { var: 'state' },
194
188
  {
195
- status: "REGISTERED",
196
- address: { var: "event.agent" },
197
- stake: { var: "event.stake" },
198
- registeredAt: { var: "$ordinal" },
189
+ status: 'REGISTERED',
190
+ address: { var: 'event.agent' },
191
+ stake: { var: 'event.stake' },
192
+ registeredAt: { var: '$ordinal' },
199
193
  reputation: {
200
194
  accuracy: 100,
201
195
  totalResolutions: 0,
202
196
  disputesWon: 0,
203
197
  disputesLost: 0,
204
198
  },
205
- domains: { var: "event.domains" },
199
+ domains: { var: 'event.domains' },
206
200
  slashingHistory: [],
207
201
  },
208
202
  ],
209
203
  },
210
204
  },
211
205
  {
212
- from: "REGISTERED",
213
- to: "ACTIVE",
214
- eventName: "activate",
206
+ from: 'REGISTERED',
207
+ to: 'ACTIVE',
208
+ eventName: 'activate',
215
209
  // 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)
216
- guard: signerIsParty("state.address"),
210
+ guard: signerIsParty('state.address'),
217
211
  effect: {
218
- merge: [
219
- { var: "state" },
220
- { status: "ACTIVE", activatedAt: { var: "$ordinal" } },
221
- ],
212
+ merge: [{ var: 'state' }, { status: 'ACTIVE', activatedAt: { var: '$ordinal' } }],
222
213
  },
223
214
  },
224
215
  {
225
- from: "ACTIVE",
226
- to: "ACTIVE",
227
- eventName: "add_stake",
216
+ from: 'ACTIVE',
217
+ to: 'ACTIVE',
218
+ eventName: 'add_stake',
228
219
  guard: {
229
- and: [
230
- signerIsParty("state.address"),
231
- { ">": [{ var: "event.amount" }, 0] },
232
- ],
220
+ and: [signerIsParty('state.address'), { '>': [{ var: 'event.amount' }, 0] }],
233
221
  },
234
222
  effect: {
235
223
  merge: [
236
- { var: "state" },
224
+ { var: 'state' },
237
225
  {
238
- stake: { "+": [{ var: "state.stake" }, { var: "event.amount" }] },
239
- lastStakeAt: { var: "$ordinal" },
226
+ stake: { '+': [{ var: 'state.stake' }, { var: 'event.amount' }] },
227
+ lastStakeAt: { var: '$ordinal' },
240
228
  },
241
229
  ],
242
230
  },
243
231
  },
244
232
  {
245
- from: "ACTIVE",
246
- to: "ACTIVE",
247
- eventName: "record_resolution",
248
- guard: { var: "event.marketId" },
233
+ from: 'ACTIVE',
234
+ to: 'ACTIVE',
235
+ eventName: 'record_resolution',
236
+ guard: { var: 'event.marketId' },
249
237
  effect: {
250
238
  merge: [
251
- { var: "state" },
239
+ { var: 'state' },
252
240
  {
253
241
  reputation: {
254
242
  merge: [
255
- { var: "state.reputation" },
243
+ { var: 'state.reputation' },
256
244
  {
257
245
  totalResolutions: {
258
- "+": [{ var: "state.reputation.totalResolutions" }, 1],
246
+ '+': [{ var: 'state.reputation.totalResolutions' }, 1],
259
247
  },
260
248
  accuracy: {
261
249
  if: [
262
- { var: "event.correct" },
263
- { var: "state.reputation.accuracy" },
264
- { "-": [{ var: "state.reputation.accuracy" }, 5] },
250
+ { var: 'event.correct' },
251
+ { var: 'state.reputation.accuracy' },
252
+ { '-': [{ var: 'state.reputation.accuracy' }, 5] },
265
253
  ],
266
254
  },
267
255
  },
268
256
  ],
269
257
  },
270
- lastResolutionAt: { var: "$ordinal" },
258
+ lastResolutionAt: { var: '$ordinal' },
271
259
  },
272
260
  ],
273
261
  },
274
262
  },
275
263
  {
276
- from: "ACTIVE",
277
- to: "SLASHED",
278
- eventName: "slash",
264
+ from: 'ACTIVE',
265
+ to: 'SLASHED',
266
+ eventName: 'slash',
279
267
  // 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)
280
268
  guard: {
281
269
  and: [
282
- signerIsParty("state.slasher"),
283
- { ">": [{ var: "event.amount" }, 0] },
284
- { "<=": [{ var: "event.amount" }, { var: "state.stake" }] },
270
+ signerIsParty('state.slasher'),
271
+ { '>': [{ var: 'event.amount' }, 0] },
272
+ { '<=': [{ var: 'event.amount' }, { var: 'state.stake' }] },
285
273
  ],
286
274
  },
287
275
  effect: {
288
276
  merge: [
289
- { var: "state" },
277
+ { var: 'state' },
290
278
  {
291
- status: "SLASHED",
292
- stake: { "-": [{ var: "state.stake" }, { var: "event.amount" }] },
279
+ status: 'SLASHED',
280
+ stake: { '-': [{ var: 'state.stake' }, { var: 'event.amount' }] },
293
281
  slashingHistory: {
294
282
  cat: [
295
- { var: "state.slashingHistory" },
283
+ { var: 'state.slashingHistory' },
296
284
  [
297
285
  {
298
- reason: { var: "event.reason" },
299
- amount: { var: "event.amount" },
300
- marketId: { var: "event.marketId" },
301
- slashedAt: { var: "$ordinal" },
286
+ reason: { var: 'event.reason' },
287
+ amount: { var: 'event.amount' },
288
+ marketId: { var: 'event.marketId' },
289
+ slashedAt: { var: '$ordinal' },
302
290
  },
303
291
  ],
304
292
  ],
305
293
  },
306
- slashedAt: { var: "$ordinal" },
294
+ slashedAt: { var: '$ordinal' },
307
295
  },
308
296
  ],
309
297
  },
310
298
  },
311
299
  {
312
- from: "SLASHED",
313
- to: "ACTIVE",
314
- eventName: "reactivate",
300
+ from: 'SLASHED',
301
+ to: 'ACTIVE',
302
+ eventName: 'reactivate',
315
303
  guard: {
316
- and: [
317
- signerIsParty("state.address"),
318
- { ">=": [{ var: "state.stake" }, { var: "state.minStake" }] },
319
- ],
304
+ and: [signerIsParty('state.address'), { '>=': [{ var: 'state.stake' }, { var: 'state.minStake' }] }],
320
305
  },
321
306
  effect: {
322
- merge: [
323
- { var: "state" },
324
- { status: "ACTIVE", reactivatedAt: { var: "$ordinal" } },
325
- ],
307
+ merge: [{ var: 'state' }, { status: 'ACTIVE', reactivatedAt: { var: '$ordinal' } }],
326
308
  },
327
309
  },
328
310
  {
329
- from: "ACTIVE",
330
- to: "WITHDRAWN",
331
- eventName: "withdraw",
332
- guard: signerIsParty("state.address"),
311
+ from: 'ACTIVE',
312
+ to: 'WITHDRAWN',
313
+ eventName: 'withdraw',
314
+ guard: signerIsParty('state.address'),
333
315
  effect: {
334
316
  merge: [
335
- { var: "state" },
317
+ { var: 'state' },
336
318
  {
337
- status: "WITHDRAWN",
338
- withdrawnAt: { var: "$ordinal" },
339
- finalStake: { var: "state.stake" },
319
+ status: 'WITHDRAWN',
320
+ withdrawnAt: { var: '$ordinal' },
321
+ finalStake: { var: 'state.stake' },
340
322
  },
341
323
  ],
342
324
  },
343
325
  },
344
326
  {
345
- from: "SLASHED",
346
- to: "WITHDRAWN",
347
- eventName: "withdraw",
348
- guard: signerIsParty("state.address"),
327
+ from: 'SLASHED',
328
+ to: 'WITHDRAWN',
329
+ eventName: 'withdraw',
330
+ guard: signerIsParty('state.address'),
349
331
  effect: {
350
332
  merge: [
351
- { var: "state" },
333
+ { var: 'state' },
352
334
  {
353
- status: "WITHDRAWN",
354
- withdrawnAt: { var: "$ordinal" },
355
- finalStake: { var: "state.stake" },
335
+ status: 'WITHDRAWN',
336
+ withdrawnAt: { var: '$ordinal' },
337
+ finalStake: { var: 'state.stake' },
356
338
  },
357
339
  ],
358
340
  },