@cfxjs/sirius-next-common 0.2.10 → 0.2.12

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 (329) hide show
  1. package/dist/_esm-TZ4WSCGM.js +4035 -0
  2. package/dist/_esm-TZ4WSCGM.js.map +1 -0
  3. package/dist/abis/CommonError.d.ts +10 -0
  4. package/dist/abis/CommonError.js +8 -0
  5. package/dist/abis/CommonError.js.map +1 -0
  6. package/dist/abis/CommonPanic.d.ts +10 -0
  7. package/dist/abis/CommonPanic.js +8 -0
  8. package/dist/abis/CommonPanic.js.map +1 -0
  9. package/dist/ccip-DBSI27GO.js +15 -0
  10. package/dist/ccip-DBSI27GO.js.map +1 -0
  11. package/dist/chunk-3HO74CMH.js +186 -0
  12. package/dist/chunk-3HO74CMH.js.map +1 -0
  13. package/dist/chunk-3PXUIH3S.js +17 -0
  14. package/dist/chunk-3PXUIH3S.js.map +1 -0
  15. package/dist/chunk-4B6ASBYQ.js +408 -0
  16. package/dist/chunk-4B6ASBYQ.js.map +1 -0
  17. package/dist/chunk-4J3SQGIV.js +82 -0
  18. package/dist/chunk-4J3SQGIV.js.map +1 -0
  19. package/dist/{chunk-LXTR4VAD.js → chunk-5EDEEGZK.js} +42 -19
  20. package/dist/chunk-5EDEEGZK.js.map +1 -0
  21. package/dist/chunk-5TGK2EA2.js +18 -0
  22. package/dist/chunk-5TGK2EA2.js.map +1 -0
  23. package/dist/chunk-5Y7I6VYA.js +145 -0
  24. package/dist/chunk-5Y7I6VYA.js.map +1 -0
  25. package/dist/chunk-6H5A42YS.js +23 -0
  26. package/dist/chunk-6H5A42YS.js.map +1 -0
  27. package/dist/chunk-6HJCR6PQ.js +79 -0
  28. package/dist/chunk-6HJCR6PQ.js.map +1 -0
  29. package/dist/chunk-6SXAFSBF.js +1032 -0
  30. package/dist/chunk-6SXAFSBF.js.map +1 -0
  31. package/dist/chunk-ADNS57X5.js +18 -0
  32. package/dist/chunk-ADNS57X5.js.map +1 -0
  33. package/dist/{chunk-ABDGDYRT.js → chunk-ADULNBMD.js} +5 -5
  34. package/dist/{chunk-IIIPX34H.js → chunk-BUSBM33B.js} +4 -4
  35. package/dist/chunk-CKVDFS45.js +56 -0
  36. package/dist/chunk-CKVDFS45.js.map +1 -0
  37. package/dist/{chunk-WI3G3OD5.js → chunk-CNF26YY7.js} +3 -3
  38. package/dist/{chunk-DFQG46WD.js → chunk-CPPQCJEV.js} +3 -3
  39. package/dist/chunk-CPR4QZT6.js +21 -0
  40. package/dist/chunk-CPR4QZT6.js.map +1 -0
  41. package/dist/{chunk-NUKYY7GO.js → chunk-DF3PVTB5.js} +2 -2
  42. package/dist/chunk-E3ZD2GGG.js +17 -0
  43. package/dist/chunk-E3ZD2GGG.js.map +1 -0
  44. package/dist/chunk-EERNUGUK.js +198 -0
  45. package/dist/chunk-EERNUGUK.js.map +1 -0
  46. package/dist/{chunk-S5QP6EUQ.js → chunk-EMPFZFBS.js} +6 -19
  47. package/dist/chunk-EMPFZFBS.js.map +1 -0
  48. package/dist/chunk-FYLAXC3R.js +82 -0
  49. package/dist/chunk-FYLAXC3R.js.map +1 -0
  50. package/dist/{chunk-IWNT4XVY.js → chunk-GKZK26DZ.js} +3 -3
  51. package/dist/{chunk-IQJOXINX.js → chunk-GSWIFV2B.js} +2 -2
  52. package/dist/chunk-JFFTHCNE.js +344 -0
  53. package/dist/chunk-JFFTHCNE.js.map +1 -0
  54. package/dist/chunk-JIRLY7OG.js +4357 -0
  55. package/dist/chunk-JIRLY7OG.js.map +1 -0
  56. package/dist/chunk-K6FHTS3F.js +115 -0
  57. package/dist/chunk-K6FHTS3F.js.map +1 -0
  58. package/dist/chunk-L62OTV7F.js +71 -0
  59. package/dist/chunk-L62OTV7F.js.map +1 -0
  60. package/dist/{chunk-2R6NJR5T.js → chunk-LVFMTP5H.js} +2 -2
  61. package/dist/chunk-NWVSTRCG.js +20 -0
  62. package/dist/chunk-NWVSTRCG.js.map +1 -0
  63. package/dist/chunk-NXCZ5PMI.js +64 -0
  64. package/dist/chunk-NXCZ5PMI.js.map +1 -0
  65. package/dist/{chunk-HHA2RXLW.js → chunk-NZY53U2H.js} +9 -13
  66. package/dist/chunk-NZY53U2H.js.map +1 -0
  67. package/dist/{chunk-U3F7QHXB.js → chunk-OCQIWTDC.js} +2 -2
  68. package/dist/{chunk-EQWAYCW3.js → chunk-ODJ4QBD5.js} +6 -6
  69. package/dist/chunk-OYESIV3F.js +47 -0
  70. package/dist/chunk-OYESIV3F.js.map +1 -0
  71. package/dist/{chunk-IWGPVXSI.js → chunk-P4EE3QGM.js} +3 -3
  72. package/dist/{chunk-BRST23XX.js → chunk-Q2DX6IDH.js} +2 -2
  73. package/dist/chunk-QMLPHJCA.js +78 -0
  74. package/dist/chunk-QMLPHJCA.js.map +1 -0
  75. package/dist/chunk-SFCNLOQ5.js +37 -0
  76. package/dist/chunk-SFCNLOQ5.js.map +1 -0
  77. package/dist/chunk-SUCQASD3.js +84 -0
  78. package/dist/chunk-SUCQASD3.js.map +1 -0
  79. package/dist/chunk-U6ZN2ABK.js +184 -0
  80. package/dist/chunk-U6ZN2ABK.js.map +1 -0
  81. package/dist/chunk-UM5J477V.js +69 -0
  82. package/dist/chunk-UM5J477V.js.map +1 -0
  83. package/dist/{chunk-7RH7LJYB.js → chunk-WIB76E7O.js} +6 -2
  84. package/dist/{chunk-7RH7LJYB.js.map → chunk-WIB76E7O.js.map} +1 -1
  85. package/dist/chunk-WQG2LZMB.js +50 -0
  86. package/dist/chunk-WQG2LZMB.js.map +1 -0
  87. package/dist/chunk-XZ7IV2FF.js +5947 -0
  88. package/dist/chunk-XZ7IV2FF.js.map +1 -0
  89. package/dist/chunk-Y7OVL5US.js +46 -0
  90. package/dist/chunk-Y7OVL5US.js.map +1 -0
  91. package/dist/chunk-YBQQ72FQ.js +10 -0
  92. package/dist/chunk-YBQQ72FQ.js.map +1 -0
  93. package/dist/{chunk-YEUH2K6Z.js → chunk-YEINMVAR.js} +8 -2
  94. package/dist/chunk-YEINMVAR.js.map +1 -0
  95. package/dist/chunk-YIZCD4WG.js +107 -0
  96. package/dist/chunk-YIZCD4WG.js.map +1 -0
  97. package/dist/components/AceEditor/index.js +9 -143
  98. package/dist/components/AceEditor/index.js.map +1 -1
  99. package/dist/components/AddressContainer/CoreAddressContainer.js +14 -12
  100. package/dist/components/AddressContainer/EVMAddressContainer.js +13 -11
  101. package/dist/components/AddressContainer/addressSwitcher.js +11 -9
  102. package/dist/components/AddressContainer/addressView.js +9 -8
  103. package/dist/components/AddressContainer/label.js +7 -6
  104. package/dist/components/AddressContainer/utils.d.ts +9 -0
  105. package/dist/components/AddressContainer/utils.js +30 -0
  106. package/dist/components/AddressContainer/utils.js.map +1 -0
  107. package/dist/components/Age/index.js +7 -6
  108. package/dist/components/Age/index.js.map +1 -1
  109. package/dist/components/AutoComplete/index.js +6 -5
  110. package/dist/components/AutoComplete/index.js.map +1 -1
  111. package/dist/components/Button/ActionButton/index.js +1 -0
  112. package/dist/components/Button/BaseButton/index.js +1 -0
  113. package/dist/components/Button/IconButton/index.js +1 -0
  114. package/dist/components/Button/index.js +1 -0
  115. package/dist/components/Card/index.js +1 -0
  116. package/dist/components/Charts/BreadcrumbNav.js +1 -0
  117. package/dist/components/Charts/ChartOptions.js +1 -0
  118. package/dist/components/Charts/PreviewChartTemplate.js +3 -2
  119. package/dist/components/Charts/PreviewChartTemplate.js.map +1 -1
  120. package/dist/components/Charts/PreviewTitle.js +1 -0
  121. package/dist/components/Charts/StockChartTemplate.js +10 -9
  122. package/dist/components/Charts/StockChartTemplate.js.map +1 -1
  123. package/dist/components/Charts/StockTitle.js +1 -0
  124. package/dist/components/Charts/config.js +1 -0
  125. package/dist/components/Charts/constants.js +1 -0
  126. package/dist/components/Charts/useHighCharts.js +1 -0
  127. package/dist/components/CookieTip/CookieIcon.js +1 -0
  128. package/dist/components/CookieTip/index.js +2 -1
  129. package/dist/components/CookieTip/index.js.map +1 -1
  130. package/dist/components/CopyButton/index.js +6 -5
  131. package/dist/components/CopyButton/index.js.map +1 -1
  132. package/dist/components/DecimalsSelect/index.js +6 -5
  133. package/dist/components/DecimalsSelect/index.js.map +1 -1
  134. package/dist/components/DeleteIcon/index.js +2 -0
  135. package/dist/components/DeleteIcon/index.js.map +1 -1
  136. package/dist/components/Description/index.js +1 -0
  137. package/dist/components/Divider/index.js +1 -0
  138. package/dist/components/DownloadCSV/index.js +7 -6
  139. package/dist/components/DownloadCSV/index.js.map +1 -1
  140. package/dist/components/Dropdown/index.js +1 -0
  141. package/dist/components/Dropdown/index.js.map +1 -1
  142. package/dist/components/Empty/index.js +4 -40
  143. package/dist/components/Empty/index.js.map +1 -1
  144. package/dist/components/FileUpload/index.js +2 -0
  145. package/dist/components/FileUpload/index.js.map +1 -1
  146. package/dist/components/Footer/index.js +1 -0
  147. package/dist/components/Footer/index.js.map +1 -1
  148. package/dist/components/GasPriceDropdown/index.js +5 -4
  149. package/dist/components/GasPriceDropdown/index.js.map +1 -1
  150. package/dist/components/Highlight/index.js +1 -0
  151. package/dist/components/Highlight/index.js.map +1 -1
  152. package/dist/components/Icons/index.d.ts +8 -1
  153. package/dist/components/Icons/index.js +20 -64
  154. package/dist/components/Icons/index.js.map +1 -1
  155. package/dist/components/ImageSkeleton/index.js +2 -0
  156. package/dist/components/ImageSkeleton/index.js.map +1 -1
  157. package/dist/components/IncreasePercent/Icons.js +1 -0
  158. package/dist/components/IncreasePercent/index.js +5 -4
  159. package/dist/components/IncreasePercent/index.js.map +1 -1
  160. package/dist/components/InfoIconWithTooltip/InfoIcon.js +1 -0
  161. package/dist/components/InfoIconWithTooltip/index.js +7 -6
  162. package/dist/components/InputData/AddressLabel.d.ts +8 -0
  163. package/dist/components/InputData/AddressLabel.js +23 -0
  164. package/dist/components/InputData/AddressLabel.js.map +1 -0
  165. package/dist/components/InputData/ContractDetail.d.ts +22 -0
  166. package/dist/components/InputData/ContractDetail.js +19 -0
  167. package/dist/components/InputData/ContractDetail.js.map +1 -0
  168. package/dist/components/InputData/FunctionName.d.ts +10 -0
  169. package/dist/components/InputData/FunctionName.js +10 -0
  170. package/dist/components/InputData/FunctionName.js.map +1 -0
  171. package/dist/components/InputData/GeneralDecode.d.ts +9 -0
  172. package/dist/components/InputData/GeneralDecode.js +8 -0
  173. package/dist/components/InputData/GeneralDecode.js.map +1 -0
  174. package/dist/components/InputData/JsonDecode.d.ts +18 -0
  175. package/dist/components/InputData/JsonDecode.js +19 -0
  176. package/dist/components/InputData/JsonDecode.js.map +1 -0
  177. package/dist/components/InputData/OptimizationDecode.d.ts +23 -0
  178. package/dist/components/InputData/OptimizationDecode.js +32 -0
  179. package/dist/components/InputData/OptimizationDecode.js.map +1 -0
  180. package/dist/components/InputData/Original.d.ts +8 -0
  181. package/dist/components/InputData/Original.js +8 -0
  182. package/dist/components/InputData/Original.js.map +1 -0
  183. package/dist/components/InputData/UTF8.d.ts +8 -0
  184. package/dist/components/InputData/UTF8.js +14 -0
  185. package/dist/components/InputData/UTF8.js.map +1 -0
  186. package/dist/components/InputData/index.d.ts +15 -0
  187. package/dist/components/InputData/index.js +36 -0
  188. package/dist/components/InputData/index.js.map +1 -0
  189. package/dist/components/InputData/utils.d.ts +5 -0
  190. package/dist/components/InputData/utils.js +8 -0
  191. package/dist/components/InputData/utils.js.map +1 -0
  192. package/dist/components/Link/index.js +1 -0
  193. package/dist/components/List/index.js +1 -0
  194. package/dist/components/List/index.js.map +1 -1
  195. package/dist/components/Loading/index.js +1 -0
  196. package/dist/components/Loading/index.js.map +1 -1
  197. package/dist/components/Loading/loading.js +1 -0
  198. package/dist/components/Modal/index.js +6 -5
  199. package/dist/components/NetworkIcon/index.js +5 -4
  200. package/dist/components/NetworkIcon/index.js.map +1 -1
  201. package/dist/components/OutputData/ErrorDecode.d.ts +14 -0
  202. package/dist/components/OutputData/ErrorDecode.js +39 -0
  203. package/dist/components/OutputData/ErrorDecode.js.map +1 -0
  204. package/dist/components/OutputData/index.d.ts +21 -0
  205. package/dist/components/OutputData/index.js +42 -0
  206. package/dist/components/OutputData/index.js.map +1 -0
  207. package/dist/components/PageHeader/index.js +2 -0
  208. package/dist/components/PageHeader/index.js.map +1 -1
  209. package/dist/components/PhishingAddressContainer/PhishingWarningIcon.js +1 -0
  210. package/dist/components/PhishingAddressContainer/index.js +7 -6
  211. package/dist/components/PhishingAddressContainer/index.js.map +1 -1
  212. package/dist/components/Popover/index.js +6 -5
  213. package/dist/components/Price/index.js +6 -5
  214. package/dist/components/Price/index.js.map +1 -1
  215. package/dist/components/ProxyContractAddress/index.d.ts +24 -0
  216. package/dist/components/ProxyContractAddress/index.js +120 -0
  217. package/dist/components/ProxyContractAddress/index.js.map +1 -0
  218. package/dist/components/Radio/index.js +5 -4
  219. package/dist/components/Radio/index.js.map +1 -1
  220. package/dist/components/Remark/index.js +1 -0
  221. package/dist/components/Remark/index.js.map +1 -1
  222. package/dist/components/SearchIcon/index.js +2 -0
  223. package/dist/components/SearchIcon/index.js.map +1 -1
  224. package/dist/components/SearchInput/index.js +7 -6
  225. package/dist/components/SearchInput/index.js.map +1 -1
  226. package/dist/components/Select/index.d.ts +5 -4
  227. package/dist/components/Select/index.js +10 -105
  228. package/dist/components/Select/index.js.map +1 -1
  229. package/dist/components/Select/select.js +7 -5
  230. package/dist/components/Skeleton/index.js +1 -0
  231. package/dist/components/SkeletonContainer/index.js +1 -0
  232. package/dist/components/Spin/index.js +1 -0
  233. package/dist/components/Switch/index.d.ts +10 -0
  234. package/dist/components/Switch/index.js +81 -0
  235. package/dist/components/Switch/index.js.map +1 -0
  236. package/dist/components/Table/index.d.ts +9 -0
  237. package/dist/components/Table/index.js +12 -0
  238. package/dist/components/Table/index.js.map +1 -0
  239. package/dist/components/Text/index.js +7 -6
  240. package/dist/components/TextLogo/index.js +2 -0
  241. package/dist/components/TextLogo/index.js.map +1 -1
  242. package/dist/components/Tooltip/index.js +6 -5
  243. package/dist/components/TransactionAction/constants.js +1 -0
  244. package/dist/components/TransactionAction/coreTransactionAction.js +15 -13
  245. package/dist/components/TransactionAction/coreTransactionAction.js.map +1 -1
  246. package/dist/components/TransactionAction/evmTransactionAction.js +14 -12
  247. package/dist/components/TransactionAction/evmTransactionAction.js.map +1 -1
  248. package/dist/components/TransactionTrace/TraceDetail.d.ts +20 -0
  249. package/dist/components/TransactionTrace/TraceDetail.js +54 -0
  250. package/dist/components/TransactionTrace/TraceDetail.js.map +1 -0
  251. package/dist/components/TransactionTrace/TreeTraceTable.d.ts +20 -0
  252. package/dist/components/TransactionTrace/TreeTraceTable.js +57 -0
  253. package/dist/components/TransactionTrace/TreeTraceTable.js.map +1 -0
  254. package/dist/components/TransactionTrace/index.d.ts +9 -0
  255. package/dist/components/TransactionTrace/index.js +60 -0
  256. package/dist/components/TransactionTrace/index.js.map +1 -0
  257. package/dist/secp256k1-WGKMGTUQ.js +2255 -0
  258. package/dist/secp256k1-WGKMGTUQ.js.map +1 -0
  259. package/dist/store/index.js +1 -0
  260. package/dist/uno.css +103 -5
  261. package/dist/utils/address.js +5 -4
  262. package/dist/utils/cache.js +2 -1
  263. package/dist/utils/constants.d.ts +3 -1
  264. package/dist/utils/constants.js +6 -1
  265. package/dist/utils/contractManagerTool.js +5 -4
  266. package/dist/utils/contractManagerTool.js.map +1 -1
  267. package/dist/utils/cookie.js +1 -0
  268. package/dist/utils/ga.js +1 -0
  269. package/dist/utils/hooks/useAddressLabel.d.ts +3 -0
  270. package/dist/utils/hooks/useAddressLabel.js +14 -0
  271. package/dist/utils/hooks/useAddressLabel.js.map +1 -0
  272. package/dist/utils/hooks/useAge.js +2 -1
  273. package/dist/utils/hooks/useAge.js.map +1 -1
  274. package/dist/utils/hooks/useAutoSetHolderFilterParams.js +5 -4
  275. package/dist/utils/hooks/useAutoSetHolderFilterParams.js.map +1 -1
  276. package/dist/utils/hooks/useChartQueryParams.js +2 -0
  277. package/dist/utils/hooks/useChartQueryParams.js.map +1 -1
  278. package/dist/utils/hooks/useContractDetail.d.ts +6 -0
  279. package/dist/utils/hooks/useContractDetail.js +12 -0
  280. package/dist/utils/hooks/useContractDetail.js.map +1 -0
  281. package/dist/utils/hooks/useDecodeFunctionData.d.ts +29 -0
  282. package/dist/utils/hooks/useDecodeFunctionData.js +19 -0
  283. package/dist/utils/hooks/useDecodeFunctionData.js.map +1 -0
  284. package/dist/utils/hooks/useDecodeFunctionError.d.ts +17 -0
  285. package/dist/utils/hooks/useDecodeFunctionError.js +19 -0
  286. package/dist/utils/hooks/useDecodeFunctionError.js.map +1 -0
  287. package/dist/utils/hooks/useDecodedDataType.d.ts +18 -0
  288. package/dist/utils/hooks/useDecodedDataType.js +8 -0
  289. package/dist/utils/hooks/useDecodedDataType.js.map +1 -0
  290. package/dist/utils/hooks/useENS.js +6 -5
  291. package/dist/utils/hooks/useGetTxnStatus.js +2 -0
  292. package/dist/utils/hooks/useGetTxnStatus.js.map +1 -1
  293. package/dist/utils/hooks/useMethodAbi.d.ts +8 -0
  294. package/dist/utils/hooks/useMethodAbi.js +12 -0
  295. package/dist/utils/hooks/useMethodAbi.js.map +1 -0
  296. package/dist/utils/hooks/useMultiAceSearch.js +2 -0
  297. package/dist/utils/hooks/useMultiAceSearch.js.map +1 -1
  298. package/dist/utils/hooks/useSearchParams.js +1 -0
  299. package/dist/utils/hooks/useTxTrace.d.ts +124 -0
  300. package/dist/utils/hooks/useTxTrace.js +170 -0
  301. package/dist/utils/hooks/useTxTrace.js.map +1 -0
  302. package/dist/utils/index.js +5 -4
  303. package/dist/utils/media.js +1 -0
  304. package/dist/utils/pubsub.js +1 -0
  305. package/dist/utils/request.d.ts +5 -2
  306. package/dist/utils/request.js +5 -2
  307. package/dist/utils/request.types.d.ts +18 -3
  308. package/dist/utils/rpcRequest.js +1 -0
  309. package/dist/utils/rpcRequest.js.map +1 -1
  310. package/dist/utils/sdk.d.ts +35 -0
  311. package/dist/utils/sdk.js +19 -0
  312. package/dist/utils/sdk.js.map +1 -0
  313. package/package.json +5 -2
  314. package/dist/chunk-HHA2RXLW.js.map +0 -1
  315. package/dist/chunk-LXTR4VAD.js.map +0 -1
  316. package/dist/chunk-S5QP6EUQ.js.map +0 -1
  317. package/dist/chunk-YEUH2K6Z.js.map +0 -1
  318. /package/dist/{chunk-ABDGDYRT.js.map → chunk-ADULNBMD.js.map} +0 -0
  319. /package/dist/{chunk-IIIPX34H.js.map → chunk-BUSBM33B.js.map} +0 -0
  320. /package/dist/{chunk-WI3G3OD5.js.map → chunk-CNF26YY7.js.map} +0 -0
  321. /package/dist/{chunk-DFQG46WD.js.map → chunk-CPPQCJEV.js.map} +0 -0
  322. /package/dist/{chunk-NUKYY7GO.js.map → chunk-DF3PVTB5.js.map} +0 -0
  323. /package/dist/{chunk-IWNT4XVY.js.map → chunk-GKZK26DZ.js.map} +0 -0
  324. /package/dist/{chunk-IQJOXINX.js.map → chunk-GSWIFV2B.js.map} +0 -0
  325. /package/dist/{chunk-2R6NJR5T.js.map → chunk-LVFMTP5H.js.map} +0 -0
  326. /package/dist/{chunk-U3F7QHXB.js.map → chunk-OCQIWTDC.js.map} +0 -0
  327. /package/dist/{chunk-EQWAYCW3.js.map → chunk-ODJ4QBD5.js.map} +0 -0
  328. /package/dist/{chunk-IWGPVXSI.js.map → chunk-P4EE3QGM.js.map} +0 -0
  329. /package/dist/{chunk-BRST23XX.js.map → chunk-Q2DX6IDH.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/hooks/useTxTrace.ts"],"sourcesContent":["import useSWRImmutable from 'swr/immutable';\nimport { fetchWithPrefix } from 'src/utils/request';\nimport { publishRequestError } from '../pubsub';\nimport type { AbiFunctionWithoutGas } from 'src/utils/sdk';\nimport { formatABI } from '..';\nimport { formatAddress } from '../address';\nimport { Pocket } from '../request.types';\n\nexport interface TraceAction {\n createType: string;\n callType: string;\n from: string;\n to?: string;\n input?: `0x${string}`;\n value: string;\n gas?: string;\n space: string;\n\n // ↓↓↓↓↓↓↓↓ only for core space ↓↓↓↓↓↓↓↓\n fromPocket?: Pocket;\n toPocket?: Pocket;\n fromSpace?: 'evm' | 'none' | 'native';\n toSpace?: 'evm' | 'none' | 'native';\n}\nexport interface TraceResult {\n addr?: string;\n gasLeft: string;\n outcome: 'success' | 'fail' | 'reverted';\n returnData: `0x${string}`;\n}\n\ninterface ContractInfo {\n address: string;\n isVirtual: boolean;\n verify: {\n result: number;\n };\n}\ninterface TokenInfo {\n address: string;\n decimals: number;\n symbol: string;\n name: string;\n tokenType: string;\n}\n\ninterface NameTagInfo {\n nameTag: string;\n website?: string;\n desc?: string;\n labels?: string[];\n caution?: number;\n}\n\nexport interface OriginTreeTrace {\n calls: OriginTreeTrace[];\n action: TraceAction;\n result?: TraceResult;\n blockHash: string;\n epochHash: string;\n epochNumber: number;\n transactionHash: string;\n transactionPosition: number;\n type: string;\n valid: boolean;\n // added by frontend\n isCallImpl?: boolean;\n}\n\nexport type ProxyType = 'BeaconProxy' | 'Proxy';\n\nexport interface OriginTraceData {\n addressArray: string[];\n contractMap: Record<string, ContractInfo>;\n tokenMap: Record<string, TokenInfo>;\n proxyMap: Record<string, ProxyType>;\n methodMap: Record<string, Record<string, string>>;\n ensMap: Record<\n string,\n {\n name?: string;\n }\n >;\n nameTagMap: Record<string, NameTagInfo>;\n traceTree: OriginTreeTrace[];\n}\n\nexport interface ListTraceForUI {\n index: string;\n type: string;\n from: string;\n to?: string;\n value: string;\n input?: `0x${string}`;\n result?: TraceResult;\n gas?: string;\n isProxyCall?: boolean;\n method?: string;\n contractCreated?: string;\n abi?: AbiFunctionWithoutGas[];\n fromContractInfo: ContractInfo | {};\n toContractInfo: ContractInfo | {};\n fromTokenInfo: TokenInfo | {};\n toTokenInfo: TokenInfo | {};\n fromNameTagInfo?: NameTagInfo;\n toNameTagInfo?: NameTagInfo;\n fromENSInfo?: {\n name?: string;\n };\n toENSInfo?: {\n name?: string;\n };\n proxy?: {\n type: ProxyType;\n beaconAddress?: string;\n implAddress: string;\n };\n isCallBeacon?: boolean;\n isCallImpl?: boolean;\n // only for core space ↓↓↓↓↓↓↓↓\n toESpaceInfo?: {\n address?: string;\n };\n fromESpaceInfo?: {\n address?: string;\n };\n fromPocket?: Pocket;\n toPocket?: Pocket;\n}\n\nexport interface TreeTraceForUI extends ListTraceForUI {\n calls?: TreeTraceForUI[];\n}\n\nconst formatTraceData = (data: OriginTraceData, space: 'evm' | 'core') => {\n const addressType = space === 'core' ? 'base32' : 'hex';\n const contractInfo = data.contractMap || {};\n const tokenInfo = data.tokenMap || {};\n const proxyMap = data.proxyMap || {};\n const nameTagMap = data.nameTagMap || {};\n const ensMap = data.ensMap || {};\n const methodMap = data.methodMap || {};\n\n let total = 0;\n\n const formatList = (\n t: OriginTreeTrace[],\n parent?: TreeTraceForUI,\n ): TreeTraceForUI[] => {\n total += t.length;\n return t.map((item, index) => formatItem(item, index, parent, t));\n };\n const formatItem = (\n t: OriginTreeTrace,\n index: number,\n parent: TreeTraceForUI | undefined,\n list: OriginTreeTrace[],\n ): TreeTraceForUI => {\n const methodId = t.action.input?.slice(0, 10);\n const from = formatAddress(t.action.from, addressType);\n const to = formatAddress(t.action.to, addressType);\n let method = methodId;\n let abi: AbiFunctionWithoutGas[] | undefined = undefined;\n const methodABI = methodId && to ? methodMap[methodId]?.[to] : undefined;\n if (methodABI) {\n try {\n const result = formatABI(`[\"${methodABI}\"]`, {\n json: true,\n allowEmpty: true,\n });\n abi = JSON.parse(result) as AbiFunctionWithoutGas[];\n const jsonABI = abi[0];\n method = jsonABI?.name || methodId;\n } catch (error) {\n console.log('parse method abi error: ', methodABI, error);\n }\n }\n\n const isContractCreated = !!t.action.createType;\n\n const item: TreeTraceForUI = {\n index: `${parent?.index ? `${parent.index}_` : ''}${index}`,\n type: `${t.action.callType || t.type}`,\n from: from,\n to: to,\n input: t.action.input,\n value: t.action.value,\n result: t.result,\n gas: t.action.gas,\n method,\n abi,\n contractCreated: isContractCreated ? t.result?.addr : undefined,\n fromContractInfo: contractInfo[from] || {},\n toContractInfo: contractInfo[to ?? ''] || {},\n fromTokenInfo: tokenInfo[from] || {},\n toTokenInfo: tokenInfo[to ?? ''] || {},\n fromNameTagInfo: nameTagMap[from],\n toNameTagInfo: nameTagMap[to ?? ''],\n fromENSInfo: ensMap[from],\n toENSInfo: ensMap[to ?? ''],\n isCallImpl: t.isCallImpl,\n fromPocket: t.action.fromPocket,\n toPocket: t.action.toPocket,\n };\n if (t.action.fromSpace === 'evm') {\n item.fromESpaceInfo = {\n address: formatAddress(from, 'hex'),\n };\n }\n if (t.action.toSpace === 'evm') {\n item.toESpaceInfo = {\n address: formatAddress(to, 'hex'),\n };\n }\n if (\n parent &&\n parent.to &&\n proxyMap[parent.to] &&\n from === parent.to &&\n to\n ) {\n // proxy call\n if (\n index === 0 &&\n proxyMap[parent.to] === 'Proxy' &&\n t.action.callType === 'delegatecall'\n ) {\n parent.proxy = {\n type: 'Proxy',\n implAddress: to,\n };\n item.isCallImpl = true;\n }\n // beacon proxy call\n const second = list[1];\n if (\n index === 0 &&\n proxyMap[parent.to] === 'BeaconProxy' &&\n t.action.callType === 'staticcall' &&\n second &&\n second.action.to &&\n second.action.from === parent.to &&\n second.action.callType === 'delegatecall'\n ) {\n parent.proxy = {\n type: 'BeaconProxy',\n beaconAddress: to,\n implAddress: second.action.to,\n };\n item.isCallBeacon = true;\n second.isCallImpl = true;\n }\n }\n if (t.calls) {\n item.calls = formatList(t.calls, item);\n }\n return item;\n };\n const list = formatList(data.traceTree);\n return {\n total,\n list,\n };\n};\n\nexport const treeTraceToList = (\n data: TreeTraceForUI[],\n showProxyCall = false,\n) => {\n const result: ListTraceForUI[] = [];\n const handler = (list: TreeTraceForUI[]) => {\n list.forEach(item => {\n if (showProxyCall || (!item.isCallBeacon && !item.isCallImpl)) {\n result.push(item);\n }\n if (item.calls) {\n handler(item.calls);\n }\n });\n };\n handler(data);\n return result;\n};\n\nexport const hideProxyCallInTreeTrace = (data: TreeTraceForUI[]) => {\n const handler = (list: TreeTraceForUI[]) => {\n const result: TreeTraceForUI[] = [];\n list.forEach(item => {\n const newTrace = { ...item };\n if (!newTrace.isCallBeacon && !newTrace.isCallImpl) {\n result.push(newTrace);\n if (newTrace.calls) {\n newTrace.calls = handler(newTrace.calls);\n }\n } else if (newTrace.calls) {\n result.push(...handler(newTrace.calls));\n }\n });\n return result;\n };\n return handler(data);\n};\n\nexport const useTxTrace = (hash: string, space: 'evm' | 'core') => {\n const url = `/transferTree/${hash}`;\n\n return useSWRImmutable([url, space], () =>\n fetchWithPrefix(url)\n .then((resp: any) => {\n if (resp?.traceTree) {\n const { list, total } = formatTraceData(resp, space);\n return { list, total };\n }\n })\n .catch(e => {\n publishRequestError({ code: 60002, message: e.message }, 'code');\n }),\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA,OAAO,qBAAqB;AAsI5B,IAAM,kBAAkB,CAAC,MAAuB,UAA0B;AACxE,QAAM,cAAc,UAAU,SAAS,WAAW;AAClD,QAAM,eAAe,KAAK,eAAe,CAAC;AAC1C,QAAM,YAAY,KAAK,YAAY,CAAC;AACpC,QAAM,WAAW,KAAK,YAAY,CAAC;AACnC,QAAM,aAAa,KAAK,cAAc,CAAC;AACvC,QAAM,SAAS,KAAK,UAAU,CAAC;AAC/B,QAAM,YAAY,KAAK,aAAa,CAAC;AAErC,MAAI,QAAQ;AAEZ,QAAM,aAAa,CACjB,GACA,WACqB;AACrB,aAAS,EAAE;AACX,WAAO,EAAE,IAAI,CAAC,MAAM,UAAU,WAAW,MAAM,OAAO,QAAQ,CAAC,CAAC;AAAA,EAClE;AACA,QAAM,aAAa,CACjB,GACA,OACA,QACAA,UACmB;AACnB,UAAM,WAAW,EAAE,OAAO,OAAO,MAAM,GAAG,EAAE;AAC5C,UAAM,OAAO,cAAc,EAAE,OAAO,MAAM,WAAW;AACrD,UAAM,KAAK,cAAc,EAAE,OAAO,IAAI,WAAW;AACjD,QAAI,SAAS;AACb,QAAI,MAA2C;AAC/C,UAAM,YAAY,YAAY,KAAK,UAAU,QAAQ,IAAI,EAAE,IAAI;AAC/D,QAAI,WAAW;AACb,UAAI;AACF,cAAM,SAAS,UAAU,KAAK,eAAe;AAAA,UAC3C,MAAM;AAAA,UACN,YAAY;AAAA,QACd,CAAC;AACD,cAAM,KAAK,MAAM,MAAM;AACvB,cAAM,UAAU,IAAI,CAAC;AACrB,iBAAS,SAAS,QAAQ;AAAA,MAC5B,SAAS,OAAP;AACA,gBAAQ,IAAI,4BAA4B,WAAW,KAAK;AAAA,MAC1D;AAAA,IACF;AAEA,UAAM,oBAAoB,CAAC,CAAC,EAAE,OAAO;AAErC,UAAM,OAAuB;AAAA,MAC3B,OAAO,GAAG,QAAQ,QAAQ,GAAG,OAAO,WAAW,KAAK;AAAA,MACpD,MAAM,GAAG,EAAE,OAAO,YAAY,EAAE;AAAA,MAChC;AAAA,MACA;AAAA,MACA,OAAO,EAAE,OAAO;AAAA,MAChB,OAAO,EAAE,OAAO;AAAA,MAChB,QAAQ,EAAE;AAAA,MACV,KAAK,EAAE,OAAO;AAAA,MACd;AAAA,MACA;AAAA,MACA,iBAAiB,oBAAoB,EAAE,QAAQ,OAAO;AAAA,MACtD,kBAAkB,aAAa,IAAI,KAAK,CAAC;AAAA,MACzC,gBAAgB,aAAa,MAAM,EAAE,KAAK,CAAC;AAAA,MAC3C,eAAe,UAAU,IAAI,KAAK,CAAC;AAAA,MACnC,aAAa,UAAU,MAAM,EAAE,KAAK,CAAC;AAAA,MACrC,iBAAiB,WAAW,IAAI;AAAA,MAChC,eAAe,WAAW,MAAM,EAAE;AAAA,MAClC,aAAa,OAAO,IAAI;AAAA,MACxB,WAAW,OAAO,MAAM,EAAE;AAAA,MAC1B,YAAY,EAAE;AAAA,MACd,YAAY,EAAE,OAAO;AAAA,MACrB,UAAU,EAAE,OAAO;AAAA,IACrB;AACA,QAAI,EAAE,OAAO,cAAc,OAAO;AAChC,WAAK,iBAAiB;AAAA,QACpB,SAAS,cAAc,MAAM,KAAK;AAAA,MACpC;AAAA,IACF;AACA,QAAI,EAAE,OAAO,YAAY,OAAO;AAC9B,WAAK,eAAe;AAAA,QAClB,SAAS,cAAc,IAAI,KAAK;AAAA,MAClC;AAAA,IACF;AACA,QACE,UACA,OAAO,MACP,SAAS,OAAO,EAAE,KAClB,SAAS,OAAO,MAChB,IACA;AAEA,UACE,UAAU,KACV,SAAS,OAAO,EAAE,MAAM,WACxB,EAAE,OAAO,aAAa,gBACtB;AACA,eAAO,QAAQ;AAAA,UACb,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AACA,aAAK,aAAa;AAAA,MACpB;AAEA,YAAM,SAASA,MAAK,CAAC;AACrB,UACE,UAAU,KACV,SAAS,OAAO,EAAE,MAAM,iBACxB,EAAE,OAAO,aAAa,gBACtB,UACA,OAAO,OAAO,MACd,OAAO,OAAO,SAAS,OAAO,MAC9B,OAAO,OAAO,aAAa,gBAC3B;AACA,eAAO,QAAQ;AAAA,UACb,MAAM;AAAA,UACN,eAAe;AAAA,UACf,aAAa,OAAO,OAAO;AAAA,QAC7B;AACA,aAAK,eAAe;AACpB,eAAO,aAAa;AAAA,MACtB;AAAA,IACF;AACA,QAAI,EAAE,OAAO;AACX,WAAK,QAAQ,WAAW,EAAE,OAAO,IAAI;AAAA,IACvC;AACA,WAAO;AAAA,EACT;AACA,QAAM,OAAO,WAAW,KAAK,SAAS;AACtC,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;AAEO,IAAM,kBAAkB,CAC7B,MACA,gBAAgB,UACb;AACH,QAAM,SAA2B,CAAC;AAClC,QAAM,UAAU,CAAC,SAA2B;AAC1C,SAAK,QAAQ,UAAQ;AACnB,UAAI,iBAAkB,CAAC,KAAK,gBAAgB,CAAC,KAAK,YAAa;AAC7D,eAAO,KAAK,IAAI;AAAA,MAClB;AACA,UAAI,KAAK,OAAO;AACd,gBAAQ,KAAK,KAAK;AAAA,MACpB;AAAA,IACF,CAAC;AAAA,EACH;AACA,UAAQ,IAAI;AACZ,SAAO;AACT;AAEO,IAAM,2BAA2B,CAAC,SAA2B;AAClE,QAAM,UAAU,CAAC,SAA2B;AAC1C,UAAM,SAA2B,CAAC;AAClC,SAAK,QAAQ,UAAQ;AACnB,YAAM,WAAW,EAAE,GAAG,KAAK;AAC3B,UAAI,CAAC,SAAS,gBAAgB,CAAC,SAAS,YAAY;AAClD,eAAO,KAAK,QAAQ;AACpB,YAAI,SAAS,OAAO;AAClB,mBAAS,QAAQ,QAAQ,SAAS,KAAK;AAAA,QACzC;AAAA,MACF,WAAW,SAAS,OAAO;AACzB,eAAO,KAAK,GAAG,QAAQ,SAAS,KAAK,CAAC;AAAA,MACxC;AAAA,IACF,CAAC;AACD,WAAO;AAAA,EACT;AACA,SAAO,QAAQ,IAAI;AACrB;AAEO,IAAM,aAAa,CAAC,MAAc,UAA0B;AACjE,QAAM,MAAM,iBAAiB;AAE7B,SAAO;AAAA,IAAgB,CAAC,KAAK,KAAK;AAAA,IAAG,MACnC,gBAAgB,GAAG,EAChB,KAAK,CAAC,SAAc;AACnB,UAAI,MAAM,WAAW;AACnB,cAAM,EAAE,MAAM,MAAM,IAAI,gBAAgB,MAAM,KAAK;AACnD,eAAO,EAAE,MAAM,MAAM;AAAA,MACvB;AAAA,IACF,CAAC,EACA,MAAM,OAAK;AACV,0BAAoB,EAAE,MAAM,OAAO,SAAS,EAAE,QAAQ,GAAG,MAAM;AAAA,IACjE,CAAC;AAAA,EACL;AACF;","names":["list"]}
@@ -52,12 +52,13 @@ import {
52
52
  transferToLowerCase,
53
53
  validURL,
54
54
  viewJson
55
- } from "../chunk-DFQG46WD.js";
56
- import "../chunk-7RH7LJYB.js";
57
- import "../chunk-LXTR4VAD.js";
55
+ } from "../chunk-CPPQCJEV.js";
56
+ import "../chunk-WIB76E7O.js";
57
+ import "../chunk-5EDEEGZK.js";
58
58
  import "../chunk-J2I22Q2M.js";
59
- import "../chunk-YEUH2K6Z.js";
59
+ import "../chunk-YEINMVAR.js";
60
60
  import "../chunk-DQGLZCIG.js";
61
+ import "../chunk-WQG2LZMB.js";
61
62
  export {
62
63
  HIDE_IN_DOT_NET,
63
64
  addIPFSGateway,
@@ -3,6 +3,7 @@ import {
3
3
  sizes,
4
4
  useBreakpoint
5
5
  } from "../chunk-TOKKKTFG.js";
6
+ import "../chunk-WQG2LZMB.js";
6
7
  export {
7
8
  media,
8
9
  sizes,
@@ -3,6 +3,7 @@ import {
3
3
  pubsub
4
4
  } from "../chunk-J2I22Q2M.js";
5
5
  import "../chunk-DQGLZCIG.js";
6
+ import "../chunk-WQG2LZMB.js";
6
7
  export {
7
8
  publishRequestError,
8
9
  pubsub
@@ -1,4 +1,4 @@
1
- import { BaseContractInfo, DetectAccountTypeResponse } from './request.types.js';
1
+ import { BaseContractInfo, DetectAccountTypeResponse, MethodAbiItemResponse } from './request.types.js';
2
2
 
3
3
  interface FetchOptions extends RequestInit {
4
4
  timeout?: number;
@@ -27,5 +27,8 @@ declare const reqNametag: (address: string[]) => Promise<any>;
27
27
  declare const reqContractAndToken: (address: string[]) => Promise<any>;
28
28
  declare const getContractDetail: <T extends string>(contractAddress?: string, fields?: T[]) => Promise<BaseContractInfo & Record<T, unknown>>;
29
29
  declare const detectAccountType: (address: string) => Promise<DetectAccountTypeResponse>;
30
+ declare const reqAbiByMethodId: (methodId: string) => Promise<{
31
+ list: MethodAbiItemResponse[];
32
+ }>;
30
33
 
31
- export { appendApiPrefix, detectAccountType, fetch, fetchWithOpenApi, fetchWithPrefix, getContractDetail, reqContractAndToken, reqNametag, sendRequestChart, sendRequestENSInfo, sendRequestGasPrice, simpleGetFetcher };
34
+ export { appendApiPrefix, detectAccountType, fetch, fetchWithOpenApi, fetchWithPrefix, getContractDetail, reqAbiByMethodId, reqContractAndToken, reqNametag, sendRequestChart, sendRequestENSInfo, sendRequestGasPrice, simpleGetFetcher };
@@ -5,16 +5,18 @@ import {
5
5
  fetchWithOpenApi,
6
6
  fetchWithPrefix,
7
7
  getContractDetail,
8
+ reqAbiByMethodId,
8
9
  reqContractAndToken,
9
10
  reqNametag,
10
11
  sendRequestChart,
11
12
  sendRequestENSInfo,
12
13
  sendRequestGasPrice,
13
14
  simpleGetFetcher
14
- } from "../chunk-LXTR4VAD.js";
15
+ } from "../chunk-5EDEEGZK.js";
15
16
  import "../chunk-J2I22Q2M.js";
16
- import "../chunk-YEUH2K6Z.js";
17
+ import "../chunk-YEINMVAR.js";
17
18
  import "../chunk-DQGLZCIG.js";
19
+ import "../chunk-WQG2LZMB.js";
18
20
  export {
19
21
  appendApiPrefix,
20
22
  detectAccountType,
@@ -22,6 +24,7 @@ export {
22
24
  fetchWithOpenApi,
23
25
  fetchWithPrefix,
24
26
  getContractDetail,
27
+ reqAbiByMethodId,
25
28
  reqContractAndToken,
26
29
  reqNametag,
27
30
  sendRequestChart,
@@ -34,8 +34,18 @@ interface BaseContractInfo {
34
34
  exactMatch?: boolean;
35
35
  };
36
36
  proxy?: Record<string, unknown>;
37
- beacon?: Record<string, unknown>;
38
- implementation?: Record<string, unknown>;
37
+ beacon?: {
38
+ address?: string;
39
+ verify?: {
40
+ exactMatch?: boolean;
41
+ };
42
+ };
43
+ implementation?: {
44
+ address?: string;
45
+ verify?: {
46
+ exactMatch?: boolean;
47
+ };
48
+ };
39
49
  destroy?: {
40
50
  status?: number;
41
51
  message?: string;
@@ -51,5 +61,10 @@ interface DetectAccountTypeResponse {
51
61
  delegatedTo: `0x${string}` | '' | null;
52
62
  extraMessage: string;
53
63
  }
64
+ interface MethodAbiItemResponse {
65
+ fullName: string;
66
+ formatWithArg?: string;
67
+ }
68
+ type Pocket = 'balance' | 'staking_balance' | 'storage_collateral' | 'sponsor_balance_for_gas' | 'sponsor_balance_for_collateral' | 'mint_or_burn' | 'gas_payment';
54
69
 
55
- export { BaseContractInfo, DetectAccountTypeResponse };
70
+ export { BaseContractInfo, DetectAccountTypeResponse, MethodAbiItemResponse, Pocket };
@@ -2,6 +2,7 @@ import {
2
2
  publishRequestError
3
3
  } from "../chunk-J2I22Q2M.js";
4
4
  import "../chunk-DQGLZCIG.js";
5
+ import "../chunk-WQG2LZMB.js";
5
6
 
6
7
  // src/utils/rpcRequest.ts
7
8
  var request = async (method, ...args) => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/rpcRequest.ts"],"sourcesContent":["import { publishRequestError } from './pubsub';\n\nconst request = async <T>(method: string, ...args: any[]): Promise<T> => {\n const CFX = (window as any).CFX;\n\n try {\n const [namespace, m] = method.split('_');\n // 断言 CFX[namespace][m] 为一个函数,并调用它\n if (namespace && m && typeof CFX[namespace][m] === 'function') {\n return await CFX[namespace][m](...args);\n } else {\n throw new Error(\n `Method ${m} is not a function in namespace ${namespace}`,\n );\n }\n } catch (e: unknown) {\n if (e instanceof Error) {\n publishRequestError(e, 'rpc');\n } else {\n console.error('Unexpected error', e);\n }\n throw e;\n }\n};\n\nexport const getAccount = async (...args: unknown[]) => {\n try {\n return request('cfx_getAccount', ...args);\n } catch (e) {\n throw e;\n }\n};\n"],"mappings":";;;;;;AAEA,IAAM,UAAU,OAAU,WAAmB,SAA4B;AACvE,QAAM,MAAO,OAAe;AAE5B,MAAI;AACF,UAAM,CAAC,WAAW,CAAC,IAAI,OAAO,MAAM,GAAG;AAEvC,QAAI,aAAa,KAAK,OAAO,IAAI,SAAS,EAAE,CAAC,MAAM,YAAY;AAC7D,aAAO,MAAM,IAAI,SAAS,EAAE,CAAC,EAAE,GAAG,IAAI;AAAA,IACxC,OAAO;AACL,YAAM,IAAI;AAAA,QACR,UAAU,oCAAoC;AAAA,MAChD;AAAA,IACF;AAAA,EACF,SAAS,GAAP;AACA,QAAI,aAAa,OAAO;AACtB,0BAAoB,GAAG,KAAK;AAAA,IAC9B,OAAO;AACL,cAAQ,MAAM,oBAAoB,CAAC;AAAA,IACrC;AACA,UAAM;AAAA,EACR;AACF;AAEO,IAAM,aAAa,UAAU,SAAoB;AACtD,MAAI;AACF,WAAO,QAAQ,kBAAkB,GAAG,IAAI;AAAA,EAC1C,SAAS,GAAP;AACA,UAAM;AAAA,EACR;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/utils/rpcRequest.ts"],"sourcesContent":["import { publishRequestError } from './pubsub';\n\nconst request = async <T>(method: string, ...args: any[]): Promise<T> => {\n const CFX = (window as any).CFX;\n\n try {\n const [namespace, m] = method.split('_');\n // 断言 CFX[namespace][m] 为一个函数,并调用它\n if (namespace && m && typeof CFX[namespace][m] === 'function') {\n return await CFX[namespace][m](...args);\n } else {\n throw new Error(\n `Method ${m} is not a function in namespace ${namespace}`,\n );\n }\n } catch (e: unknown) {\n if (e instanceof Error) {\n publishRequestError(e, 'rpc');\n } else {\n console.error('Unexpected error', e);\n }\n throw e;\n }\n};\n\nexport const getAccount = async (...args: unknown[]) => {\n try {\n return request('cfx_getAccount', ...args);\n } catch (e) {\n throw e;\n }\n};\n"],"mappings":";;;;;;;AAEA,IAAM,UAAU,OAAU,WAAmB,SAA4B;AACvE,QAAM,MAAO,OAAe;AAE5B,MAAI;AACF,UAAM,CAAC,WAAW,CAAC,IAAI,OAAO,MAAM,GAAG;AAEvC,QAAI,aAAa,KAAK,OAAO,IAAI,SAAS,EAAE,CAAC,MAAM,YAAY;AAC7D,aAAO,MAAM,IAAI,SAAS,EAAE,CAAC,EAAE,GAAG,IAAI;AAAA,IACxC,OAAO;AACL,YAAM,IAAI;AAAA,QACR,UAAU,oCAAoC;AAAA,MAChD;AAAA,IACF;AAAA,EACF,SAAS,GAAP;AACA,QAAI,aAAa,OAAO;AACtB,0BAAoB,GAAG,KAAK;AAAA,IAC9B,OAAO;AACL,cAAQ,MAAM,oBAAoB,CAAC;AAAA,IACrC;AACA,UAAM;AAAA,EACR;AACF;AAEO,IAAM,aAAa,UAAU,SAAoB;AACtD,MAAI;AACF,WAAO,QAAQ,kBAAkB,GAAG,IAAI;AAAA,EAC1C,SAAS,GAAP;AACA,UAAM;AAAA,EACR;AACF;","names":[]}
@@ -0,0 +1,35 @@
1
+ import { Abi, AbiItem } from 'viem';
2
+ export { AbiItem, AbiParameter, AbiStateMutability, getAbiItem } from 'viem';
3
+
4
+ declare const decodeFunctionData: ({ data, abi, space, }: {
5
+ data: `0x${string}`;
6
+ abi: Abi;
7
+ space: 'evm' | 'core';
8
+ }) => {
9
+ args: readonly unknown[] | undefined;
10
+ functionName: string;
11
+ };
12
+ declare const decodeFunctionResult: ({ data, abi, functionName, space, }: {
13
+ data: `0x${string}`;
14
+ functionName: string;
15
+ abi: Abi;
16
+ space: 'evm' | 'core';
17
+ }) => unknown;
18
+ declare const decodeErrorResult: ({ data, abi, space, }: {
19
+ data: `0x${string}`;
20
+ abi: Abi;
21
+ space: 'evm' | 'core';
22
+ }) => {
23
+ abiItem: AbiItem;
24
+ args: readonly unknown[] | undefined;
25
+ errorName: string;
26
+ };
27
+
28
+ type AbiError = AbiItem & {
29
+ type: 'error';
30
+ };
31
+ type AbiFunctionWithoutGas = Omit<AbiItem & {
32
+ type: 'function';
33
+ }, 'gas'>;
34
+
35
+ export { AbiError, AbiFunctionWithoutGas, decodeErrorResult, decodeFunctionData, decodeFunctionResult };
@@ -0,0 +1,19 @@
1
+ import {
2
+ decodeErrorResult,
3
+ decodeFunctionData,
4
+ decodeFunctionResult
5
+ } from "../chunk-6SXAFSBF.js";
6
+ import {
7
+ getAbiItem
8
+ } from "../chunk-JIRLY7OG.js";
9
+ import "../chunk-4B6ASBYQ.js";
10
+ import "../chunk-WIB76E7O.js";
11
+ import "../chunk-DQGLZCIG.js";
12
+ import "../chunk-WQG2LZMB.js";
13
+ export {
14
+ decodeErrorResult,
15
+ decodeFunctionData,
16
+ decodeFunctionResult,
17
+ getAbiItem
18
+ };
19
+ //# sourceMappingURL=sdk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cfxjs/sirius-next-common",
3
- "version": "0.2.10",
3
+ "version": "0.2.12",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist/**"
@@ -19,6 +19,7 @@
19
19
  "@cfx-kit/ui-components": "^0.0.18",
20
20
  "@radix-ui/react-radio-group": "^1.2.3",
21
21
  "@radix-ui/react-select": "^2.0.0",
22
+ "@rc-component/table": "1.9.1",
22
23
  "@testing-library/react": "^15.0.5",
23
24
  "@types/i18next": "^13.0.0",
24
25
  "@types/lodash": "^4.17.0",
@@ -29,6 +30,7 @@
29
30
  "ace-builds": "1.4.12",
30
31
  "bignumber.js": "^9.1.2",
31
32
  "clsx": "^2.1.0",
33
+ "cive": "^0.8.1",
32
34
  "copyfiles": "^2.4.1",
33
35
  "dayjs": "^1.11.10",
34
36
  "ethers": "5.7.0",
@@ -51,6 +53,7 @@
51
53
  "swr": "2.2.5",
52
54
  "tailwind-merge": "^2.3.0",
53
55
  "unocss-preset-animations": "^1.0.2",
56
+ "viem": "^2.40.3",
54
57
  "vite": "^5.1.6",
55
58
  "zustand": "^4.5.2"
56
59
  },
@@ -76,7 +79,7 @@
76
79
  "unocss": "0.58.6",
77
80
  "vitest": "3.2.3",
78
81
  "@cfxjs/sirius-next-eslint-config": "0.0.0",
79
- "@cfxjs/sirius-next-i18n": "0.2.7",
82
+ "@cfxjs/sirius-next-i18n": "0.2.9",
80
83
  "@cfxjs/sirius-next-typescript-config": "0.0.0"
81
84
  },
82
85
  "publishConfig": {
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/AddressContainer/addressSwitcher.tsx"],"sourcesContent":["import { WithTranslation } from 'react-i18next';\nimport { AlertTriangle, File } from '@zeit-ui/react-icons';\nimport InternalContractIcon from '../../images/internal-contract-icon.png';\nimport ContractIcon from '../../images/contract-icon.png';\nimport VerifiedIcon from '../../images/verified.png';\nimport isMeIcon from '../../images/me.png';\nimport { Tooltip } from '../Tooltip';\nimport { isPosAddress } from '@cfx-kit/dapp-utils/dist/address';\nimport { formatAddress, isInnerContractAddress } from '../../utils/address';\nimport { getTranslations, getEnvConfig, useGlobalData } from '../../store';\nimport { getNetwork, formatString, coreCorrespondsToEspace } from 'src/utils';\nimport { Props } from './types';\nimport { RenderAddress } from './addressView';\n\n// common\nexport const ContractCreatedAddress = (\n props: Props & WithTranslation & { outputType: 'hex' | 'base32' },\n) => {\n const { contractCreated = '', outputType, t, isFull } = props;\n\n const translations = getTranslations();\n\n const contractAddress = formatAddress(contractCreated, outputType);\n\n const customProps = {\n content: t(translations.transaction.contractCreation),\n alias: t(translations.transaction.contractCreation),\n hrefAddress: contractAddress,\n cfxAddress: contractAddress,\n maxWidth: 160,\n };\n\n const mergedProps = { ...props, ...customProps };\n return RenderAddress({\n ...mergedProps,\n prefix: (\n <div className={`mr-[2px] flex-shrink-0 ${isFull ? 'icon' : ''}`}>\n <Tooltip title={mergedProps.content}>\n <div className=\"relative w-[16px] h-[16px]\">\n <img\n className=\"w-[16px] h-[16px] align-bottom mb-[3px]\"\n src={ContractIcon}\n alt={mergedProps.content}\n />\n </div>\n </Tooltip>\n </div>\n ),\n });\n};\n\n// core\nexport const CoreHexAddress = (props: Props & WithTranslation) => {\n const { value, t, isFull, maxWidth } = props;\n const { globalData } = useGlobalData();\n\n const ENV_CONFIG = getEnvConfig();\n const translations = getTranslations();\n const hexAddress = formatAddress(value, 'hex');\n const network = getNetwork(\n globalData?.networks,\n coreCorrespondsToEspace(ENV_CONFIG.ENV_NETWORK_ID),\n );\n const url = `${network.url}/address/${hexAddress}`;\n\n return RenderAddress({\n cfxAddress: hexAddress,\n hoverValue: hexAddress,\n link: url,\n isFull,\n maxWidth,\n suffixSize: 0,\n prefix: (\n <div className=\"mr-[2px] flex-shrink-0\">\n <Tooltip title={t((translations as any).general.eSpaceAddress)}>\n <File size={16} color=\"#17B38A\" />\n </Tooltip>\n </div>\n ),\n });\n};\n\n// common\nexport const InvalidAddress = (props: Props & WithTranslation) => {\n const {\n value,\n alias,\n t,\n isFull,\n maxWidth,\n isFullNameTag,\n hideAliasPrefixInHover,\n } = props;\n\n const translations = getTranslations();\n\n const tip = t(translations.general.invalidAddress);\n\n return RenderAddress({\n cfxAddress: value,\n alias,\n hoverValue: `${tip}: ${value}`,\n content: alias ? formatString(alias, 'tag') : value,\n link: false,\n isFull,\n isFullNameTag,\n maxWidth,\n style: { color: '#e00909' },\n prefix: (\n <div className=\"mr-[2px] flex-shrink-0\">\n <Tooltip title={tip}>\n <AlertTriangle size={16} color=\"#e00909\" />\n </Tooltip>\n </div>\n ),\n hideAliasPrefixInHover,\n });\n};\n\n// common\nexport const ContractAddress = (props: Props & WithTranslation) => {\n const { showIcon, verify, t, cfxAddress, isFull } = props;\n\n const translations = getTranslations();\n\n const isInnerContract = cfxAddress && isInnerContractAddress(cfxAddress);\n\n const typeText = t(\n isInnerContract\n ? translations.general.internalContract\n : verify\n ? translations.general.verifiedContract\n : translations.general.unverifiedContract,\n );\n\n return RenderAddress({\n ...props,\n prefix: showIcon ? (\n <div className={`mr-[2px] flex-shrink-0 ${isFull ? 'icon' : ''}`}>\n <Tooltip title={typeText}>\n <div className=\"relative w-[16px] h-[16px]\">\n {isInnerContract ? (\n <img\n className=\"w-[16px] h-[16px] align-bottom mb-[5px]\"\n src={InternalContractIcon}\n alt={typeText}\n />\n ) : (\n <>\n <img\n className=\"w-[16px] h-[16px] align-bottom mb-[5px]\"\n src={ContractIcon}\n alt={typeText}\n />\n {verify ? (\n <img\n className=\"w-[8px] h-[8px] absolute bottom-[-1px] right-[1px]\"\n src={VerifiedIcon}\n alt={''}\n />\n ) : (\n <></>\n )}\n </>\n )}\n </div>\n </Tooltip>\n </div>\n ) : (\n <></>\n ),\n });\n};\n\n// common\nexport const MyAddress = (props: Props & WithTranslation) => {\n const { isFull } = props;\n return RenderAddress({\n ...props,\n suffix: (\n <div className=\"mr-[2px] flex-shrink-0\">\n <img\n className=\"w-[38.5px] h-[16px] ml-[3px] align-bottom\"\n src={isMeIcon}\n alt=\"is me\"\n style={{\n marginBottom: isFull ? '6px' : '4px',\n }}\n />\n </div>\n ),\n });\n};\n\n// core\nexport const PosAddress = (props: Props & WithTranslation) => {\n const {\n alias,\n isFull,\n isFullNameTag,\n maxWidth,\n t,\n link,\n isMe,\n hideAliasPrefixInHover,\n } = props;\n const value = props.value;\n if (!value) {\n return <>--</>;\n }\n if (isMe) {\n return MyAddress(props);\n }\n const translations = getTranslations();\n const content = alias\n ? formatString(alias, 'tag')\n : formatString(value, 'posAddress');\n if (!isPosAddress(value)) {\n const tip = t(translations.general.invalidPosAddress);\n return RenderAddress({\n cfxAddress: value,\n alias,\n hoverValue: `${tip}: ${value}`,\n content,\n link: false,\n isFull,\n isFullNameTag,\n maxWidth,\n style: { color: '#e00909' },\n prefix: (\n <div className=\"mr-[2px] flex-shrink-0\">\n <Tooltip title={tip}>\n <AlertTriangle size={16} color=\"#e00909\" />\n </Tooltip>\n </div>\n ),\n type: 'pos',\n hideAliasPrefixInHover,\n });\n }\n\n return RenderAddress({\n cfxAddress: value,\n alias,\n link,\n isFull,\n isFullNameTag,\n maxWidth,\n type: 'pos',\n content,\n hideAliasPrefixInHover,\n });\n};\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/request.ts"],"sourcesContent":["import qs from 'query-string';\nimport { publishRequestError } from './pubsub';\nimport { BaseContractInfo, DetectAccountTypeResponse } from './request.types';\nimport { getEnvConfig } from '../store';\nimport { fetchWithCache } from './cache';\ninterface FetchWithAbortType<T> {\n promise: Promise<T>;\n abort: () => void;\n}\n\ninterface FetchOptions extends RequestInit {\n timeout?: number;\n}\n\nconst TIMEOUT_TIMESTAMP = 60000;\n\nconst checkStatus = (response: Response) => {\n if (\n (response.status >= 200 && response.status < 300) ||\n response.status === 600\n ) {\n return response;\n } else {\n const error = new Error(response.statusText);\n error.name = 'HttpError';\n (error as any).status = response.status;\n (error as any).response = response;\n throw error;\n }\n};\n\n// 格式化 response data\nconst parseJSON = async (response: Response) => {\n const contentType = response.headers.get('content-type');\n try {\n if (contentType?.includes('application/json')) {\n return { data: await response.json(), response };\n } else if (contentType?.includes('text/html')) {\n return { data: await response.text(), response };\n } else {\n // contentType 还有其他类型,目前项目中用不到\n // 不能简单的报错,比如 image/x-icon 是 favicon 请求\n // 此处直接返回 response,由业务代码处理其他类型的数据\n return { data: response, response };\n }\n } catch (error) {\n if ((error as any).name === 'AbortError') {\n return { data: response, response };\n }\n publishRequestError({ url: response.url, code: 20001 }, 'http');\n (error as any).response = response;\n throw error;\n }\n};\n\n// 检查返回值中是否包含错误\nconst checkResponse = function (\n url: string,\n {\n data,\n response,\n }: {\n data: any;\n response: Response;\n },\n opts: any,\n) {\n // 兼容 data.code 和 data.data, 是关于 core space 的数据结构\n if (response.status === 200 && (data.status === '1' || data.code === 0)) {\n return data.result || data.data;\n } else if (/HEAD/i.test(opts?.method || '')) {\n // handle of HEAD method\n return response;\n } else {\n const code = Number(data.status ?? data.code);\n publishRequestError({ url, code, message: data.message }, 'http');\n const error: Partial<ErrorEvent> & {\n response?: ResponseType;\n } = new Error(data.message);\n error.response = data;\n throw error;\n }\n};\n\nconst fetchWithAbort = <T>(\n url: string,\n options: FetchOptions = {},\n): FetchWithAbortType<T> => {\n const controller = new AbortController();\n const opts: FetchOptions = { ...options, signal: controller.signal };\n const timeout = options.timeout || TIMEOUT_TIMESTAMP;\n\n let timeoutId: ReturnType<typeof setTimeout>;\n const promise: Promise<T> = new Promise((resolve, reject) => {\n timeoutId = setTimeout(() => {\n controller.abort();\n publishRequestError(\n { url, code: 20002, message: 'Request timeout' },\n 'http',\n );\n reject(new Error('Request timeout'));\n }, timeout);\n\n window\n .fetch(url, opts)\n .then(checkStatus)\n .then(parseJSON)\n .then((...args) => checkResponse(url, ...args, opts))\n .then(data => resolve(data as T))\n .catch(error => {\n if (/HEAD/i.test(opts?.method || '')) {\n return {};\n }\n\n // A fetch() promise will reject with a TypeError when a network error is encountered or CORS is misconfigured on the server-side,\n // although this usually means permission issues or similar — a 404 does not constitute a network error, for example.\n // For detail: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch\n if (error.name === 'TypeError') {\n publishRequestError({ url, code: 20004 }, 'http');\n reject(new Error('Network error'));\n } else if (error.name === 'AbortError') {\n publishRequestError(\n { url, code: 20003, message: 'Fetch aborted' },\n 'http',\n );\n reject(new Error('Fetch aborted'));\n } else {\n publishRequestError(\n { url, code: (error as any).status, message: error.message },\n 'http',\n );\n reject(error);\n }\n })\n .finally(() => clearTimeout(timeoutId));\n });\n\n return {\n promise,\n abort: () => {\n clearTimeout(timeoutId);\n controller.abort();\n },\n };\n};\n\nexport const fetch = <T>(\n url: string,\n options: FetchOptions = {},\n): Promise<T> => {\n const { promise } = fetchWithAbort<T>(url, options);\n return promise;\n};\n\nexport const appendApiPrefix = (url: string) => {\n // for cfx top N\n if (url.startsWith('/stat/')) {\n return url;\n }\n if (url.startsWith('http')) {\n return url;\n }\n return `/v1${url.startsWith('/') ? url : '/' + url}`;\n};\n\nexport const fetchWithPrefix = <T>(url: string, opts?: FetchOptions) => {\n return fetch<T>(appendApiPrefix(url), opts);\n};\n\nexport const fetchWithOpenApi = <T>(url: string, opts?: FetchOptions) => {\n const ENV_CONFIG = getEnvConfig();\n if (!ENV_CONFIG.ENV_OPEN_API_HOST) {\n throw new Error('ENV_OPEN_API_HOST is not set');\n }\n return fetch<T>(\n `${ENV_CONFIG.ENV_OPEN_API_HOST}${url.startsWith('/') ? url : '/' + url}`,\n opts,\n );\n};\n\nexport const simpleGetFetcher = async <T>(...args: any[]) => {\n let [url, query] = args;\n if (query) {\n url = qs.stringifyUrl({ url, query });\n }\n return await fetchWithPrefix<T>(url, {\n method: 'get',\n });\n};\n\ntype RequestMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD';\ninterface QueryParams {\n [key: string]: string | undefined;\n}\ninterface Config {\n url: string;\n query: QueryParams;\n type?: RequestMethod;\n body?: any;\n headers?: Headers;\n signal?: AbortSignal;\n}\n\nconst queryAddress = (address: string[]) => {\n return address.reduce((prev, curr, index) => {\n return !index ? `address=${curr}` : `${prev}&address=${curr}`;\n }, '');\n};\n\nexport const sendRequestChart = async (config: Config) => {\n try {\n const res: any = await fetch(\n qs.stringifyUrl({ url: config.url, query: config.query }),\n {\n method: config.type || 'GET',\n body: config.body,\n headers: config.headers,\n signal: config.signal,\n },\n );\n const data = res;\n data.list = [...(data.list || [])].reverse();\n return data;\n } catch (error) {\n console.error('Request failed', error);\n throw error;\n }\n};\n\nexport const sendRequestENSInfo = async (url?: string | null) => {\n if (!url) return {};\n try {\n const res: any = await fetch(url, {\n method: 'GET',\n });\n\n return res?.map;\n } catch (error) {\n console.error('Request failed', error);\n throw error;\n }\n};\n\nexport const sendRequestGasPrice = async () => {\n try {\n const res: any = await fetch(`/stat/gasprice/tracker`, {\n method: 'GET',\n });\n return res;\n } catch (error) {\n console.error('Request failed', error);\n throw error;\n }\n};\n\nexport const reqNametag = async (address: string[]) => {\n const query = queryAddress(address);\n\n const res: any = await fetch(`/v1/nametag?${query}`, {\n method: 'GET',\n });\n return res?.map;\n};\n\nexport const reqContractAndToken = async (address: string[]) => {\n const query = queryAddress(address);\n\n const res: any = await fetch(`/v1/contract-and-token?${query}`, {\n method: 'GET',\n });\n return res?.map;\n};\n\nexport const getContractDetail = <T extends string>(\n contractAddress?: string,\n fields: T[] = [],\n) => {\n const url = qs.stringifyUrl({\n url: `/v1/contract/${contractAddress}`,\n query: { fields },\n });\n\n return fetch<BaseContractInfo & Record<T, unknown>>(url, {\n method: 'GET',\n });\n};\n\nexport const detectAccountType = fetchWithCache(\n (address: string) => {\n return fetchWithOpenApi<DetectAccountTypeResponse>(\n `/util/detectAccountType?hex=${address}`,\n {\n method: 'GET',\n },\n );\n },\n {\n // 10 seconds\n maxAge: 1000 * 10,\n },\n);\n"],"mappings":"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","names":[]}