@ocap/tx-protocols 1.28.9 → 1.29.1

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 (284) hide show
  1. package/esm/execute.d.mts +53 -0
  2. package/esm/execute.mjs +225 -0
  3. package/esm/index.d.mts +95 -0
  4. package/esm/index.mjs +100 -0
  5. package/esm/pipes/ensure-cost.d.mts +18 -0
  6. package/esm/pipes/ensure-cost.mjs +136 -0
  7. package/esm/pipes/ensure-gas.d.mts +14 -0
  8. package/esm/pipes/ensure-gas.mjs +38 -0
  9. package/esm/protocols/account/delegate.d.mts +4 -0
  10. package/esm/protocols/account/delegate.mjs +195 -0
  11. package/esm/protocols/account/migrate.d.mts +4 -0
  12. package/esm/protocols/account/migrate.mjs +130 -0
  13. package/esm/protocols/account/revoke-delegate.d.mts +4 -0
  14. package/esm/protocols/account/revoke-delegate.mjs +102 -0
  15. package/esm/protocols/asset/acquire-v2.d.mts +9 -0
  16. package/esm/protocols/asset/acquire-v2.mjs +213 -0
  17. package/esm/protocols/asset/acquire-v3.d.mts +17 -0
  18. package/esm/protocols/asset/acquire-v3.mjs +265 -0
  19. package/esm/protocols/asset/calls/transfer-token.d.mts +4 -0
  20. package/esm/protocols/asset/calls/transfer-token.mjs +36 -0
  21. package/esm/protocols/asset/calls/transfer.d.mts +4 -0
  22. package/esm/protocols/asset/calls/transfer.mjs +32 -0
  23. package/esm/protocols/asset/consume.d.mts +4 -0
  24. package/esm/protocols/asset/consume.mjs +92 -0
  25. package/esm/protocols/asset/create.d.mts +4 -0
  26. package/esm/protocols/asset/create.mjs +136 -0
  27. package/esm/protocols/asset/mint.d.mts +4 -0
  28. package/esm/protocols/asset/mint.mjs +156 -0
  29. package/esm/protocols/asset/pipes/exec-mint-hook.d.mts +24 -0
  30. package/esm/protocols/asset/pipes/exec-mint-hook.mjs +54 -0
  31. package/esm/protocols/asset/pipes/extract-factory-tokens.d.mts +21 -0
  32. package/esm/protocols/asset/pipes/extract-factory-tokens.mjs +22 -0
  33. package/esm/protocols/asset/pipes/verify-itx-address.d.mts +32 -0
  34. package/esm/protocols/asset/pipes/verify-itx-address.mjs +56 -0
  35. package/esm/protocols/asset/pipes/verify-itx-assets.d.mts +18 -0
  36. package/esm/protocols/asset/pipes/verify-itx-assets.mjs +27 -0
  37. package/esm/protocols/asset/pipes/verify-itx-variables.d.mts +17 -0
  38. package/esm/protocols/asset/pipes/verify-itx-variables.mjs +20 -0
  39. package/esm/protocols/asset/pipes/verify-mint-limit.d.mts +15 -0
  40. package/esm/protocols/asset/pipes/verify-mint-limit.mjs +14 -0
  41. package/esm/protocols/asset/update.d.mts +4 -0
  42. package/esm/protocols/asset/update.mjs +111 -0
  43. package/esm/protocols/factory/create.d.mts +29 -0
  44. package/esm/protocols/factory/create.mjs +155 -0
  45. package/esm/protocols/governance/claim-stake.d.mts +27 -0
  46. package/esm/protocols/governance/claim-stake.mjs +220 -0
  47. package/esm/protocols/governance/return-stake.d.mts +27 -0
  48. package/esm/protocols/governance/return-stake.mjs +211 -0
  49. package/esm/protocols/governance/revoke-stake.d.mts +27 -0
  50. package/esm/protocols/governance/revoke-stake.mjs +178 -0
  51. package/esm/protocols/governance/slash-stake.d.mts +17 -0
  52. package/esm/protocols/governance/slash-stake.mjs +213 -0
  53. package/esm/protocols/governance/stake.d.mts +15 -0
  54. package/esm/protocols/governance/stake.mjs +270 -0
  55. package/esm/protocols/rollup/claim-reward.d.mts +11 -0
  56. package/esm/protocols/rollup/claim-reward.mjs +322 -0
  57. package/esm/protocols/rollup/close.d.mts +4 -0
  58. package/esm/protocols/rollup/close.mjs +105 -0
  59. package/esm/protocols/rollup/create-block.d.mts +11 -0
  60. package/esm/protocols/rollup/create-block.mjs +303 -0
  61. package/esm/protocols/rollup/create.d.mts +4 -0
  62. package/esm/protocols/rollup/create.mjs +164 -0
  63. package/esm/protocols/rollup/join.d.mts +4 -0
  64. package/esm/protocols/rollup/join.mjs +152 -0
  65. package/esm/protocols/rollup/leave.d.mts +4 -0
  66. package/esm/protocols/rollup/leave.mjs +137 -0
  67. package/esm/protocols/rollup/migrate.d.mts +4 -0
  68. package/esm/protocols/rollup/migrate.mjs +85 -0
  69. package/esm/protocols/rollup/pause.d.mts +4 -0
  70. package/esm/protocols/rollup/pause.mjs +76 -0
  71. package/esm/protocols/rollup/pipes/ensure-validator.d.mts +6 -0
  72. package/esm/protocols/rollup/pipes/ensure-validator.mjs +12 -0
  73. package/esm/protocols/rollup/pipes/verify-evidence.d.mts +15 -0
  74. package/esm/protocols/rollup/pipes/verify-evidence.mjs +29 -0
  75. package/esm/protocols/rollup/pipes/verify-signers.d.mts +15 -0
  76. package/esm/protocols/rollup/pipes/verify-signers.mjs +36 -0
  77. package/esm/protocols/rollup/pipes/verify-status.d.mts +13 -0
  78. package/esm/protocols/rollup/pipes/verify-status.mjs +26 -0
  79. package/esm/protocols/rollup/resume.d.mts +4 -0
  80. package/esm/protocols/rollup/resume.mjs +79 -0
  81. package/esm/protocols/rollup/update.d.mts +4 -0
  82. package/esm/protocols/rollup/update.mjs +111 -0
  83. package/esm/protocols/token/create.d.mts +4 -0
  84. package/esm/protocols/token/create.mjs +150 -0
  85. package/esm/protocols/token/deposit-v2.d.mts +11 -0
  86. package/esm/protocols/token/deposit-v2.mjs +216 -0
  87. package/esm/protocols/token/withdraw-v2.d.mts +9 -0
  88. package/esm/protocols/token/withdraw-v2.mjs +222 -0
  89. package/esm/protocols/token-factory/burn.d.mts +15 -0
  90. package/esm/protocols/token-factory/burn.mjs +233 -0
  91. package/esm/protocols/token-factory/create.d.mts +4 -0
  92. package/esm/protocols/token-factory/create.mjs +254 -0
  93. package/esm/protocols/token-factory/mint.d.mts +15 -0
  94. package/esm/protocols/token-factory/mint.mjs +234 -0
  95. package/esm/protocols/token-factory/pipes/calc-reserve.d.mts +21 -0
  96. package/esm/protocols/token-factory/pipes/calc-reserve.mjs +34 -0
  97. package/esm/protocols/token-factory/pipes/verify-icon.d.mts +14 -0
  98. package/esm/protocols/token-factory/pipes/verify-icon.mjs +18 -0
  99. package/esm/protocols/token-factory/pipes/verify-ownership.d.mts +12 -0
  100. package/esm/protocols/token-factory/pipes/verify-ownership.mjs +63 -0
  101. package/esm/protocols/token-factory/pipes/verify-url.d.mts +12 -0
  102. package/esm/protocols/token-factory/pipes/verify-url.mjs +26 -0
  103. package/esm/protocols/token-factory/update.d.mts +10 -0
  104. package/esm/protocols/token-factory/update.mjs +152 -0
  105. package/esm/protocols/trade/exchange-v2.d.mts +9 -0
  106. package/esm/protocols/trade/exchange-v2.mjs +239 -0
  107. package/esm/protocols/trade/transfer-v2.d.mts +9 -0
  108. package/esm/protocols/trade/transfer-v2.mjs +226 -0
  109. package/esm/protocols/trade/transfer-v3.d.mts +17 -0
  110. package/esm/protocols/trade/transfer-v3.mjs +270 -0
  111. package/esm/util.d.mts +141 -0
  112. package/esm/util.mjs +278 -0
  113. package/lib/_virtual/rolldown_runtime.cjs +29 -0
  114. package/lib/execute.cjs +231 -0
  115. package/lib/execute.d.cts +53 -0
  116. package/lib/index.cjs +105 -0
  117. package/lib/index.d.cts +95 -0
  118. package/lib/pipes/ensure-cost.cjs +141 -0
  119. package/lib/pipes/ensure-cost.d.cts +18 -0
  120. package/lib/pipes/ensure-gas.cjs +41 -0
  121. package/lib/pipes/ensure-gas.d.cts +14 -0
  122. package/lib/protocols/account/delegate.cjs +201 -0
  123. package/lib/protocols/account/delegate.d.cts +4 -0
  124. package/lib/protocols/account/migrate.cjs +135 -0
  125. package/lib/protocols/account/migrate.d.cts +4 -0
  126. package/lib/protocols/account/revoke-delegate.cjs +107 -0
  127. package/lib/protocols/account/revoke-delegate.d.cts +4 -0
  128. package/lib/protocols/asset/acquire-v2.cjs +216 -0
  129. package/lib/protocols/asset/acquire-v2.d.cts +9 -0
  130. package/lib/protocols/asset/acquire-v3.cjs +269 -0
  131. package/lib/protocols/asset/acquire-v3.d.cts +17 -0
  132. package/lib/protocols/asset/calls/transfer-token.cjs +40 -0
  133. package/lib/protocols/asset/calls/transfer-token.d.cts +4 -0
  134. package/lib/protocols/asset/calls/transfer.cjs +35 -0
  135. package/lib/protocols/asset/calls/transfer.d.cts +4 -0
  136. package/lib/protocols/asset/consume.cjs +95 -0
  137. package/lib/protocols/asset/consume.d.cts +4 -0
  138. package/lib/protocols/asset/create.cjs +140 -0
  139. package/lib/protocols/asset/create.d.cts +4 -0
  140. package/lib/protocols/asset/mint.cjs +159 -0
  141. package/lib/protocols/asset/mint.d.cts +4 -0
  142. package/lib/protocols/asset/pipes/exec-mint-hook.cjs +57 -0
  143. package/lib/protocols/asset/pipes/exec-mint-hook.d.cts +24 -0
  144. package/lib/protocols/asset/pipes/extract-factory-tokens.cjs +25 -0
  145. package/lib/protocols/asset/pipes/extract-factory-tokens.d.cts +21 -0
  146. package/lib/protocols/asset/pipes/verify-itx-address.cjs +59 -0
  147. package/lib/protocols/asset/pipes/verify-itx-address.d.cts +32 -0
  148. package/lib/protocols/asset/pipes/verify-itx-assets.cjs +29 -0
  149. package/lib/protocols/asset/pipes/verify-itx-assets.d.cts +18 -0
  150. package/lib/protocols/asset/pipes/verify-itx-variables.cjs +22 -0
  151. package/lib/protocols/asset/pipes/verify-itx-variables.d.cts +17 -0
  152. package/lib/protocols/asset/pipes/verify-mint-limit.cjs +16 -0
  153. package/lib/protocols/asset/pipes/verify-mint-limit.d.cts +15 -0
  154. package/lib/protocols/asset/update.cjs +114 -0
  155. package/lib/protocols/asset/update.d.cts +4 -0
  156. package/lib/protocols/factory/create.cjs +161 -0
  157. package/lib/protocols/factory/create.d.cts +29 -0
  158. package/lib/protocols/governance/claim-stake.cjs +223 -0
  159. package/lib/protocols/governance/claim-stake.d.cts +27 -0
  160. package/lib/protocols/governance/return-stake.cjs +215 -0
  161. package/lib/protocols/governance/return-stake.d.cts +27 -0
  162. package/lib/protocols/governance/revoke-stake.cjs +182 -0
  163. package/lib/protocols/governance/revoke-stake.d.cts +27 -0
  164. package/lib/protocols/governance/slash-stake.cjs +217 -0
  165. package/lib/protocols/governance/slash-stake.d.cts +17 -0
  166. package/lib/protocols/governance/stake.cjs +275 -0
  167. package/lib/protocols/governance/stake.d.cts +15 -0
  168. package/lib/protocols/rollup/claim-reward.cjs +328 -0
  169. package/lib/protocols/rollup/claim-reward.d.cts +11 -0
  170. package/lib/protocols/rollup/close.cjs +107 -0
  171. package/lib/protocols/rollup/close.d.cts +4 -0
  172. package/lib/protocols/rollup/create-block.cjs +309 -0
  173. package/lib/protocols/rollup/create-block.d.cts +11 -0
  174. package/lib/protocols/rollup/create.cjs +169 -0
  175. package/lib/protocols/rollup/create.d.cts +4 -0
  176. package/lib/protocols/rollup/join.cjs +157 -0
  177. package/lib/protocols/rollup/join.d.cts +4 -0
  178. package/lib/protocols/rollup/leave.cjs +141 -0
  179. package/lib/protocols/rollup/leave.d.cts +4 -0
  180. package/lib/protocols/rollup/migrate.cjs +87 -0
  181. package/lib/protocols/rollup/migrate.d.cts +4 -0
  182. package/lib/protocols/rollup/pause.cjs +78 -0
  183. package/lib/protocols/rollup/pause.d.cts +4 -0
  184. package/lib/protocols/rollup/pipes/ensure-validator.cjs +14 -0
  185. package/lib/protocols/rollup/pipes/ensure-validator.d.cts +6 -0
  186. package/lib/protocols/rollup/pipes/verify-evidence.cjs +32 -0
  187. package/lib/protocols/rollup/pipes/verify-evidence.d.cts +15 -0
  188. package/lib/protocols/rollup/pipes/verify-signers.cjs +39 -0
  189. package/lib/protocols/rollup/pipes/verify-signers.d.cts +15 -0
  190. package/lib/protocols/rollup/pipes/verify-status.cjs +28 -0
  191. package/lib/protocols/rollup/pipes/verify-status.d.cts +13 -0
  192. package/lib/protocols/rollup/resume.cjs +81 -0
  193. package/lib/protocols/rollup/resume.d.cts +4 -0
  194. package/lib/protocols/rollup/update.cjs +114 -0
  195. package/lib/protocols/rollup/update.d.cts +4 -0
  196. package/lib/protocols/token/create.cjs +156 -0
  197. package/lib/protocols/token/create.d.cts +4 -0
  198. package/lib/protocols/token/deposit-v2.cjs +219 -0
  199. package/lib/protocols/token/deposit-v2.d.cts +11 -0
  200. package/lib/protocols/token/withdraw-v2.cjs +225 -0
  201. package/lib/protocols/token/withdraw-v2.d.cts +9 -0
  202. package/lib/protocols/token-factory/burn.cjs +236 -0
  203. package/lib/protocols/token-factory/burn.d.cts +15 -0
  204. package/lib/protocols/token-factory/create.cjs +260 -0
  205. package/lib/protocols/token-factory/create.d.cts +4 -0
  206. package/lib/protocols/token-factory/mint.cjs +237 -0
  207. package/lib/protocols/token-factory/mint.d.cts +15 -0
  208. package/lib/protocols/token-factory/pipes/calc-reserve.cjs +38 -0
  209. package/lib/protocols/token-factory/pipes/calc-reserve.d.cts +21 -0
  210. package/lib/protocols/token-factory/pipes/verify-icon.cjs +22 -0
  211. package/lib/protocols/token-factory/pipes/verify-icon.d.cts +14 -0
  212. package/lib/protocols/token-factory/pipes/verify-ownership.cjs +66 -0
  213. package/lib/protocols/token-factory/pipes/verify-ownership.d.cts +12 -0
  214. package/lib/protocols/token-factory/pipes/verify-url.cjs +29 -0
  215. package/lib/protocols/token-factory/pipes/verify-url.d.cts +12 -0
  216. package/lib/protocols/token-factory/update.cjs +155 -0
  217. package/lib/protocols/token-factory/update.d.cts +10 -0
  218. package/lib/protocols/trade/exchange-v2.cjs +243 -0
  219. package/lib/protocols/trade/exchange-v2.d.cts +9 -0
  220. package/lib/protocols/trade/transfer-v2.cjs +229 -0
  221. package/lib/protocols/trade/transfer-v2.d.cts +9 -0
  222. package/lib/protocols/trade/transfer-v3.cjs +274 -0
  223. package/lib/protocols/trade/transfer-v3.d.cts +17 -0
  224. package/lib/util.cjs +296 -0
  225. package/lib/util.d.cts +141 -0
  226. package/package.json +49 -22
  227. package/tools/fixtures.ts +564 -0
  228. package/lib/execute.js +0 -254
  229. package/lib/index.js +0 -117
  230. package/lib/pipes/ensure-cost.js +0 -193
  231. package/lib/pipes/ensure-gas.js +0 -48
  232. package/lib/protocols/account/delegate.js +0 -223
  233. package/lib/protocols/account/migrate.js +0 -153
  234. package/lib/protocols/account/revoke-delegate.js +0 -110
  235. package/lib/protocols/asset/acquire-v2.js +0 -262
  236. package/lib/protocols/asset/acquire-v3.js +0 -330
  237. package/lib/protocols/asset/calls/README.md +0 -5
  238. package/lib/protocols/asset/calls/transfer-token.js +0 -36
  239. package/lib/protocols/asset/calls/transfer.js +0 -28
  240. package/lib/protocols/asset/consume.js +0 -105
  241. package/lib/protocols/asset/create.js +0 -151
  242. package/lib/protocols/asset/mint.js +0 -199
  243. package/lib/protocols/asset/pipes/exec-mint-hook.js +0 -62
  244. package/lib/protocols/asset/pipes/extract-factory-tokens.js +0 -18
  245. package/lib/protocols/asset/pipes/verify-itx-address.js +0 -54
  246. package/lib/protocols/asset/pipes/verify-itx-assets.js +0 -51
  247. package/lib/protocols/asset/pipes/verify-itx-variables.js +0 -26
  248. package/lib/protocols/asset/pipes/verify-mint-limit.js +0 -13
  249. package/lib/protocols/asset/update.js +0 -131
  250. package/lib/protocols/factory/create.js +0 -191
  251. package/lib/protocols/governance/claim-stake.js +0 -266
  252. package/lib/protocols/governance/return-stake.js +0 -248
  253. package/lib/protocols/governance/revoke-stake.js +0 -172
  254. package/lib/protocols/governance/slash-stake.js +0 -271
  255. package/lib/protocols/governance/stake.js +0 -303
  256. package/lib/protocols/rollup/claim-reward.js +0 -342
  257. package/lib/protocols/rollup/close.js +0 -104
  258. package/lib/protocols/rollup/create-block.js +0 -413
  259. package/lib/protocols/rollup/create.js +0 -197
  260. package/lib/protocols/rollup/join.js +0 -182
  261. package/lib/protocols/rollup/leave.js +0 -145
  262. package/lib/protocols/rollup/migrate.js +0 -85
  263. package/lib/protocols/rollup/pause.js +0 -75
  264. package/lib/protocols/rollup/pipes/ensure-validator.js +0 -12
  265. package/lib/protocols/rollup/pipes/verify-evidence.js +0 -37
  266. package/lib/protocols/rollup/pipes/verify-signers.js +0 -87
  267. package/lib/protocols/rollup/pipes/verify-status.js +0 -30
  268. package/lib/protocols/rollup/resume.js +0 -75
  269. package/lib/protocols/rollup/update.js +0 -122
  270. package/lib/protocols/token/create.js +0 -199
  271. package/lib/protocols/token/deposit-v2.js +0 -290
  272. package/lib/protocols/token/withdraw-v2.js +0 -305
  273. package/lib/protocols/token-factory/burn.js +0 -371
  274. package/lib/protocols/token-factory/create.js +0 -342
  275. package/lib/protocols/token-factory/mint.js +0 -385
  276. package/lib/protocols/token-factory/pipes/calc-reserve.js +0 -37
  277. package/lib/protocols/token-factory/pipes/verify-icon.js +0 -27
  278. package/lib/protocols/token-factory/pipes/verify-ownership.js +0 -93
  279. package/lib/protocols/token-factory/pipes/verify-url.js +0 -32
  280. package/lib/protocols/token-factory/update.js +0 -208
  281. package/lib/protocols/trade/exchange-v2.js +0 -239
  282. package/lib/protocols/trade/transfer-v2.js +0 -233
  283. package/lib/protocols/trade/transfer-v3.js +0 -333
  284. package/lib/util.js +0 -442
