@pezkuwi/api-contract 16.5.6 → 16.5.8

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 (384) hide show
  1. package/build/Abi/index.d.ts +31 -0
  2. package/build/Abi/index.js +359 -0
  3. package/build/Abi/toLatestCompatible.d.ts +15 -0
  4. package/build/Abi/toLatestCompatible.js +30 -0
  5. package/build/Abi/toV1.d.ts +3 -0
  6. package/build/Abi/toV1.js +21 -0
  7. package/build/Abi/toV2.d.ts +3 -0
  8. package/build/Abi/toV2.js +27 -0
  9. package/build/Abi/toV3.d.ts +3 -0
  10. package/build/Abi/toV3.js +10 -0
  11. package/build/Abi/toV4.d.ts +3 -0
  12. package/build/Abi/toV4.js +10 -0
  13. package/build/LICENSE +201 -0
  14. package/build/README.md +3 -0
  15. package/build/augment.d.ts +1 -0
  16. package/build/augment.js +1 -0
  17. package/build/base/Base.d.ts +13 -0
  18. package/build/base/Base.js +40 -0
  19. package/build/base/Blueprint.d.ts +24 -0
  20. package/build/base/Blueprint.js +51 -0
  21. package/build/base/Code.d.ts +22 -0
  22. package/build/base/Code.js +74 -0
  23. package/build/base/Contract.d.ts +25 -0
  24. package/build/base/Contract.js +127 -0
  25. package/build/base/index.d.ts +3 -0
  26. package/build/base/index.js +3 -0
  27. package/build/base/mock.d.ts +3 -0
  28. package/build/base/mock.js +38 -0
  29. package/build/base/types.d.ts +25 -0
  30. package/build/base/types.js +1 -0
  31. package/build/base/util.d.ts +16 -0
  32. package/build/base/util.js +33 -0
  33. package/build/bundle-pezkuwi-api-contract.js +1238 -0
  34. package/build/bundle.d.ts +4 -0
  35. package/build/bundle.js +4 -0
  36. package/build/cjs/Abi/index.d.ts +31 -0
  37. package/build/cjs/Abi/index.js +363 -0
  38. package/build/cjs/Abi/toLatestCompatible.d.ts +15 -0
  39. package/build/cjs/Abi/toLatestCompatible.js +36 -0
  40. package/build/cjs/Abi/toV1.d.ts +3 -0
  41. package/build/cjs/Abi/toV1.js +24 -0
  42. package/build/cjs/Abi/toV2.d.ts +3 -0
  43. package/build/cjs/Abi/toV2.js +30 -0
  44. package/build/cjs/Abi/toV3.d.ts +3 -0
  45. package/build/cjs/Abi/toV3.js +13 -0
  46. package/build/cjs/Abi/toV4.d.ts +3 -0
  47. package/build/cjs/Abi/toV4.js +13 -0
  48. package/build/cjs/augment.d.ts +1 -0
  49. package/build/cjs/augment.js +3 -0
  50. package/build/cjs/base/Base.d.ts +13 -0
  51. package/build/cjs/base/Base.js +44 -0
  52. package/build/cjs/base/Blueprint.d.ts +24 -0
  53. package/build/cjs/base/Blueprint.js +57 -0
  54. package/build/cjs/base/Code.d.ts +22 -0
  55. package/build/cjs/base/Code.js +80 -0
  56. package/build/cjs/base/Contract.d.ts +25 -0
  57. package/build/cjs/base/Contract.js +133 -0
  58. package/build/cjs/base/index.d.ts +3 -0
  59. package/build/cjs/base/index.js +14 -0
  60. package/build/cjs/base/mock.d.ts +3 -0
  61. package/build/cjs/base/mock.js +41 -0
  62. package/build/cjs/base/types.d.ts +25 -0
  63. package/build/cjs/base/types.js +2 -0
  64. package/build/cjs/base/util.d.ts +16 -0
  65. package/build/cjs/base/util.js +42 -0
  66. package/build/cjs/bundle.d.ts +4 -0
  67. package/build/cjs/bundle.js +10 -0
  68. package/build/cjs/index.d.ts +2 -0
  69. package/build/cjs/index.js +5 -0
  70. package/build/cjs/package.json +3 -0
  71. package/build/cjs/packageDetect.d.ts +1 -0
  72. package/build/cjs/packageDetect.js +7 -0
  73. package/build/cjs/packageInfo.d.ts +6 -0
  74. package/build/cjs/packageInfo.js +4 -0
  75. package/build/cjs/promise/index.d.ts +13 -0
  76. package/build/cjs/promise/index.js +23 -0
  77. package/build/cjs/promise/types.d.ts +3 -0
  78. package/build/cjs/promise/types.js +2 -0
  79. package/build/cjs/rx/index.d.ts +13 -0
  80. package/build/cjs/rx/index.js +23 -0
  81. package/build/cjs/rx/types.d.ts +3 -0
  82. package/build/cjs/rx/types.js +2 -0
  83. package/build/cjs/types.d.ts +79 -0
  84. package/build/cjs/types.js +2 -0
  85. package/build/cjs/util.d.ts +5 -0
  86. package/build/cjs/util.js +13 -0
  87. package/build/index.d.ts +2 -0
  88. package/build/index.js +2 -0
  89. package/build/package.json +408 -0
  90. package/build/packageDetect.d.ts +1 -0
  91. package/build/packageDetect.js +5 -0
  92. package/build/packageInfo.d.ts +6 -0
  93. package/build/packageInfo.js +1 -0
  94. package/build/promise/index.d.ts +13 -0
  95. package/build/promise/index.js +17 -0
  96. package/build/promise/types.d.ts +3 -0
  97. package/build/promise/types.js +1 -0
  98. package/build/rx/index.d.ts +13 -0
  99. package/build/rx/index.js +17 -0
  100. package/build/rx/types.d.ts +3 -0
  101. package/build/rx/types.js +1 -0
  102. package/build/types.d.ts +79 -0
  103. package/build/types.js +1 -0
  104. package/build/util.d.ts +5 -0
  105. package/build/util.js +10 -0
  106. package/build-deno/Abi/index.ts +475 -0
  107. package/build-deno/Abi/toLatestCompatible.ts +47 -0
  108. package/build-deno/Abi/toV1.ts +33 -0
  109. package/build-deno/Abi/toV2.ts +56 -0
  110. package/build-deno/Abi/toV3.ts +16 -0
  111. package/build-deno/Abi/toV4.ts +19 -0
  112. package/build-deno/README.md +3 -0
  113. package/build-deno/augment.ts +2 -0
  114. package/build-deno/base/Base.ts +50 -0
  115. package/build-deno/base/Blueprint.ts +88 -0
  116. package/build-deno/base/Code.ts +140 -0
  117. package/build-deno/base/Contract.ts +194 -0
  118. package/build-deno/base/index.ts +4 -0
  119. package/build-deno/base/mock.ts +46 -0
  120. package/build-deno/base/types.ts +38 -0
  121. package/build-deno/base/util.ts +54 -0
  122. package/build-deno/bundle.ts +6 -0
  123. package/build-deno/checkTypes.manual.ts +42 -0
  124. package/build-deno/index.ts +4 -0
  125. package/build-deno/mod.ts +2 -0
  126. package/build-deno/packageDetect.ts +9 -0
  127. package/build-deno/packageInfo.ts +3 -0
  128. package/build-deno/promise/index.ts +28 -0
  129. package/build-deno/promise/types.ts +5 -0
  130. package/build-deno/rx/index.ts +28 -0
  131. package/build-deno/rx/types.ts +5 -0
  132. package/build-deno/test/contracts/index.ts +18 -0
  133. package/build-deno/test/contracts/ink/index.ts +11 -0
  134. package/build-deno/test/contracts/ink/v0/accumulator.wasm +0 -0
  135. package/build-deno/test/contracts/ink/v0/adder.wasm +0 -0
  136. package/build-deno/test/contracts/ink/v0/delegator.wasm +0 -0
  137. package/build-deno/test/contracts/ink/v0/dns.wasm +0 -0
  138. package/build-deno/test/contracts/ink/v0/erc20.wasm +0 -0
  139. package/build-deno/test/contracts/ink/v0/erc721.wasm +0 -0
  140. package/build-deno/test/contracts/ink/v0/flipper.wasm +0 -0
  141. package/build-deno/test/contracts/ink/v0/incrementer.wasm +0 -0
  142. package/build-deno/test/contracts/ink/v0/index.ts +9 -0
  143. package/build-deno/test/contracts/ink/v0/multisig_plain.wasm +0 -0
  144. package/build-deno/test/contracts/ink/v0/subber.wasm +0 -0
  145. package/build-deno/test/contracts/ink/v0/trait-flipper.wasm +0 -0
  146. package/build-deno/test/contracts/ink/v1/index.ts +3 -0
  147. package/build-deno/test/contracts/ink/v2/index.ts +3 -0
  148. package/build-deno/test/contracts/ink/v3/index.ts +3 -0
  149. package/build-deno/test/contracts/ink/v4/erc20.wasm +0 -0
  150. package/build-deno/test/contracts/ink/v4/flipper.wasm +0 -0
  151. package/build-deno/test/contracts/ink/v4/index.ts +5 -0
  152. package/build-deno/test/contracts/ink/v5/erc20.wasm +0 -0
  153. package/build-deno/test/contracts/ink/v5/flipper.wasm +0 -0
  154. package/build-deno/test/contracts/ink/v5/index.ts +6 -0
  155. package/build-deno/test/contracts/ink/v6/erc20.polkavm +0 -0
  156. package/build-deno/test/contracts/ink/v6/index.ts +3 -0
  157. package/build-deno/test/contracts/solang/index.ts +5 -0
  158. package/build-deno/test/contracts/solang/v0/index.ts +2 -0
  159. package/build-deno/test/contracts/solang/v0/ints256.sol +13 -0
  160. package/build-deno/test/contracts/solang/v0/ints256.wasm +0 -0
  161. package/build-deno/test/contracts/user/index.ts +7 -0
  162. package/build-deno/test/contracts/user/v0/assetTransfer.wasm +0 -0
  163. package/build-deno/test/contracts/user/v0/enumExample.wasm +0 -0
  164. package/build-deno/test/contracts/user/v0/index.ts +5 -0
  165. package/build-deno/test/contracts/user/v3/index.ts +2 -0
  166. package/build-deno/test/contracts/user/v4/index.ts +2 -0
  167. package/build-deno/test/contracts/util.ts +12 -0
  168. package/build-deno/types.ts +95 -0
  169. package/build-deno/util.ts +18 -0
  170. package/build-tsc/Abi/index.d.ts +31 -0
  171. package/build-tsc/Abi/toLatestCompatible.d.ts +15 -0
  172. package/build-tsc/Abi/toV1.d.ts +3 -0
  173. package/build-tsc/Abi/toV2.d.ts +3 -0
  174. package/build-tsc/Abi/toV3.d.ts +3 -0
  175. package/build-tsc/Abi/toV4.d.ts +3 -0
  176. package/build-tsc/augment.d.ts +1 -0
  177. package/build-tsc/base/Base.d.ts +13 -0
  178. package/build-tsc/base/Blueprint.d.ts +24 -0
  179. package/build-tsc/base/Code.d.ts +22 -0
  180. package/build-tsc/base/Contract.d.ts +25 -0
  181. package/build-tsc/base/index.d.ts +3 -0
  182. package/build-tsc/base/mock.d.ts +3 -0
  183. package/build-tsc/base/types.d.ts +25 -0
  184. package/build-tsc/base/util.d.ts +16 -0
  185. package/build-tsc/bundle.d.ts +4 -0
  186. package/build-tsc/index.d.ts +2 -0
  187. package/build-tsc/packageDetect.d.ts +1 -0
  188. package/build-tsc/packageInfo.d.ts +6 -0
  189. package/build-tsc/promise/index.d.ts +13 -0
  190. package/build-tsc/promise/types.d.ts +3 -0
  191. package/build-tsc/rx/index.d.ts +13 -0
  192. package/build-tsc/rx/types.d.ts +3 -0
  193. package/build-tsc/types.d.ts +79 -0
  194. package/build-tsc/util.d.ts +5 -0
  195. package/build-tsc-cjs/Abi/index.js +363 -0
  196. package/build-tsc-cjs/Abi/toLatestCompatible.js +36 -0
  197. package/build-tsc-cjs/Abi/toV1.js +24 -0
  198. package/build-tsc-cjs/Abi/toV2.js +30 -0
  199. package/build-tsc-cjs/Abi/toV3.js +13 -0
  200. package/build-tsc-cjs/Abi/toV4.js +13 -0
  201. package/build-tsc-cjs/augment.js +3 -0
  202. package/build-tsc-cjs/base/Base.js +44 -0
  203. package/build-tsc-cjs/base/Blueprint.js +57 -0
  204. package/build-tsc-cjs/base/Code.js +80 -0
  205. package/build-tsc-cjs/base/Contract.js +133 -0
  206. package/build-tsc-cjs/base/index.js +14 -0
  207. package/build-tsc-cjs/base/mock.js +41 -0
  208. package/build-tsc-cjs/base/types.js +2 -0
  209. package/build-tsc-cjs/base/util.js +42 -0
  210. package/build-tsc-cjs/bundle.js +10 -0
  211. package/build-tsc-cjs/index.js +5 -0
  212. package/build-tsc-cjs/packageDetect.js +7 -0
  213. package/build-tsc-cjs/packageInfo.js +4 -0
  214. package/build-tsc-cjs/promise/index.js +23 -0
  215. package/build-tsc-cjs/promise/types.js +2 -0
  216. package/build-tsc-cjs/rx/index.js +23 -0
  217. package/build-tsc-cjs/rx/types.js +2 -0
  218. package/build-tsc-cjs/types.js +2 -0
  219. package/build-tsc-cjs/util.js +13 -0
  220. package/build-tsc-esm/Abi/index.js +359 -0
  221. package/build-tsc-esm/Abi/toLatestCompatible.js +30 -0
  222. package/build-tsc-esm/Abi/toV1.js +21 -0
  223. package/build-tsc-esm/Abi/toV2.js +27 -0
  224. package/build-tsc-esm/Abi/toV3.js +10 -0
  225. package/build-tsc-esm/Abi/toV4.js +10 -0
  226. package/build-tsc-esm/augment.js +1 -0
  227. package/build-tsc-esm/base/Base.js +40 -0
  228. package/build-tsc-esm/base/Blueprint.js +51 -0
  229. package/build-tsc-esm/base/Code.js +74 -0
  230. package/build-tsc-esm/base/Contract.js +127 -0
  231. package/build-tsc-esm/base/index.js +3 -0
  232. package/build-tsc-esm/base/mock.js +38 -0
  233. package/build-tsc-esm/base/types.js +1 -0
  234. package/build-tsc-esm/base/util.js +33 -0
  235. package/build-tsc-esm/bundle.js +4 -0
  236. package/build-tsc-esm/index.js +2 -0
  237. package/build-tsc-esm/packageDetect.js +5 -0
  238. package/build-tsc-esm/packageInfo.js +1 -0
  239. package/build-tsc-esm/promise/index.js +17 -0
  240. package/build-tsc-esm/promise/types.js +1 -0
  241. package/build-tsc-esm/rx/index.js +17 -0
  242. package/build-tsc-esm/rx/types.js +1 -0
  243. package/build-tsc-esm/types.js +1 -0
  244. package/build-tsc-esm/util.js +10 -0
  245. package/bundle-pezkuwi-api-contract.js +1 -1
  246. package/cjs/packageInfo.js +1 -1
  247. package/package.json +6 -6
  248. package/packageInfo.js +1 -1
  249. package/src/Abi/Abi.spec.ts +235 -0
  250. package/src/Abi/index.ts +477 -0
  251. package/src/Abi/toLatestCompatible.spec.ts +219 -0
  252. package/src/Abi/toLatestCompatible.ts +52 -0
  253. package/src/Abi/toV1.ts +35 -0
  254. package/src/Abi/toV2.ts +58 -0
  255. package/src/Abi/toV3.ts +18 -0
  256. package/src/Abi/toV4.ts +21 -0
  257. package/src/augment.ts +4 -0
  258. package/src/base/Base.ts +52 -0
  259. package/src/base/Blueprint.ts +90 -0
  260. package/src/base/Code.spec.ts +47 -0
  261. package/src/base/Code.ts +142 -0
  262. package/src/base/Contract.ts +197 -0
  263. package/src/base/index.ts +6 -0
  264. package/src/base/mock.ts +48 -0
  265. package/src/base/types.ts +40 -0
  266. package/src/base/util.ts +56 -0
  267. package/src/bundle.ts +10 -0
  268. package/src/checkTypes.manual.ts +45 -0
  269. package/src/index.ts +6 -0
  270. package/src/mod.ts +4 -0
  271. package/src/packageDetect.ts +13 -0
  272. package/src/packageInfo.ts +6 -0
  273. package/src/promise/index.ts +28 -0
  274. package/src/promise/types.ts +7 -0
  275. package/src/rx/index.ts +28 -0
  276. package/src/rx/types.ts +7 -0
  277. package/src/test/compare/ink_v0_delegator.test.json +47 -0
  278. package/src/test/compare/ink_v0_dns.test.json +232 -0
  279. package/src/test/compare/ink_v0_erc20.test.json +253 -0
  280. package/src/test/compare/ink_v0_erc721.test.json +415 -0
  281. package/src/test/compare/ink_v0_flipper.test.json +9 -0
  282. package/src/test/compare/ink_v0_flipperBundle.test.json +9 -0
  283. package/src/test/compare/ink_v0_incrementer.test.json +9 -0
  284. package/src/test/compare/ink_v0_multisigPlain.test.json +562 -0
  285. package/src/test/compare/ink_v1_flipper.test.json +9 -0
  286. package/src/test/compare/ink_v1_psp22.test.json +531 -0
  287. package/src/test/compare/ink_v2_erc20.test.json +205 -0
  288. package/src/test/compare/ink_v2_flipper.test.json +9 -0
  289. package/src/test/compare/ink_v3_flipper.test.json +9 -0
  290. package/src/test/compare/ink_v3_traitErc20.test.json +205 -0
  291. package/src/test/compare/ink_v4_erc20Contract.test.json +253 -0
  292. package/src/test/compare/ink_v4_erc20Metadata.test.json +253 -0
  293. package/src/test/compare/ink_v4_flipperContract.test.json +155 -0
  294. package/src/test/compare/ink_v4_flipperMetadata.test.json +155 -0
  295. package/src/test/compare/ink_v5_erc20.test.json +370 -0
  296. package/src/test/compare/ink_v5_erc20AnonymousTransferMetadata.test.json +370 -0
  297. package/src/test/compare/ink_v5_erc20Contract.test.json +370 -0
  298. package/src/test/compare/ink_v5_erc20Metadata.test.json +370 -0
  299. package/src/test/compare/ink_v5_flipperContract.test.json +174 -0
  300. package/src/test/compare/ink_v5_flipperMetadata.test.json +174 -0
  301. package/src/test/compare/ink_v6_erc20Contract.test.json +418 -0
  302. package/src/test/compare/ink_v6_erc20Metadata.test.json +418 -0
  303. package/src/test/compare/solang_v0_ints256.test.json +9 -0
  304. package/src/test/compare/user_v0_assetTransfer.test.json +54 -0
  305. package/src/test/compare/user_v0_enumExample.test.json +303 -0
  306. package/src/test/compare/user_v0_recursive.test.json +27 -0
  307. package/src/test/compare/user_v0_withString.test.json +260 -0
  308. package/src/test/compare/user_v3_ask.test.json +71 -0
  309. package/src/test/compare/user_v4_events.test.json +1328 -0
  310. package/src/test/contracts/index.ts +20 -0
  311. package/src/test/contracts/ink/index.ts +13 -0
  312. package/src/test/contracts/ink/v0/accumulator.wasm +0 -0
  313. package/src/test/contracts/ink/v0/adder.wasm +0 -0
  314. package/src/test/contracts/ink/v0/delegator.json +252 -0
  315. package/src/test/contracts/ink/v0/delegator.wasm +0 -0
  316. package/src/test/contracts/ink/v0/dns.json +713 -0
  317. package/src/test/contracts/ink/v0/dns.wasm +0 -0
  318. package/src/test/contracts/ink/v0/erc20.json +704 -0
  319. package/src/test/contracts/ink/v0/erc20.wasm +0 -0
  320. package/src/test/contracts/ink/v0/erc721.json +1197 -0
  321. package/src/test/contracts/ink/v0/erc721.wasm +0 -0
  322. package/src/test/contracts/ink/v0/flipper.contract.json +107 -0
  323. package/src/test/contracts/ink/v0/flipper.json +106 -0
  324. package/src/test/contracts/ink/v0/flipper.wasm +0 -0
  325. package/src/test/contracts/ink/v0/incrementer.json +108 -0
  326. package/src/test/contracts/ink/v0/incrementer.wasm +0 -0
  327. package/src/test/contracts/ink/v0/index.ts +11 -0
  328. package/src/test/contracts/ink/v0/multisig_plain.json +1466 -0
  329. package/src/test/contracts/ink/v0/multisig_plain.wasm +0 -0
  330. package/src/test/contracts/ink/v0/subber.wasm +0 -0
  331. package/src/test/contracts/ink/v0/trait-flipper.json +103 -0
  332. package/src/test/contracts/ink/v0/trait-flipper.wasm +0 -0
  333. package/src/test/contracts/ink/v1/flipper.contract.json +111 -0
  334. package/src/test/contracts/ink/v1/index.ts +6 -0
  335. package/src/test/contracts/ink/v1/psp22_minter_pauser.contract.json +1722 -0
  336. package/src/test/contracts/ink/v2/erc20.contract.json +630 -0
  337. package/src/test/contracts/ink/v2/flipper.contract.json +103 -0
  338. package/src/test/contracts/ink/v2/index.ts +5 -0
  339. package/src/test/contracts/ink/v3/flipper.contract.json +105 -0
  340. package/src/test/contracts/ink/v3/index.ts +6 -0
  341. package/src/test/contracts/ink/v3/trait_erc20.contract.json +631 -0
  342. package/src/test/contracts/ink/v4/erc20.contract.json +1 -0
  343. package/src/test/contracts/ink/v4/erc20.json +821 -0
  344. package/src/test/contracts/ink/v4/erc20.wasm +0 -0
  345. package/src/test/contracts/ink/v4/flipper.contract.json +1 -0
  346. package/src/test/contracts/ink/v4/flipper.json +396 -0
  347. package/src/test/contracts/ink/v4/flipper.wasm +0 -0
  348. package/src/test/contracts/ink/v4/index.ts +7 -0
  349. package/src/test/contracts/ink/v5/erc20.contract.json +1 -0
  350. package/src/test/contracts/ink/v5/erc20.json +1025 -0
  351. package/src/test/contracts/ink/v5/erc20.wasm +0 -0
  352. package/src/test/contracts/ink/v5/erc20_anonymous_transfer.json +1025 -0
  353. package/src/test/contracts/ink/v5/flipper.contract.json +1 -0
  354. package/src/test/contracts/ink/v5/flipper.json +420 -0
  355. package/src/test/contracts/ink/v5/flipper.wasm +0 -0
  356. package/src/test/contracts/ink/v5/index.ts +8 -0
  357. package/src/test/contracts/ink/v6/erc20.contract.json +1 -0
  358. package/src/test/contracts/ink/v6/erc20.json +1081 -0
  359. package/src/test/contracts/ink/v6/erc20.polkavm +0 -0
  360. package/src/test/contracts/ink/v6/index.ts +5 -0
  361. package/src/test/contracts/solang/index.ts +7 -0
  362. package/src/test/contracts/solang/v0/index.ts +4 -0
  363. package/src/test/contracts/solang/v0/ints256.json +113 -0
  364. package/src/test/contracts/solang/v0/ints256.sol +13 -0
  365. package/src/test/contracts/solang/v0/ints256.wasm +0 -0
  366. package/src/test/contracts/user/index.ts +9 -0
  367. package/src/test/contracts/user/v0/assetTransfer.json +299 -0
  368. package/src/test/contracts/user/v0/assetTransfer.wasm +0 -0
  369. package/src/test/contracts/user/v0/enumExample.json +528 -0
  370. package/src/test/contracts/user/v0/enumExample.wasm +0 -0
  371. package/src/test/contracts/user/v0/index.ts +7 -0
  372. package/src/test/contracts/user/v0/recursive.contract.json +1 -0
  373. package/src/test/contracts/user/v0/withString.json +777 -0
  374. package/src/test/contracts/user/v3/ask.json +550 -0
  375. package/src/test/contracts/user/v3/index.ts +4 -0
  376. package/src/test/contracts/user/v4/events.contract.json +2990 -0
  377. package/src/test/contracts/user/v4/index.ts +4 -0
  378. package/src/test/contracts/util.ts +14 -0
  379. package/src/types.ts +98 -0
  380. package/src/util.ts +20 -0
  381. package/tsconfig.build.json +22 -0
  382. package/tsconfig.build.tsbuildinfo +1 -0
  383. package/tsconfig.spec.json +26 -0
  384. package/tsconfig.spec.tsbuildinfo +1 -0
