four-flap-meme-sdk 1.9.49 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (567) hide show
  1. package/README.en.md +41 -6
  2. package/README.md +31 -0
  3. package/README.zh-CN.md +41 -6
  4. package/dist/__tests__/subpath-exports.test.js +34 -0
  5. package/dist/abis/common.js +74 -68
  6. package/dist/abis/flap/vault.js +9 -7
  7. package/dist/abis/index.d.ts +3 -4
  8. package/dist/abis/index.js +3 -4
  9. package/dist/bundle-core/__tests__/config-helpers.test.js +28 -0
  10. package/dist/bundle-core/__tests__/facade-parity.test.js +33 -0
  11. package/dist/bundle-core/__tests__/sign-context-helpers.test.js +60 -0
  12. package/dist/bundle-core/__tests__/sign-fixture.test.js +220 -0
  13. package/dist/bundle-core/__tests__/sign-fixtures.d.ts +10 -0
  14. package/dist/bundle-core/__tests__/sign-fixtures.js +16 -0
  15. package/dist/bundle-core/config-helpers.d.ts +36 -0
  16. package/dist/bundle-core/config-helpers.js +57 -0
  17. package/dist/bundle-core/errors.d.ts +50 -0
  18. package/dist/bundle-core/errors.js +34 -0
  19. package/dist/bundle-core/four-meme/approve-tokenmanager.d.ts +7 -0
  20. package/dist/bundle-core/four-meme/approve-tokenmanager.js +99 -0
  21. package/dist/bundle-core/four-meme/core-helpers.d.ts +8 -0
  22. package/dist/bundle-core/four-meme/core-helpers.js +40 -0
  23. package/dist/bundle-core/four-meme/core.d.ts +4 -0
  24. package/dist/bundle-core/four-meme/core.js +515 -0
  25. package/dist/bundle-core/four-meme/pancake-proxy.d.ts +28 -0
  26. package/dist/{shared 2/flap/portal-bundle-merkle/pancake-proxy.js → bundle-core/four-meme/pancake-proxy.js} +277 -299
  27. package/dist/bundle-core/four-meme/private.d.ts +27 -0
  28. package/dist/bundle-core/four-meme/private.js +465 -0
  29. package/dist/bundle-core/four-meme/sign-context-helpers.d.ts +2 -0
  30. package/dist/bundle-core/four-meme/sign-context-helpers.js +2 -0
  31. package/dist/bundle-core/four-meme/swap-buy-first.d.ts +8 -0
  32. package/dist/bundle-core/four-meme/swap-buy-first.js +493 -0
  33. package/dist/bundle-core/four-meme/swap-hop-helpers.d.ts +6 -0
  34. package/dist/bundle-core/four-meme/swap-hop-helpers.js +63 -0
  35. package/dist/bundle-core/four-meme/swap-internal.d.ts +3 -0
  36. package/dist/bundle-core/four-meme/swap-internal.js +18 -0
  37. package/dist/bundle-core/four-meme/swap-sign-helpers.d.ts +27 -0
  38. package/dist/bundle-core/four-meme/swap-sign-helpers.js +105 -0
  39. package/dist/bundle-core/four-meme/swap.d.ts +17 -0
  40. package/dist/{chains/bsc/four/swap/index.js → bundle-core/four-meme/swap.js} +84 -408
  41. package/dist/bundle-core/four-meme/types/buy-first.d.ts +50 -0
  42. package/dist/bundle-core/four-meme/types/core-flow.d.ts +63 -0
  43. package/dist/bundle-core/four-meme/types/index.d.ts +600 -0
  44. package/dist/bundle-core/four-meme/types/swap-internal.d.ts +19 -0
  45. package/dist/bundle-core/four-meme/types.d.ts +1 -0
  46. package/dist/bundle-core/four-meme/utils-disperse.d.ts +7 -0
  47. package/dist/bundle-core/four-meme/utils-disperse.js +396 -0
  48. package/dist/bundle-core/four-meme/utils-pairwise.d.ts +8 -0
  49. package/dist/bundle-core/four-meme/utils-pairwise.js +328 -0
  50. package/dist/bundle-core/four-meme/utils-sweep.d.ts +8 -0
  51. package/dist/bundle-core/four-meme/utils-sweep.js +744 -0
  52. package/dist/bundle-core/index.d.ts +8 -0
  53. package/dist/bundle-core/index.js +8 -0
  54. package/dist/bundle-core/internal.d.ts +21 -0
  55. package/dist/bundle-core/internal.js +182 -0
  56. package/dist/bundle-core/sign-context-helpers.d.ts +25 -0
  57. package/dist/bundle-core/sign-context-helpers.js +67 -0
  58. package/dist/bundle-core/submit.d.ts +293 -0
  59. package/dist/bundle-core/submit.js +727 -0
  60. package/dist/bundle-core/types/index.d.ts +8 -0
  61. package/dist/bundle-core/types.d.ts +1 -0
  62. package/dist/chains/bsc/four/approve-tokenmanager.d.ts +1 -26
  63. package/dist/chains/bsc/four/approve-tokenmanager.js +1 -116
  64. package/dist/chains/bsc/four/config.d.ts +5 -70
  65. package/dist/chains/bsc/four/config.js +2 -115
  66. package/dist/chains/bsc/four/core.d.ts +1 -4
  67. package/dist/chains/bsc/four/core.js +1 -589
  68. package/dist/chains/bsc/four/index.d.ts +6 -6
  69. package/dist/chains/bsc/four/index.js +6 -6
  70. package/dist/chains/bsc/four/internal.d.ts +2 -50
  71. package/dist/chains/bsc/four/internal.js +2 -237
  72. package/dist/chains/bsc/four/pancake-proxy.d.ts +1 -28
  73. package/dist/chains/bsc/four/pancake-proxy.js +1 -688
  74. package/dist/chains/bsc/four/private.d.ts +1 -27
  75. package/dist/chains/bsc/four/private.js +1 -477
  76. package/dist/chains/bsc/four/submit.d.ts +2 -315
  77. package/dist/chains/bsc/four/submit.js +2 -746
  78. package/dist/chains/bsc/four/swap-buy-first.d.ts +2 -55
  79. package/dist/chains/bsc/four/swap-buy-first.js +2 -506
  80. package/dist/chains/bsc/four/swap-internal.d.ts +1 -3
  81. package/dist/chains/bsc/four/swap-internal.js +1 -18
  82. package/dist/chains/bsc/four/swap.d.ts +2 -144
  83. package/dist/chains/bsc/four/swap.js +2 -760
  84. package/dist/chains/bsc/four/types.d.ts +1 -476
  85. package/dist/chains/bsc/four/utils-disperse.d.ts +1 -0
  86. package/dist/chains/bsc/four/utils-disperse.js +1 -0
  87. package/dist/chains/bsc/four/utils-pairwise.d.ts +1 -0
  88. package/dist/chains/bsc/four/utils-pairwise.js +1 -0
  89. package/dist/chains/bsc/four/utils-sweep.d.ts +1 -0
  90. package/dist/chains/bsc/four/utils-sweep.js +1 -0
  91. package/dist/chains/bsc/four/utils.d.ts +5 -18
  92. package/dist/chains/bsc/four/utils.js +5 -1534
  93. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.d.ts +159 -0
  94. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.js +117 -0
  95. package/dist/chains/bsc/pancake/bundle-buy-first.d.ts +1 -91
  96. package/dist/chains/bsc/pancake/bundle-buy-first.js +97 -207
  97. package/dist/chains/bsc/pancake/bundle-swap-helpers.d.ts +241 -0
  98. package/dist/chains/bsc/pancake/{bundle-swap/helpers.js → bundle-swap-helpers.js} +63 -70
  99. package/dist/chains/bsc/pancake/bundle-swap.d.ts +1 -79
  100. package/dist/chains/bsc/pancake/bundle-swap.js +111 -686
  101. package/dist/chains/bsc/pancake/index.d.ts +4 -2
  102. package/dist/chains/bsc/pancake/index.js +1 -3
  103. package/dist/chains/bsc/platforms/iro/factory.js +3 -1
  104. package/dist/chains/bsc/platforms/iro/index.d.ts +5 -5
  105. package/dist/chains/bsc/platforms/iro/index.js +3 -3
  106. package/dist/chains/bsc/platforms/iro/pool.js +31 -10
  107. package/dist/chains/bsc/platforms/iro/token.js +4 -1
  108. package/dist/chains/eni/batch-router/bundle-approve.js +4 -3
  109. package/dist/chains/eni/batch-router/transfer.js +54 -23
  110. package/dist/chains/eni/batch-router/utils.js +32 -6
  111. package/dist/chains/eni/bundler/sign.js +4 -4
  112. package/dist/chains/eni/bundler/submit.js +1 -4
  113. package/dist/chains/eni/constants.js +1 -1
  114. package/dist/chains/eni/index.d.ts +1 -1
  115. package/dist/chains/eni/platforms/daoaas/create.js +2 -2
  116. package/dist/chains/eni/platforms/daoaas/index.d.ts +3 -3
  117. package/dist/chains/eni/platforms/daoaas/index.js +3 -3
  118. package/dist/chains/eni/platforms/daoaas/meta.js +8 -4
  119. package/dist/chains/eni/platforms/daoaas/portal-direct.js +28 -43
  120. package/dist/chains/eni/platforms/daoaas/portal.js +10 -6
  121. package/dist/chains/eni/platforms/dswap/liquidity.js +58 -26
  122. package/dist/chains/eni/platforms/fair-launch/index.d.ts +2 -2
  123. package/dist/chains/eni/platforms/fair-launch/index.js +1 -1
  124. package/dist/chains/eni/platforms/fair-launch/launcher.js +87 -47
  125. package/dist/chains/eni/platforms/fair-launch/pool.js +4 -1
  126. package/dist/chains/eni/platforms/fair-launch/presets.js +2 -2
  127. package/dist/chains/eni/platforms/iro/factory.js +3 -1
  128. package/dist/chains/eni/platforms/iro/index.d.ts +6 -6
  129. package/dist/chains/eni/platforms/iro/index.js +4 -4
  130. package/dist/chains/eni/platforms/iro/pool.js +90 -26
  131. package/dist/chains/eni/platforms/iro/token.js +107 -31
  132. package/dist/chains/eni/platforms/iro/whitelist.js +6 -18
  133. package/dist/chains/eni/submit.js +5 -13
  134. package/dist/chains/index.d.ts +13 -0
  135. package/dist/chains/index.js +13 -0
  136. package/dist/chains/xlayer/eip7702/bundle-approve.d.ts +2 -26
  137. package/dist/chains/xlayer/eip7702/bundle-approve.js +11 -20
  138. package/dist/chains/xlayer/eip7702/bundle-buy.d.ts +2 -6
  139. package/dist/chains/xlayer/eip7702/bundle-buy.js +13 -51
  140. package/dist/chains/xlayer/eip7702/bundle-create.js +93 -56
  141. package/dist/chains/xlayer/eip7702/bundle-sell.d.ts +2 -6
  142. package/dist/chains/xlayer/eip7702/bundle-sell.js +26 -74
  143. package/dist/chains/xlayer/eip7702/bundle-swap.d.ts +3 -65
  144. package/dist/chains/xlayer/eip7702/bundle-swap.js +51 -68
  145. package/dist/chains/xlayer/eip7702/constants.d.ts +1 -16
  146. package/dist/chains/xlayer/eip7702/constants.js +3 -21
  147. package/dist/chains/xlayer/eip7702/index.d.ts +29 -46
  148. package/dist/chains/xlayer/eip7702/index.js +27 -81
  149. package/dist/chains/xlayer/eip7702/{multi-hop-transfer/types.d.ts → multi-hop-transfer-helpers.d.ts} +17 -23
  150. package/dist/chains/xlayer/eip7702/multi-hop-transfer.d.ts +2 -203
  151. package/dist/chains/xlayer/eip7702/multi-hop-transfer.js +58 -291
  152. package/dist/chains/xlayer/eip7702/transfer-context-helpers.d.ts +26 -0
  153. package/dist/chains/xlayer/eip7702/transfer-context-helpers.js +57 -0
  154. package/dist/chains/xlayer/eip7702/types.d.ts +88 -0
  155. package/dist/chains/xlayer/eip7702/utils.d.ts +0 -3
  156. package/dist/chains/xlayer/eip7702/utils.js +23 -28
  157. package/dist/chains/xlayer/eip7702/{volume/types.d.ts → volume-helpers.d.ts} +41 -17
  158. package/dist/chains/xlayer/eip7702/volume-helpers.js +48 -0
  159. package/dist/chains/xlayer/eip7702/volume.d.ts +6 -184
  160. package/dist/chains/xlayer/eip7702/volume.js +83 -158
  161. package/dist/chains/xlayer/eoa/constants.js +1 -1
  162. package/dist/chains/xlayer/eoa/dex-helpers.js +5 -5
  163. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.d.ts +126 -0
  164. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.js +228 -0
  165. package/dist/chains/xlayer/eoa/eoa-bundle-swap.d.ts +1 -95
  166. package/dist/chains/xlayer/eoa/eoa-bundle-swap.js +64 -276
  167. package/dist/chains/xlayer/eoa/eoa-wash-volume.d.ts +1 -1
  168. package/dist/chains/xlayer/eoa/eoa-wash-volume.js +14 -14
  169. package/dist/chains/xlayer/eoa/index.d.ts +10 -6
  170. package/dist/chains/xlayer/eoa/index.js +8 -23
  171. package/dist/chains/xlayer/eoa/portal-ops.js +7 -2
  172. package/dist/chains/xlayer/eoa/router-manager.js +3 -3
  173. package/dist/chains/xlayer/eoa/types.d.ts +2 -2
  174. package/dist/chains/xlayer/eoa/types.js +1 -3
  175. package/dist/contracts/helper3.d.ts +20 -17
  176. package/dist/contracts/helper3.js +56 -20
  177. package/dist/contracts/tm-bundle-helpers.d.ts +88 -0
  178. package/dist/contracts/tm-bundle-helpers.js +72 -0
  179. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.d.ts +1 -26
  180. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.js +1 -117
  181. package/dist/contracts/tm-bundle-merkle/config.d.ts +5 -70
  182. package/dist/contracts/tm-bundle-merkle/config.js +2 -115
  183. package/dist/contracts/tm-bundle-merkle/core.d.ts +1 -4
  184. package/dist/contracts/tm-bundle-merkle/core.js +1 -588
  185. package/dist/contracts/tm-bundle-merkle/index.d.ts +5 -5
  186. package/dist/contracts/tm-bundle-merkle/index.js +5 -5
  187. package/dist/contracts/tm-bundle-merkle/internal.d.ts +2 -50
  188. package/dist/contracts/tm-bundle-merkle/internal.js +2 -236
  189. package/dist/contracts/tm-bundle-merkle/pancake-proxy.d.ts +1 -28
  190. package/dist/contracts/tm-bundle-merkle/pancake-proxy.js +1 -687
  191. package/dist/contracts/tm-bundle-merkle/private.d.ts +1 -27
  192. package/dist/contracts/tm-bundle-merkle/private.js +1 -476
  193. package/dist/contracts/tm-bundle-merkle/submit.d.ts +3 -314
  194. package/dist/contracts/tm-bundle-merkle/submit.js +3 -919
  195. package/dist/contracts/tm-bundle-merkle/swap-buy-first.d.ts +2 -55
  196. package/dist/contracts/tm-bundle-merkle/swap-buy-first.js +2 -505
  197. package/dist/contracts/tm-bundle-merkle/swap-internal.d.ts +1 -3
  198. package/dist/contracts/tm-bundle-merkle/swap-internal.js +1 -18
  199. package/dist/contracts/tm-bundle-merkle/swap.d.ts +2 -144
  200. package/dist/contracts/tm-bundle-merkle/swap.js +2 -757
  201. package/dist/contracts/tm-bundle-merkle/types.d.ts +1 -476
  202. package/dist/contracts/tm-bundle-merkle/utils-disperse.d.ts +1 -0
  203. package/dist/contracts/tm-bundle-merkle/utils-disperse.js +1 -0
  204. package/dist/contracts/tm-bundle-merkle/utils-pairwise.d.ts +1 -0
  205. package/dist/contracts/tm-bundle-merkle/utils-pairwise.js +1 -0
  206. package/dist/contracts/tm-bundle-merkle/utils-sweep.d.ts +1 -0
  207. package/dist/contracts/tm-bundle-merkle/utils-sweep.js +1 -0
  208. package/dist/contracts/tm-bundle-merkle/utils.d.ts +5 -6
  209. package/dist/contracts/tm-bundle-merkle/utils.js +5 -6
  210. package/dist/contracts/tm-bundle.d.ts +3 -51
  211. package/dist/contracts/tm-bundle.js +102 -142
  212. package/dist/contracts/tm.d.ts +3 -2
  213. package/dist/contracts/tm.js +36 -32
  214. package/dist/contracts/tm1.js +9 -4
  215. package/dist/contracts/tm2.js +9 -4
  216. package/dist/dex/direct-router-helpers.d.ts +264 -0
  217. package/dist/dex/direct-router-helpers.js +539 -0
  218. package/dist/dex/direct-router.d.ts +3 -125
  219. package/dist/dex/direct-router.js +237 -652
  220. package/dist/dex/{direct-router/types.d.ts → types.d.ts} +1 -1
  221. package/dist/exports/root-bundle-and-tooling.d.ts +27 -0
  222. package/dist/exports/root-bundle-and-tooling.js +30 -0
  223. package/dist/exports/root-eni-and-bsc-iro.d.ts +26 -0
  224. package/dist/exports/root-eni-and-bsc-iro.js +66 -0
  225. package/dist/exports/root-foundations.d.ts +35 -0
  226. package/dist/exports/root-foundations.js +70 -0
  227. package/dist/exports/root-swap-dex-and-xlayer.d.ts +30 -0
  228. package/dist/exports/root-swap-dex-and-xlayer.js +78 -0
  229. package/dist/flap/index.d.ts +10 -0
  230. package/dist/flap/index.js +8 -0
  231. package/dist/flows/create.d.ts +2 -2
  232. package/dist/flows/create.js +6 -6
  233. package/dist/flows/index.d.ts +1 -0
  234. package/dist/flows/index.js +1 -0
  235. package/dist/index.d.ts +20 -91
  236. package/dist/index.js +20 -215
  237. package/dist/shared/abis/common.d.ts +2 -83
  238. package/dist/shared/abis/common.js +2 -252
  239. package/dist/shared/abis/index.d.ts +5 -6
  240. package/dist/shared/abis/index.js +5 -7
  241. package/dist/shared/clients/blockrazor.js +41 -24
  242. package/dist/shared/clients/club48.js +30 -26
  243. package/dist/shared/clients/emitservice.js +2 -0
  244. package/dist/shared/clients/four.js +23 -18
  245. package/dist/shared/clients/index.d.ts +8 -0
  246. package/dist/shared/clients/index.js +8 -0
  247. package/dist/shared/clients/merkle.js +26 -30
  248. package/dist/shared/constants/addresses.d.ts +1 -1
  249. package/dist/shared/constants/addresses.js +11 -2
  250. package/dist/shared/constants/chains.d.ts +1 -1
  251. package/dist/shared/constants/chains.js +1 -1
  252. package/dist/shared/constants/gas.d.ts +1 -1
  253. package/dist/shared/constants/gas.js +2 -6
  254. package/dist/shared/constants/index.d.ts +3 -0
  255. package/dist/shared/constants/index.js +1 -0
  256. package/dist/shared/constants/quote.d.ts +30 -0
  257. package/dist/shared/constants/quote.js +37 -0
  258. package/dist/shared/flap/abi.js +1 -1
  259. package/dist/shared/flap/constants.d.ts +1 -1
  260. package/dist/shared/flap/constants.js +2 -2
  261. package/dist/shared/flap/curve.js +3 -0
  262. package/dist/shared/flap/errors.d.ts +1 -4
  263. package/dist/shared/flap/errors.js +21 -3
  264. package/dist/shared/flap/index.d.ts +2 -2
  265. package/dist/shared/flap/index.js +2 -2
  266. package/dist/shared/flap/meta.d.ts +16 -18
  267. package/dist/shared/flap/meta.js +14 -26
  268. package/dist/shared/flap/permit.js +6 -5
  269. package/dist/shared/flap/pinata.d.ts +9 -2
  270. package/dist/shared/flap/pinata.js +20 -18
  271. package/dist/shared/flap/portal-bundle-merkle/config.d.ts +3 -72
  272. package/dist/shared/flap/portal-bundle-merkle/config.js +4 -124
  273. package/dist/shared/flap/portal-bundle-merkle/core-helpers.d.ts +32 -0
  274. package/dist/shared/flap/portal-bundle-merkle/core-helpers.js +83 -0
  275. package/dist/shared/flap/portal-bundle-merkle/core.d.ts +0 -4
  276. package/dist/shared/flap/portal-bundle-merkle/core.js +66 -156
  277. package/dist/shared/flap/portal-bundle-merkle/create-to-dex.js +81 -86
  278. package/dist/shared/flap/portal-bundle-merkle/curve-to-dex.js +100 -92
  279. package/dist/shared/flap/portal-bundle-merkle/index.d.ts +11 -7
  280. package/dist/shared/flap/portal-bundle-merkle/index.js +4 -7
  281. package/dist/shared/flap/portal-bundle-merkle/pancake-proxy.js +71 -68
  282. package/dist/shared/flap/portal-bundle-merkle/private.js +61 -114
  283. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.d.ts +125 -0
  284. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.js +113 -0
  285. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.d.ts +1 -64
  286. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.js +66 -247
  287. package/dist/shared/flap/portal-bundle-merkle/swap-helpers.d.ts +149 -0
  288. package/dist/shared/flap/portal-bundle-merkle/swap-helpers.js +259 -0
  289. package/dist/shared/flap/portal-bundle-merkle/swap.d.ts +2 -71
  290. package/dist/shared/flap/portal-bundle-merkle/swap.js +103 -410
  291. package/dist/shared/flap/portal-bundle-merkle/types.d.ts +73 -3
  292. package/dist/shared/flap/portal-bundle-merkle/utils.d.ts +1 -80
  293. package/dist/shared/flap/portal-bundle-merkle/utils.js +145 -265
  294. package/dist/shared/flap/portal-bundle.js +54 -42
  295. package/dist/shared/flap/portal.js +32 -10
  296. package/dist/shared/flap/vanity.js +4 -7
  297. package/dist/shared/flap/vault.d.ts +1 -1
  298. package/dist/shared/flap/vault.js +54 -48
  299. package/dist/shared/foundation/dex/v3-path.d.ts +6 -0
  300. package/dist/shared/foundation/dex/v3-path.js +35 -0
  301. package/dist/shared/foundation/gas/bundle-gas.d.ts +39 -0
  302. package/dist/shared/foundation/gas/bundle-gas.js +93 -0
  303. package/dist/shared/foundation/gas/profit-hop.d.ts +20 -0
  304. package/dist/shared/foundation/gas/profit-hop.js +72 -0
  305. package/dist/shared/foundation/index.d.ts +13 -0
  306. package/dist/shared/foundation/index.js +12 -0
  307. package/dist/shared/foundation/nonce/nonce-manager.d.ts +17 -0
  308. package/dist/shared/foundation/nonce/nonce-manager.js +180 -0
  309. package/dist/shared/foundation/normalize-unknown.d.ts +9 -0
  310. package/dist/shared/foundation/normalize-unknown.js +29 -0
  311. package/dist/shared/foundation/sdk-logger.d.ts +13 -0
  312. package/dist/shared/foundation/sdk-logger.js +12 -0
  313. package/dist/shared/foundation/tx/build-request.d.ts +17 -0
  314. package/dist/shared/foundation/tx/build-request.js +25 -0
  315. package/dist/shared/foundation/tx/sign-batch.d.ts +5 -0
  316. package/dist/shared/foundation/tx/sign-batch.js +26 -0
  317. package/dist/shared/foundation/tx/wallet-sign-patch.js +18 -0
  318. package/dist/shared/foundation/types/airdrop-sweep.d.ts +79 -0
  319. package/dist/{utils/erc20/types.d.ts → shared/foundation/types/erc20.d.ts} +7 -19
  320. package/dist/{utils/holders-maker/types.d.ts → shared/foundation/types/holders-maker.d.ts} +4 -12
  321. package/dist/shared/foundation/types/index.d.ts +7 -0
  322. package/dist/{utils/lp-inspect/types.d.ts → shared/foundation/types/lp-inspect.d.ts} +4 -2
  323. package/dist/shared/foundation/types/multicall.d.ts +5 -0
  324. package/dist/shared/foundation/types/multicall.js +1 -0
  325. package/dist/shared/foundation/types/private-sale.d.ts +35 -0
  326. package/dist/shared/foundation/types/private-sale.js +1 -0
  327. package/dist/{utils/quote-helpers/types.d.ts → shared/foundation/types/quote-helpers.d.ts} +1 -0
  328. package/dist/shared/foundation/types/quote-helpers.js +1 -0
  329. package/dist/shared/four/tax-token.d.ts +1 -1
  330. package/dist/shared/four/tax-token.js +27 -7
  331. package/dist/shared/index.d.ts +6 -0
  332. package/dist/shared/index.js +4 -0
  333. package/dist/utils/airdrop-sweep.d.ts +4 -76
  334. package/dist/utils/airdrop-sweep.js +38 -52
  335. package/dist/utils/bundle-helpers.d.ts +9 -243
  336. package/dist/utils/bundle-helpers.js +10 -584
  337. package/dist/utils/constants.d.ts +5 -61
  338. package/dist/utils/constants.js +5 -80
  339. package/dist/utils/contract-factory.d.ts +2 -4
  340. package/dist/utils/contract-factory.js +25 -18
  341. package/dist/utils/erc20.d.ts +8 -90
  342. package/dist/utils/erc20.js +94 -153
  343. package/dist/utils/errors.d.ts +10 -22
  344. package/dist/utils/errors.js +61 -79
  345. package/dist/utils/holders-maker/addresses.d.ts +12 -0
  346. package/dist/utils/holders-maker/addresses.js +15 -0
  347. package/dist/utils/holders-maker/buy-tx.d.ts +44 -0
  348. package/dist/utils/holders-maker/buy-tx.js +278 -0
  349. package/dist/utils/holders-maker/constants.d.ts +6 -0
  350. package/dist/utils/holders-maker/constants.js +7 -0
  351. package/dist/utils/holders-maker/disperse.d.ts +18 -0
  352. package/dist/utils/holders-maker/disperse.js +90 -0
  353. package/dist/utils/holders-maker/routing.d.ts +4 -0
  354. package/dist/utils/holders-maker/routing.js +45 -0
  355. package/dist/utils/holders-maker/transfer-tx.d.ts +4 -0
  356. package/dist/utils/holders-maker/transfer-tx.js +67 -0
  357. package/dist/utils/holders-maker-helpers.d.ts +9 -0
  358. package/dist/utils/holders-maker-helpers.js +9 -0
  359. package/dist/utils/holders-maker.d.ts +2 -138
  360. package/dist/utils/holders-maker.js +23 -651
  361. package/dist/utils/hop-chains.d.ts +35 -0
  362. package/dist/utils/hop-chains.js +215 -0
  363. package/dist/utils/lp-inspect-helpers.d.ts +9 -0
  364. package/dist/utils/lp-inspect-helpers.js +109 -0
  365. package/dist/utils/lp-inspect.d.ts +2 -112
  366. package/dist/utils/lp-inspect.js +63 -195
  367. package/dist/utils/mpcExclusive.d.ts +2 -5
  368. package/dist/utils/mpcExclusive.js +4 -3
  369. package/dist/utils/private-sale.d.ts +2 -58
  370. package/dist/utils/private-sale.js +2 -7
  371. package/dist/utils/provider-factory.d.ts +4 -0
  372. package/dist/utils/provider-factory.js +10 -0
  373. package/dist/utils/quote-helpers.d.ts +4 -45
  374. package/dist/utils/quote-helpers.js +15 -65
  375. package/dist/utils/stealth-transfer.d.ts +2 -28
  376. package/dist/utils/stealth-transfer.js +30 -14
  377. package/dist/utils/swap-helpers.d.ts +0 -3
  378. package/dist/utils/swap-helpers.js +6 -9
  379. package/dist/utils/types/airdrop-sweep.d.ts +1 -0
  380. package/dist/utils/types/airdrop-sweep.js +1 -0
  381. package/dist/utils/types/contract-factory.d.ts +1 -0
  382. package/dist/utils/types/contract-factory.js +1 -0
  383. package/dist/utils/types/erc20.d.ts +1 -0
  384. package/dist/utils/types/erc20.js +1 -0
  385. package/dist/utils/types/errors.d.ts +1 -0
  386. package/dist/utils/types/errors.js +1 -0
  387. package/dist/utils/types/holders-maker.d.ts +1 -0
  388. package/dist/utils/types/holders-maker.js +1 -0
  389. package/dist/utils/types/hop-chains.d.ts +8 -0
  390. package/dist/utils/types/hop-chains.js +1 -0
  391. package/dist/utils/types/index.d.ts +13 -0
  392. package/dist/utils/types/index.js +1 -0
  393. package/dist/utils/types/lp-inspect.d.ts +1 -0
  394. package/dist/utils/types/lp-inspect.js +1 -0
  395. package/dist/utils/types/mpc-exclusive.d.ts +5 -0
  396. package/dist/utils/types/mpc-exclusive.js +1 -0
  397. package/dist/utils/types/private-sale.d.ts +1 -0
  398. package/dist/utils/types/private-sale.js +1 -0
  399. package/dist/utils/types/quote-helpers.d.ts +1 -0
  400. package/dist/utils/types/quote-helpers.js +1 -0
  401. package/dist/utils/types/stealth-transfer.d.ts +44 -0
  402. package/dist/utils/types/stealth-transfer.js +1 -0
  403. package/dist/utils/types/wallet.d.ts +25 -0
  404. package/dist/utils/types/wallet.js +1 -0
  405. package/dist/utils/wallet.d.ts +2 -25
  406. package/dist/utils/wallet.js +9 -10
  407. package/package.json +120 -2
  408. package/src/abis/contracts/TaxToken.json +969 -0
  409. package/src/abis/contracts/TokenManager.json +836 -0
  410. package/src/abis/contracts/TokenManager2.json +136 -0
  411. package/src/abis/contracts/TokenManagerHelper3.json +993 -0
  412. package/dist/chains/bsc/four/submit/blockrazor.d.ts +0 -18
  413. package/dist/chains/bsc/four/submit/blockrazor.js +0 -86
  414. package/dist/chains/bsc/four/submit/direct.d.ts +0 -66
  415. package/dist/chains/bsc/four/submit/direct.js +0 -452
  416. package/dist/chains/bsc/four/submit/helpers.d.ts +0 -18
  417. package/dist/chains/bsc/four/submit/helpers.js +0 -57
  418. package/dist/chains/bsc/four/submit/index.d.ts +0 -12
  419. package/dist/chains/bsc/four/submit/index.js +0 -11
  420. package/dist/chains/bsc/four/submit/merkle.d.ts +0 -18
  421. package/dist/chains/bsc/four/submit/merkle.js +0 -74
  422. package/dist/chains/bsc/four/submit/types.d.ts +0 -143
  423. package/dist/chains/bsc/four/swap/index.d.ts +0 -32
  424. package/dist/chains/bsc/four/swap/types.d.ts +0 -70
  425. package/dist/chains/bsc/four/utils/index.d.ts +0 -20
  426. package/dist/chains/bsc/four/utils/index.js +0 -1558
  427. package/dist/chains/bsc/pancake/bundle-buy-first/index.d.ts +0 -8
  428. package/dist/chains/bsc/pancake/bundle-buy-first/index.js +0 -907
  429. package/dist/chains/bsc/pancake/bundle-buy-first/types.d.ts +0 -73
  430. package/dist/chains/bsc/pancake/bundle-swap/helpers.d.ts +0 -102
  431. package/dist/chains/bsc/pancake/bundle-swap/index.d.ts +0 -50
  432. package/dist/chains/bsc/pancake/bundle-swap/index.js +0 -1066
  433. package/dist/chains/bsc/pancake/bundle-swap/types.d.ts +0 -202
  434. package/dist/chains/bsc/pancake/bundle-swap/types.js +0 -3
  435. package/dist/chains/xlayer/eip7702/bundle-swap/index.d.ts +0 -72
  436. package/dist/chains/xlayer/eip7702/bundle-swap/index.js +0 -921
  437. package/dist/chains/xlayer/eip7702/bundle-swap/types.d.ts +0 -65
  438. package/dist/chains/xlayer/eip7702/multi-hop-transfer/index.d.ts +0 -128
  439. package/dist/chains/xlayer/eip7702/multi-hop-transfer/index.js +0 -857
  440. package/dist/chains/xlayer/eip7702/volume/index.d.ts +0 -96
  441. package/dist/chains/xlayer/eip7702/volume/index.js +0 -793
  442. package/dist/dex/direct-router/index.d.ts +0 -70
  443. package/dist/dex/direct-router/index.js +0 -1410
  444. package/dist/shared/abis/TaxToken.json +0 -969
  445. package/dist/shared/abis/TokenManager.json +0 -836
  446. package/dist/shared/abis/TokenManager2.json +0 -136
  447. package/dist/shared/abis/TokenManagerHelper3.json +0 -993
  448. package/dist/shared/flap/__tests__/curve.test.js +0 -85
  449. package/dist/shared/flap/portal/index.d.ts +0 -12
  450. package/dist/shared/flap/portal/index.js +0 -11
  451. package/dist/shared/flap/portal/portal.d.ts +0 -47
  452. package/dist/shared/flap/portal/portal.js +0 -218
  453. package/dist/shared/flap/portal/types.d.ts +0 -227
  454. package/dist/shared/flap/portal/types.js +0 -80
  455. package/dist/shared/flap/portal/writer.d.ts +0 -121
  456. package/dist/shared/flap/portal/writer.js +0 -265
  457. package/dist/shared/flap/portal-bundle-merkle/core/index.d.ts +0 -18
  458. package/dist/shared/flap/portal-bundle-merkle/core/index.js +0 -938
  459. package/dist/shared/flap/portal-bundle-merkle/swap/index.d.ts +0 -42
  460. package/dist/shared/flap/portal-bundle-merkle/swap/index.js +0 -1448
  461. package/dist/shared/flap/portal-bundle-merkle/swap/types.d.ts +0 -84
  462. package/dist/shared/flap/portal-bundle-merkle/utils/index.d.ts +0 -17
  463. package/dist/shared/flap/portal-bundle-merkle/utils/index.js +0 -1024
  464. package/dist/shared/flap/portal-bundle-merkle/utils/types.d.ts +0 -16
  465. package/dist/shared 2/abis/TaxToken.json +0 -105
  466. package/dist/shared 2/abis/TokenManager.json +0 -836
  467. package/dist/shared 2/abis/TokenManager2.json +0 -60
  468. package/dist/shared 2/abis/TokenManagerHelper3.json +0 -993
  469. package/dist/shared 2/abis/common.d.ts +0 -85
  470. package/dist/shared 2/abis/common.js +0 -254
  471. package/dist/shared 2/abis/index.d.ts +0 -8
  472. package/dist/shared 2/abis/index.js +0 -8
  473. package/dist/shared 2/clients/blockrazor.d.ts +0 -314
  474. package/dist/shared 2/clients/blockrazor.js +0 -596
  475. package/dist/shared 2/clients/club48.d.ts +0 -154
  476. package/dist/shared 2/clients/club48.js +0 -331
  477. package/dist/shared 2/clients/emitservice.d.ts +0 -47
  478. package/dist/shared 2/clients/emitservice.js +0 -44
  479. package/dist/shared 2/clients/four.d.ts +0 -132
  480. package/dist/shared 2/clients/four.js +0 -281
  481. package/dist/shared 2/clients/merkle.d.ts +0 -210
  482. package/dist/shared 2/clients/merkle.js +0 -400
  483. package/dist/shared 2/flap/__tests__/curve.test.js +0 -85
  484. package/dist/shared 2/flap/abi.d.ts +0 -4
  485. package/dist/shared 2/flap/abi.js +0 -4
  486. package/dist/shared 2/flap/constants.d.ts +0 -128
  487. package/dist/shared 2/flap/constants.js +0 -143
  488. package/dist/shared 2/flap/curve.d.ts +0 -33
  489. package/dist/shared 2/flap/curve.js +0 -84
  490. package/dist/shared 2/flap/errors.d.ts +0 -37
  491. package/dist/shared 2/flap/errors.js +0 -114
  492. package/dist/shared 2/flap/index.d.ts +0 -22
  493. package/dist/shared 2/flap/index.js +0 -33
  494. package/dist/shared 2/flap/ipfs.d.ts +0 -21
  495. package/dist/shared 2/flap/ipfs.js +0 -38
  496. package/dist/shared 2/flap/meta.d.ts +0 -30
  497. package/dist/shared 2/flap/meta.js +0 -195
  498. package/dist/shared 2/flap/permit.d.ts +0 -16
  499. package/dist/shared 2/flap/permit.js +0 -67
  500. package/dist/shared 2/flap/pinata.d.ts +0 -40
  501. package/dist/shared 2/flap/pinata.js +0 -106
  502. package/dist/shared 2/flap/portal-bundle-merkle/config.d.ts +0 -79
  503. package/dist/shared 2/flap/portal-bundle-merkle/config.js +0 -133
  504. package/dist/shared 2/flap/portal-bundle-merkle/core.d.ts +0 -18
  505. package/dist/shared 2/flap/portal-bundle-merkle/core.js +0 -938
  506. package/dist/shared 2/flap/portal-bundle-merkle/create-to-dex.d.ts +0 -125
  507. package/dist/shared 2/flap/portal-bundle-merkle/create-to-dex.js +0 -665
  508. package/dist/shared 2/flap/portal-bundle-merkle/curve-to-dex.d.ts +0 -88
  509. package/dist/shared 2/flap/portal-bundle-merkle/curve-to-dex.js +0 -446
  510. package/dist/shared 2/flap/portal-bundle-merkle/index.d.ts +0 -14
  511. package/dist/shared 2/flap/portal-bundle-merkle/index.js +0 -26
  512. package/dist/shared 2/flap/portal-bundle-merkle/pancake-proxy.d.ts +0 -28
  513. package/dist/shared 2/flap/portal-bundle-merkle/private.d.ts +0 -17
  514. package/dist/shared 2/flap/portal-bundle-merkle/private.js +0 -549
  515. package/dist/shared 2/flap/portal-bundle-merkle/swap-buy-first.d.ts +0 -65
  516. package/dist/shared 2/flap/portal-bundle-merkle/swap-buy-first.js +0 -831
  517. package/dist/shared 2/flap/portal-bundle-merkle/swap.d.ts +0 -201
  518. package/dist/shared 2/flap/portal-bundle-merkle/swap.js +0 -1359
  519. package/dist/shared 2/flap/portal-bundle-merkle/types.d.ts +0 -358
  520. package/dist/shared 2/flap/portal-bundle-merkle/utils.d.ts +0 -89
  521. package/dist/shared 2/flap/portal-bundle-merkle/utils.js +0 -963
  522. package/dist/shared 2/flap/portal-bundle.d.ts +0 -119
  523. package/dist/shared 2/flap/portal-bundle.js +0 -584
  524. package/dist/shared 2/flap/portal.d.ts +0 -392
  525. package/dist/shared 2/flap/portal.js +0 -559
  526. package/dist/shared 2/flap/vanity.d.ts +0 -48
  527. package/dist/shared 2/flap/vanity.js +0 -110
  528. package/dist/shared 2/flap/vault.d.ts +0 -240
  529. package/dist/shared 2/flap/vault.js +0 -366
  530. package/dist/shared 2/four/index.d.ts +0 -7
  531. package/dist/shared 2/four/index.js +0 -22
  532. package/dist/shared 2/four/tax-token.d.ts +0 -176
  533. package/dist/shared 2/four/tax-token.js +0 -302
  534. package/dist/shared 2/index.d.ts +0 -10
  535. package/dist/shared 2/index.js +0 -10
  536. package/dist/utils/__tests__/errors.test.js +0 -76
  537. package/dist/utils/erc20/index.d.ts +0 -242
  538. package/dist/utils/erc20/index.js +0 -645
  539. package/dist/utils/holders-maker/helpers.d.ts +0 -43
  540. package/dist/utils/holders-maker/helpers.js +0 -371
  541. package/dist/utils/holders-maker/index.d.ts +0 -26
  542. package/dist/utils/holders-maker/index.js +0 -218
  543. package/dist/utils/holders-maker/types.js +0 -4
  544. package/dist/utils/lp-inspect/index.d.ts +0 -44
  545. package/dist/utils/lp-inspect/index.js +0 -937
  546. package/dist/utils/quote-helpers/index.d.ts +0 -107
  547. package/dist/utils/quote-helpers/index.js +0 -346
  548. /package/dist/{chains/bsc/four/submit/types.js → __tests__/subpath-exports.test.d.ts} +0 -0
  549. /package/dist/{chains/bsc/four/swap/types.js → bundle-core/__tests__/config-helpers.test.d.ts} +0 -0
  550. /package/dist/{chains/bsc/four/utils/types.d.ts → bundle-core/__tests__/facade-parity.test.d.ts} +0 -0
  551. /package/dist/{chains/bsc/four/utils/types.js → bundle-core/__tests__/sign-context-helpers.test.d.ts} +0 -0
  552. /package/dist/{chains/bsc/pancake/bundle-buy-first/types.js → bundle-core/__tests__/sign-fixture.test.d.ts} +0 -0
  553. /package/dist/{chains/xlayer/eip7702/multi-hop-transfer/types.js → bundle-core/four-meme/types/buy-first.js} +0 -0
  554. /package/dist/{chains/xlayer/eip7702/volume/types.js → bundle-core/four-meme/types/core-flow.js} +0 -0
  555. /package/dist/{dex/direct-router/types.js → bundle-core/four-meme/types/index.js} +0 -0
  556. /package/dist/{shared 2/flap/__tests__/curve.test.d.ts → bundle-core/four-meme/types/swap-internal.js} +0 -0
  557. /package/dist/{chains/xlayer/eip7702/bundle-swap → bundle-core/four-meme}/types.js +0 -0
  558. /package/dist/{shared/flap/__tests__/curve.test.d.ts → bundle-core/types/index.js} +0 -0
  559. /package/dist/{shared 2/flap/portal-bundle-merkle → bundle-core}/types.js +0 -0
  560. /package/dist/{shared/flap/portal-bundle-merkle/core/types.d.ts → chains/xlayer/eip7702/multi-hop-transfer-helpers.js} +0 -0
  561. /package/dist/{shared/flap/portal-bundle-merkle/core → dex}/types.js +0 -0
  562. /package/dist/shared/{flap/portal-bundle-merkle/swap/types.js → foundation/tx/wallet-sign-patch.d.ts} +0 -0
  563. /package/dist/shared/{flap/portal-bundle-merkle/utils/types.js → foundation/types/airdrop-sweep.js} +0 -0
  564. /package/dist/{utils/__tests__/errors.test.d.ts → shared/foundation/types/erc20.js} +0 -0
  565. /package/dist/{utils/erc20/types.js → shared/foundation/types/holders-maker.js} +0 -0
  566. /package/dist/{utils/lp-inspect/types.js → shared/foundation/types/index.js} +0 -0
  567. /package/dist/{utils/quote-helpers/types.js → shared/foundation/types/lp-inspect.js} +0 -0
