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