@@ -0,0 +1,127 @@
1
+ import { map } from 'rxjs';
2
+ import { SubmittableResult } from '@pezkuwi/api';
3
+ import { BN, BN_HUNDRED, BN_ONE, BN_ZERO, isUndefined, logger } from '@pezkuwi/util';
4
+ import { applyOnEvent } from '../util.js';
5
+ import { Base } from './Base.js';
6
+ import { convertWeight, withMeta } from './util.js';
7
+ const MAX_CALL_GAS = new BN(5_000_000_000_000).isub(BN_ONE);
8
+ const l = logger('Contract');
9
+ function createQuery(meta, fn) {
10
+ return withMeta(meta, (origin, options, ...params) => fn(origin, options, params));
11
+ }
12
+ function createTx(meta, fn) {
13
+ return withMeta(meta, (options, ...params) => fn(options, params));
14
+ }
15
+ export class ContractSubmittableResult extends SubmittableResult {
16
+ contractEvents;
17
+ constructor(result, contractEvents) {
18
+ super(result);
19
+ this.contractEvents = contractEvents;
20
+ }
21
+ }
22
+ export class Contract extends Base {
23
+ /**
24
+ * @description The on-chain address for this contract
25
+ */
26
+ address;
27
+ #query = {};
28
+ #tx = {};
29
+ constructor(api, abi, address, decorateMethod) {
30
+ super(api, abi, decorateMethod);
31
+ this.address = this.registry.createType(this._isRevive ? 'AccountId20' : 'AccountId', address);
32
+ this.abi.messages.forEach((m) => {
33
+ if (isUndefined(this.#tx[m.method])) {
34
+ this.#tx[m.method] = createTx(m, (o, p) => this.#exec(m, o, p));
35
+ }
36
+ if (isUndefined(this.#query[m.method])) {
37
+ this.#query[m.method] = createQuery(m, (f, o, p) => this.#read(m, o, p).send(f));
38
+ }
39
+ });
40
+ }
41
+ get query() {
42
+ return this.#query;
43
+ }
44
+ get tx() {
45
+ return this.#tx;
46
+ }
47
+ #getGas = (_gasLimit, isCall = false) => {
48
+ const weight = convertWeight(_gasLimit);
49
+ if (weight.v1Weight.gt(BN_ZERO)) {
50
+ return weight;
51
+ }
52
+ return convertWeight(isCall
53
+ ? MAX_CALL_GAS
54
+ : convertWeight(this.api.consts.system.blockWeights
55
+ ? this.api.consts.system.blockWeights.maxBlock
56
+ : this.api.consts.system['maximumBlockWeight']).v1Weight.muln(64).div(BN_HUNDRED));
57
+ };
58
+ #exec = (messageOrId, { gasLimit = BN_ZERO, storageDepositLimit = null, value = BN_ZERO }, params) => {
59
+ const palletTx = this._isRevive ? this.api.tx.revive : this.api.tx.contracts;
60
+ return palletTx.call(this.address, value,
61
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
62
+ // @ts-ignore jiggle v1 weights, metadata points to latest
63
+ this._isWeightV1
64
+ ? convertWeight(gasLimit).v1Weight
65
+ : convertWeight(gasLimit).v2Weight, storageDepositLimit, this.abi.findMessage(messageOrId).toU8a(params)).withResultTransform((result) =>
66
+ // ContractEmitted is the current generation, ContractExecution is the previous generation
67
+ new ContractSubmittableResult(result, applyOnEvent(result, ['ContractEmitted', 'ContractExecution'], (records) => records
68
+ // Filter to only decode events emitted by this specific contract instance.
69
+ .filter((record) => {
70
+ try {
71
+ const contractAddress = record.event.data[0];
72
+ if (this.address.eq(contractAddress)) {
73
+ return true;
74
+ }
75
+ l.debug(`Skipping event from different contract ${contractAddress.toString()} (this contract: ${this.address.toString()})`);
76
+ return false;
77
+ }
78
+ catch (error) {
79
+ l.warn(`Unable to extract contract address from event: ${error.message}`);
80
+ return false;
81
+ }
82
+ })
83
+ .map((record) => {
84
+ try {
85
+ return this.abi.decodeEvent(record);
86
+ }
87
+ catch (error) {
88
+ l.error(`Unable to decode contract event: ${error.message}`);
89
+ return null;
90
+ }
91
+ })
92
+ .filter((decoded) => !!decoded), this._isRevive)));
93
+ };
94
+ #read = (messageOrId, { gasLimit = BN_ZERO, storageDepositLimit = null, value = BN_ZERO }, params) => {
95
+ const message = this.abi.findMessage(messageOrId);
96
+ return {
97
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
98
+ send: this._decorateMethod((origin) => (this._isRevive
99
+ ? this.api.rx.call.reviveApi.call
100
+ : this.api.rx.call.contractsApi.call)(origin, this.address, value,
101
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
102
+ // @ts-ignore jiggle v1 weights, metadata points to latest
103
+ this._isWeightV1
104
+ ? this.#getGas(gasLimit, true).v1Weight
105
+ : this.#getGas(gasLimit, true).v2Weight, storageDepositLimit, message.toU8a(params)).pipe(map(({ debugMessage, gasConsumed, gasRequired, result, storageDeposit }) => ({
106
+ debugMessage,
107
+ gasConsumed,
108
+ gasRequired: gasRequired && !convertWeight(gasRequired).v1Weight.isZero()
109
+ ? gasRequired
110
+ : gasConsumed,
111
+ output: result.isOk && message.returnType
112
+ ? this.abi.registry.createTypeUnsafe(message.returnType.lookupName || message.returnType.type, [result.asOk.data.toU8a(true)], { isPedantic: true })
113
+ : null,
114
+ result,
115
+ storageDeposit
116
+ }))))
117
+ };
118
+ };
119
+ }
120
+ export function extendContract(type, decorateMethod) {
121
+ return class extends Contract {
122
+ static __ContractType = type;
123
+ constructor(api, abi, address) {
124
+ super(api, abi, address, decorateMethod);
125
+ }
126
+ };
127
+ }
@@ -0,0 +1,3 @@
1
+ export { Blueprint, BlueprintSubmittableResult, extendBlueprint } from './Blueprint.js';
2
+ export { Code, CodeSubmittableResult, extendCode } from './Code.js';
3
+ export { Contract, extendContract } from './Contract.js';
@@ -0,0 +1,38 @@
1
+ import { TypeRegistry } from '@pezkuwi/types';
2
+ const registry = new TypeRegistry();
3
+ const instantiateWithCode = () => {
4
+ throw new Error('mock');
5
+ };
6
+ instantiateWithCode.meta = { args: new Array(6) };
7
+ export const mockApi = {
8
+ call: {
9
+ contractsApi: {
10
+ call: () => {
11
+ throw new Error('mock');
12
+ }
13
+ }
14
+ },
15
+ isConnected: true,
16
+ registry,
17
+ tx: {
18
+ contracts: {
19
+ instantiateWithCode
20
+ }
21
+ }
22
+ };
23
+ export const mockReviveApi = {
24
+ call: {
25
+ reviveApi: {
26
+ call: () => {
27
+ throw new Error('mock');
28
+ }
29
+ }
30
+ },
31
+ isConnected: true,
32
+ registry,
33
+ tx: {
34
+ revive: {
35
+ instantiateWithCode
36
+ }
37
+ }
38
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,33 @@
1
+ import { Bytes } from '@pezkuwi/types';
2
+ import { bnToBn, compactAddLength, u8aToU8a } from '@pezkuwi/util';
3
+ import { randomAsU8a } from '@pezkuwi/util-crypto';
4
+ export const EMPTY_SALT = new Uint8Array();
5
+ export function withMeta(meta, creator) {
6
+ creator.meta = meta;
7
+ return creator;
8
+ }
9
+ export function createBluePrintTx(meta, fn) {
10
+ return withMeta(meta, (options, ...params) => fn(options, params));
11
+ }
12
+ export function createBluePrintWithId(fn) {
13
+ return (constructorOrId, options, ...params) => fn(constructorOrId, options, params);
14
+ }
15
+ export function encodeSalt(salt = randomAsU8a()) {
16
+ return salt instanceof Bytes
17
+ ? salt
18
+ : salt?.length
19
+ ? compactAddLength(u8aToU8a(salt))
20
+ : EMPTY_SALT;
21
+ }
22
+ export function convertWeight(weight) {
23
+ const [refTime, proofSize] = isWeightV2(weight)
24
+ ? [weight.refTime.toBn(), weight.proofSize.toBn()]
25
+ : [bnToBn(weight), undefined];
26
+ return {
27
+ v1Weight: refTime,
28
+ v2Weight: { proofSize, refTime }
29
+ };
30
+ }
31
+ export function isWeightV2(weight) {
32
+ return !!weight.proofSize;
33
+ }
@@ -0,0 +1,4 @@
1
+ export { Abi } from './Abi/index.js';
2
+ export { packageInfo } from './packageInfo.js';
3
+ export * from './promise/index.js';
4
+ export * from './rx/index.js';
@@ -0,0 +1,2 @@
1
+ import './packageDetect.js';
2
+ export * from './bundle.js';
@@ -0,0 +1,5 @@
1
+ import { packageInfo as apiInfo } from '@pezkuwi/api/packageInfo';
2
+ import { packageInfo as typesInfo } from '@pezkuwi/types/packageInfo';
3
+ import { detectPackage } from '@pezkuwi/util';
4
+ import { packageInfo } from './packageInfo.js';
5
+ detectPackage(packageInfo, null, [apiInfo, typesInfo]);
@@ -0,0 +1 @@
1
+ export const packageInfo = { name: '@pezkuwi/api-contract', path: (import.meta && import.meta.url) ? new URL(import.meta.url).pathname.substring(0, new URL(import.meta.url).pathname.lastIndexOf('/') + 1) : 'auto', type: 'esm', version: '16.5.8' };
@@ -0,0 +1,17 @@
1
+ import { toPromiseMethod } from '@pezkuwi/api';
2
+ import { Blueprint, Code, Contract } from '../base/index.js';
3
+ export class BlueprintPromise extends Blueprint {
4
+ constructor(api, abi, codeHash) {
5
+ super(api, abi, codeHash, toPromiseMethod);
6
+ }
7
+ }
8
+ export class CodePromise extends Code {
9
+ constructor(api, abi, wasm) {
10
+ super(api, abi, wasm, toPromiseMethod);
11
+ }
12
+ }
13
+ export class ContractPromise extends Contract {
14
+ constructor(api, abi, address) {
15
+ super(api, abi, address, toPromiseMethod);
16
+ }
17
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,17 @@
1
+ import { toRxMethod } from '@pezkuwi/api';
2
+ import { Blueprint, Code, Contract } from '../base/index.js';
3
+ export class BlueprintRx extends Blueprint {
4
+ constructor(api, abi, codeHash) {
5
+ super(api, abi, codeHash, toRxMethod);
6
+ }
7
+ }
8
+ export class CodeRx extends Code {
9
+ constructor(api, abi, wasm) {
10
+ super(api, abi, wasm, toRxMethod);
11
+ }
12
+ }
13
+ export class ContractRx extends Contract {
14
+ constructor(api, abi, address) {
15
+ super(api, abi, address, toRxMethod);
16
+ }
17
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,10 @@
1
+ export function applyOnEvent(result, types, fn, isRevive) {
2
+ if (result.isInBlock || result.isFinalized) {
3
+ const section = isRevive ? 'revive' : 'contracts';
4
+ const records = result.filterRecords(section, types);
5
+ if (records.length) {
6
+ return fn(records);
7
+ }
8
+ }
9
+ return undefined;
10
+ }
@@ -440,7 +440,7 @@
440
440
  };
441
441
  }
442
442
 
443
- const packageInfo = { name: '@pezkuwi/api-contract', path: (({ url: (typeof document === 'undefined' && typeof location === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : typeof document === 'undefined' ? location.href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('bundle-pezkuwi-api-contract.js', document.baseURI).href)) }) && (typeof document === 'undefined' && typeof location === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : typeof document === 'undefined' ? location.href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('bundle-pezkuwi-api-contract.js', document.baseURI).href))) ? new URL((typeof document === 'undefined' && typeof location === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : typeof document === 'undefined' ? location.href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('bundle-pezkuwi-api-contract.js', document.baseURI).href))).pathname.substring(0, new URL((typeof document === 'undefined' && typeof location === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : typeof document === 'undefined' ? location.href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('bundle-pezkuwi-api-contract.js', document.baseURI).href))).pathname.lastIndexOf('/') + 1) : 'auto', type: 'esm', version: '16.5.4' };
443
+ const packageInfo = { name: '@pezkuwi/api-contract', path: (({ url: (typeof document === 'undefined' && typeof location === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : typeof document === 'undefined' ? location.href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('bundle-pezkuwi-api-contract.js', document.baseURI).href)) }) && (typeof document === 'undefined' && typeof location === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : typeof document === 'undefined' ? location.href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('bundle-pezkuwi-api-contract.js', document.baseURI).href))) ? new URL((typeof document === 'undefined' && typeof location === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : typeof document === 'undefined' ? location.href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('bundle-pezkuwi-api-contract.js', document.baseURI).href))).pathname.substring(0, new URL((typeof document === 'undefined' && typeof location === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : typeof document === 'undefined' ? location.href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('bundle-pezkuwi-api-contract.js', document.baseURI).href))).pathname.lastIndexOf('/') + 1) : 'auto', type: 'esm', version: '16.5.8' };
444
444
 