@@ -0,0 +1,81 @@
1
+ Object.defineProperty(exports, '__esModule', { value: true });
2
+ const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
3
+ const require_pipes_ensure_cost = require('../../pipes/ensure-cost.cjs');
4
+ const require_pipes_ensure_gas = require('../../pipes/ensure-gas.cjs');
5
+ const require_protocols_rollup_pipes_ensure_validator = require('./pipes/ensure-validator.cjs');
6
+ const require_protocols_rollup_pipes_verify_signers = require('./pipes/verify-signers.cjs');
7
+ const require_protocols_rollup_pipes_verify_status = require('./pipes/verify-status.cjs');
8
+ let _ocap_tx_pipeline = require("@ocap/tx-pipeline");
9
+ let _ocap_util_lib_error = require("@ocap/util/lib/error");
10
+ let _ocap_state = require("@ocap/state");
11
+ let _arcblock_validator = require("@arcblock/validator");
12
+
13
+ //#region src/protocols/rollup/resume.ts
14
+ const runner = new _ocap_tx_pipeline.Runner("resume_rollup");
15
+ const schema = _arcblock_validator.Joi.object({
16
+ rollup: _arcblock_validator.Joi.DID().prefix().role("ROLE_ROLLUP").required(),
17
+ data: _arcblock_validator.Joi.any().optional().allow(null)
18
+ }).options({
19
+ stripUnknown: true,
20
+ noDefaults: false
21
+ });
22
+ runner.use(({ itx }, next) => {
23
+ const { error } = schema.validate(itx);
24
+ return next(error ? new _ocap_util_lib_error.CustomError("INVALID_TX", `Invalid itx: ${error.message}`) : void 0);
25
+ });
26
+ runner.use(_ocap_tx_pipeline.pipes.ExtractState({
27
+ from: "itx.rollup",
28
+ to: "rollupState",
29
+ status: "INVALID_ROLLUP",
30
+ table: "rollup"
31
+ }));
32
+ runner.use(require_protocols_rollup_pipes_ensure_validator.default(true));
33
+ runner.use(require_protocols_rollup_pipes_verify_status.default({
34
+ paused: true,
35
+ closed: false
36
+ }));
37
+ runner.use(require_protocols_rollup_pipes_verify_signers.default({
38
+ signersKey: "tx.signaturesList",
39
+ allowSender: true
40
+ }));
41
+ runner.use(_ocap_tx_pipeline.pipes.VerifyMultiSigV2({ signersKey: "signers" }));
42
+ runner.use(_ocap_tx_pipeline.pipes.ExtractState({
43
+ from: "tx.from",
44
+ to: "senderState",
45
+ status: "INVALID_SENDER_STATE",
46
+ table: "account"
47
+ }));
48
+ runner.use(_ocap_tx_pipeline.pipes.ExtractState({
49
+ from: "signers",
50
+ to: "signerStates",
51
+ status: "INVALID_SIGNER_STATE",
52
+ table: "account"
53
+ }));
54
+ runner.use(_ocap_tx_pipeline.pipes.VerifyAccountMigration({
55
+ signerKey: "signerStates",
56
+ stateKey: "senderState",
57
+ addressKey: "tx.from"
58
+ }));
59
+ runner.use(require_pipes_ensure_gas.default(() => ({
60
+ create: 0,
61
+ update: 2,
62
+ payment: 0
63
+ })));
64
+ runner.use(require_pipes_ensure_cost.default({ attachSenderChanges: true }));
65
+ runner.use(_ocap_tx_pipeline.pipes.TakeStateSnapshot());
66
+ runner.use(async (context, next) => {
67
+ const { tx, itx, rollupState, statedb, senderState, senderUpdates, updateVaults } = context;
68
+ const [newSenderState, newRollupState] = await Promise.all([statedb.account.update(senderState.address, _ocap_state.account.update(senderState, {
69
+ nonce: tx.nonce,
70
+ ...senderUpdates
71
+ }, context), context), statedb.rollup.update(itx.rollup, _ocap_state.rollup.resume(rollupState, context), context)]);
72
+ if (updateVaults) await updateVaults();
73
+ context.senderState = newSenderState;
74
+ context.rollupState = newRollupState;
75
+ next();
76
+ }, { persistError: true });
77
+ runner.use(_ocap_tx_pipeline.pipes.VerifyStateDiff());
78
+ var resume_default = runner;
79
+
80
+ //#endregion
81
+ exports.default = resume_default;
@@ -0,0 +1,4 @@
1
+ //#region src/protocols/rollup/resume.d.ts
2
+ declare const runner: any;
3
+ //#endregion
4
+ export { runner as default };
@@ -0,0 +1,114 @@
1
+ Object.defineProperty(exports, '__esModule', { value: true });
2
+ const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
3
+ const require_util = require('../../util.cjs');
4
+ const require_pipes_ensure_cost = require('../../pipes/ensure-cost.cjs');
5
+ const require_pipes_ensure_gas = require('../../pipes/ensure-gas.cjs');
6
+ const require_protocols_rollup_pipes_ensure_validator = require('./pipes/ensure-validator.cjs');
7
+ const require_protocols_rollup_pipes_verify_signers = require('./pipes/verify-signers.cjs');
8
+ const require_protocols_rollup_pipes_verify_status = require('./pipes/verify-status.cjs');
9
+ let _ocap_tx_pipeline = require("@ocap/tx-pipeline");
10
+ let _ocap_util_lib_error = require("@ocap/util/lib/error");
11
+ let _ocap_state = require("@ocap/state");
12
+ let debug = require("debug");
13
+ debug = require_rolldown_runtime.__toESM(debug);
14
+ let _arcblock_validator = require("@arcblock/validator");
15
+
16
+ //#region src/protocols/rollup/update.ts
17
+ const debug$1 = (0, debug.default)("@ocap/tx-protocols:update-rollup");
18
+ const runner = new _ocap_tx_pipeline.Runner("update_rollup");
19
+ const schema = _arcblock_validator.Joi.object({
20
+ rollup: _arcblock_validator.Joi.DID().prefix().role("ROLE_ROLLUP").required(),
21
+ minStakeAmount: _arcblock_validator.Joi.BN().greater(0).required(),
22
+ maxStakeAmount: _arcblock_validator.Joi.BN().greater(_arcblock_validator.Joi.ref("minStakeAmount")).required(),
23
+ minSignerCount: _arcblock_validator.Joi.number().integer().required(),
24
+ maxSignerCount: _arcblock_validator.Joi.number().integer().min(1).max(8).greater(_arcblock_validator.Joi.ref("minSignerCount")).required(),
25
+ minBlockSize: _arcblock_validator.Joi.number().integer().min(1).required(),
26
+ maxBlockSize: _arcblock_validator.Joi.number().integer().min(1).max(10).greater(_arcblock_validator.Joi.ref("minBlockSize")).required(),
27
+ minBlockInterval: _arcblock_validator.Joi.number().integer().min(1).max(3600).required(),
28
+ minBlockConfirmation: _arcblock_validator.Joi.number().integer().min(1).max(100).required(),
29
+ minDepositAmount: _arcblock_validator.Joi.BN().positive().required(),
30
+ maxDepositAmount: _arcblock_validator.Joi.BN().greater(_arcblock_validator.Joi.ref("minDepositAmount")).required(),
31
+ minWithdrawAmount: _arcblock_validator.Joi.BN().positive().required(),
32
+ maxWithdrawAmount: _arcblock_validator.Joi.BN().greater(_arcblock_validator.Joi.ref("minWithdrawAmount")).required(),
33
+ depositFeeRate: _arcblock_validator.Joi.number().integer().min(1).max(1e4).required(),
34
+ withdrawFeeRate: _arcblock_validator.Joi.number().integer().min(1).max(1e4).required(),
35
+ publisherFeeShare: _arcblock_validator.Joi.number().integer().min(1).max(1e4).required(),
36
+ minDepositFee: _arcblock_validator.Joi.BN().positive().required(),
37
+ maxDepositFee: _arcblock_validator.Joi.BN().greater(_arcblock_validator.Joi.ref("minDepositFee")).required(),
38
+ minWithdrawFee: _arcblock_validator.Joi.BN().positive().required(),
39
+ maxWithdrawFee: _arcblock_validator.Joi.BN().greater(_arcblock_validator.Joi.ref("minWithdrawFee")).required(),
40
+ data: _arcblock_validator.Joi.any().optional().allow(null)
41
+ }).options({
42
+ stripUnknown: true,
43
+ noDefaults: false
44
+ });
45
+ runner.use(({ itx }, next) => {
46
+ const { error } = schema.validate(itx);
47
+ return next(error ? new _ocap_util_lib_error.CustomError("INVALID_TX", `Invalid itx: ${error.message}`) : void 0);
48
+ });
49
+ runner.use(_ocap_tx_pipeline.pipes.VerifyInfo([{
50
+ error: "INVALID_TX",
51
+ message: "Sum of itx.proposerFeeShare and itx.publisherFeeShare must be less than 10000",
52
+ fn: (ctx) => {
53
+ const context = ctx;
54
+ return context.itx.proposerFeeShare + context.itx.publisherFeeShare < 1e4;
55
+ }
56
+ }]));
57
+ runner.use(_ocap_tx_pipeline.pipes.ExtractState({
58
+ from: "itx.rollup",
59
+ to: "rollupState",
60
+ status: "INVALID_ROLLUP",
61
+ table: "rollup"
62
+ }));
63
+ runner.use(require_protocols_rollup_pipes_ensure_validator.default(true));
64
+ runner.use(require_protocols_rollup_pipes_verify_status.default({ paused: false }));
65
+ runner.use(require_protocols_rollup_pipes_verify_signers.default({
66
+ signersKey: "tx.signaturesList",
67
+ allowSender: true
68
+ }));
69
+ runner.use(_ocap_tx_pipeline.pipes.VerifyMultiSigV2({ signersKey: "signers" }));
70
+ runner.use(_ocap_tx_pipeline.pipes.ExtractState({
71
+ from: "tx.from",
72
+ to: "senderState",
73
+ status: "INVALID_SENDER_STATE",
74
+ table: "account"
75
+ }));
76
+ runner.use(_ocap_tx_pipeline.pipes.ExtractState({
77
+ from: "signers",
78
+ to: "signerStates",
79
+ status: "INVALID_SIGNER_STATE",
80
+ table: "account"
81
+ }));
82
+ runner.use(_ocap_tx_pipeline.pipes.VerifyAccountMigration({
83
+ signerKey: "signerStates",
84
+ stateKey: "senderState",
85
+ addressKey: "tx.from"
86
+ }));
87
+ runner.use(require_pipes_ensure_gas.default(() => ({
88
+ create: 0,
89
+ update: 2,
90
+ payment: 0
91
+ })));
92
+ runner.use(require_pipes_ensure_cost.default({ attachSenderChanges: true }));
93
+ runner.use(_ocap_tx_pipeline.pipes.TakeStateSnapshot());
94
+ runner.use(async (context, next) => {
95
+ const { tx, itx, rollupState, statedb, senderState, senderUpdates, updateVaults } = context;
96
+ const data = require_util.decodeAnySafe(itx.data ?? null);
97
+ const [newSenderState, newRollupState] = await Promise.all([statedb.account.update(senderState.address, _ocap_state.account.update(senderState, {
98
+ nonce: tx.nonce,
99
+ ...senderUpdates
100
+ }, context), context), statedb.rollup.update(itx.rollup, _ocap_state.rollup.update(rollupState, {
101
+ ...itx,
102
+ data
103
+ }, context), context)]);
104
+ if (updateVaults) await updateVaults();
105
+ context.senderState = newSenderState;
106
+ context.rollupState = newRollupState;
107
+ debug$1("update-rollup", newRollupState);
108
+ next();
109
+ }, { persistError: true });
110
+ runner.use(_ocap_tx_pipeline.pipes.VerifyStateDiff());
111
+ var update_default = runner;
112
+
113
+ //#endregion
114
+ exports.default = update_default;
@@ -0,0 +1,4 @@
1
+ //#region src/protocols/rollup/update.d.ts
2
+ declare const runner: any;
3
+ //#endregion
4
+ export { runner as default };
@@ -0,0 +1,156 @@
1
+ Object.defineProperty(exports, '__esModule', { value: true });
2
+ const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
3
+ const require_util = require('../../util.cjs');
4
+ const require_pipes_ensure_cost = require('../../pipes/ensure-cost.cjs');
5
+ const require_pipes_ensure_gas = require('../../pipes/ensure-gas.cjs');
6
+ let _ocap_tx_pipeline = require("@ocap/tx-pipeline");
7
+ let _ocap_util_lib_error = require("@ocap/util/lib/error");
8
+ let _arcblock_did_util = require("@arcblock/did-util");
9
+ let _ocap_state = require("@ocap/state");
10
+ let _ocap_util = require("@ocap/util");
11
+ let debug = require("debug");
12
+ debug = require_rolldown_runtime.__toESM(debug);
13
+ let lodash_cloneDeep = require("lodash/cloneDeep");
14
+ lodash_cloneDeep = require_rolldown_runtime.__toESM(lodash_cloneDeep);
15
+ let _arcblock_validator = require("@arcblock/validator");
16
+ let lodash_uniq = require("lodash/uniq");
17
+ lodash_uniq = require_rolldown_runtime.__toESM(lodash_uniq);
18
+ let lodash_isEmpty = require("lodash/isEmpty");
19
+ lodash_isEmpty = require_rolldown_runtime.__toESM(lodash_isEmpty);
20
+
21
+ //#region src/protocols/token/create.ts
22
+ const debug$1 = (0, debug.default)("@ocap/tx-protocols:create-token");
23
+ const MAX_TOTAL_SUPPLY = (0, _ocap_util.fromTokenToUnit)(1e4 * 1e8, 18);
24
+ const runner = new _ocap_tx_pipeline.Runner("create_token");
25
+ runner.use(_ocap_tx_pipeline.pipes.VerifyMultiSig(0));
26
+ const schema = _arcblock_validator.Joi.object({
27
+ address: _arcblock_validator.Joi.DID().prefix().role("ROLE_TOKEN").required(),
28
+ name: _arcblock_validator.Joi.string().min(1).max(32).required(),
29
+ description: _arcblock_validator.Joi.string().min(16).max(128).required(),
30
+ symbol: _arcblock_validator.Joi.string().min(2).max(6).uppercase().required(),
31
+ unit: _arcblock_validator.Joi.string().min(1).max(6).lowercase().required(),
32
+ decimal: _arcblock_validator.Joi.number().min(2).max(18).required(),
33
+ icon: _arcblock_validator.Joi.string().optional().allow(null).valid(""),
34
+ totalSupply: _arcblock_validator.Joi.BN().greater(0).max(MAX_TOTAL_SUPPLY).required(),
35
+ initialSupply: _arcblock_validator.Joi.BN().greater(0).max(_arcblock_validator.Joi.ref("totalSupply")).required(),
36
+ maxTotalSupply: _arcblock_validator.Joi.alternatives().try(_arcblock_validator.Joi.BN().greater(0).max(_arcblock_validator.Joi.ref("totalSupply")), _arcblock_validator.Joi.string().valid("")).optional().allow(null),
37
+ foreignToken: _arcblock_validator.schemas.foreignToken.optional().allow(null).default(null),
38
+ spendersList: _arcblock_validator.Joi.array().items(_arcblock_validator.Joi.DID().prefix()).max(30).optional().allow(null).default(null),
39
+ tokenFactoryAddress: _arcblock_validator.Joi.forbidden(),
40
+ data: _arcblock_validator.Joi.any().optional().allow(null)
41
+ }).options({
42
+ stripUnknown: true,
43
+ noDefaults: false
44
+ });
45
+ runner.use(({ itx }, next) => {
46
+ const { error, value } = schema.validate(itx);
47
+ if (error) return next(new _ocap_util_lib_error.CustomError("INVALID_TX", `Invalid itx: ${error.message}`));
48
+ const spendersList = value.spendersList;
49
+ itx.spenders = spendersList?.length ? (0, lodash_uniq.default)(spendersList) : null;
50
+ delete itx.spendersList;
51
+ return next();
52
+ });
53
+ runner.use(_ocap_tx_pipeline.pipes.VerifyInfo([{
54
+ error: "INVALID_TOKEN",
55
+ message: "Token address is not valid",
56
+ fn: (ctx) => {
57
+ const context = ctx;
58
+ const itx = (0, lodash_cloneDeep.default)(context.itx);
59
+ itx.data = require_util.decodeAnySafe(itx.data ?? null);
60
+ itx.address = "";
61
+ return (0, _arcblock_did_util.toTokenAddress)(itx) === context.itx.address;
62
+ }
63
+ }]));
64
+ runner.use(_ocap_tx_pipeline.pipes.ExtractState({
65
+ from: "tx.from",
66
+ to: "senderState",
67
+ status: "INVALID_SENDER_STATE",
68
+ table: "account"
69
+ }));
70
+ runner.use(_ocap_tx_pipeline.pipes.VerifyAccountMigration({
71
+ stateKey: "senderState",
72
+ addressKey: "tx.from"
73
+ }));
74
+ runner.use(_ocap_tx_pipeline.pipes.ExtractState({
75
+ from: "tx.delegator",
76
+ to: "delegatorState",
77
+ status: "OK",
78
+ table: "account"
79
+ }));
80
+ runner.use(_ocap_tx_pipeline.pipes.VerifyAccountMigration({
81
+ stateKey: "delegatorState",
82
+ addressKey: "tx.delegator"
83
+ }));
84
+ runner.use(_ocap_tx_pipeline.pipes.VerifyDelegation({
85
+ type: "signature",
86
+ signerKey: "senderState",
87
+ delegatorKey: "delegatorState",
88
+ getRequirements: require_util.getDelegationRequirements
89
+ }));
90
+ runner.use(_ocap_tx_pipeline.pipes.ExtractState({
91
+ from: "itx.address",
92
+ to: "tokenState",
93
+ table: "token",
94
+ status: "OK"
95
+ }));
96
+ runner.use(_ocap_tx_pipeline.pipes.VerifyInfo([{
97
+ error: "DUPLICATE_TOKEN",
98
+ message: "Token address already exists on chain",
99
+ fn: (ctx) => (0, lodash_isEmpty.default)(ctx.tokenState)
100
+ }]));
101
+ runner.use(async function EnsureTokenSymbol(context, next) {
102
+ const { symbol } = context.config.token;
103
+ if (symbol.toLowerCase() === context.itx.symbol.toLowerCase()) return next(new _ocap_util_lib_error.CustomError("DUPLICATE_SYMBOL", `Token symbol can not be ${symbol}`));
104
+ if (await context.statedb.token.existBySymbol(context.itx.symbol, context)) return next(new _ocap_util_lib_error.CustomError("DUPLICATE_SYMBOL", "Token symbol already exists"));
105
+ return next();
106
+ }, { persistError: true });
107
+ runner.use(require_pipes_ensure_gas.default((context) => {
108
+ const result = {
109
+ create: 1,
110
+ update: 2,
111
+ payment: 0
112
+ };
113
+ if (context.delegatorState) result.update += 1;
114
+ return result;
115
+ }));
116
+ runner.use(require_pipes_ensure_cost.default({ attachSenderChanges: true }));
117
+ runner.use(_ocap_tx_pipeline.pipes.TakeStateSnapshot());
118
+ runner.use(async (context, next) => {
119
+ const { tx, itx, statedb, senderState, delegatorState, delegationState, senderUpdates, updateVaults } = context;
120
+ const data = require_util.decodeAnySafe(itx.data ?? null);
121
+ const owner = delegatorState ? delegatorState.address : senderState.address;
122
+ const delegatorUpdates = {};
123
+ const updates = senderUpdates;
124
+ updates.tokens = updates.tokens || senderState.tokens || {};
125
+ if (delegatorState) {
126
+ delegatorUpdates.tokens = delegatorState.tokens || {};
127
+ delegatorUpdates.tokens[itx.address] = itx.initialSupply;
128
+ } else updates.tokens[itx.address] = itx.initialSupply;
129
+ const [newSenderState, tokenState, newDelegatorState, newDelegationState] = await Promise.all([
130
+ statedb.account.update(senderState.address, _ocap_state.account.update(senderState, {
131
+ nonce: tx.nonce,
132
+ pk: tx.pk,
133
+ ...senderUpdates
134
+ }, context), context),
135
+ statedb.token.create(itx.address, _ocap_state.token.create({
136
+ ...(0, lodash_cloneDeep.default)(itx),
137
+ data,
138
+ issuer: owner,
139
+ type: "Token"
140
+ }, context), context),
141
+ delegatorState ? statedb.account.update(delegatorState.address, _ocap_state.account.update(delegatorState, delegatorUpdates, context), context) : null,
142
+ context.isDelegationChanged ? statedb.delegation.update(delegationState.address, _ocap_state.delegation.update(delegationState, {}, context), context) : delegationState
143
+ ]);
144
+ if (updateVaults) await updateVaults();
145
+ context.senderState = newSenderState;
146
+ context.tokenState = tokenState;
147
+ context.delegatorState = newDelegatorState ?? void 0;
148
+ context.delegationState = newDelegationState ?? void 0;
149
+ debug$1("create token v2", tokenState);
150
+ next();
151
+ }, { persistError: true });
152
+ runner.use(_ocap_tx_pipeline.pipes.VerifyStateDiff());
153
+ var create_default = runner;
154
+
155
+ //#endregion
156
+ exports.default = create_default;
@@ -0,0 +1,4 @@
1
+ //#region src/protocols/token/create.d.ts
2
+ declare const runner: any;
3
+ //#endregion
4
+ export { runner as default };
@@ -0,0 +1,219 @@
1
+ Object.defineProperty(exports, '__esModule', { value: true });
2
+ const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
3
+ const require_util = require('../../util.cjs');
4
+ const require_pipes_ensure_cost = require('../../pipes/ensure-cost.cjs');
5
+ const require_pipes_ensure_gas = require('../../pipes/ensure-gas.cjs');
6
+ const require_protocols_rollup_pipes_verify_signers = require('../rollup/pipes/verify-signers.cjs');
7
+ const require_protocols_rollup_pipes_verify_status = require('../rollup/pipes/verify-status.cjs');
8
+ let _ocap_tx_pipeline = require("@ocap/tx-pipeline");
9
+ let _ocap_util_lib_error = require("@ocap/util/lib/error");
10
+ let _arcblock_did_util = require("@arcblock/did-util");
11
+ let _ocap_state = require("@ocap/state");
12
+ let _ocap_util = require("@ocap/util");
13
+ let debug = require("debug");
14
+ debug = require_rolldown_runtime.__toESM(debug);
15
+ let _ocap_util_lib_get_list_field = require("@ocap/util/lib/get-list-field");
16
+ let _arcblock_validator = require("@arcblock/validator");
17
+
18
+ //#region src/protocols/token/deposit-v2.ts
19
+ const debug$1 = (0, debug.default)("@ocap/tx-protocols:deposit-token");
20
+ const schema = _arcblock_validator.Joi.object({
21
+ token: _arcblock_validator.schemas.tokenInput.required(),
22
+ to: _arcblock_validator.Joi.DID().prefix().wallet("ethereum").required(),
23
+ proposer: _arcblock_validator.Joi.DID().prefix().wallet("ethereum").required(),
24
+ evidence: _arcblock_validator.Joi.object({ hash: _arcblock_validator.Joi.string().regex(_arcblock_validator.patterns.txHash).required() }).required(),
25
+ rollup: _arcblock_validator.Joi.DID().prefix().role("ROLE_ROLLUP").required(),
26
+ actualFee: _arcblock_validator.Joi.BN().min(0).required(),
27
+ data: _arcblock_validator.Joi.any().optional().allow(null)
28
+ }).options({
29
+ stripUnknown: true,
30
+ noDefaults: false
31
+ });
32
+ const runner = new _ocap_tx_pipeline.Runner("deposit_token_v2");
33
+ runner.use(({ tx, itx }, next) => {
34
+ const { error } = schema.validate(itx);
35
+ if (error) return next(new _ocap_util_lib_error.CustomError("INVALID_TX", `Invalid itx: ${error.message}`));
36
+ if (itx.to !== tx.from) return next(new _ocap_util_lib_error.CustomError("INVALID_TX", "You can only deposit to tx sender account"));
37
+ const signatures = (0, _ocap_util_lib_get_list_field.getListField)(tx, "signatures");
38
+ if (signatures.some((x) => x.signer === itx.proposer) === false) return next(new _ocap_util_lib_error.CustomError("INVALID_TX", "itx.proposer must exist in signatures"));
39
+ if (signatures.some((x) => x.signer === tx.from)) return next(new _ocap_util_lib_error.CustomError("INVALID_TX", "tx.from should not exist in signatures"));
40
+ return next();
41
+ });
42
+ runner.use(_ocap_tx_pipeline.pipes.ExtractState({
43
+ from: "itx.rollup",
44
+ to: "rollupState",
45
+ status: "INVALID_ROLLUP",
46
+ table: "rollup"
47
+ }));
48
+ runner.use(require_protocols_rollup_pipes_verify_status.default({ paused: false }));
49
+ runner.use((context, next) => {
50
+ const { itx, rollupState } = context;
51
+ if (rollupState.tokenAddress !== itx.token.address) return next(new _ocap_util_lib_error.CustomError("INVALID_TX", "Deposit token address does not match with rollup state"));
52
+ if (rollupState.validators.some((x) => x.address === itx.proposer) === false) return next(new _ocap_util_lib_error.CustomError("INVALID_TX", "itx.proposer does not exist in validators"));
53
+ return next();
54
+ });
55
+ runner.use(_ocap_tx_pipeline.pipes.ExtractState({
56
+ from: "itx.evidence.hash",
57
+ to: "evidenceState",
58
+ status: "OK",
59
+ table: "evidence"
60
+ }));
61
+ runner.use(({ evidenceState }, next) => {
62
+ if (evidenceState) return next(new _ocap_util_lib_error.CustomError("INVALID_TX", "Deposit evidence already seen on this chain"));
63
+ return next();
64
+ });
65
+ runner.use(require_protocols_rollup_pipes_verify_signers.default({
66
+ signersKey: "tx.signaturesList",
67
+ allowSender: true
68
+ }));
69
+ runner.use(_ocap_tx_pipeline.pipes.VerifyMultiSigV2({ signersKey: "signers" }));
70
+ runner.use(_ocap_tx_pipeline.pipes.ExtractState({
71
+ from: "itx.token.address",
72
+ to: "tokenState",
73
+ status: "INVALID_TOKEN",
74
+ table: "token"
75
+ }));
76
+ runner.use((context, next) => {
77
+ const { itx } = context;
78
+ context.stakeAddress = (0, _arcblock_did_util.toStakeAddress)(itx.proposer, itx.rollup);
79
+ context.lockerAddress = require_util.getRewardLocker(itx.rollup);
80
+ return next();
81
+ });
82
+ runner.use(_ocap_tx_pipeline.pipes.ExtractState({
83
+ from: "lockerAddress",
84
+ to: "lockerState",
85
+ status: "OK",
86
+ table: "stake"
87
+ }));
88
+ runner.use(_ocap_tx_pipeline.pipes.ExtractState({
89
+ from: "stakeAddress",
90
+ to: "stakeState",
91
+ status: "INVALID_STAKE_STATE",
92
+ table: "stake"
93
+ }));
94
+ runner.use((context, next) => {
95
+ const { itx, stakeState, tokenState, rollupState } = context;
96
+ if (stakeState.revocable === true) return next(new _ocap_util_lib_error.CustomError("INVALID_STAKE_STATE", `Staking not locked for deposit: ${stakeState.address}`));
97
+ const depositAmount = new _ocap_util.BN(itx.token.value).add(new _ocap_util.BN(itx.actualFee));
98
+ const minDepositAmount = new _ocap_util.BN(rollupState.minDepositAmount);
99
+ const maxDepositAmount = new _ocap_util.BN(rollupState.maxDepositAmount);
100
+ if (depositAmount.lt(minDepositAmount)) return next(new _ocap_util_lib_error.CustomError("INVALID_TX", `Deposit amount must be greater than minDepositAmount: ${(0, _ocap_util.fromUnitToToken)(minDepositAmount, tokenState.decimal)}`));
101
+ if (depositAmount.gt(maxDepositAmount)) return next(new _ocap_util_lib_error.CustomError("INVALID_TX", `Deposit amount must be less than maxDepositAmount: ${(0, _ocap_util.fromUnitToToken)(maxDepositAmount, tokenState.decimal)}`));
102
+ const stakedAmount = new _ocap_util.BN(stakeState.tokens[rollupState.tokenAddress] || 0);
103
+ if (depositAmount.gt(stakedAmount)) return next(new _ocap_util_lib_error.CustomError("INSUFFICIENT_STAKE", `Deposit amount must be less than available stake: ${(0, _ocap_util.fromUnitToToken)(stakedAmount, tokenState.decimal)}`));
104
+ return next();
105
+ });
106
+ runner.use((context, next) => {
107
+ const { itx, rollupState, tokenState } = context;
108
+ const { depositFeeRate, maxDepositFee, minDepositFee } = rollupState;
109
+ const { reward } = require_util.getTxFee({
110
+ amount: itx.token.value,
111
+ feeRate: depositFeeRate,
112
+ maxFee: maxDepositFee,
113
+ minFee: minDepositFee
114
+ });
115
+ if (new _ocap_util.BN(itx.actualFee).lt(new _ocap_util.BN(reward))) return next(new _ocap_util_lib_error.CustomError("INVALID_TX", `itx.actualFee too low, expect at least ${(0, _ocap_util.fromUnitToToken)(reward, tokenState.decimal)}, got ${(0, _ocap_util.fromUnitToToken)(itx.actualFee, tokenState.decimal)}`));
116
+ return next();
117
+ });
118
+ runner.use(_ocap_tx_pipeline.pipes.ExtractState({
119
+ from: "tx.from",
120
+ to: "senderState",
121
+ status: "OK",
122
+ table: "account"
123
+ }));
124
+ runner.use(_ocap_tx_pipeline.pipes.ExtractState({
125
+ from: "signers",
126
+ to: "signerStates",
127
+ status: "INVALID_SIGNER_STATE",
128
+ table: "account"
129
+ }));
130
+ runner.use(_ocap_tx_pipeline.pipes.VerifyAccountMigration({
131
+ signerKey: "signerStates",
132
+ stateKey: "senderState",
133
+ addressKey: "tx.from"
134
+ }));
135
+ runner.use(require_pipes_ensure_gas.default((context) => {
136
+ const result = {
137
+ create: 1,
138
+ update: 1,
139
+ payment: 0
140
+ };
141
+ if (context.senderState) result.update += 1;
142
+ else result.create += 1;
143
+ if (context.lockerState) result.update += 1;
144
+ else result.create += 1;
145
+ return result;
146
+ }));
147
+ runner.use(require_pipes_ensure_cost.default({ attachSenderChanges: true }));
148
+ runner.use(_ocap_tx_pipeline.pipes.TakeStateSnapshot());
149
+ runner.use(async (context, next) => {
150
+ const { tx, itx, statedb, senderState, stakeState, stakeAddress, lockerState, lockerAddress, senderChange, updateVaults } = context;
151
+ const user = itx.token.value;
152
+ const fee = itx.actualFee;
153
+ const total = require_util.getBNSum(user, fee);
154
+ const stakeUpdates = require_util.applyTokenUpdates([{
155
+ address: itx.token.address,
156
+ value: total
157
+ }], stakeState, "sub");
158
+ let senderUpdates = require_util.applyTokenUpdates([{
159
+ address: itx.token.address,
160
+ value: user
161
+ }], senderState || {}, "add");
162
+ const lockerUpdates = require_util.applyTokenUpdates([{
163
+ address: itx.token.address,
164
+ value: fee
165
+ }], lockerState || { tokens: {} }, "add");
166
+ if (senderChange && senderState) senderUpdates = require_util.applyTokenChange(senderUpdates, senderChange);
167
+ const sender = senderState ? senderState.address : tx.from;
168
+ const [newSenderState, newStakeState, newLockerState, evidenceState] = await Promise.all([
169
+ statedb.account.updateOrCreate(senderState ?? null, _ocap_state.account.updateOrCreate(senderState ?? null, {
170
+ address: sender,
171
+ nonce: tx.nonce,
172
+ pk: tx.pk,
173
+ ...senderUpdates
174
+ }, context), context),
175
+ statedb.stake.update(stakeAddress, _ocap_state.stake.update(stakeState, stakeUpdates, context), context),
176
+ lockerState ? statedb.stake.update(lockerState.address, _ocap_state.stake.update(lockerState, lockerUpdates, context), context) : statedb.stake.create(lockerAddress, _ocap_state.stake.create({
177
+ address: lockerAddress,
178
+ sender: itx.rollup,
179
+ receiver: itx.rollup,
180
+ revocable: false,
181
+ message: "pending-block-reward",
182
+ revokeWaitingPeriod: 0,
183
+ ...lockerUpdates
184
+ }, context), context),
185
+ statedb.evidence.create(itx.evidence.hash, _ocap_state.evidence.create({
186
+ hash: itx.evidence.hash,
187
+ data: "rollup-deposit"
188
+ }, context), context)
189
+ ]);
190
+ if (updateVaults) await updateVaults();
191
+ context.senderState = newSenderState;
192
+ context.stakeState = newStakeState;
193
+ context.evidenceState = evidenceState;
194
+ context.stakeStates = [newStakeState, newLockerState];
195
+ context.updatedAccounts = context.updatedAccounts || [];
196
+ context.updatedAccounts.push({
197
+ address: stakeAddress,
198
+ token: itx.token.address,
199
+ delta: `-${total}`,
200
+ action: "unlock"
201
+ }, {
202
+ address: sender,
203
+ token: itx.token.address,
204
+ delta: user,
205
+ action: "unlock"
206
+ }, {
207
+ address: lockerAddress,
208
+ token: itx.token.address,
209
+ delta: fee,
210
+ action: "pending"
211
+ });
212
+ debug$1("deposit-token-v2", itx);
213
+ next();
214
+ }, { persistError: true });
215
+ runner.use(_ocap_tx_pipeline.pipes.VerifyStateDiff());
216
+ var deposit_v2_default = runner;
217
+
218
+ //#endregion
219
+ exports.default = deposit_v2_default;
@@ -0,0 +1,11 @@
1
+ //#region src/protocols/token/deposit-v2.d.ts
2
+ /** Token change for updates */
3
+ interface TokenChange {
4
+ address: string;
5
+ token: string;
6
+ delta: string;
7
+ action: string;
8
+ }
9
+ declare const runner: any;
10
+ //#endregion
11
+ export { TokenChange, runner as default };