@ocap/tx-protocols 1.28.9 → 1.29.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 (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,216 @@
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_asset_pipes_exec_mint_hook = require('./pipes/exec-mint-hook.cjs');
7
+ const require_protocols_asset_pipes_extract_factory_tokens = require('./pipes/extract-factory-tokens.cjs');
8
+ const require_protocols_asset_pipes_verify_itx_address = require('./pipes/verify-itx-address.cjs');
9
+ const require_protocols_asset_pipes_verify_itx_assets = require('./pipes/verify-itx-assets.cjs');
10
+ const require_protocols_asset_pipes_verify_itx_variables = require('./pipes/verify-itx-variables.cjs');
11
+ const require_protocols_asset_pipes_verify_mint_limit = require('./pipes/verify-mint-limit.cjs');
12
+ let _ocap_tx_pipeline = require("@ocap/tx-pipeline");
13
+ let _ocap_util_lib_error = require("@ocap/util/lib/error");
14
+ let _ocap_state = require("@ocap/state");
15
+ let debug = require("debug");
16
+ debug = require_rolldown_runtime.__toESM(debug);
17
+ let _arcblock_validator = require("@arcblock/validator");
18
+ let node_util = require("node:util");
19
+
20
+ //#region src/protocols/asset/acquire-v2.ts
21
+ const debug$1 = (0, debug.default)("@ocap/tx-protocols:acquire-asset-v2");
22
+ const verifyTokenBalance = (0, node_util.promisify)(_ocap_tx_pipeline.pipes.VerifyTokenBalance({
23
+ ownerKey: "senders",
24
+ conditionKey: "conditions"
25
+ }));
26
+ const runner = new _ocap_tx_pipeline.Runner("acquire_asset_v2");
27
+ runner.use(_ocap_tx_pipeline.pipes.VerifyMultiSig(0));
28
+ const schema = _arcblock_validator.Joi.object({
29
+ factory: _arcblock_validator.Joi.DID().prefix().role("ROLE_FACTORY").required(),
30
+ address: _arcblock_validator.Joi.DID().prefix().role("ROLE_ASSET").required(),
31
+ assetsList: _arcblock_validator.Joi.array().items(_arcblock_validator.Joi.DID().prefix().role("ROLE_ASSET")).default([]),
32
+ variablesList: _arcblock_validator.Joi.array().items(_arcblock_validator.schemas.variableInput).optional().allow(null).default([]),
33
+ issuer: _arcblock_validator.schemas.nftIssuer.required(),
34
+ data: _arcblock_validator.Joi.any().optional().allow(null)
35
+ }).options({
36
+ stripUnknown: true,
37
+ noDefaults: false
38
+ });
39
+ runner.use(({ itx }, next) => {
40
+ const { error } = schema.validate(itx);
41
+ if (error) return next(new _ocap_util_lib_error.CustomError("INVALID_TX", `Invalid itx: ${error.message}`));
42
+ return next();
43
+ });
44
+ runner.use(_ocap_tx_pipeline.pipes.ExtractState({
45
+ from: "itx.address",
46
+ to: "duplicateAsset",
47
+ status: "OK",
48
+ table: "asset"
49
+ }));
50
+ runner.use(_ocap_tx_pipeline.pipes.VerifyInfo([{
51
+ error: "FORBIDDEN",
52
+ message: "Asset with same address already exists",
53
+ fn: (ctx) => {
54
+ return !ctx.duplicateAsset;
55
+ },
56
+ persist: true
57
+ }]));
58
+ runner.use(_ocap_tx_pipeline.pipes.ExtractState({
59
+ from: "tx.from",
60
+ to: "senderState",
61
+ status: "INVALID_SENDER_STATE",
62
+ table: "account"
63
+ }));
64
+ runner.use(_ocap_tx_pipeline.pipes.VerifyAccountMigration({
65
+ stateKey: "senderState",
66
+ addressKey: "tx.from"
67
+ }));
68
+ runner.use(_ocap_tx_pipeline.pipes.ExtractState({
69
+ from: "tx.delegator",
70
+ to: "delegatorState",
71
+ status: "OK"
72
+ }));
73
+ runner.use(_ocap_tx_pipeline.pipes.ExtractState({
74
+ from: "itx.factory",
75
+ to: "factoryState",
76
+ status: "INVALID_FACTORY_STATE",
77
+ table: "factory"
78
+ }));
79
+ runner.use(_ocap_tx_pipeline.pipes.VerifyDelegation({
80
+ type: "signature",
81
+ signerKey: "senderState",
82
+ delegatorKey: "delegatorState",
83
+ getRequirements: (context) => {
84
+ return context.factoryState.input.tokens.map((x) => ({
85
+ type: "token",
86
+ ...x
87
+ }));
88
+ }
89
+ }));
90
+ runner.use(_ocap_tx_pipeline.pipes.ExtractState({
91
+ from: "factoryState.owner",
92
+ to: "factoryOwnerState",
93
+ status: "INVALID_OWNER_STATE",
94
+ table: "account"
95
+ }));
96
+ runner.use(_ocap_tx_pipeline.pipes.ExtractState({
97
+ from: "factoryState.trustedIssuers",
98
+ to: "issuerStates",
99
+ status: "INVALID_ISSUER_STATE",
100
+ table: "account"
101
+ }));
102
+ runner.use(_ocap_tx_pipeline.pipes.ExtractState({
103
+ from: "itx.issuer.id",
104
+ to: "issuerState",
105
+ status: "INVALID_ISSUER_STATE",
106
+ table: "account"
107
+ }));
108
+ runner.use(_ocap_tx_pipeline.pipes.VerifyAccountMigration({
109
+ stateKey: "issuerState",
110
+ addressKey: "itx.issuer.id"
111
+ }));
112
+ runner.use(_ocap_tx_pipeline.pipes.VerifyInfo([{
113
+ error: "FORBIDDEN",
114
+ message: "Only factory owner and trusted issuers are allowed",
115
+ fn: (ctx) => {
116
+ const { issuerState, factoryOwnerState, issuerStates = [] } = ctx;
117
+ return factoryOwnerState.address === issuerState.address || !!issuerStates.find((x) => x.address === issuerState.address);
118
+ },
119
+ persist: true
120
+ }]));
121
+ runner.use(_ocap_tx_pipeline.pipes.ExtractState({
122
+ from: "itx.assetsList",
123
+ to: "assetStates",
124
+ status: "OK",
125
+ table: "asset"
126
+ }));
127
+ runner.use(_ocap_tx_pipeline.pipes.ExtractState({
128
+ from: "factoryState.input.assets",
129
+ to: "expectedFactoryStates",
130
+ status: "OK",
131
+ table: "factory"
132
+ }));
133
+ runner.use(require_protocols_asset_pipes_extract_factory_tokens.default);
134
+ runner.use(_ocap_tx_pipeline.pipes.ExtractState({
135
+ from: "tokenAddress",
136
+ to: "tokenStates",
137
+ status: "INVALID_TOKEN",
138
+ table: "token"
139
+ }));
140
+ runner.use(require_protocols_asset_pipes_verify_mint_limit.default);
141
+ runner.use(require_protocols_asset_pipes_verify_itx_variables.default);
142
+ runner.use(require_protocols_asset_pipes_verify_itx_address.default("acquire-v2"));
143
+ runner.use(_ocap_tx_pipeline.pipes.VerifyBlocked({ stateKeys: ["assetOwner"] }));
144
+ runner.use(async (context, next) => {
145
+ const { factoryTokens = [], senderState } = context;
146
+ const condition = {
147
+ owner: senderState.address,
148
+ tokens: [...factoryTokens]
149
+ };
150
+ try {
151
+ await verifyTokenBalance({
152
+ senders: [senderState],
153
+ conditions: [condition]
154
+ });
155
+ return next();
156
+ } catch (err) {
157
+ return next(err);
158
+ }
159
+ });
160
+ runner.use(_ocap_tx_pipeline.pipes.VerifyUpdater({
161
+ assetKey: "assetStates",
162
+ ownerKey: "assetOwner"
163
+ }));
164
+ runner.use(require_protocols_asset_pipes_verify_itx_assets.default);
165
+ runner.use(require_pipes_ensure_gas.default((context) => {
166
+ const result = {
167
+ create: 1,
168
+ update: 3,
169
+ payment: 0
170
+ };
171
+ if (context.assetStates) result.update += context.assetStates.length;
172
+ if (context.delegatorState) result.update += 1;
173
+ return result;
174
+ }));
175
+ runner.use(require_pipes_ensure_cost.default({ attachSenderChanges: true }));
176
+ runner.use(_ocap_tx_pipeline.pipes.TakeStateSnapshot());
177
+ runner.use(async (context, next) => {
178
+ const { tx, itx, txTime, statedb, senderState, assetOwner, factoryState, factoryTokens = [], delegationState, mintedAsset, mintedAddress, senderChange, updateVaults, assetStates = [] } = context;
179
+ const senderUpdates = {
180
+ nonce: tx.nonce,
181
+ pk: tx.pk,
182
+ ...require_util.applyTokenUpdates(factoryTokens, senderChange ? require_util.applyTokenChange(senderState, senderChange) : senderState, "sub")
183
+ };
184
+ const ownerUpdates = {};
185
+ const factoryUpdates = { numMinted: factoryState.numMinted + 1 };
186
+ if (factoryState.settlement !== "instant") {
187
+ Object.assign(factoryUpdates, require_util.applyTokenUpdates(factoryTokens, factoryState, "add"));
188
+ context.tokenUpdates = require_util.applyTokenUpdates(factoryTokens, { tokens: {} }, "add");
189
+ }
190
+ const [newSenderState, assetState, newFactoryState, newAssetStates, newDelegationState] = await Promise.all([
191
+ statedb.account.update(senderState.address, _ocap_state.account.update(senderState, senderUpdates, context), context),
192
+ statedb.asset.create(itx.address, _ocap_state.asset.create({
193
+ ...mintedAsset,
194
+ owner: assetOwner.address,
195
+ address: mintedAddress
196
+ }, context), context),
197
+ statedb.factory.update(factoryState.address, _ocap_state.factory.update(factoryState, factoryUpdates, context), context),
198
+ Promise.all(assetStates.map((x) => statedb.asset.update(x.address, _ocap_state.asset.update(x, { consumedTime: txTime }, context), context))),
199
+ context.isDelegationChanged ? statedb.delegation.update(delegationState.address, _ocap_state.delegation.update(delegationState, {}, context), context) : delegationState,
200
+ context.delegatorState ? statedb.account.update(assetOwner.address, _ocap_state.account.update(assetOwner, ownerUpdates, context), context) : null
201
+ ]);
202
+ if (updateVaults) await updateVaults();
203
+ context.senderState = newSenderState;
204
+ context.assetState = assetState;
205
+ context.factoryState = newFactoryState;
206
+ context.assetStates = newAssetStates;
207
+ context.delegationState = newDelegationState ?? void 0;
208
+ debug$1("acquire-v2", assetState);
209
+ next();
210
+ }, { persistError: true });
211
+ runner.use(require_protocols_asset_pipes_exec_mint_hook.default, { persistError: true });
212
+ runner.use(_ocap_tx_pipeline.pipes.VerifyStateDiff());
213
+ var acquire_v2_default = runner;
214
+
215
+ //#endregion
216
+ exports.default = acquire_v2_default;
@@ -0,0 +1,9 @@
1
+ //#region src/protocols/asset/acquire-v2.d.ts
2
+ /** Token input type */
3
+ interface TokenInput {
4
+ address: string;
5
+ value: string;
6
+ }
7
+ declare const runner: any;
8
+ //#endregion
9
+ export { TokenInput, runner as default };
@@ -0,0 +1,269 @@
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_asset_pipes_exec_mint_hook = require('./pipes/exec-mint-hook.cjs');
7
+ const require_protocols_asset_pipes_extract_factory_tokens = require('./pipes/extract-factory-tokens.cjs');
8
+ const require_protocols_asset_pipes_verify_itx_address = require('./pipes/verify-itx-address.cjs');
9
+ const require_protocols_asset_pipes_verify_itx_assets = require('./pipes/verify-itx-assets.cjs');
10
+ const require_protocols_asset_pipes_verify_itx_variables = require('./pipes/verify-itx-variables.cjs');
11
+ const require_protocols_asset_pipes_verify_mint_limit = require('./pipes/verify-mint-limit.cjs');
12
+ let _ocap_tx_pipeline = require("@ocap/tx-pipeline");
13
+ let _ocap_util_lib_error = require("@ocap/util/lib/error");
14
+ let _ocap_state = require("@ocap/state");
15
+ let _ocap_util = require("@ocap/util");
16
+ let debug = require("debug");
17
+ debug = require_rolldown_runtime.__toESM(debug);
18
+ let _ocap_util_lib_get_list_field = require("@ocap/util/lib/get-list-field");
19
+ let _arcblock_validator = require("@arcblock/validator");
20
+ let node_util = require("node:util");
21
+ let lodash_isEqual = require("lodash/isEqual");
22
+ lodash_isEqual = require_rolldown_runtime.__toESM(lodash_isEqual);
23
+
24
+ //#region src/protocols/asset/acquire-v3.ts
25
+ const debug$1 = (0, debug.default)("@ocap/tx-protocols:acquire-asset-v3");
26
+ const verifyAssetOwner = (0, node_util.promisify)(_ocap_tx_pipeline.pipes.VerifyUpdater({
27
+ assetKey: "assets",
28
+ ownerKey: "owner"
29
+ }));
30
+ const runner = new _ocap_tx_pipeline.Runner("acquire_asset_v3");
31
+ const schema = _arcblock_validator.Joi.object({
32
+ factory: _arcblock_validator.Joi.DID().prefix().role("ROLE_FACTORY").required(),
33
+ address: _arcblock_validator.Joi.DID().prefix().role("ROLE_ASSET").required(),
34
+ inputsList: _arcblock_validator.schemas.multiInput.min(1).required(),
35
+ owner: _arcblock_validator.schemas.tokenHolder.required(),
36
+ variablesList: _arcblock_validator.Joi.array().items(_arcblock_validator.schemas.variableInput).optional().allow(null).default([]),
37
+ issuer: _arcblock_validator.schemas.nftIssuer.required(),
38
+ data: _arcblock_validator.Joi.any().optional().allow(null)
39
+ }).options({
40
+ stripUnknown: true,
41
+ noDefaults: false
42
+ });
43
+ runner.use(({ itx }, next) => {
44
+ const { error } = schema.validate(itx);
45
+ if (error) return next(new _ocap_util_lib_error.CustomError("INVALID_TX", `Invalid itx: ${error.message}`));
46
+ return next();
47
+ });
48
+ runner.use(_ocap_tx_pipeline.pipes.ExtractState({
49
+ from: "itx.address",
50
+ to: "duplicateAsset",
51
+ status: "OK",
52
+ table: "asset"
53
+ }));
54
+ runner.use(_ocap_tx_pipeline.pipes.VerifyInfo([{
55
+ error: "FORBIDDEN",
56
+ message: "Asset with same address already exists",
57
+ fn: (ctx) => {
58
+ return !ctx.duplicateAsset;
59
+ },
60
+ persist: true
61
+ }]));
62
+ runner.use(_ocap_tx_pipeline.pipes.VerifyTxInput({
63
+ fieldKey: "itx.inputs",
64
+ inputsKey: "inputs",
65
+ sendersKey: "senders",
66
+ tokensKey: "tokens",
67
+ assetsKey: "assets"
68
+ }));
69
+ runner.use(_ocap_tx_pipeline.pipes.VerifyListSize({ listKey: [
70
+ "inputs",
71
+ "senders",
72
+ "tokens",
73
+ "assets"
74
+ ] }));
75
+ runner.use(_ocap_tx_pipeline.pipes.VerifyMultiSigV2({ signersKey: "senders" }));
76
+ runner.use(_ocap_tx_pipeline.pipes.ExtractState({
77
+ from: "itx.factory",
78
+ to: "factoryState",
79
+ status: "INVALID_FACTORY_STATE",
80
+ table: "factory"
81
+ }));
82
+ runner.use(_ocap_tx_pipeline.pipes.ExtractState({
83
+ from: "factoryState.owner",
84
+ to: "factoryOwnerState",
85
+ status: "INVALID_OWNER_STATE",
86
+ table: "account"
87
+ }));
88
+ runner.use(_ocap_tx_pipeline.pipes.ExtractState({
89
+ from: "factoryState.trustedIssuers",
90
+ to: "issuerStates",
91
+ status: "INVALID_ISSUER_STATE",
92
+ table: "account"
93
+ }));
94
+ runner.use(_ocap_tx_pipeline.pipes.ExtractState({
95
+ from: "itx.issuer.id",
96
+ to: "issuerState",
97
+ status: "INVALID_ISSUER_STATE",
98
+ table: "account"
99
+ }));
100
+ runner.use(_ocap_tx_pipeline.pipes.VerifyAccountMigration({
101
+ stateKey: "issuerState",
102
+ addressKey: "itx.issuer.id"
103
+ }));
104
+ runner.use(_ocap_tx_pipeline.pipes.VerifyInfo([{
105
+ error: "FORBIDDEN",
106
+ message: "Only factory owner and trusted issuers are allowed",
107
+ fn: (ctx) => {
108
+ const { issuerState, factoryOwnerState, issuerStates = [] } = ctx;
109
+ return factoryOwnerState.address === issuerState.address || !!issuerStates.find((x) => x.address === issuerState.address);
110
+ },
111
+ persist: true
112
+ }]));
113
+ runner.use(require_protocols_asset_pipes_extract_factory_tokens.default);
114
+ runner.use(require_protocols_asset_pipes_verify_mint_limit.default);
115
+ runner.use(require_protocols_asset_pipes_verify_itx_variables.default);
116
+ runner.use(_ocap_tx_pipeline.pipes.VerifyInfo([{
117
+ error: "INVALID_TX",
118
+ message: "Input token address does not match with factory input requirement",
119
+ fn: (ctx) => {
120
+ const context = ctx;
121
+ return (0, lodash_isEqual.default)(context.tokens || [], context.tokenAddress || []);
122
+ }
123
+ }, {
124
+ error: "INVALID_TX",
125
+ message: "Input token amount does not match with factory input requirement",
126
+ fn: (ctx) => {
127
+ const context = ctx;
128
+ const inputs = context.inputs || [];
129
+ const factoryTokens = context.factoryTokens || [];
130
+ const inputMap = {};
131
+ inputs.forEach((input) => {
132
+ (0, _ocap_util_lib_get_list_field.getListField)(input, "tokens").forEach(({ address, value }) => {
133
+ if (typeof inputMap[address] === "undefined") inputMap[address] = new _ocap_util.BN(0);
134
+ inputMap[address] = inputMap[address].add(new _ocap_util.BN(value));
135
+ });
136
+ });
137
+ const expectedTokens = factoryTokens.reduce((acc, x) => {
138
+ acc[x.address] = new _ocap_util.BN(x.value);
139
+ return acc;
140
+ }, {});
141
+ return Object.keys(expectedTokens).every((address) => inputMap[address].eq(expectedTokens[address]));
142
+ }
143
+ }]));
144
+ runner.use(_ocap_tx_pipeline.pipes.ExtractState({
145
+ from: "tx.from",
146
+ to: "senderState",
147
+ status: "OK",
148
+ table: "account"
149
+ }));
150
+ runner.use(_ocap_tx_pipeline.pipes.ExtractState({
151
+ from: "senders",
152
+ to: "signerStates",
153
+ status: "INVALID_SIGNER_STATE",
154
+ table: "account"
155
+ }));
156
+ runner.use(_ocap_tx_pipeline.pipes.ExtractState({
157
+ from: "itx.owner",
158
+ to: "ownerState",
159
+ status: "OK",
160
+ table: "account"
161
+ }));
162
+ runner.use(_ocap_tx_pipeline.pipes.VerifyAccountMigration({
163
+ signerKey: "signerStates",
164
+ stateKey: "senderState",
165
+ addressKey: "tx.from"
166
+ }));
167
+ runner.use(_ocap_tx_pipeline.pipes.VerifyBlocked({ stateKeys: ["signerStates", "ownerState"] }));
168
+ runner.use(_ocap_tx_pipeline.pipes.ExtractState({
169
+ from: "tokens",
170
+ to: "tokenStates",
171
+ status: "INVALID_TOKEN",
172
+ table: "token"
173
+ }));
174
+ runner.use(_ocap_tx_pipeline.pipes.VerifyTokenBalance({
175
+ ownerKey: "signerStates",
176
+ conditionKey: "inputs"
177
+ }));
178
+ runner.use(_ocap_tx_pipeline.pipes.ExtractState({
179
+ from: "assets",
180
+ to: "assetStates",
181
+ status: "OK",
182
+ table: "asset"
183
+ }));
184
+ runner.use(async (context, next) => {
185
+ const { inputs = [], assetStates = [], signerStates = [] } = context;
186
+ for (const input of inputs) {
187
+ const { owner } = input;
188
+ const assetsList = (0, _ocap_util_lib_get_list_field.getListField)(input, "assets");
189
+ const states = assetStates.filter((x) => assetsList.includes(x.address));
190
+ const signer = signerStates.find((x) => x.address === owner);
191
+ try {
192
+ await verifyAssetOwner({
193
+ assets: states,
194
+ owner: signer
195
+ });
196
+ } catch (err) {
197
+ return next(err);
198
+ }
199
+ }
200
+ return next();
201
+ });
202
+ runner.use(_ocap_tx_pipeline.pipes.ExtractState({
203
+ from: "factoryState.input.assets",
204
+ to: "expectedFactoryStates",
205
+ status: "OK",
206
+ table: "factory"
207
+ }));
208
+ runner.use(require_protocols_asset_pipes_verify_itx_address.default("acquire-v3"));
209
+ runner.use(require_protocols_asset_pipes_verify_itx_assets.default);
210
+ runner.use(require_pipes_ensure_gas.default((context) => {
211
+ const result = {
212
+ create: 1,
213
+ update: 2,
214
+ payment: 0
215
+ };
216
+ if (context.assetStates) result.update += context.assetStates.length;
217
+ if (context.signerStates) result.update += context.signerStates.length;
218
+ if (!context.ownerState) result.create += 1;
219
+ return result;
220
+ }));
221
+ runner.use(require_pipes_ensure_cost.default({ attachSenderChanges: true }));
222
+ runner.use(_ocap_tx_pipeline.pipes.TakeStateSnapshot());
223
+ runner.use(async (context, next) => {
224
+ const { tx, itx, txTime, inputs = [], statedb, senderState, ownerState, factoryState, factoryTokens = [], mintedAsset, mintedAddress, signerStates = [], senderChange, updateVaults, assetStates = [] } = context;
225
+ const signerUpdates = {};
226
+ inputs.forEach((x) => {
227
+ const { owner: owner$1 } = x;
228
+ signerUpdates[owner$1] = require_util.applyTokenUpdates((0, _ocap_util_lib_get_list_field.getListField)(x, "tokens"), signerStates.find((s) => s.address === owner$1), "sub");
229
+ if (senderChange && owner$1 === senderChange.address) signerUpdates[owner$1] = require_util.applyTokenChange(signerUpdates[owner$1], senderChange);
230
+ });
231
+ const isAlsoSigner = !!signerUpdates[tx.from];
232
+ const owner = ownerState ? ownerState.address : itx.owner;
233
+ const factoryUpdates = { numMinted: factoryState.numMinted + 1 };
234
+ if (factoryState.settlement !== "instant") {
235
+ Object.assign(factoryUpdates, require_util.applyTokenUpdates(factoryTokens, factoryState, "add"));
236
+ context.tokenUpdates = require_util.applyTokenUpdates(factoryTokens, { tokens: {} }, "add");
237
+ }
238
+ const [newSenderState, newReceiverState, assetState, newSignerStates, newFactoryState, newAssetStates] = await Promise.all([
239
+ statedb.account.updateOrCreate(senderState ?? null, _ocap_state.account.updateOrCreate(senderState ?? null, Object.assign({
240
+ address: tx.from,
241
+ nonce: tx.nonce,
242
+ pk: tx.pk
243
+ }, signerUpdates[tx.from] || (senderChange ? require_util.applyTokenChange(senderState, senderChange) : {})), context), context),
244
+ ownerState || owner === tx.from ? Promise.resolve(ownerState) : statedb.account.create(owner, _ocap_state.account.create({ address: owner }, context), context),
245
+ statedb.asset.create(itx.address, _ocap_state.asset.create({
246
+ ...mintedAsset,
247
+ owner,
248
+ address: mintedAddress
249
+ }, context), context),
250
+ Promise.all(signerStates.filter((x) => x.address !== tx.from).map((x) => statedb.account.update(x.address, _ocap_state.account.update(x, signerUpdates[x.address], context), context))),
251
+ statedb.factory.update(factoryState.address, _ocap_state.factory.update(factoryState, factoryUpdates, context), context),
252
+ Promise.all(assetStates.map((x) => statedb.asset.update(x.address, _ocap_state.asset.update(x, { consumedTime: txTime }, context), context)))
253
+ ]);
254
+ if (updateVaults) await updateVaults();
255
+ context.senderState = newSenderState;
256
+ context.receiverState = owner === tx.from ? newSenderState : newReceiverState ?? void 0;
257
+ context.signerStates = isAlsoSigner ? newSignerStates.concat(newSenderState) : newSignerStates;
258
+ context.assetState = assetState;
259
+ context.factoryState = newFactoryState;
260
+ context.assetStates = newAssetStates;
261
+ debug$1("acquire-v3", assetState);
262
+ next();
263
+ }, { persistError: true });
264
+ runner.use(require_protocols_asset_pipes_exec_mint_hook.default, { persistError: true });
265
+ runner.use(_ocap_tx_pipeline.pipes.VerifyStateDiff());
266
+ var acquire_v3_default = runner;
267
+
268
+ //#endregion
269
+ exports.default = acquire_v3_default;
@@ -0,0 +1,17 @@
1
+ //#region src/protocols/asset/acquire-v3.d.ts
2
+ /** Token input type */
3
+ interface TokenInput {
4
+ address: string;
5
+ value: string;
6
+ }
7
+ /** Multi-input type */
8
+ interface MultiInput {
9
+ owner: string;
10
+ tokensList?: TokenInput[];
11
+ tokens?: TokenInput[];
12
+ assetsList?: string[];
13
+ assets?: string[];
14
+ }
15
+ declare const runner: any;
16
+ //#endregion
17
+ export { MultiInput, TokenInput, runner as default };
@@ -0,0 +1,40 @@
1
+ Object.defineProperty(exports, '__esModule', { value: true });
2
+ const require_rolldown_runtime = require('../../../_virtual/rolldown_runtime.cjs');
3
+ let _ocap_tx_pipeline = require("@ocap/tx-pipeline");
4
+ let _ocap_util = require("@ocap/util");
5
+ let debug = require("debug");
6
+ debug = require_rolldown_runtime.__toESM(debug);
7
+ let lodash_cloneDeep = require("lodash/cloneDeep");
8
+ lodash_cloneDeep = require_rolldown_runtime.__toESM(lodash_cloneDeep);
9
+
10
+ //#region src/protocols/asset/calls/transfer-token.ts
11
+ const debug$1 = (0, debug.default)("@ocap/tx-protocols:acquire-asset:transfer-token");
12
+ const runner = new _ocap_tx_pipeline.Runner("transfer_token_call");
13
+ runner.use(_ocap_tx_pipeline.pipes.ExtractState({
14
+ from: "args.to",
15
+ to: "receiverState",
16
+ status: "INVALID_RECEIVER_STATE"
17
+ }));
18
+ runner.use((context, next) => {
19
+ const { receiverState, args } = context;
20
+ const receiver = receiverState;
21
+ const transferArgs = args;
22
+ const statesAny = context.states;
23
+ const { tokenAddress, amount } = transferArgs;
24
+ const delta = new _ocap_util.BN(amount);
25
+ const newTokens = (0, lodash_cloneDeep.default)(receiver.tokens || {});
26
+ if (newTokens[tokenAddress]) newTokens[tokenAddress] = new _ocap_util.BN(newTokens[tokenAddress]).add(delta).toString();
27
+ else newTokens[tokenAddress] = delta.toString();
28
+ context.updateSet = {
29
+ address: receiver.address,
30
+ updates: statesAny.account.update(receiver, { tokens: newTokens }, context),
31
+ delta: amount,
32
+ token: tokenAddress
33
+ };
34
+ debug$1("contract.transfer-token", context.updateSet);
35
+ next();
36
+ });
37
+ var transfer_token_default = runner;
38
+
39
+ //#endregion
40
+ exports.default = transfer_token_default;
@@ -0,0 +1,4 @@
1
+ //#region src/protocols/asset/calls/transfer-token.d.ts
2
+ declare const runner: any;
3
+ //#endregion
4
+ export { runner as default };
@@ -0,0 +1,35 @@
1
+ Object.defineProperty(exports, '__esModule', { value: true });
2
+ const require_rolldown_runtime = require('../../../_virtual/rolldown_runtime.cjs');
3
+ let _ocap_tx_pipeline = require("@ocap/tx-pipeline");
4
+ let _ocap_util = require("@ocap/util");
5
+ let debug = require("debug");
6
+ debug = require_rolldown_runtime.__toESM(debug);
7
+
8
+ //#region src/protocols/asset/calls/transfer.ts
9
+ const debug$1 = (0, debug.default)("@ocap/tx-protocols:acquire-asset:transfer");
10
+ const runner = new _ocap_tx_pipeline.Runner("transfer_call");
11
+ runner.use(_ocap_tx_pipeline.pipes.ExtractState({
12
+ from: "args.to",
13
+ to: "receiverState",
14
+ status: "INVALID_RECEIVER_STATE"
15
+ }));
16
+ runner.use((context, next) => {
17
+ const { receiverState, args } = context;
18
+ const receiver = receiverState;
19
+ const transferArgs = args;
20
+ const statesAny = context.states;
21
+ const old = new _ocap_util.BN(receiver.balance);
22
+ const delta = new _ocap_util.BN(transferArgs.amount);
23
+ context.updateSet = {
24
+ address: receiver.address,
25
+ updates: statesAny.account.update(receiver, { balance: old.add(delta).toString() }, context),
26
+ delta: transferArgs.amount,
27
+ token: ""
28
+ };
29
+ debug$1("contract.transfer", context.updateSet);
30
+ next();
31
+ });
32
+ var transfer_default = runner;
33
+
34
+ //#endregion
35
+ exports.default = transfer_default;
@@ -0,0 +1,4 @@
1
+ //#region src/protocols/asset/calls/transfer.d.ts
2
+ declare const runner: any;
3
+ //#endregion
4
+ export { runner as default };