445
445
  function applyOnEvent(result, types, fn, isRevive) {
446
446
  if (result.isInBlock || result.isFinalized) {
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.packageInfo = void 0;
4
- exports.packageInfo = { name: '@pezkuwi/api-contract', path: typeof __dirname === 'string' ? __dirname : 'auto', type: 'cjs', version: '16.5.4' };
4
+ exports.packageInfo = { name: '@pezkuwi/api-contract', path: typeof __dirname === 'string' ? __dirname : 'auto', type: 'cjs', version: '16.5.8' };
package/package.json CHANGED
@@ -18,7 +18,7 @@
18
18
  "./cjs/packageDetect.js"
19
19
  ],
20
20
  "type": "module",
21
- "version": "16.5.6",
21
+ "version": "16.5.8",
22
22
  "main": "./cjs/index.js",
23
23
  "module": "./index.js",
24
24
  "types": "./index.d.ts",
@@ -395,11 +395,11 @@
395
395
  }
396
396
  },
397
397
  "dependencies": {
398
- "@pezkuwi/api": "16.5.4",
399
- "@pezkuwi/api-augment": "16.5.4",
400
- "@pezkuwi/types": "16.5.4",
401
- "@pezkuwi/types-codec": "16.5.4",
402
- "@pezkuwi/types-create": "16.5.4",
398
+ "@pezkuwi/api": "workspace:*",
399
+ "@pezkuwi/api-augment": "workspace:*",
400
+ "@pezkuwi/types": "workspace:*",
401
+ "@pezkuwi/types-codec": "workspace:*",
402
+ "@pezkuwi/types-create": "workspace:*",
403
403
  "@pezkuwi/util": "^14.0.1",
404
404
  "@pezkuwi/util-crypto": "^14.0.1",
405
405
  "rxjs": "^7.8.1",
package/packageInfo.js CHANGED
@@ -1 +1 @@
1
- export const packageInfo = { name: '@pezkuwi/api-contract', path: (import.meta && import.meta.url) ? new URL(import.meta.url).pathname.substring(0, new URL(import.meta.url).pathname.lastIndexOf('/') + 1) : 'auto', type: 'esm', version: '16.5.4' };
1
+ export const packageInfo = { name: '@pezkuwi/api-contract', path: (import.meta && import.meta.url) ? new URL(import.meta.url).pathname.substring(0, new URL(import.meta.url).pathname.lastIndexOf('/') + 1) : 'auto', type: 'esm', version: '16.5.8' };
@@ -0,0 +1,235 @@
1
+ // Copyright 2017-2025 @pezkuwi/api-contract authors & contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ /// <reference types="@pezkuwi/dev-test/globals.d.ts" />
5
+
6
+ import type { Registry } from '@pezkuwi/types/types';
7
+
8
+ import fs from 'node:fs';
9
+ import process from 'node:process';
10
+
11
+ import { TypeDefInfo } from '@pezkuwi/types/types';
12
+ import rpcMetadata from '@pezkuwi/types-support/metadata/static-bizinikiwi-contracts-node';
13
+ import { blake2AsHex } from '@pezkuwi/util-crypto';
14
+
15
+ import { Metadata, TypeRegistry } from '../../../types/src/bundle.js';
16
+ import abis from '../test/contracts/index.js';
17
+ import { Abi } from './index.js';
18
+
19
+ interface SpecDef {
20
+ messages: {
21
+ label: string;
22
+ name: string[] | string
23
+ }[]
24
+ }
25
+
26
+ interface JSONAbi {
27
+ source: {
28
+ compiler: string,
29
+ hash: string,
30
+ language: string,
31
+ wasm: string
32
+ },
33
+ spec: SpecDef;
34
+ V1: {
35
+ spec: SpecDef;
36
+ },
37
+ V2: {
38
+ spec: SpecDef;
39
+ },
40
+ V3: {
41
+ spec: SpecDef;
42
+ },
43
+ V4: {
44
+ spec: SpecDef;
45
+ }
46
+ }
47
+
48
+ function stringifyInfo (key: string, value: unknown): unknown {
49
+ return key === 'info' && typeof value === 'number'
50
+ ? TypeDefInfo[value]
51
+ : value;
52
+ }
53
+
54
+ function stringifyJson (registry: Registry): string {
55
+ const defs = registry.lookup.types.map(({ id }) =>
56
+ registry.lookup.getTypeDef(id)
57
+ );
58
+
59
+ return JSON.stringify(defs, stringifyInfo, 2);
60
+ }
61
+
62
+ describe('Abi', (): void => {
63
+ describe('ABI', (): void => {
64
+ Object.entries(abis).forEach(([abiName, _abi]) => {
65
+ const abi = _abi as unknown as JSONAbi;
66
+
67
+ it(`initializes from a contract ABI (${abiName})`, (): void => {
68
+ try {
69
+ const messageIds = (abi.V4 || abi.V3 || abi.V2 || abi.V1 || abi).spec.messages.map(({ label, name }) =>
70
+ label || (
71
+ Array.isArray(name)
72
+ ? name.join('::')
73
+ : name
74
+ )
75
+ );
76
+ const inkAbi = new Abi(abis[abiName]);
77
+
78
+ expect(inkAbi.messages.map(({ identifier }) => identifier)).toEqual(messageIds);
79
+ } catch (error) {
80
+ console.error(error);
81
+
82
+ throw error;
83
+ }
84
+ });
85
+ });
86
+ });
87
+
88
+ describe('TypeDef', (): void => {
89
+ for (const [abiName, abiJson] of Object.entries(abis)) {
90
+ it(`initializes from a contract ABI: ${abiName}`, (): void => {
91
+ const abi = new Abi(abiJson);
92
+ const registryJson = stringifyJson(abi.registry);
93
+ const cmpFile = new URL(`../test/compare/${abiName}.test.json`, import.meta.url);
94
+
95
+ try {
96
+ expect(
97
+ JSON.parse(registryJson)
98
+ ).toEqual(
99
+ JSON.parse(fs.readFileSync(cmpFile, 'utf-8'))
100
+ );
101
+ } catch (error) {
102
+ if (process.env['GITHUB_REPOSITORY']) {
103
+ console.error(registryJson);
104
+
105
+ throw error;
106
+ }
107
+
108
+ fs.writeFileSync(cmpFile, registryJson, { flag: 'w' });
109
+ }
110
+ });
111
+ }
112
+ });
113
+
114
+ it('has the correct hash for the source', (): void => {
115
+ const abi = new Abi(abis['ink_v0_flipperBundle']);
116
+ const bundle = abis['ink_v0_flipperBundle'] as unknown as JSONAbi;
117
+
118
+ // manual
119
+ expect(bundle.source.hash).toEqual(blake2AsHex(bundle.source.wasm));
120
+
121
+ // the Codec hash
122
+ expect(bundle.source.hash).toEqual(abi.info.source.wasm.hash.toHex());
123
+
124
+ // the hash as per the actual Abi
125
+ expect(bundle.source.hash).toEqual(abi.info.source.wasmHash.toHex());
126
+ });
127
+
128
+ describe('Events', (): void => {
129
+ const registry = new TypeRegistry();
130
+
131
+ beforeAll((): void => {
132
+ const metadata = new Metadata(registry, rpcMetadata);
133
+
134
+ registry.setMetadata(metadata);
135
+ });
136
+
137
+ it('decoding <=ink!v4 event', (): void => {
138
+ const abiJson = abis['ink_v4_erc20Metadata'];
139
+
140
+ expect(abiJson).toBeDefined();
141
+ const abi = new Abi(abiJson);
142
+
143
+ const eventRecordHex =
144
+ '0x0001000000080360951b8baf569bca905a279c12d6ce17db7cdce23a42563870ef585129ce5dc64d010001d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d018eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a4800505a4f7e9f4eb106000000000000000c0045726332303a3a5472616e7366657200000000000000000000000000000000da2d695d3b5a304e0039e7fc4419c34fa0c1f239189c99bb72a6484f1634782b2b00c7d40fe6d84d660f3e6bed90f218e022a0909f7e1a7ea35ada8b6e003564';
145
+ const record = registry.createType('EventRecord', eventRecordHex);
146
+
147
+ const decodedEvent = abi.decodeEvent(record);
148
+
149
+ expect(decodedEvent.event.args.length).toEqual(3);
150
+ expect(decodedEvent.args.length).toEqual(3);
151
+ expect(decodedEvent.event.identifier).toEqual('Transfer');
152
+
153
+ const decodedEventHuman = decodedEvent.event.args.reduce((prev, cur, index) => {
154
+ return {
155
+ ...prev,
156
+ [cur.name]: decodedEvent.args[index].toHuman()
157
+ };
158
+ }, {});
159
+
160
+ const expectedEvent = {
161
+ from: '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY',
162
+ to: '5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty',
163
+ value: '123.4567 MUnit'
164
+ };
165
+
166
+ expect(decodedEventHuman).toEqual(expectedEvent);
167
+ });
168
+
169
+ it('decoding >=ink!v5 event', (): void => {
170
+ const abiJson = abis['ink_v5_erc20Metadata'];
171
+
172
+ expect(abiJson).toBeDefined();
173
+ const abi = new Abi(abiJson);
174
+
175
+ const eventRecordHex =
176
+ '0x00010000000803da17150e96b3955a4db6ad35ddeb495f722f9c1d84683113bfb096bf3faa30f2490101d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d018eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a4800505a4f7e9f4eb106000000000000000cb5b61a3e6a21a16be4f044b517c28ac692492f73c5bfd3f60178ad98c767f4cbd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48';
177
+ const record = registry.createType('EventRecord', eventRecordHex);
178
+
179
+ const decodedEvent = abi.decodeEvent(record);
180
+
181
+ expect(decodedEvent.event.args.length).toEqual(3);
182
+ expect(decodedEvent.args.length).toEqual(3);
183
+ expect(decodedEvent.event.identifier).toEqual('erc20::erc20::Transfer');
184
+
185
+ const decodedEventHuman = decodedEvent.event.args.reduce((prev, cur, index) => {
186
+ return {
187
+ ...prev,
188
+ [cur.name]: decodedEvent.args[index].toHuman()
189
+ };
190
+ }, {});
191
+
192
+ const expectedEvent = {
193
+ from: '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY',
194
+ to: '5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty',
195
+ value: '123.4567 MUnit'
196
+ };
197
+
198
+ expect(decodedEventHuman).toEqual(expectedEvent);
199
+ });
200
+
201
+ it('decoding >=ink!v5 anonymous event', (): void => {
202
+ const abiJson = abis['ink_v5_erc20AnonymousTransferMetadata'];
203
+
204
+ expect(abiJson).toBeDefined();
205
+ const abi = new Abi(abiJson);
206
+
207
+ expect(abi.events[0].identifier).toEqual('erc20::erc20::Transfer');
208
+ expect(abi.events[0].signatureTopic).toEqual(null);
209
+
210
+ const eventRecordWithAnonymousEventHex = '0x00010000000803538e726248a9c155911e7d99f4f474c3408630a2f6275dd501d4471c7067ad2c490101d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d018eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a4800505a4f7e9f4eb1060000000000000008d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48';
211
+ const record = registry.createType('EventRecord', eventRecordWithAnonymousEventHex);
212
+
213
+ const decodedEvent = abi.decodeEvent(record);
214
+
215
+ expect(decodedEvent.event.args.length).toEqual(3);
216
+ expect(decodedEvent.args.length).toEqual(3);
217
+ expect(decodedEvent.event.identifier).toEqual('erc20::erc20::Transfer');
218
+
219
+ const decodedEventHuman = decodedEvent.event.args.reduce((prev, cur, index) => {
220
+ return {
221
+ ...prev,
222
+ [cur.name]: decodedEvent.args[index].toHuman()
223
+ };
224
+ }, {});
225
+
226
+ const expectedEvent = {
227
+ from: '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY',
228
+ to: '5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty',
229
+ value: '123.4567 MUnit'
230
+ };
231
+
232
+ expect(decodedEventHuman).toEqual(expectedEvent);
233
+ });
234
+ });
235
+ });