@ottochain/sdk 2.4.0 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (225) 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 +20 -3
  62. package/dist/cjs/ottochain/genesis-manifest.js +6 -0
  63. package/dist/cjs/ottochain/metagraph-client.js +16 -8
  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 +117 -1
  69. package/dist/cjs/schema/fiber-app.js +132 -3
  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 +16 -8
  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 +110 -0
  148. package/dist/esm/schema/fiber-app.js +127 -3
  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/transaction.d.ts +9 -1
  212. package/dist/types/ottochain/types.d.ts +1 -1
  213. package/dist/types/privacy/index.d.ts +2 -2
  214. package/dist/types/privacy/sealed-bid.d.ts +9 -9
  215. package/dist/types/privacy/shield-app.d.ts +1 -1
  216. package/dist/types/schema/effects.d.ts +107 -0
  217. package/dist/types/schema/fiber-app.d.ts +281 -0
  218. package/dist/types/schema/guards.d.ts +12 -0
  219. package/dist/types/templates/asset-policy.d.ts +119 -0
  220. package/dist/types/templates/index.d.ts +26 -0
  221. package/dist/types/templates/machine.d.ts +139 -0
  222. package/dist/types/templates/migration.d.ts +34 -0
  223. package/dist/types/templates/state-shape.d.ts +30 -0
  224. package/dist/types/zk/index.d.ts +4 -4
  225. package/package.json +31 -13
@@ -1,4 +1,4 @@
1
- import { defineFiberApp } from "../../../schema/fiber-app.js";
1
+ import { defineFiberApp } from '../../../schema/fiber-app.js';
2
2
  /**
3
3
  * Privacy-preserving zk-loan — a private-finance lending fiber modeled on Midnight's
4
4
  * zkLoan example, integrated with OttoChain's asset subsystem.
@@ -32,251 +32,262 @@ import { defineFiberApp } from "../../../schema/fiber-app.js";
32
32
  */