@@ -0,0 +1,39 @@
1
+ import { JsonRpcProvider, type TransactionRequest } from 'ethers';
2
+ export interface GasPriceConfig {
3
+ baseGasPrice?: bigint;
4
+ multiplierPercent?: number;
5
+ minGasPrice?: bigint;
6
+ maxGasPrice?: bigint;
7
+ }
8
+ export declare function getOptimizedGasPrice(provider: JsonRpcProvider, config?: GasPriceConfig): Promise<bigint>;
9
+ export interface GasEstimateConfig {
10
+ multiplier?: number;
11
+ fallbackGasLimit?: bigint;
12
+ allowFailure?: boolean;
13
+ }
14
+ export declare function estimateGasWithSafety(provider: JsonRpcProvider, txRequest: TransactionRequest, config?: GasEstimateConfig): Promise<bigint>;
15
+ export declare function estimateGasBatch(provider: JsonRpcProvider, txRequests: TransactionRequest[], config?: GasEstimateConfig): Promise<bigint[]>;
16
+ export interface BuildTransactionOptions {
17
+ from: string;
18
+ to?: string;
19
+ data?: string;
20
+ value?: bigint;
21
+ nonce: number;
22
+ gasPrice: bigint;
23
+ gasLimit: bigint;
24
+ chainId: number;
25
+ type?: 0 | 2;
26
+ }
27
+ export declare function buildTransaction(options: BuildTransactionOptions): TransactionRequest;
28
+ export interface CommonBundleConfig {
29
+ gasLimit?: number;
30
+ gasLimitMultiplier?: number;
31
+ minGasPriceGwei?: number;
32
+ maxGasPriceGwei?: number;
33
+ txType?: 0 | 2;
34
+ chainId?: number;
35
+ }
36
+ export declare function getGasLimit(config: CommonBundleConfig, defaultGas?: number): bigint;
37
+ export declare function getGasPriceConfig(config: CommonBundleConfig): GasPriceConfig;
38
+ export declare function getTxType(config: CommonBundleConfig): 0 | 2;
39
+ export declare function buildGasFields(txType: number, gasPrice: bigint): Record<string, unknown>;
@@ -0,0 +1,93 @@
1
+ import { ethers } from 'ethers';
2
+ export async function getOptimizedGasPrice(provider, config) {
3
+ const feeData = await provider.getFeeData();
4
+ const chainGasPrice = feeData.gasPrice || ethers.parseUnits('3', 'gwei');
5
+ let gasPrice;
6
+ if (config?.baseGasPrice) {
7
+ gasPrice = config.baseGasPrice;
8
+ }
9
+ else {
10
+ gasPrice = chainGasPrice;
11
+ }
12
+ const multiplier = config?.multiplierPercent ?? 50;
13
+ gasPrice = (gasPrice * BigInt(100 + multiplier)) / 100n;
14
+ if (gasPrice < chainGasPrice) {
15
+ gasPrice = chainGasPrice;
16
+ }
17
+ if (config?.minGasPrice && gasPrice < config.minGasPrice) {
18
+ gasPrice = config.minGasPrice;
19
+ }
20
+ if (config?.maxGasPrice && gasPrice > config.maxGasPrice) {
21
+ gasPrice = config.maxGasPrice;
22
+ }
23
+ return gasPrice;
24
+ }
25
+ export async function estimateGasWithSafety(provider, txRequest, config) {
26
+ const multiplier = config?.multiplier ?? 1.2;
27
+ const fallback = config?.fallbackGasLimit ?? 600000n;
28
+ const allowFailure = config?.allowFailure ?? true;
29
+ try {
30
+ const estimated = await provider.estimateGas(txRequest);
31
+ return BigInt(Math.ceil(Number(estimated) * multiplier));
32
+ }
33
+ catch (error) {
34
+ if (!allowFailure) {
35
+ throw error;
36
+ }
37
+ return fallback;
38
+ }
39
+ }
40
+ export async function estimateGasBatch(provider, txRequests, config) {
41
+ return Promise.all(txRequests.map((req) => estimateGasWithSafety(provider, req, config)));
42
+ }
43
+ export function buildTransaction(options) {
44
+ const tx = {
45
+ from: options.from,
46
+ nonce: options.nonce,
47
+ gasLimit: options.gasLimit,
48
+ chainId: options.chainId,
49
+ };
50
+ if (options.to)
51
+ tx.to = options.to;
52
+ if (options.data)
53
+ tx.data = options.data;
54
+ if (options.value)
55
+ tx.value = options.value;
56
+ if (options.type === 2) {
57
+ tx.type = 2;
58
+ tx.maxFeePerGas = options.gasPrice;
59
+ tx.maxPriorityFeePerGas = options.gasPrice / 10n;
60
+ }
61
+ else {
62
+ tx.type = 0;
63
+ tx.gasPrice = options.gasPrice;
64
+ }
65
+ return tx;
66
+ }
67
+ export function getGasLimit(config, defaultGas = 500000) {
68
+ if (config.gasLimit !== undefined) {
69
+ return typeof config.gasLimit === 'bigint' ? config.gasLimit : BigInt(config.gasLimit);
70
+ }
71
+ const multiplier = config.gasLimitMultiplier ?? 1.0;
72
+ return BigInt(Math.ceil(defaultGas * multiplier));
73
+ }
74
+ export function getGasPriceConfig(config) {
75
+ const gasPriceConfig = {};
76
+ if (config.minGasPriceGwei !== undefined) {
77
+ gasPriceConfig.baseGasPrice = ethers.parseUnits(String(config.minGasPriceGwei), 'gwei');
78
+ gasPriceConfig.multiplierPercent = 0;
79
+ }
80
+ if (config.maxGasPriceGwei !== undefined) {
81
+ gasPriceConfig.maxGasPrice = ethers.parseUnits(String(config.maxGasPriceGwei), 'gwei');
82
+ }
83
+ return gasPriceConfig;
84
+ }
85
+ export function getTxType(config) {
86
+ return config.txType ?? 0;
87
+ }
88
+ export function buildGasFields(txType, gasPrice) {
89
+ if (txType === 2) {
90
+ return { type: 2, maxFeePerGas: gasPrice, maxPriorityFeePerGas: gasPrice / 10n || 1n };
91
+ }
92
+ return { type: 0, gasPrice };
93
+ }
@@ -0,0 +1,20 @@
1
+ import { JsonRpcProvider, Wallet } from 'ethers';
2
+ import { type GeneratedWallet } from '../../../utils/wallet.js';
3
+ export interface ProfitHopConfig {
4
+ provider: JsonRpcProvider;
5
+ payerWallet: Wallet;
6
+ profitAmount: bigint;
7
+ profitRecipient: string;
8
+ hopCount?: number;
9
+ gasPrice: bigint;
10
+ chainId: number;
11
+ txType: number;
12
+ startNonce?: number;
13
+ }
14
+ export interface ProfitHopResult {
15
+ signedTransactions: string[];
16
+ hopWallets: GeneratedWallet[];
17
+ totalNonceUsed: number;
18
+ }
19
+ export declare const PROFIT_HOP_COUNT = 2;
20
+ export declare function buildProfitHopTransactions(config: ProfitHopConfig): Promise<ProfitHopResult>;
@@ -0,0 +1,72 @@
1
+ import { Wallet } from 'ethers';
2
+ import { generateWallets } from '../../../utils/wallet.js';
3
+ import { GAS_LIMITS, CHAINS } from '../../constants/index.js';
4
+ import { NonceManager } from '../nonce/nonce-manager.js';
5
+ import { buildGasFields } from './bundle-gas.js';
6
+ export const PROFIT_HOP_COUNT = 2;
7
+ const CHAINS_REQUIRE_HOP = [CHAINS.BSC.chainId];
8
+ export async function buildProfitHopTransactions(config) {
9
+ const { provider, payerWallet, profitAmount, profitRecipient, hopCount = PROFIT_HOP_COUNT, gasPrice, chainId, txType, startNonce, } = config;
10
+ if (profitAmount <= 0n) {
11
+ return { signedTransactions: [], hopWallets: [], totalNonceUsed: 0 };
12
+ }
13
+ const nativeTransferGasLimit = GAS_LIMITS.NATIVE_TRANSFER;
14
+ const signedTxs = [];
15
+ const nonceManager = new NonceManager(provider);
16
+ const payerNonce = startNonce ?? (await nonceManager.getNextNonce(payerWallet));
17
+ const needHop = CHAINS_REQUIRE_HOP.includes(chainId);
18
+ const gasFields = buildGasFields(txType, gasPrice);
19
+ if (!needHop) {
20
+ const directTx = await payerWallet.signTransaction({
21
+ to: profitRecipient,
22
+ value: profitAmount,
23
+ nonce: payerNonce,
24
+ gasLimit: nativeTransferGasLimit,
25
+ chainId,
26
+ ...gasFields,
27
+ });
28
+ signedTxs.push(directTx);
29
+ return { signedTransactions: signedTxs, hopWallets: [], totalNonceUsed: 1 };
30
+ }
31
+ const gasFeePerHop = nativeTransferGasLimit * gasPrice;
32
+ const hopWalletsInfo = generateWallets(hopCount);
33
+ const hopWallets = hopWalletsInfo.map((w) => new Wallet(w.privateKey, provider));
34
+ const hopAmounts = [];
35
+ for (let i = hopCount - 1; i >= 0; i--) {
36
+ if (i === hopCount - 1) {
37
+ hopAmounts.unshift(profitAmount + gasFeePerHop);
38
+ }
39
+ else {
40
+ hopAmounts.unshift(hopAmounts[0] + gasFeePerHop);
41
+ }
42
+ }
43
+ const payerTx = await payerWallet.signTransaction({
44
+ to: hopWallets[0].address,
45
+ value: hopAmounts[0],
46
+ nonce: payerNonce,
47
+ gasLimit: nativeTransferGasLimit,
48
+ chainId,
49
+ ...gasFields,
50
+ });
51
+ signedTxs.push(payerTx);
52
+ for (let i = 0; i < hopCount; i++) {
53
+ const fromWallet = hopWallets[i];
54
+ const isLastHop = i === hopCount - 1;
55
+ const toAddress = isLastHop ? profitRecipient : hopWallets[i + 1].address;
56
+ const value = isLastHop ? profitAmount : hopAmounts[i + 1];
57
+ const hopTx = await fromWallet.signTransaction({
58
+ to: toAddress,
59
+ value,
60
+ nonce: 0,
61
+ gasLimit: nativeTransferGasLimit,
62
+ chainId,
63
+ ...gasFields,
64
+ });
65
+ signedTxs.push(hopTx);
66
+ }
67
+ return {
68
+ signedTransactions: signedTxs,
69
+ hopWallets: hopWalletsInfo,
70
+ totalNonceUsed: 1,
71
+ };
72
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * SDK 横向基础(错误规范化、可选日志、共享类型与 Tx 构建)。
3
+ * 新代码优先从这里收口 unknown / Logger / 复用类型;存量代码可渐进迁移。
4
+ */
5
+ export { getErrorMessageFromUnknown, normalizeUnknownError, type NormalizedErrorShape } from './normalize-unknown.js';
6
+ export { noopSdkLogger, consoleSdkLogger, type SdkLogger } from './sdk-logger.js';
7
+ export type { Aggregate3CallResult, EnsureAllowanceResult, EnsureAllowanceBatchItemResult, ApproveTokenBatchParams, ApproveTokenBatchRawParams, ApproveTokenBatchResult, ApproveTokenBatchSignResult, HoldersMakerChain, HoldersMakerTradeType, BaseTokenType, HoldersMakerConfig, HoldersMakerParams, TransactionLayer, BatchResult, HoldersMakerResult, DexConfig, ChainDexConfig, PoolPairInfo, V3PoolInfo, DexPoolInfo, BestPoolInfo, LPPlatform, LPInfo, InspectOptions, BundleSubmitResult, SignedTransactionsResult, AirdropDisperseParams, AirdropDisperseSignParams, AirdropSweepParams, AirdropSweepSignParams, DisperseParams, DisperseSignParams, SweepParams, SweepSignParams, PrivateSaleSignConfig, PrivateSaleTransferParams, BatchPrivateSaleParams, PrivateSaleResult, SupportedChain, QuoteParams, QuoteResult, } from './types/index.js';
8
+ export { buildTransactionRequest, type BuildTxRequestParams } from './tx/build-request.js';
9
+ export { NonceManager } from './nonce/nonce-manager.js';
10
+ export { type GasPriceConfig, type GasEstimateConfig, type BuildTransactionOptions, type CommonBundleConfig, getOptimizedGasPrice, estimateGasWithSafety, estimateGasBatch, buildTransaction, getGasLimit, getGasPriceConfig, getTxType, buildGasFields, } from './gas/bundle-gas.js';
11
+ export { type ProfitHopConfig, type ProfitHopResult, PROFIT_HOP_COUNT, buildProfitHopTransactions, } from './gas/profit-hop.js';
12
+ export { getChainId, signTransactionsBatch, signTransactionsBatchMultiWallet, validateSignedTransactions, } from './tx/sign-batch.js';
13
+ export { getDeadline, encodeV3Path, decodeV3Path } from './dex/v3-path.js';
@@ -0,0 +1,12 @@
1
+ /**
2
+ * SDK 横向基础(错误规范化、可选日志、共享类型与 Tx 构建)。
3
+ * 新代码优先从这里收口 unknown / Logger / 复用类型;存量代码可渐进迁移。
4
+ */
5
+ export { getErrorMessageFromUnknown, normalizeUnknownError } from './normalize-unknown.js';
6
+ export { noopSdkLogger, consoleSdkLogger } from './sdk-logger.js';
7
+ export { buildTransactionRequest } from './tx/build-request.js';
8
+ export { NonceManager } from './nonce/nonce-manager.js';
9
+ export { getOptimizedGasPrice, estimateGasWithSafety, estimateGasBatch, buildTransaction, getGasLimit, getGasPriceConfig, getTxType, buildGasFields, } from './gas/bundle-gas.js';
10
+ export { PROFIT_HOP_COUNT, buildProfitHopTransactions, } from './gas/profit-hop.js';
11
+ export { getChainId, signTransactionsBatch, signTransactionsBatchMultiWallet, validateSignedTransactions, } from './tx/sign-batch.js';
12
+ export { getDeadline, encodeV3Path, decodeV3Path } from './dex/v3-path.js';
@@ -0,0 +1,17 @@
1
+ import '../tx/wallet-sign-patch.js';
2
+ import { JsonRpcProvider, Wallet } from 'ethers';
3
+ /**
4
+ * Nonce 管理器 — bundle 交易中管理多钱包 nonce
5
+ */
6
+ export declare class NonceManager {
7
+ private provider;
8
+ private tempNonceCache;
9
+ private chainIdPromise?;
10
+ constructor(provider: JsonRpcProvider);
11
+ private getChainId;
12
+ getNextNonce(wallet: Wallet | string): Promise<number>;
13
+ getNextNonceBatch(wallet: Wallet | string, count: number): Promise<number[]>;
14
+ clearTemp(): void;
15
+ getTempCachedNonce(address: string): number | undefined;
16
+ getNextNoncesForWallets(wallets: (Wallet | string)[]): Promise<number[]>;
17
+ }
@@ -0,0 +1,180 @@
1
+ import '../tx/wallet-sign-patch.js';
2
+ import { CHAINS } from '../../constants/index.js';
3
+ const GLOBAL_NONCE_TTL_MS = 60 * 1000;
4
+ const globalNonceCursorByChain = new Map();
5
+ function isFlakyNonceChain(chainId) {
6
+ return Number(chainId) === CHAINS.XLAYER.chainId;
7
+ }
8
+ function getCursorMap(chainId) {
9
+ let m = globalNonceCursorByChain.get(chainId);
10
+ if (!m) {
11
+ m = new Map();
12
+ globalNonceCursorByChain.set(chainId, m);
13
+ }
14
+ return m;
15
+ }
16
+ function getGlobalNextNonce(chainId, addrLower) {
17
+ const m = globalNonceCursorByChain.get(chainId);
18
+ if (!m)
19
+ return undefined;
20
+ const e = m.get(addrLower);
21
+ if (!e)
22
+ return undefined;
23
+ if (Date.now() - e.updatedAt > GLOBAL_NONCE_TTL_MS) {
24
+ m.delete(addrLower);
25
+ return undefined;
26
+ }
27
+ return e.nextNonce;
28
+ }
29
+ function setGlobalNextNonce(chainId, addrLower, nextNonce) {
30
+ const m = getCursorMap(chainId);
31
+ const cur = m.get(addrLower);
32
+ const next = Number(nextNonce);
33
+ if (!Number.isFinite(next) || next < 0)
34
+ return;
35
+ if (!cur || next > cur.nextNonce || Date.now() - cur.updatedAt > GLOBAL_NONCE_TTL_MS) {
36
+ m.set(addrLower, { nextNonce: next, updatedAt: Date.now() });
37
+ }
38
+ else {
39
+ cur.updatedAt = Date.now();
40
+ }
41
+ }
42
+ /**
43
+ * Nonce 管理器 — bundle 交易中管理多钱包 nonce
44
+ */
45
+ export class NonceManager {
46
+ provider;
47
+ tempNonceCache = new Map();
48
+ chainIdPromise;
49
+ constructor(provider) {
50
+ this.provider = provider;
51
+ }
52
+ async getChainId() {
53
+ if (!this.chainIdPromise) {
54
+ this.chainIdPromise = this.provider
55
+ .getNetwork()
56
+ .then((n) => Number(n.chainId))
57
+ .catch(() => 0);
58
+ }
59
+ return this.chainIdPromise;
60
+ }
61
+ async getNextNonce(wallet) {
62
+ const address = typeof wallet === 'string' ? wallet : wallet.address;
63
+ const key = address.toLowerCase();
64
+ const chainId = await this.getChainId();
65
+ const flaky = isFlakyNonceChain(chainId);
66
+ if (this.tempNonceCache.has(key)) {
67
+ const cachedNonce = this.tempNonceCache.get(key);
68
+ this.tempNonceCache.set(key, cachedNonce + 1);
69
+ if (flaky)
70
+ setGlobalNextNonce(chainId, key, cachedNonce + 1);
71
+ return cachedNonce;
72
+ }
73
+ const onchainNonce = await this.provider.getTransactionCount(address, 'pending');
74
+ let effectiveNonce = onchainNonce;
75
+ if (flaky) {
76
+ const globalNext = getGlobalNextNonce(chainId, key);
77
+ if (globalNext !== undefined) {
78
+ const delta = globalNext - onchainNonce;
79
+ if (delta > 0 && delta <= 10) {
80
+ effectiveNonce = globalNext;
81
+ }
82
+ }
83
+ setGlobalNextNonce(chainId, key, effectiveNonce + 1);
84
+ }
85
+ this.tempNonceCache.set(key, effectiveNonce + 1);
86
+ return effectiveNonce;
87
+ }
88
+ async getNextNonceBatch(wallet, count) {
89
+ const address = typeof wallet === 'string' ? wallet : wallet.address;
90
+ const key = address.toLowerCase();
91
+ const chainId = await this.getChainId();
92
+ const flaky = isFlakyNonceChain(chainId);
93
+ let startNonce;
94
+ if (this.tempNonceCache.has(key)) {
95
+ startNonce = this.tempNonceCache.get(key);
96
+ }
97
+ else {
98
+ startNonce = await this.provider.getTransactionCount(address, 'pending');
99
+ }
100
+ if (flaky) {
101
+ const globalNext = getGlobalNextNonce(chainId, key);
102
+ if (globalNext !== undefined) {
103
+ const delta = globalNext - startNonce;
104
+ if (delta > 0 && delta <= 10)
105
+ startNonce = globalNext;
106
+ }
107
+ }
108
+ this.tempNonceCache.set(key, startNonce + count);
109
+ if (flaky)
110
+ setGlobalNextNonce(chainId, key, startNonce + count);
111
+ return Array.from({ length: count }, (_, i) => startNonce + i);
112
+ }
113
+ clearTemp() {
114
+ this.tempNonceCache.clear();
115
+ }
116
+ getTempCachedNonce(address) {
117
+ return this.tempNonceCache.get(address.toLowerCase());
118
+ }
119
+ async getNextNoncesForWallets(wallets) {
120
+ const addresses = wallets.map((w) => (typeof w === 'string' ? w : w.address));
121
+ const keys = addresses.map((a) => a.toLowerCase());
122
+ const chainId = await this.getChainId();
123
+ const flaky = isFlakyNonceChain(chainId);
124
+ const needQuery = [];
125
+ const results = new Array(wallets.length);
126
+ for (let i = 0; i < keys.length; i++) {
127
+ const key = keys[i];
128
+ if (this.tempNonceCache.has(key)) {
129
+ const cachedNonce = this.tempNonceCache.get(key);
130
+ results[i] = cachedNonce;
131
+ this.tempNonceCache.set(key, cachedNonce + 1);
132
+ if (flaky)
133
+ setGlobalNextNonce(chainId, key, cachedNonce + 1);
134
+ }
135
+ else {
136
+ needQuery.push({ index: i, address: addresses[i] });
137
+ }
138
+ }
139
+ if (needQuery.length > 0) {
140
+ let queryResults;
141
+ try {
142
+ const batchRequests = needQuery.map(({ address }, idx) => ({
143
+ method: 'eth_getTransactionCount',
144
+ params: [address, 'pending'],
145
+ id: idx + 1,
146
+ jsonrpc: '2.0',
147
+ }));
148
+ const rawResults = await this.provider._send(batchRequests);
149
+ queryResults = rawResults.map((r) => {
150
+ if (r.result) {
151
+ return parseInt(r.result, 16);
152
+ }
153
+ return 0;
154
+ });
155
+ }
156
+ catch {
157
+ const queryPromises = needQuery.map(({ address }) => this.provider.getTransactionCount(address, 'pending'));
158
+ queryResults = await Promise.all(queryPromises);
159
+ }
160
+ for (let i = 0; i < needQuery.length; i++) {
161
+ const { index, address } = needQuery[i];
162
+ const key = address.toLowerCase();
163
+ const onchainNonce = queryResults[i];
164
+ let effectiveNonce = onchainNonce;
165
+ if (flaky) {
166
+ const globalNext = getGlobalNextNonce(chainId, key);
167
+ if (globalNext !== undefined) {
168
+ const delta = globalNext - onchainNonce;
169
+ if (delta > 0 && delta <= 10)
170
+ effectiveNonce = globalNext;
171
+ }
172
+ setGlobalNextNonce(chainId, key, effectiveNonce + 1);
173
+ }
174
+ results[index] = effectiveNonce;
175
+ this.tempNonceCache.set(key, effectiveNonce + 1);
176
+ }
177
+ }
178
+ return results;
179
+ }
180
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * SDK 统一的 unknown / Error 收口(审计:catch 宜用 unknown + normalize)
3
+ */
4
+ export interface NormalizedErrorShape {
5
+ message: string;
6
+ cause?: unknown;
7
+ }
8
+ export declare function getErrorMessageFromUnknown(error: unknown): string;
9
+ export declare function normalizeUnknownError(error: unknown): NormalizedErrorShape;
@@ -0,0 +1,29 @@
1
+ /**
2
+ * SDK 统一的 unknown / Error 收口(审计:catch 宜用 unknown + normalize)
3
+ */
4
+ export function getErrorMessageFromUnknown(error) {
5
+ if (error instanceof Error)
6
+ return error.message;
7
+ if (typeof error === 'string')
8
+ return error;
9
+ if (error !== null && typeof error === 'object') {
10
+ const o = error;
11
+ const m = o.message;
12
+ if (typeof m === 'string')
13
+ return m;
14
+ const reason = o.reason;
15
+ if (typeof reason === 'string')
16
+ return reason;
17
+ }
18
+ try {
19
+ return String(error);
20
+ }
21
+ catch {
22
+ return 'Unknown error';
23
+ }
24
+ }
25
+ export function normalizeUnknownError(error) {
26
+ const message = getErrorMessageFromUnknown(error);
27
+ const cause = error instanceof Error && error.cause !== undefined ? error.cause : error instanceof Error ? undefined : error;
28
+ return { message, ...(cause !== undefined ? { cause } : {}) };
29
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * SDK 可选日志门面(默认静默);业务侧可传入以替代 console.*
3
+ */
4
+ export interface SdkLogger {
5
+ debug?: (msg: string, ...args: unknown[]) => void;
6
+ info?: (msg: string, ...args: unknown[]) => void;
7
+ warn?: (msg: string, ...args: unknown[]) => void;
8
+ error?: (msg: string, ...args: unknown[]) => void;
9
+ }
10
+ /** 不输出日志(库的推荐默认)。 */
11
+ export declare const noopSdkLogger: SdkLogger;
12
+ /** 直接使用 console(仅调试/过渡期)。 */
13
+ export declare const consoleSdkLogger: SdkLogger;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * SDK 可选日志门面(默认静默);业务侧可传入以替代 console.*
3
+ */
4
+ /** 不输出日志(库的推荐默认)。 */
5
+ export const noopSdkLogger = {};
6
+ /** 直接使用 console(仅调试/过渡期)。 */
7
+ export const consoleSdkLogger = {
8
+ debug: (msg, ...args) => console.debug(msg, ...args),
9
+ info: (msg, ...args) => console.info(msg, ...args),
10
+ warn: (msg, ...args) => console.warn(msg, ...args),
11
+ error: (msg, ...args) => console.error(msg, ...args),
12
+ };
@@ -0,0 +1,17 @@
1
+ import type { TransactionLike, TransactionRequest } from 'ethers';
2
+ /** 构建签名用 TransactionRequest 的公共参数 */
3
+ export type BuildTxRequestParams = {
4
+ from: string;
5
+ nonce: number;
6
+ gasLimit: bigint;
7
+ gasPrice: bigint;
8
+ priorityFee: bigint;
9
+ chainId: number;
10
+ txType: number;
11
+ value?: bigint;
12
+ };
13
+ /**
14
+ * 将 populateTransaction 结果与 gas/nonce 字段合并为可签名交易。
15
+ * type 0 (Legacy) 使用 gasPrice;type 2 (EIP-1559) 使用 maxFeePerGas + maxPriorityFeePerGas。
16
+ */
17
+ export declare function buildTransactionRequest(unsigned: TransactionLike, { from, nonce, gasLimit, gasPrice, priorityFee, chainId, txType, value }: BuildTxRequestParams): TransactionRequest;
@@ -0,0 +1,25 @@
1
+ /**
2
+ * 将 populateTransaction 结果与 gas/nonce 字段合并为可签名交易。
3
+ * type 0 (Legacy) 使用 gasPrice;type 2 (EIP-1559) 使用 maxFeePerGas + maxPriorityFeePerGas。
4
+ */
5
+ export function buildTransactionRequest(unsigned, { from, nonce, gasLimit, gasPrice, priorityFee, chainId, txType, value }) {
6
+ const tx = {
7
+ ...unsigned,
8
+ from,
9
+ nonce,
10
+ gasLimit,
11
+ chainId,
12
+ type: txType,
13
+ };
14
+ if (value !== undefined) {
15
+ tx.value = value;
16
+ }
17
+ if (txType === 2) {
18
+ tx.maxFeePerGas = gasPrice;
19
+ tx.maxPriorityFeePerGas = priorityFee;
20
+ }
21
+ else {
22
+ tx.gasPrice = gasPrice;
23
+ }
24
+ return tx;
25
+ }
@@ -0,0 +1,5 @@
1
+ import { JsonRpcProvider, Wallet, type TransactionRequest } from 'ethers';
2
+ export declare function getChainId(provider: JsonRpcProvider, configChainId?: number): Promise<number>;
3
+ export declare function signTransactionsBatch(wallet: Wallet, transactions: TransactionRequest[]): Promise<string[]>;
4
+ export declare function signTransactionsBatchMultiWallet(wallets: Wallet[], transactions: TransactionRequest[]): Promise<string[]>;
5
+ export declare function validateSignedTransactions(signedTxs: string[]): boolean;
@@ -0,0 +1,26 @@
1
+ export async function getChainId(provider, configChainId) {
2
+ if (configChainId !== undefined)
3
+ return configChainId;
4
+ const network = await provider.getNetwork();
5
+ return Number(network.chainId);
6
+ }
7
+ export async function signTransactionsBatch(wallet, transactions) {
8
+ return Promise.all(transactions.map((tx) => wallet.signTransaction(tx)));
9
+ }
10
+ export async function signTransactionsBatchMultiWallet(wallets, transactions) {
11
+ if (wallets.length !== transactions.length) {
12
+ throw new Error(`Wallet count (${wallets.length}) must match transaction count (${transactions.length})`);
13
+ }
14
+ return Promise.all(transactions.map((tx, i) => wallets[i].signTransaction(tx)));
15
+ }
16
+ export function validateSignedTransactions(signedTxs) {
17
+ if (!signedTxs || signedTxs.length === 0) {
18
+ return false;
19
+ }
20
+ for (const tx of signedTxs) {
21
+ if (typeof tx !== 'string' || !tx.startsWith('0x')) {
22
+ return false;
23
+ }
24
+ }
25
+ return true;
26
+ }
@@ -0,0 +1,18 @@
1
+ /**
2
+ * EIP-1559 兼容:当 txType=2 但传了 gasPrice 时,自动转换为 maxFeePerGas
3
+ * 模块加载时 patch Wallet.prototype.signTransaction(全局一次)
4
+ */
5
+ import { Wallet } from 'ethers';
6
+ const _origWalletSign = Wallet.prototype.signTransaction;
7
+ Wallet.prototype.signTransaction = async function (tx) {
8
+ const signable = tx;
9
+ if (signable.type === 2 && signable.gasPrice != null && signable.maxFeePerGas == null) {
10
+ const { gasPrice: gp, ...rest } = signable;
11
+ return _origWalletSign.call(this, {
12
+ ...rest,
13
+ maxFeePerGas: gp,
14
+ maxPriorityFeePerGas: rest.maxPriorityFeePerGas ?? 0n,
15
+ });
16
+ }
17
+ return _origWalletSign.call(this, tx);
18
+ };