33
33
  export const lendingZkLoanDef = defineFiberApp({
34
34
  metadata: {
35
- name: "LendingZkLoan",
36
- app: "lending",
37
- type: "zkLoan",
38
- version: "1.0.0",
39
- description: "Privacy-preserving collateralized loan: the borrower proves loan eligibility (collateral coverage / credit-score floor) in zero-knowledge without revealing the financials; collateral, principal and repayment are asset-subsystem tokens driven by the loan lifecycle.",
35
+ name: 'LendingZkLoan',
36
+ app: 'lending',
37
+ type: 'zkLoan',
38
+ version: '1.0.0',
39
+ description: 'Privacy-preserving collateralized loan: the borrower proves loan eligibility (collateral coverage / credit-score floor) in zero-knowledge without revealing the financials; collateral, principal and repayment are asset-subsystem tokens driven by the loan lifecycle.',
40
40
  crossReferences: {
41
41
  borrowerIdentityId: "Links to the borrower's IdentityAgent",
42
42
  lenderIdentityId: "Links to the lender's IdentityAgent (loan originator)",
43
43
  collateralAssetId: "Asset instance locked as collateral (held by the loan's escrow fiber)",
44
- debtAssetId: "Asset instance representing the outstanding loan principal/debt minted to the borrower",
44
+ debtAssetId: 'Asset instance representing the outstanding loan principal/debt minted to the borrower',
45
45
  },
46
46
  },
47
47
  createSchema: {
48
48
  required: [
49
- "borrower",
50
- "lender",
51
- "principalAmount",
52
- "collateralAssetId",
53
- "collateralPolicy",
54
- "debtPolicy",
55
- "lendingRuleVKey",
56
- "lendingRuleLogicHash",
57
- "keccakTrue",
49
+ 'borrower',
50
+ 'lender',
51
+ 'principalAmount',
52
+ 'collateralAssetId',
53
+ 'collateralPolicy',
54
+ 'debtPolicy',
55
+ 'lendingRuleVKey',
56
+ 'lendingRuleLogicHash',
57
+ 'keccakTrue',
58
58
  ],
59
59
  properties: {
60
60
  borrower: {
61
- type: "address",
62
- description: "DAG address of the borrower",
61
+ type: 'address',
62
+ description: 'DAG address of the borrower',
63
63
  immutable: true,
64
64
  },
65
65
  lender: {
66
- type: "address",
67
- description: "DAG address of the lender / loan originator",
66
+ type: 'address',
67
+ description: 'DAG address of the lender / loan originator',
68
68
  immutable: true,
69
69
  },
70
70
  principalAmount: {
71
- type: "integer",
72
- description: "PUBLIC loan principal (asset minor-units). The financials backing eligibility stay private.",
71
+ type: 'integer',
72
+ description: 'PUBLIC loan principal (asset minor-units). The financials backing eligibility stay private.',
73
73
  minimum: 1,
74
74
  immutable: true,
75
75
  },
76
76
  collateralAssetId: {
77
- type: "uuid",
78
- description: "Asset instance id pledged as collateral (its private valuation is never revealed).",
77
+ type: 'uuid',
78
+ description: 'Asset instance id pledged as collateral (its private valuation is never revealed).',
79
79
  immutable: true,
80
80
  },
81
81
  collateralPolicy: {
82
- type: "string",
82
+ type: 'string',
83
83
  description: "Collateral asset policy name (e.g. 'collateral-vault-v1.asset').",
84
84
  immutable: true,
85
85
  },
86
86
  debtPolicy: {
87
- type: "string",
87
+ type: 'string',
88
88
  description: "Debt/loan-token asset policy name (e.g. 'loan-debt-v1.asset').",
89
89
  immutable: true,
90
90
  },
91
91
  escrowFiberId: {
92
- type: "uuid",
93
- description: "Fiber that custodies the locked collateral (AssetHolder.Fiber). Defaults to this loan fiber.",
92
+ type: 'uuid',
93
+ description: 'Fiber that custodies the locked collateral (AssetHolder.Fiber). Defaults to this loan fiber.',
94
94
  },
95
95
  lendingRuleVKey: {
96
- type: "hash",
97
- description: "PINNED SP1 program verifying key (bytes32, 0x-hex) for the eligibility circuit.",
96
+ type: 'hash',
97
+ description: 'PINNED SP1 program verifying key (bytes32, 0x-hex) for the eligibility circuit.',
98
98
  immutable: true,
99
99
  },
100
100
  lendingRuleLogicHash: {
101
- type: "hash",
101
+ type: 'hash',
102
102
  description: "PINNED logicHash of the public lending rule = keccak256(canonicalize(rule)). The proof's committed exprHash must equal this.",
103
103
  immutable: true,
104
104
  },
105
105
  keccakTrue: {
106
- type: "hash",
106
+ type: 'hash',
107
107
  description: "PINNED keccak256(canonicalize(true)) — the outputHash a 'rule returned true' proof must commit.",
108
108
  immutable: true,
109
109
  },
110
110
  dueOrdinal: {
111
- type: "integer",
112
- description: "Optional snapshot ordinal by which repayment is due.",
111
+ type: 'integer',
112
+ description: 'Optional snapshot ordinal by which repayment is due.',
113
113
  minimum: 0,
114
114
  },
115
115
  },
116
116
  },
117
117
  stateSchema: {
118
118
  properties: {
119
- status: { type: "string", computed: true },
120
- borrower: { type: "address", immutable: true },
121
- lender: { type: "address", immutable: true },
122
- principalAmount: { type: "integer", immutable: true },
123
- collateralAssetId: { type: "uuid", immutable: true },
124
- collateralPolicy: { type: "string", immutable: true },
125
- debtPolicy: { type: "string", immutable: true },
126
- escrowFiberId: { type: "uuid" },
127
- debtAssetId: { type: "uuid", computed: true },
128
- lendingRuleVKey: { type: "hash", immutable: true },
129
- lendingRuleLogicHash: { type: "hash", immutable: true },
130
- keccakTrue: { type: "hash", immutable: true },
131
- dueOrdinal: { type: "integer" },
132
- lockedAt: { type: "integer", computed: true },
133
- originatedAt: { type: "integer", computed: true },
134
- repaidAt: { type: "integer", computed: true },
135
- defaultedAt: { type: "integer", computed: true },
136
- liquidatedAt: { type: "integer", computed: true },
119
+ status: { type: 'string', computed: true },
120
+ borrower: { type: 'address', immutable: true },
121
+ lender: { type: 'address', immutable: true },
122
+ principalAmount: { type: 'integer', immutable: true },
123
+ collateralAssetId: { type: 'uuid', immutable: true },
124
+ collateralPolicy: { type: 'string', immutable: true },
125
+ debtPolicy: { type: 'string', immutable: true },
126
+ escrowFiberId: { type: 'uuid' },
127
+ debtAssetId: { type: 'uuid', computed: true },
128
+ lendingRuleVKey: { type: 'hash', immutable: true },
129
+ lendingRuleLogicHash: { type: 'hash', immutable: true },
130
+ keccakTrue: { type: 'hash', immutable: true },
131
+ dueOrdinal: { type: 'integer' },
132
+ lockedAt: { type: 'integer', computed: true },
133
+ originatedAt: { type: 'integer', computed: true },
134
+ repaidAt: { type: 'integer', computed: true },
135
+ defaultedAt: { type: 'integer', computed: true },
136
+ liquidatedAt: { type: 'integer', computed: true },
137
137
  },
138
138
  },
139
139
  eventSchemas: {
140
140
  lock_collateral: {
141
- description: "Borrower locks the pledged collateral asset into the loan escrow fiber (drives an asset Transfer/Mint into AssetHolder.Fiber).",
141
+ description: 'Borrower locks the pledged collateral asset into the loan escrow fiber (drives an asset Transfer/Mint into AssetHolder.Fiber).',
142
142
  },
143
143
  originate: {
144
144
  description: "Lender originates the loan after the borrower's zk eligibility proof verifies. The witness carries the SP1-Groth16 {publicValues, proof}; the guard binds them to the pinned public lending rule. The effect mints the debt/principal asset to the borrower.",
145
- required: ["witness", "debtAssetId"],
145
+ required: ['witness', 'debtAssetId'],
146
146
  properties: {
147
147
  witness: {
148
- type: "object",
149
- description: "Eligibility-proof witness: { publicValues: 0x-hex, proof: 0x-hex }. Exposed to the guard under the reserved `witness` key.",
148
+ type: 'object',
149
+ description: 'Eligibility-proof witness: { publicValues: 0x-hex, proof: 0x-hex }. Exposed to the guard under the reserved `witness` key.',
150
150
  properties: {
151
- publicValues: { type: "string", description: "abi_encode(JlvmPublicValues), 0x-hex." },
152
- proof: { type: "string", description: "SP1-Groth16 proof bytes, 0x-hex." },
151
+ publicValues: {
152
+ type: 'string',
153
+ description: 'abi_encode(JlvmPublicValues), 0x-hex.',
154
+ },
155
+ proof: {
156
+ type: 'string',
157
+ description: 'SP1-Groth16 proof bytes, 0x-hex.',
158
+ },
153
159
  },
154
- required: ["publicValues", "proof"],
160
+ required: ['publicValues', 'proof'],
155
161
  },
156
162
  debtAssetId: {
157
- type: "uuid",
158
- description: "Asset instance id for the debt/principal token minted to the borrower.",
163
+ type: 'uuid',
164
+ description: 'Asset instance id for the debt/principal token minted to the borrower.',
159
165
  },
160
166
  },
161
167
  },
162
168
  repay: {
163
- description: "Borrower repays the principal (drives a Burn of the debt token); on success the collateral is released back to the borrower via the escrow fiber.",
169
+ description: 'Borrower repays the principal (drives a Burn of the debt token); on success the collateral is released back to the borrower via the escrow fiber.',
164
170
  },
165
171
  default_loan: {
166
- description: "Mark the loan defaulted once past due (drives the collateral toward liquidation).",
172
+ description: 'Mark the loan defaulted once past due (drives the collateral toward liquidation).',
167
173
  },
168
174
  liquidate: {
169
- description: "Lender liquidates a defaulted loan: the locked collateral is transferred to the lender via the escrow fiber.",
175
+ description: 'Lender liquidates a defaulted loan: the locked collateral is transferred to the lender via the escrow fiber.',
170
176
  },
171
177
  cancel: {
172
- description: "Cancel a loan request before collateral is locked.",
173
- properties: { reason: { type: "string" } },
178
+ description: 'Cancel a loan request before collateral is locked.',
179
+ properties: { reason: { type: 'string' } },
174
180
  },
175
181
  },
176
182
  states: {
177
183
  REQUESTED: {
178
- id: "REQUESTED",
184
+ id: 'REQUESTED',
179
185
  isFinal: false,
180
186
  metadata: {
181
- label: "Requested",
182
- description: "Loan requested; collateral not yet locked, eligibility not yet proven.",
183
- category: "initial",
187
+ label: 'Requested',
188
+ description: 'Loan requested; collateral not yet locked, eligibility not yet proven.',
189
+ category: 'initial',
184
190
  },
185
191
  },
186
192
  COLLATERAL_LOCKED: {
187
- id: "COLLATERAL_LOCKED",
193
+ id: 'COLLATERAL_LOCKED',
188
194
  isFinal: false,
189
195
  metadata: {
190
- label: "Collateral Locked",
196
+ label: 'Collateral Locked',
191
197
  description: "Collateral asset escrowed in the loan fiber; awaiting the lender's zk-gated origination.",
192
- category: "pending",
198
+ category: 'pending',
193
199
  },
194
200
  },
195
201
  ACTIVE: {
196
- id: "ACTIVE",
202
+ id: 'ACTIVE',
197
203
  isFinal: false,
198
204
  metadata: {
199
- label: "Active",
200
- description: "Loan originated (eligibility proven in zk); principal minted to the borrower.",
201
- category: "active",
205
+ label: 'Active',
206
+ description: 'Loan originated (eligibility proven in zk); principal minted to the borrower.',
207
+ category: 'active',
202
208
  },
203
209
  },
204
210
  DEFAULTED: {
205
- id: "DEFAULTED",
211
+ id: 'DEFAULTED',
206
212
  isFinal: false,
207
213
  metadata: {
208
- label: "Defaulted",
209
- description: "Loan past due and unpaid; collateral pending liquidation.",
210
- category: "pending",
214
+ label: 'Defaulted',
215
+ description: 'Loan past due and unpaid; collateral pending liquidation.',
216
+ category: 'pending',
211
217
  },
212
218
  },
213
219
  REPAID: {
214
- id: "REPAID",
220
+ id: 'REPAID',
215
221
  isFinal: true,
216
222
  metadata: {
217
- label: "Repaid",
218
- description: "Principal repaid (debt burned) and collateral released to the borrower.",
219
- category: "terminal",
223
+ label: 'Repaid',
224
+ description: 'Principal repaid (debt burned) and collateral released to the borrower.',
225
+ category: 'terminal',
220
226
  },
221
227
  },
222
228
  LIQUIDATED: {
223
- id: "LIQUIDATED",
229
+ id: 'LIQUIDATED',
224
230
  isFinal: true,
225
231
  metadata: {
226
- label: "Liquidated",
227
- description: "Defaulted loan settled by transferring the collateral to the lender.",
228
- category: "terminal",
232
+ label: 'Liquidated',
233
+ description: 'Defaulted loan settled by transferring the collateral to the lender.',
234
+ category: 'terminal',
229
235
  },
230
236
  },
231
237
  CANCELLED: {
232
- id: "CANCELLED",
238
+ id: 'CANCELLED',
233
239
  isFinal: true,
234
240
  metadata: {
235
- label: "Cancelled",
236
- description: "Loan request cancelled before any collateral was locked.",
237
- category: "terminal",
241
+ label: 'Cancelled',
242
+ description: 'Loan request cancelled before any collateral was locked.',
243
+ category: 'terminal',
238
244
  },
239
245
  },
240
246
  },
241
- initialState: "REQUESTED",
247
+ initialState: 'REQUESTED',
242
248
  transitions: [
243
249
  // Borrower locks collateral into the escrow fiber.
244
250
  {
245
- from: "REQUESTED",
246
- to: "COLLATERAL_LOCKED",
247
- eventName: "lock_collateral",
251
+ from: 'REQUESTED',
252
+ to: 'COLLATERAL_LOCKED',
253
+ eventName: 'lock_collateral',
248
254
  guard: {
249
255
  and: [
250
- { in: [{ var: "state.borrower" }, { map: [{ var: "proofs" }, { var: "address" }] }] },
251
- { "===": [{ var: "event.assetId" }, { var: "state.collateralAssetId" }] },
256
+ {
257
+ in: [{ var: 'state.borrower' }, { map: [{ var: 'proofs' }, { var: 'address' }] }],
258
+ },
259
+ {
260
+ '===': [{ var: 'event.assetId' }, { var: 'state.collateralAssetId' }],
261
+ },
252
262
  ],
253
263
  },
254
264
  effect: {
255
- merge: [
256
- { var: "state" },
257
- { status: "COLLATERAL_LOCKED", lockedAt: { var: "$ordinal" } },
258
- ],
265
+ merge: [{ var: 'state' }, { status: 'COLLATERAL_LOCKED', lockedAt: { var: '$ordinal' } }],
259
266
  },
260
267
  dependencies: [],
261
268
  },
262
269
  // Cancel a request before any collateral is locked.
263
270
  {
264
- from: "REQUESTED",
265
- to: "CANCELLED",
266
- eventName: "cancel",
271
+ from: 'REQUESTED',
272
+ to: 'CANCELLED',
273
+ eventName: 'cancel',
267
274
  guard: {
268
275
  or: [
269
- { in: [{ var: "state.borrower" }, { map: [{ var: "proofs" }, { var: "address" }] }] },
270
- { in: [{ var: "state.lender" }, { map: [{ var: "proofs" }, { var: "address" }] }] },
276
+ {
277
+ in: [{ var: 'state.borrower' }, { map: [{ var: 'proofs' }, { var: 'address' }] }],
278
+ },
279
+ {
280
+ in: [{ var: 'state.lender' }, { map: [{ var: 'proofs' }, { var: 'address' }] }],
281
+ },
271
282
  ],
272
283
  },
273
284
  effect: {
274
285
  merge: [
275
- { var: "state" },
286
+ { var: 'state' },
276
287
  {
277
- status: "CANCELLED",
278
- cancelledAt: { var: "$ordinal" },
279
- reason: { var: "event.reason" },
288
+ status: 'CANCELLED',
289
+ cancelledAt: { var: '$ordinal' },
290
+ reason: { var: 'event.reason' },
280
291
  },
281
292
  ],
282
293
  },
@@ -296,33 +307,39 @@ export const lendingZkLoanDef = defineFiberApp({
296
307
  // 4. outputHash == keccakTrue — the rule evaluated to true
297
308
  // 5. ok bit (last hex pair of word 3) == "01" — the JLVM run did not error
298
309
  {
299
- from: "COLLATERAL_LOCKED",
300
- to: "ACTIVE",
301
- eventName: "originate",
310
+ from: 'COLLATERAL_LOCKED',
311
+ to: 'ACTIVE',
312
+ eventName: 'originate',
302
313
  guard: {
303
314
  and: [
304
- { in: [{ var: "state.lender" }, { map: [{ var: "proofs" }, { var: "address" }] }] },
315
+ {
316
+ in: [{ var: 'state.lender' }, { map: [{ var: 'proofs' }, { var: 'address' }] }],
317
+ },
305
318
  {
306
319
  groth16_verify: [
307
- { var: "state.lendingRuleVKey" },
308
- { var: "event.witness.publicValues" },
309
- { var: "event.witness.proof" },
320
+ { var: 'state.lendingRuleVKey' },
321
+ { var: 'event.witness.publicValues' },
322
+ { var: 'event.witness.proof' },
310
323
  ],
311
324
  },
312
325
  {
313
- "===": [
314
- { cat: ["0x", { substr: [{ var: "event.witness.publicValues" }, 2, 64] }] },
315
- { var: "state.lendingRuleLogicHash" },
326
+ '===': [
327
+ {
328
+ cat: ['0x', { substr: [{ var: 'event.witness.publicValues' }, 2, 64] }],
329
+ },
330
+ { var: 'state.lendingRuleLogicHash' },
316
331
  ],
317
332
  },
318
333
  {
319
- "===": [
320
- { cat: ["0x", { substr: [{ var: "event.witness.publicValues" }, 130, 64] }] },
321
- { var: "state.keccakTrue" },
334
+ '===': [
335
+ {
336
+ cat: ['0x', { substr: [{ var: 'event.witness.publicValues' }, 130, 64] }],
337
+ },
338
+ { var: 'state.keccakTrue' },
322
339
  ],
323
340
  },
324
341
  {
325
- "===": [{ substr: [{ var: "event.witness.publicValues" }, 256, 2] }, "01"],
342
+ '===': [{ substr: [{ var: 'event.witness.publicValues' }, 256, 2] }, '01'],
326
343
  },
327
344
  ],
328
345
  },
@@ -330,11 +347,11 @@ export const lendingZkLoanDef = defineFiberApp({
330
347
  // debt asset id, and activates the loan.
331
348
  effect: {
332
349
  merge: [
333
- { var: "state" },
350
+ { var: 'state' },
334
351
  {
335
- status: "ACTIVE",
336
- originatedAt: { var: "$ordinal" },
337
- debtAssetId: { var: "event.debtAssetId" },
352
+ status: 'ACTIVE',
353
+ originatedAt: { var: '$ordinal' },
354
+ debtAssetId: { var: 'event.debtAssetId' },
338
355
  },
339
356
  ],
340
357
  },
@@ -342,22 +359,27 @@ export const lendingZkLoanDef = defineFiberApp({
342
359
  },
343
360
  // Borrower repays — debt is burned, collateral released back to the borrower.
344
361
  {
345
- from: "ACTIVE",
346
- to: "REPAID",
347
- eventName: "repay",
348
- guard: { in: [{ var: "state.borrower" }, { map: [{ var: "proofs" }, { var: "address" }] }] },
362
+ from: 'ACTIVE',
363
+ to: 'REPAID',
364
+ eventName: 'repay',
365
+ guard: {
366
+ in: [{ var: 'state.borrower' }, { map: [{ var: 'proofs' }, { var: 'address' }] }],
367
+ },
349
368
  // Release the escrowed collateral back to the borrower. The loan fiber HOLDS the collateral
350
369
  // (locked as AssetHolder.Fiber), so it emits the reserved `_transferAsset` directive from inside
351
370
  // the effect — the engine extracts `_`-prefixed keys (it is NOT merged into state). A transition-
352
371
  // level `emits` block is silently dropped by toProtoDefinition, which would strand the collateral.
353
372
  effect: {
354
373
  merge: [
355
- { var: "state" },
374
+ { var: 'state' },
356
375
  {
357
- status: "REPAID",
358
- repaidAt: { var: "$ordinal" },
376
+ status: 'REPAID',
377
+ repaidAt: { var: '$ordinal' },
359
378
  _transferAsset: [
360
- { assetId: { var: "state.collateralAssetId" }, recipient: { var: "state.borrower" } },
379
+ {
380
+ assetId: { var: 'state.collateralAssetId' },
381
+ recipient: { Wallet: { address: { var: 'state.borrower' } } },
382
+ },
361
383
  ],
362
384
  },
363
385
  ],
@@ -366,39 +388,38 @@ export const lendingZkLoanDef = defineFiberApp({
366
388
  },
367
389
  // Loan goes past due → defaulted.
368
390
  {
369
- from: "ACTIVE",
370
- to: "DEFAULTED",
371
- eventName: "default_loan",
391
+ from: 'ACTIVE',
392
+ to: 'DEFAULTED',
393
+ eventName: 'default_loan',
372
394
  guard: {
373
- and: [
374
- { var: "state.dueOrdinal" },
375
- { ">=": [{ var: "$ordinal" }, { var: "state.dueOrdinal" }] },
376
- ],
395
+ and: [{ var: 'state.dueOrdinal' }, { '>=': [{ var: '$ordinal' }, { var: 'state.dueOrdinal' }] }],
377
396
  },
378
397
  effect: {
379
- merge: [
380
- { var: "state" },
381
- { status: "DEFAULTED", defaultedAt: { var: "$ordinal" } },
382
- ],
398
+ merge: [{ var: 'state' }, { status: 'DEFAULTED', defaultedAt: { var: '$ordinal' } }],
383
399
  },
384
400
  dependencies: [],
385
401
  },
386
402
  // Lender liquidates a defaulted loan — collateral transferred to the lender.
387
403
  {
388
- from: "DEFAULTED",
389
- to: "LIQUIDATED",
390
- eventName: "liquidate",
391
- guard: { in: [{ var: "state.lender" }, { map: [{ var: "proofs" }, { var: "address" }] }] },
404
+ from: 'DEFAULTED',
405
+ to: 'LIQUIDATED',
406
+ eventName: 'liquidate',
407
+ guard: {
408
+ in: [{ var: 'state.lender' }, { map: [{ var: 'proofs' }, { var: 'address' }] }],
409
+ },
392
410
  // Transfer the escrowed collateral to the lender via the reserved `_transferAsset` directive
393
411
  // inside the effect (the loan fiber holds it). A transition-level `emits` block is dropped by the engine.
394
412
  effect: {
395
413
  merge: [
396
- { var: "state" },
414
+ { var: 'state' },
397
415
  {
398
- status: "LIQUIDATED",
399
- liquidatedAt: { var: "$ordinal" },
416
+ status: 'LIQUIDATED',
417
+ liquidatedAt: { var: '$ordinal' },
400
418
  _transferAsset: [
401
- { assetId: { var: "state.collateralAssetId" }, recipient: { var: "state.lender" } },
419
+ {
420
+ assetId: { var: 'state.collateralAssetId' },
421
+ recipient: { Wallet: { address: { var: 'state.lender' } } },
422
+ },
402
423
  ],
403
424
  },
404
425
  ],
@@ -22,14 +22,14 @@
22
22
  // Re-export generated protobuf types (source of truth).
23
23
  // The nested lifecycle/kind enums dropped their app prefix in the proto; under
24
24
  // this app-scoped entrypoint they are unambiguously Type / State.
25
- export { Type, State, Commitment, Resolution, Market, CreateMarketRequest, CommitToMarketRequest, SubmitResolutionRequest, CancelMarketRequest, MarketDefinition, typeFromJSON, typeToJSON, stateFromJSON, stateToJSON, } from "../../generated/ottochain/apps/markets/v1/market.js";
25
+ export { Type, State, Commitment, Resolution, Market, CreateMarketRequest, CommitToMarketRequest, SubmitResolutionRequest, CancelMarketRequest, MarketDefinition, typeFromJSON, typeToJSON, stateFromJSON, stateToJSON, } from '../../generated/ottochain/apps/markets/v1/market.js';
26
26
  // Deprecated app-prefixed aliases (renamed to Type / State); kept for compat.
27
- export { Type as MarketType, State as MarketState, typeFromJSON as marketTypeFromJSON, typeToJSON as marketTypeToJSON, stateFromJSON as marketStateFromJSON, stateToJSON as marketStateToJSON, } from "../../generated/ottochain/apps/markets/v1/market.js";
27
+ export { Type as MarketType, State as MarketState, typeFromJSON as marketTypeFromJSON, typeToJSON as marketTypeToJSON, stateFromJSON as marketStateFromJSON, stateToJSON as marketStateToJSON, } from '../../generated/ottochain/apps/markets/v1/market.js';
28
28
  // ---------------------------------------------------------------------------
29
29
  // State Machine Definitions (generated from JSON at build time)
30
30
  // ---------------------------------------------------------------------------
31
- import { marketUniversalDef, marketPredictionDef, marketAuctionDef, marketCrowdfundDef, marketGroupBuyDef, } from "./state-machines/index.js";
32
- export { marketUniversalDef, marketPredictionDef, marketAuctionDef, marketCrowdfundDef, marketGroupBuyDef, };
31
+ import { marketUniversalDef, marketPredictionDef, marketAuctionDef, marketCrowdfundDef, marketGroupBuyDef, } from './state-machines/index.js';
32
+ export { marketUniversalDef, marketPredictionDef, marketAuctionDef, marketCrowdfundDef, marketGroupBuyDef };
33
33
  /** All market state machine definitions */
34
34
  export const MARKETS_DEFINITIONS = {
35
35
  universal: marketUniversalDef,
@@ -42,6 +42,6 @@ export const MARKETS_DEFINITIONS = {
42
42
  * Get a market state machine definition by type.
43
43
  * @param type - 'universal' | 'prediction' | 'auction' | 'crowdfund' | 'groupBuy' (default: 'universal')
44
44
  */
45
- export function getMarketDefinition(type = "universal") {
45
+ export function getMarketDefinition(type = 'universal') {
46
46
  return MARKETS_DEFINITIONS[type];
47
47
  }