four-flap-meme-sdk 2.2.2 → 2.2.3
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.
- package/README.en.md +41 -6
- package/README.md +31 -0
- package/README.zh-CN.md +41 -6
- package/dist/__tests__/subpath-exports.test.d.ts +1 -0
- package/dist/__tests__/subpath-exports.test.js +64 -0
- package/dist/abis/common.d.ts +85 -0
- package/dist/abis/common.js +264 -0
- package/dist/abis/contracts/TaxToken.json +969 -0
- package/dist/abis/contracts/TokenManager2.json +136 -0
- package/dist/abis/contracts/index.d.ts +5 -0
- package/dist/abis/contracts/index.js +5 -0
- package/dist/abis/flap/index.d.ts +3 -0
- package/dist/abis/flap/index.js +3 -0
- package/dist/abis/flap/portal-events.d.ts +6 -0
- package/dist/abis/flap/portal-events.js +17 -0
- package/dist/abis/flap/portal.d.ts +6 -0
- package/dist/abis/flap/portal.js +37 -0
- package/dist/abis/flap/vault.d.ts +171 -0
- package/dist/abis/flap/vault.js +91 -0
- package/dist/abis/index.d.ts +8 -0
- package/dist/abis/index.js +11 -0
- package/dist/bundle-core/__tests__/config-helpers.test.d.ts +1 -0
- package/dist/bundle-core/__tests__/config-helpers.test.js +28 -0
- package/dist/bundle-core/__tests__/facade-parity.test.d.ts +1 -0
- package/dist/bundle-core/__tests__/facade-parity.test.js +33 -0
- package/dist/bundle-core/__tests__/sign-context-helpers.test.d.ts +1 -0
- package/dist/bundle-core/__tests__/sign-context-helpers.test.js +60 -0
- package/dist/bundle-core/__tests__/sign-fixture.test.d.ts +1 -0
- package/dist/bundle-core/__tests__/sign-fixture.test.js +220 -0
- package/dist/bundle-core/__tests__/sign-fixtures.d.ts +10 -0
- package/dist/bundle-core/__tests__/sign-fixtures.js +16 -0
- package/dist/bundle-core/config-helpers.d.ts +36 -0
- package/dist/bundle-core/config-helpers.js +57 -0
- package/dist/bundle-core/errors.d.ts +50 -0
- package/dist/bundle-core/errors.js +35 -0
- package/dist/bundle-core/four-meme/approve-tokenmanager.d.ts +7 -0
- package/dist/bundle-core/four-meme/approve-tokenmanager.js +99 -0
- package/dist/bundle-core/four-meme/core-helpers.d.ts +8 -0
- package/dist/bundle-core/four-meme/core-helpers.js +40 -0
- package/dist/bundle-core/four-meme/core.d.ts +4 -0
- package/dist/bundle-core/four-meme/core.js +515 -0
- package/dist/bundle-core/four-meme/pancake-proxy.d.ts +28 -0
- package/dist/bundle-core/four-meme/pancake-proxy.js +679 -0
- package/dist/bundle-core/four-meme/private.d.ts +27 -0
- package/dist/bundle-core/four-meme/private.js +465 -0
- package/dist/bundle-core/four-meme/sign-context-helpers.d.ts +2 -0
- package/dist/bundle-core/four-meme/sign-context-helpers.js +2 -0
- package/dist/bundle-core/four-meme/swap-buy-first.d.ts +8 -0
- package/dist/bundle-core/four-meme/swap-buy-first.js +493 -0
- package/dist/bundle-core/four-meme/swap-hop-helpers.d.ts +6 -0
- package/dist/bundle-core/four-meme/swap-hop-helpers.js +63 -0
- package/dist/bundle-core/four-meme/swap-internal.d.ts +3 -0
- package/dist/bundle-core/four-meme/swap-internal.js +18 -0
- package/dist/bundle-core/four-meme/swap-sign-helpers.d.ts +27 -0
- package/dist/bundle-core/four-meme/swap-sign-helpers.js +105 -0
- package/dist/bundle-core/four-meme/swap.d.ts +17 -0
- package/dist/bundle-core/four-meme/swap.js +505 -0
- package/dist/bundle-core/four-meme/types/buy-first.d.ts +50 -0
- package/dist/bundle-core/four-meme/types/buy-first.js +1 -0
- package/dist/bundle-core/four-meme/types/core-flow.d.ts +63 -0
- package/dist/bundle-core/four-meme/types/core-flow.js +1 -0
- package/dist/bundle-core/four-meme/types/index.d.ts +600 -0
- package/dist/bundle-core/four-meme/types/index.js +1 -0
- package/dist/bundle-core/four-meme/types/swap-internal.d.ts +19 -0
- package/dist/bundle-core/four-meme/types/swap-internal.js +1 -0
- package/dist/bundle-core/four-meme/types.d.ts +1 -0
- package/dist/bundle-core/four-meme/types.js +1 -0
- package/dist/bundle-core/four-meme/utils-disperse.d.ts +7 -0
- package/dist/bundle-core/four-meme/utils-disperse.js +396 -0
- package/dist/bundle-core/four-meme/utils-pairwise.d.ts +8 -0
- package/dist/bundle-core/four-meme/utils-pairwise.js +328 -0
- package/dist/bundle-core/four-meme/utils-sweep.d.ts +8 -0
- package/dist/bundle-core/four-meme/utils-sweep.js +744 -0
- package/dist/bundle-core/index.d.ts +8 -0
- package/dist/bundle-core/index.js +8 -0
- package/dist/bundle-core/internal.d.ts +21 -0
- package/dist/bundle-core/internal.js +182 -0
- package/dist/bundle-core/sign-context-helpers.d.ts +25 -0
- package/dist/bundle-core/sign-context-helpers.js +67 -0
- package/dist/bundle-core/submit.d.ts +293 -0
- package/dist/bundle-core/submit.js +727 -0
- package/dist/bundle-core/types/index.d.ts +8 -0
- package/dist/bundle-core/types/index.js +1 -0
- package/dist/bundle-core/types.d.ts +1 -0
- package/dist/bundle-core/types.js +1 -0
- package/dist/chains/bsc/four/approve-tokenmanager.d.ts +1 -26
- package/dist/chains/bsc/four/approve-tokenmanager.js +1 -113
- package/dist/chains/bsc/four/config.d.ts +5 -67
- package/dist/chains/bsc/four/config.js +2 -114
- package/dist/chains/bsc/four/core.d.ts +1 -4
- package/dist/chains/bsc/four/core.js +1 -592
- package/dist/chains/bsc/four/index.d.ts +6 -6
- package/dist/chains/bsc/four/index.js +6 -6
- package/dist/chains/bsc/four/internal.d.ts +2 -46
- package/dist/chains/bsc/four/internal.js +2 -239
- package/dist/chains/bsc/four/pancake-proxy.d.ts +1 -28
- package/dist/chains/bsc/four/pancake-proxy.js +1 -687
- package/dist/chains/bsc/four/private.d.ts +1 -27
- package/dist/chains/bsc/four/private.js +1 -477
- package/dist/chains/bsc/four/submit.d.ts +2 -315
- package/dist/chains/bsc/four/submit.js +2 -752
- package/dist/chains/bsc/four/swap-buy-first.d.ts +2 -55
- package/dist/chains/bsc/four/swap-buy-first.js +2 -507
- package/dist/chains/bsc/four/swap-internal.d.ts +1 -3
- package/dist/chains/bsc/four/swap-internal.js +1 -18
- package/dist/chains/bsc/four/swap.d.ts +2 -144
- package/dist/chains/bsc/four/swap.js +2 -766
- package/dist/chains/bsc/four/types.d.ts +1 -476
- package/dist/chains/bsc/four/utils-disperse.d.ts +1 -0
- package/dist/chains/bsc/four/utils-disperse.js +1 -0
- package/dist/chains/bsc/four/utils-pairwise.d.ts +1 -0
- package/dist/chains/bsc/four/utils-pairwise.js +1 -0
- package/dist/chains/bsc/four/utils-sweep.d.ts +1 -0
- package/dist/chains/bsc/four/utils-sweep.js +1 -0
- package/dist/chains/bsc/four/utils.d.ts +5 -18
- package/dist/chains/bsc/four/utils.js +5 -1552
- package/dist/chains/bsc/iro.d.ts +5 -0
- package/dist/chains/bsc/iro.js +4 -0
- package/dist/chains/bsc/pancake/bundle-buy-first-helpers.d.ts +159 -0
- package/dist/chains/bsc/pancake/bundle-buy-first-helpers.js +117 -0
- package/dist/chains/bsc/pancake/bundle-buy-first.d.ts +1 -91
- package/dist/chains/bsc/pancake/bundle-buy-first.js +97 -212
- package/dist/chains/bsc/pancake/bundle-swap-helpers.d.ts +241 -0
- package/dist/chains/bsc/pancake/bundle-swap-helpers.js +565 -0
- package/dist/chains/bsc/pancake/bundle-swap.d.ts +1 -79
- package/dist/chains/bsc/pancake/bundle-swap.js +114 -726
- package/dist/chains/bsc/pancake/index.d.ts +4 -2
- package/dist/chains/bsc/pancake/index.js +1 -3
- package/dist/chains/bsc/platforms/iro/factory.d.ts +2 -2
- package/dist/chains/bsc/platforms/iro/factory.js +3 -1
- package/dist/chains/bsc/platforms/iro/index.d.ts +5 -5
- package/dist/chains/bsc/platforms/iro/index.js +3 -3
- package/dist/chains/bsc/platforms/iro/pool.js +31 -10
- package/dist/chains/bsc/platforms/iro/token.js +4 -1
- package/dist/chains/eni/batch-router/bundle-approve.js +4 -3
- package/dist/chains/eni/batch-router/transfer.js +55 -25
- package/dist/chains/eni/batch-router/utils.js +32 -6
- package/dist/chains/eni/bundler/sign.js +5 -6
- package/dist/chains/eni/bundler/submit.js +1 -4
- package/dist/chains/eni/constants.js +1 -1
- package/dist/chains/eni/flat-aliases.d.ts +10 -0
- package/dist/chains/eni/flat-aliases.js +8 -0
- package/dist/chains/eni/index.d.ts +2 -1
- package/dist/chains/eni/index.js +1 -0
- package/dist/chains/eni/platforms/daoaas/create.js +2 -2
- package/dist/chains/eni/platforms/daoaas/index.d.ts +3 -3
- package/dist/chains/eni/platforms/daoaas/index.js +3 -3
- package/dist/chains/eni/platforms/daoaas/meta.js +9 -6
- package/dist/chains/eni/platforms/daoaas/portal-direct.js +28 -44
- package/dist/chains/eni/platforms/daoaas/portal.js +10 -6
- package/dist/chains/eni/platforms/dswap/liquidity.js +58 -26
- package/dist/chains/eni/platforms/fair-launch/index.d.ts +2 -2
- package/dist/chains/eni/platforms/fair-launch/index.js +1 -1
- package/dist/chains/eni/platforms/fair-launch/launcher.js +87 -46
- package/dist/chains/eni/platforms/fair-launch/pool.js +4 -1
- package/dist/chains/eni/platforms/fair-launch/presets.js +2 -2
- package/dist/chains/eni/platforms/iro/factory.d.ts +2 -2
- package/dist/chains/eni/platforms/iro/factory.js +3 -1
- package/dist/chains/eni/platforms/iro/index.d.ts +6 -6
- package/dist/chains/eni/platforms/iro/index.js +4 -4
- package/dist/chains/eni/platforms/iro/pool.js +90 -26
- package/dist/chains/eni/platforms/iro/token.js +107 -31
- package/dist/chains/eni/platforms/iro/whitelist.js +6 -18
- package/dist/chains/eni/submit.d.ts +43 -0
- package/dist/chains/eni/submit.js +286 -0
- package/dist/chains/index.d.ts +13 -0
- package/dist/chains/index.js +13 -0
- package/dist/chains/xlayer/eip7702/bundle-approve.d.ts +2 -26
- package/dist/chains/xlayer/eip7702/bundle-approve.js +11 -21
- package/dist/chains/xlayer/eip7702/bundle-buy.d.ts +2 -6
- package/dist/chains/xlayer/eip7702/bundle-buy.js +13 -51
- package/dist/chains/xlayer/eip7702/bundle-create.js +93 -59
- package/dist/chains/xlayer/eip7702/bundle-sell.d.ts +2 -6
- package/dist/chains/xlayer/eip7702/bundle-sell.js +29 -111
- package/dist/chains/xlayer/eip7702/bundle-swap.d.ts +3 -65
- package/dist/chains/xlayer/eip7702/bundle-swap.js +51 -245
- package/dist/chains/xlayer/eip7702/constants.d.ts +1 -16
- package/dist/chains/xlayer/eip7702/constants.js +3 -21
- package/dist/chains/xlayer/eip7702/flat-aliases.d.ts +13 -0
- package/dist/chains/xlayer/eip7702/flat-aliases.js +10 -0
- package/dist/chains/xlayer/eip7702/index.d.ts +28 -46
- package/dist/chains/xlayer/eip7702/index.js +28 -81
- package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.d.ts +79 -0
- package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.js +1 -0
- package/dist/chains/xlayer/eip7702/multi-hop-transfer.d.ts +2 -203
- package/dist/chains/xlayer/eip7702/multi-hop-transfer.js +63 -307
- package/dist/chains/xlayer/eip7702/transfer-context-helpers.d.ts +26 -0
- package/dist/chains/xlayer/eip7702/transfer-context-helpers.js +57 -0
- package/dist/chains/xlayer/eip7702/types.d.ts +88 -0
- package/dist/chains/xlayer/eip7702/utils.d.ts +0 -3
- package/dist/chains/xlayer/eip7702/utils.js +23 -28
- package/dist/chains/xlayer/eip7702/volume-helpers.d.ts +148 -0
- package/dist/chains/xlayer/eip7702/volume-helpers.js +48 -0
- package/dist/chains/xlayer/eip7702/volume.d.ts +6 -184
- package/dist/chains/xlayer/eip7702/volume.js +89 -164
- package/dist/chains/xlayer/eoa/constants.js +1 -1
- package/dist/chains/xlayer/eoa/dex-helpers.js +5 -5
- package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.d.ts +126 -0
- package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.js +228 -0
- package/dist/chains/xlayer/eoa/eoa-bundle-swap.d.ts +1 -95
- package/dist/chains/xlayer/eoa/eoa-bundle-swap.js +66 -299
- package/dist/chains/xlayer/eoa/eoa-wash-volume.d.ts +1 -1
- package/dist/chains/xlayer/eoa/eoa-wash-volume.js +18 -23
- package/dist/chains/xlayer/eoa/index.d.ts +10 -6
- package/dist/chains/xlayer/eoa/index.js +8 -23
- package/dist/chains/xlayer/eoa/portal-ops.js +7 -2
- package/dist/chains/xlayer/eoa/router-manager.js +3 -3
- package/dist/chains/xlayer/eoa/types.d.ts +2 -2
- package/dist/chains/xlayer/eoa/types.js +1 -3
- package/dist/chains/xlayer/index.d.ts +3 -2
- package/dist/chains/xlayer/index.js +4 -7
- package/dist/contracts/helper3.d.ts +20 -5
- package/dist/contracts/helper3.js +56 -20
- package/dist/contracts/tm-bundle-helpers.d.ts +88 -0
- package/dist/contracts/tm-bundle-helpers.js +72 -0
- package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.d.ts +1 -26
- package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.js +1 -113
- package/dist/contracts/tm-bundle-merkle/config.d.ts +5 -67
- package/dist/contracts/tm-bundle-merkle/config.js +2 -114
- package/dist/contracts/tm-bundle-merkle/core.d.ts +1 -4
- package/dist/contracts/tm-bundle-merkle/core.js +1 -591
- package/dist/contracts/tm-bundle-merkle/index.d.ts +5 -5
- package/dist/contracts/tm-bundle-merkle/index.js +5 -5
- package/dist/contracts/tm-bundle-merkle/internal.d.ts +2 -46
- package/dist/contracts/tm-bundle-merkle/internal.js +2 -238
- package/dist/contracts/tm-bundle-merkle/pancake-proxy.d.ts +1 -28
- package/dist/contracts/tm-bundle-merkle/pancake-proxy.js +1 -686
- package/dist/contracts/tm-bundle-merkle/private.d.ts +1 -27
- package/dist/contracts/tm-bundle-merkle/private.js +1 -476
- package/dist/contracts/tm-bundle-merkle/submit.d.ts +3 -314
- package/dist/contracts/tm-bundle-merkle/submit.js +3 -928
- package/dist/contracts/tm-bundle-merkle/swap-buy-first.d.ts +2 -55
- package/dist/contracts/tm-bundle-merkle/swap-buy-first.js +2 -506
- package/dist/contracts/tm-bundle-merkle/swap-internal.d.ts +1 -3
- package/dist/contracts/tm-bundle-merkle/swap-internal.js +1 -18
- package/dist/contracts/tm-bundle-merkle/swap.d.ts +2 -144
- package/dist/contracts/tm-bundle-merkle/swap.js +2 -764
- package/dist/contracts/tm-bundle-merkle/types.d.ts +1 -476
- package/dist/contracts/tm-bundle-merkle/utils-disperse.d.ts +1 -0
- package/dist/contracts/tm-bundle-merkle/utils-disperse.js +1 -0
- package/dist/contracts/tm-bundle-merkle/utils-pairwise.d.ts +1 -0
- package/dist/contracts/tm-bundle-merkle/utils-pairwise.js +1 -0
- package/dist/contracts/tm-bundle-merkle/utils-sweep.d.ts +1 -0
- package/dist/contracts/tm-bundle-merkle/utils-sweep.js +1 -0
- package/dist/contracts/tm-bundle-merkle/utils.d.ts +6 -18
- package/dist/contracts/tm-bundle-merkle/utils.js +6 -1501
- package/dist/contracts/tm-bundle.d.ts +3 -51
- package/dist/contracts/tm-bundle.js +108 -177
- package/dist/contracts/tm.d.ts +3 -2
- package/dist/contracts/tm.js +37 -32
- package/dist/contracts/tm1.js +9 -4
- package/dist/contracts/tm2.js +9 -4
- package/dist/dex/direct-router-helpers.d.ts +264 -0
- package/dist/dex/direct-router-helpers.js +539 -0
- package/dist/dex/direct-router.d.ts +3 -125
- package/dist/dex/direct-router.js +237 -666
- package/dist/dex/types.d.ts +81 -0
- package/dist/dex/types.js +1 -0
- package/dist/exports/root-bundle-and-tooling.d.ts +27 -0
- package/dist/exports/root-bundle-and-tooling.js +30 -0
- package/dist/exports/root-eni-and-bsc-iro.d.ts +26 -0
- package/dist/exports/root-eni-and-bsc-iro.js +66 -0
- package/dist/exports/root-foundations.d.ts +35 -0
- package/dist/exports/root-foundations.js +70 -0
- package/dist/exports/root-swap-dex-and-xlayer.d.ts +30 -0
- package/dist/exports/root-swap-dex-and-xlayer.js +78 -0
- package/dist/flap/index.d.ts +10 -0
- package/dist/flap/index.js +8 -0
- package/dist/flows/create.d.ts +2 -1
- package/dist/flows/create.js +6 -6
- package/dist/flows/index.d.ts +1 -0
- package/dist/flows/index.js +1 -0
- package/dist/index.d.ts +20 -85
- package/dist/index.js +20 -215
- package/dist/merkle/index.d.ts +12 -0
- package/dist/merkle/index.js +11 -0
- package/dist/shared/abis/common.d.ts +2 -83
- package/dist/shared/abis/common.js +2 -252
- package/dist/shared/abis/index.d.ts +5 -6
- package/dist/shared/abis/index.js +5 -7
- package/dist/shared/clients/blockrazor.js +39 -25
- package/dist/shared/clients/club48.d.ts +2 -2
- package/dist/shared/clients/club48.js +34 -29
- package/dist/shared/clients/emitservice.js +2 -0
- package/dist/shared/clients/four.d.ts +21 -6
- package/dist/shared/clients/four.js +29 -24
- package/dist/shared/clients/index.d.ts +8 -0
- package/dist/shared/clients/index.js +8 -0
- package/dist/shared/clients/merkle.js +27 -34
- package/dist/shared/constants/addresses.d.ts +1 -1
- package/dist/shared/constants/addresses.js +11 -2
- package/dist/shared/constants/chains.d.ts +1 -1
- package/dist/shared/constants/chains.js +1 -1
- package/dist/shared/constants/gas.d.ts +1 -1
- package/dist/shared/constants/gas.js +2 -6
- package/dist/shared/constants/index.d.ts +3 -0
- package/dist/shared/constants/index.js +1 -0
- package/dist/shared/constants/quote.d.ts +30 -0
- package/dist/shared/constants/quote.js +37 -0
- package/dist/shared/flap/abi.js +1 -1
- package/dist/shared/flap/constants.d.ts +1 -2
- package/dist/shared/flap/constants.js +2 -3
- package/dist/shared/flap/curve.js +3 -0
- package/dist/shared/flap/errors.d.ts +1 -4
- package/dist/shared/flap/errors.js +20 -1
- package/dist/shared/flap/index.d.ts +5 -4
- package/dist/shared/flap/index.js +5 -4
- package/dist/shared/flap/meta.d.ts +22 -18
- package/dist/shared/flap/meta.js +12 -17
- package/dist/shared/flap/permit.js +5 -2
- package/dist/shared/flap/pinata.d.ts +22 -6
- package/dist/shared/flap/pinata.js +21 -26
- package/dist/shared/flap/portal-bundle-merkle/config.d.ts +3 -72
- package/dist/shared/flap/portal-bundle-merkle/config.js +4 -124
- package/dist/shared/flap/portal-bundle-merkle/core-helpers.d.ts +32 -0
- package/dist/shared/flap/portal-bundle-merkle/core-helpers.js +83 -0
- package/dist/shared/flap/portal-bundle-merkle/core.d.ts +0 -4
- package/dist/shared/flap/portal-bundle-merkle/core.js +86 -278
- package/dist/shared/flap/portal-bundle-merkle/create-to-dex.d.ts +7 -2
- package/dist/shared/flap/portal-bundle-merkle/create-to-dex.js +101 -206
- package/dist/shared/flap/portal-bundle-merkle/curve-to-dex.js +100 -92
- package/dist/shared/flap/portal-bundle-merkle/index.d.ts +11 -7
- package/dist/shared/flap/portal-bundle-merkle/index.js +4 -7
- package/dist/shared/flap/portal-bundle-merkle/pancake-proxy.js +71 -68
- package/dist/shared/flap/portal-bundle-merkle/private.js +61 -114
- package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.d.ts +125 -0
- package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.js +113 -0
- package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.d.ts +1 -64
- package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.js +66 -247
- package/dist/shared/flap/portal-bundle-merkle/swap-helpers.d.ts +149 -0
- package/dist/shared/flap/portal-bundle-merkle/swap-helpers.js +259 -0
- package/dist/shared/flap/portal-bundle-merkle/swap.d.ts +2 -71
- package/dist/shared/flap/portal-bundle-merkle/swap.js +103 -410
- package/dist/shared/flap/portal-bundle-merkle/types.d.ts +83 -9
- package/dist/shared/flap/portal-bundle-merkle/utils.d.ts +1 -80
- package/dist/shared/flap/portal-bundle-merkle/utils.js +145 -265
- package/dist/shared/flap/portal-bundle.js +55 -56
- package/dist/shared/flap/portal-create-token.d.ts +77 -0
- package/dist/shared/flap/portal-create-token.js +214 -0
- package/dist/shared/flap/portal.d.ts +14 -3
- package/dist/shared/flap/portal.js +50 -25
- package/dist/shared/flap/vanity.d.ts +1 -5
- package/dist/shared/flap/vanity.js +6 -17
- package/dist/shared/flap/vault.d.ts +17 -124
- package/dist/shared/flap/vault.js +67 -148
- package/dist/shared/foundation/dex/v3-path.d.ts +6 -0
- package/dist/shared/foundation/dex/v3-path.js +35 -0
- package/dist/shared/foundation/gas/bundle-gas.d.ts +49 -0
- package/dist/shared/foundation/gas/bundle-gas.js +93 -0
- package/dist/shared/foundation/gas/profit-hop.d.ts +20 -0
- package/dist/shared/foundation/gas/profit-hop.js +72 -0
- package/dist/shared/foundation/index.d.ts +13 -0
- package/dist/shared/foundation/index.js +12 -0
- package/dist/shared/foundation/nonce/nonce-manager.d.ts +17 -0
- package/dist/shared/foundation/nonce/nonce-manager.js +183 -0
- package/dist/shared/foundation/normalize-unknown.d.ts +9 -0
- package/dist/shared/foundation/normalize-unknown.js +29 -0
- package/dist/shared/foundation/sdk-logger.d.ts +13 -0
- package/dist/shared/foundation/sdk-logger.js +12 -0
- package/dist/shared/foundation/tx/build-request.d.ts +17 -0
- package/dist/shared/foundation/tx/build-request.js +25 -0
- package/dist/shared/foundation/tx/sign-batch.d.ts +5 -0
- package/dist/shared/foundation/tx/sign-batch.js +26 -0
- package/dist/shared/foundation/tx/wallet-sign-patch.d.ts +1 -0
- package/dist/shared/foundation/tx/wallet-sign-patch.js +18 -0
- package/dist/shared/foundation/types/airdrop-sweep.d.ts +79 -0
- package/dist/shared/foundation/types/airdrop-sweep.js +1 -0
- package/dist/shared/foundation/types/erc20.d.ts +65 -0
- package/dist/shared/foundation/types/erc20.js +1 -0
- package/dist/shared/foundation/types/holders-maker.d.ts +64 -0
- package/dist/shared/foundation/types/holders-maker.js +1 -0
- package/dist/shared/foundation/types/index.d.ts +7 -0
- package/dist/shared/foundation/types/index.js +1 -0
- package/dist/shared/foundation/types/lp-inspect.d.ts +102 -0
- package/dist/shared/foundation/types/lp-inspect.js +1 -0
- package/dist/shared/foundation/types/multicall.d.ts +5 -0
- package/dist/shared/foundation/types/multicall.js +1 -0
- package/dist/shared/foundation/types/private-sale.d.ts +35 -0
- package/dist/shared/foundation/types/private-sale.js +1 -0
- package/dist/shared/foundation/types/quote-helpers.d.ts +17 -0
- package/dist/shared/foundation/types/quote-helpers.js +1 -0
- package/dist/shared/four/tax-token.d.ts +1 -1
- package/dist/shared/four/tax-token.js +27 -7
- package/dist/shared/index.d.ts +6 -0
- package/dist/shared/index.js +4 -0
- package/dist/types/errors.d.ts +27 -0
- package/dist/types/errors.js +34 -0
- package/dist/utils/airdrop-sweep.d.ts +4 -76
- package/dist/utils/airdrop-sweep.js +42 -55
- package/dist/utils/bundle-helpers.d.ts +9 -243
- package/dist/utils/bundle-helpers.js +10 -584
- package/dist/utils/constants.d.ts +5 -61
- package/dist/utils/constants.js +5 -80
- package/dist/utils/contract-factory.d.ts +2 -4
- package/dist/utils/contract-factory.js +25 -18
- package/dist/utils/erc20.d.ts +7 -89
- package/dist/utils/erc20.js +94 -125
- package/dist/utils/errors.d.ts +12 -1
- package/dist/utils/errors.js +60 -1
- package/dist/utils/holders-maker/addresses.d.ts +12 -0
- package/dist/utils/holders-maker/addresses.js +15 -0
- package/dist/utils/holders-maker/buy-tx.d.ts +44 -0
- package/dist/utils/holders-maker/buy-tx.js +278 -0
- package/dist/utils/holders-maker/constants.d.ts +6 -0
- package/dist/utils/holders-maker/constants.js +7 -0
- package/dist/utils/holders-maker/disperse.d.ts +18 -0
- package/dist/utils/holders-maker/disperse.js +90 -0
- package/dist/utils/holders-maker/routing.d.ts +4 -0
- package/dist/utils/holders-maker/routing.js +45 -0
- package/dist/utils/holders-maker/transfer-tx.d.ts +4 -0
- package/dist/utils/holders-maker/transfer-tx.js +67 -0
- package/dist/utils/holders-maker-helpers.d.ts +9 -0
- package/dist/utils/holders-maker-helpers.js +9 -0
- package/dist/utils/holders-maker.d.ts +2 -138
- package/dist/utils/holders-maker.js +26 -661
- package/dist/utils/hop-chains.d.ts +35 -0
- package/dist/utils/hop-chains.js +215 -0
- package/dist/utils/lp-inspect-helpers.d.ts +9 -0
- package/dist/utils/lp-inspect-helpers.js +109 -0
- package/dist/utils/lp-inspect.d.ts +2 -112
- package/dist/utils/lp-inspect.js +73 -223
- package/dist/utils/mpcExclusive.d.ts +2 -5
- package/dist/utils/mpcExclusive.js +4 -3
- package/dist/utils/private-sale.d.ts +2 -58
- package/dist/utils/private-sale.js +4 -15
- package/dist/utils/provider-factory.d.ts +4 -0
- package/dist/utils/provider-factory.js +10 -0
- package/dist/utils/quote-helpers.d.ts +4 -45
- package/dist/utils/quote-helpers.js +17 -74
- package/dist/utils/stealth-transfer.d.ts +2 -28
- package/dist/utils/stealth-transfer.js +31 -15
- package/dist/utils/swap-helpers.d.ts +2 -15
- package/dist/utils/swap-helpers.js +6 -11
- package/dist/utils/types/airdrop-sweep.d.ts +1 -0
- package/dist/utils/types/airdrop-sweep.js +1 -0
- package/dist/utils/types/contract-factory.d.ts +1 -0
- package/dist/utils/types/contract-factory.js +1 -0
- package/dist/utils/types/erc20.d.ts +1 -0
- package/dist/utils/types/erc20.js +1 -0
- package/dist/utils/types/errors.d.ts +1 -0
- package/dist/utils/types/errors.js +1 -0
- package/dist/utils/types/holders-maker.d.ts +1 -0
- package/dist/utils/types/holders-maker.js +1 -0
- package/dist/utils/types/hop-chains.d.ts +8 -0
- package/dist/utils/types/hop-chains.js +1 -0
- package/dist/utils/types/index.d.ts +13 -0
- package/dist/utils/types/index.js +1 -0
- package/dist/utils/types/lp-inspect.d.ts +1 -0
- package/dist/utils/types/lp-inspect.js +1 -0
- package/dist/utils/types/mpc-exclusive.d.ts +5 -0
- package/dist/utils/types/mpc-exclusive.js +1 -0
- package/dist/utils/types/private-sale.d.ts +1 -0
- package/dist/utils/types/private-sale.js +1 -0
- package/dist/utils/types/quote-helpers.d.ts +1 -0
- package/dist/utils/types/quote-helpers.js +1 -0
- package/dist/utils/types/stealth-transfer.d.ts +44 -0
- package/dist/utils/types/stealth-transfer.js +1 -0
- package/dist/utils/types/wallet.d.ts +25 -0
- package/dist/utils/types/wallet.js +1 -0
- package/dist/utils/wallet.d.ts +2 -25
- package/dist/utils/wallet.js +13 -10
- package/dist/vanity/index.d.ts +5 -0
- package/dist/vanity/index.js +5 -0
- package/package.json +160 -4
- package/src/abis/contracts/TaxToken.json +969 -0
- package/src/abis/contracts/TokenManager.json +836 -0
- package/src/abis/contracts/TokenManager2.json +136 -0
- package/src/abis/contracts/TokenManagerHelper3.json +993 -0
- package/dist/shared/abis/TaxToken.json +0 -105
- package/dist/shared/abis/TokenManager2.json +0 -60
- /package/dist/{shared/abis → abis/contracts}/TokenManager.json +0 -0
- /package/dist/{shared/abis → abis/contracts}/TokenManagerHelper3.json +0 -0
|
@@ -7,11 +7,12 @@
|
|
|
7
7
|
* - V3 Quoter (BSC): 0xB048Bbc1Ee6b733FFfCFb9e9CeF7375518e25997
|
|
8
8
|
*/
|
|
9
9
|
import { ethers, Wallet, JsonRpcProvider, Contract, Interface } from 'ethers';
|
|
10
|
-
import { NonceManager, getOptimizedGasPrice, getDeadline, encodeV3Path, buildProfitHopTransactions, PROFIT_HOP_COUNT } from '../../../utils/bundle-helpers.js';
|
|
11
|
-
import { ADDRESSES, ZERO_ADDRESS } from '../../../
|
|
10
|
+
import { NonceManager, getOptimizedGasPrice, getDeadline, encodeV3Path, buildProfitHopTransactions, PROFIT_HOP_COUNT, } from '../../../utils/bundle-helpers.js';
|
|
11
|
+
import { ADDRESSES, ZERO_ADDRESS } from '../../../shared/constants/index.js';
|
|
12
12
|
import { GAS_LIMITS } from '../../constants/index.js';
|
|
13
13
|
import { MULTICALL3_ABI, V2_ROUTER_ABI, V3_ROUTER02_ABI, V3_QUOTER_ABI, ERC20_ABI } from '../../abis/common.js';
|
|
14
|
-
import {
|
|
14
|
+
import { getErrorMessageFromUnknown } from '../../foundation/index.js';
|
|
15
|
+
import { CHAIN_ID_MAP, getTxType, getGasPriceConfig, shouldExtractProfit, calculateProfit, calculateBatchProfit, getProfitRecipient, getBribeAmount, BLOCKRAZOR_BUILDER_EOA, } from './config.js';
|
|
15
16
|
// ==================== 常量 ====================
|
|
16
17
|
const MULTICALL3_ADDRESS = ADDRESSES.BSC.Multicall3;
|
|
17
18
|
const WBNB_ADDRESS = ADDRESSES.BSC.WBNB;
|
|
@@ -79,7 +80,9 @@ function needSendBNB(routeType, params, useNativeToken = true) {
|
|
|
79
80
|
if (routeType === 'v3-single' && params.v3TokenIn && params.v3TokenIn.toLowerCase() === WBNB_ADDRESS.toLowerCase()) {
|
|
80
81
|
return true;
|
|
81
82
|
}
|
|
82
|
-
if (routeType === 'v3-multi' &&
|
|
83
|
+
if (routeType === 'v3-multi' &&
|
|
84
|
+
params.v3ExactTokenIn &&
|
|
85
|
+
params.v3ExactTokenIn.toLowerCase() === WBNB_ADDRESS.toLowerCase()) {
|
|
83
86
|
return true;
|
|
84
87
|
}
|
|
85
88
|
return false;
|
|
@@ -119,23 +122,22 @@ async function buildV3SingleTransactions(routers, wallets, tokenIn, tokenOut, fe
|
|
|
119
122
|
const v3RouterIface = new Interface(V3_ROUTER_ABI);
|
|
120
123
|
return Promise.all(routers.map(async (router, i) => {
|
|
121
124
|
const isTokenOutWBNB = tokenOut.toLowerCase() === WBNB_ADDRESS.toLowerCase();
|
|
122
|
-
const exactInputSingleData = v3RouterIface.encodeFunctionData('exactInputSingle', [
|
|
125
|
+
const exactInputSingleData = v3RouterIface.encodeFunctionData('exactInputSingle', [
|
|
126
|
+
{
|
|
123
127
|
tokenIn: tokenIn,
|
|
124
128
|
tokenOut: tokenOut,
|
|
125
129
|
fee: fee,
|
|
126
130
|
recipient: isTokenOutWBNB ? PANCAKE_V3_ROUTER_ADDRESS : wallets[i].address,
|
|
127
131
|
amountIn: amountsWei[i],
|
|
128
132
|
amountOutMinimum: minOuts[i],
|
|
129
|
-
sqrtPriceLimitX96: 0n
|
|
130
|
-
}
|
|
133
|
+
sqrtPriceLimitX96: 0n,
|
|
134
|
+
},
|
|
135
|
+
]);
|
|
131
136
|
if (isBuy && needBNB) {
|
|
132
137
|
return router.multicall.populateTransaction(deadline, [exactInputSingleData], { value: amountsWei[i] });
|
|
133
138
|
}
|
|
134
139
|
else if (!isBuy && isTokenOutWBNB) {
|
|
135
|
-
const unwrapData = v3RouterIface.encodeFunctionData('unwrapWETH9', [
|
|
136
|
-
minOuts[i],
|
|
137
|
-
wallets[i].address
|
|
138
|
-
]);
|
|
140
|
+
const unwrapData = v3RouterIface.encodeFunctionData('unwrapWETH9', [minOuts[i], wallets[i].address]);
|
|
139
141
|
return router.multicall.populateTransaction(deadline, [exactInputSingleData, unwrapData]);
|
|
140
142
|
}
|
|
141
143
|
else {
|
|
@@ -163,21 +165,25 @@ async function buildV3MultiHopTransactions(routers, wallets, tokens, fees, amoun
|
|
|
163
165
|
const isTokenOutWBNB = tokenOut.toLowerCase() === WBNB_ADDRESS.toLowerCase();
|
|
164
166
|
return Promise.all(routers.map(async (router, i) => {
|
|
165
167
|
if (isBuy && needBNB) {
|
|
166
|
-
const swapData = v3RouterIface.encodeFunctionData('exactInput', [
|
|
168
|
+
const swapData = v3RouterIface.encodeFunctionData('exactInput', [
|
|
169
|
+
{
|
|
167
170
|
path: forwardPath,
|
|
168
171
|
recipient: wallets[i].address,
|
|
169
172
|
amountIn: amountsWei[i],
|
|
170
|
-
amountOutMinimum: minOuts[i]
|
|
171
|
-
}
|
|
173
|
+
amountOutMinimum: minOuts[i],
|
|
174
|
+
},
|
|
175
|
+
]);
|
|
172
176
|
return router.multicall.populateTransaction(deadline, [swapData], { value: amountsWei[i] });
|
|
173
177
|
}
|
|
174
178
|
else if (!isBuy) {
|
|
175
|
-
const swapData = v3RouterIface.encodeFunctionData('exactInput', [
|
|
179
|
+
const swapData = v3RouterIface.encodeFunctionData('exactInput', [
|
|
180
|
+
{
|
|
176
181
|
path: reversePath,
|
|
177
182
|
recipient: isTokenOutWBNB ? PANCAKE_V3_ROUTER_ADDRESS : wallets[i].address,
|
|
178
183
|
amountIn: amountsWei[i],
|
|
179
|
-
amountOutMinimum: minOuts[i]
|
|
180
|
-
}
|
|
184
|
+
amountOutMinimum: minOuts[i],
|
|
185
|
+
},
|
|
186
|
+
]);
|
|
181
187
|
if (isTokenOutWBNB) {
|
|
182
188
|
const unwrapData = v3RouterIface.encodeFunctionData('unwrapWETH9', [minOuts[i], wallets[i].address]);
|
|
183
189
|
return router.multicall.populateTransaction(deadline, [swapData, unwrapData]);
|
|
@@ -185,12 +191,14 @@ async function buildV3MultiHopTransactions(routers, wallets, tokens, fees, amoun
|
|
|
185
191
|
return router.multicall.populateTransaction(deadline, [swapData]);
|
|
186
192
|
}
|
|
187
193
|
else {
|
|
188
|
-
const swapData = v3RouterIface.encodeFunctionData('exactInput', [
|
|
194
|
+
const swapData = v3RouterIface.encodeFunctionData('exactInput', [
|
|
195
|
+
{
|
|
189
196
|
path: forwardPath,
|
|
190
197
|
recipient: wallets[i].address,
|
|
191
198
|
amountIn: amountsWei[i],
|
|
192
|
-
amountOutMinimum: minOuts[i]
|
|
193
|
-
}
|
|
199
|
+
amountOutMinimum: minOuts[i],
|
|
200
|
+
},
|
|
201
|
+
]);
|
|
194
202
|
return router.multicall.populateTransaction(deadline, [swapData]);
|
|
195
203
|
}
|
|
196
204
|
}));
|
|
@@ -215,7 +223,7 @@ export async function approvePancakeProxy(params) {
|
|
|
215
223
|
const receipt = await tx.wait();
|
|
216
224
|
return {
|
|
217
225
|
txHash: receipt.hash,
|
|
218
|
-
approved: receipt.status === 1
|
|
226
|
+
approved: receipt.status === 1,
|
|
219
227
|
};
|
|
220
228
|
}
|
|
221
229
|
/**
|
|
@@ -231,9 +239,9 @@ export async function approvePancakeProxyBatch(params) {
|
|
|
231
239
|
const provider = getCachedProvider(chain, config.rpcUrl, chainId);
|
|
232
240
|
const gasPrice = await getOptimizedGasPrice(provider, getGasPriceConfig(config));
|
|
233
241
|
const decimals = await getTokenDecimals(tokenAddress, provider);
|
|
234
|
-
const wallets = privateKeys.map(k => new Wallet(k, provider));
|
|
235
|
-
const amountsBigInt = amounts.map(a => a === 'max' ? ethers.MaxUint256 : ethers.parseUnits(a, decimals));
|
|
236
|
-
const tokens = wallets.map(w => new Contract(tokenAddress, ERC20_ABI, w));
|
|
242
|
+
const wallets = privateKeys.map((k) => new Wallet(k, provider));
|
|
243
|
+
const amountsBigInt = amounts.map((a) => (a === 'max' ? ethers.MaxUint256 : ethers.parseUnits(a, decimals)));
|
|
244
|
+
const tokens = wallets.map((w) => new Contract(tokenAddress, ERC20_ABI, w));
|
|
237
245
|
const allowances = await Promise.all(tokens.map((token, i) => token.allowance(wallets[i].address, approvalTarget)));
|
|
238
246
|
const needApproval = wallets.filter((_, i) => allowances[i] < amountsBigInt[i]);
|
|
239
247
|
const needApprovalAmounts = amountsBigInt.filter((amount, i) => allowances[i] < amount);
|
|
@@ -242,14 +250,14 @@ export async function approvePancakeProxyBatch(params) {
|
|
|
242
250
|
success: true,
|
|
243
251
|
approvedCount: 0,
|
|
244
252
|
signedTransactions: [],
|
|
245
|
-
message: '所有钱包已授权'
|
|
253
|
+
message: '所有钱包已授权',
|
|
246
254
|
};
|
|
247
255
|
}
|
|
248
|
-
const needApprovalTokens = needApproval.map(w => new Contract(tokenAddress, ERC20_ABI, w));
|
|
256
|
+
const needApprovalTokens = needApproval.map((w) => new Contract(tokenAddress, ERC20_ABI, w));
|
|
249
257
|
const unsignedApprovals = await Promise.all(needApprovalTokens.map((token, i) => token.approve.populateTransaction(approvalTarget, needApprovalAmounts[i])));
|
|
250
258
|
const finalGasLimit = getGasLimit(config);
|
|
251
259
|
const nonceManager = new NonceManager(provider);
|
|
252
|
-
const nonces = await Promise.all(needApproval.map(w => nonceManager.getNextNonce(w)));
|
|
260
|
+
const nonces = await Promise.all(needApproval.map((w) => nonceManager.getNextNonce(w)));
|
|
253
261
|
const signedTxs = await Promise.all(unsignedApprovals.map((unsigned, i) => needApproval[i].signTransaction({
|
|
254
262
|
...unsigned,
|
|
255
263
|
from: needApproval[i].address,
|
|
@@ -257,7 +265,7 @@ export async function approvePancakeProxyBatch(params) {
|
|
|
257
265
|
gasLimit: finalGasLimit,
|
|
258
266
|
gasPrice,
|
|
259
267
|
chainId,
|
|
260
|
-
type: getTxType(config)
|
|
268
|
+
type: getTxType(config),
|
|
261
269
|
})));
|
|
262
270
|
nonceManager.clearTemp();
|
|
263
271
|
const txHashes = [];
|
|
@@ -268,7 +276,7 @@ export async function approvePancakeProxyBatch(params) {
|
|
|
268
276
|
txHashes.push(tx.hash);
|
|
269
277
|
}
|
|
270
278
|
catch (error) {
|
|
271
|
-
errors.push(`钱包 ${i} 授权失败: ${error
|
|
279
|
+
errors.push(`钱包 ${i} 授权失败: ${getErrorMessageFromUnknown(error)}`);
|
|
272
280
|
}
|
|
273
281
|
}
|
|
274
282
|
const successCount = txHashes.length;
|
|
@@ -278,7 +286,7 @@ export async function approvePancakeProxyBatch(params) {
|
|
|
278
286
|
approvedCount: successCount,
|
|
279
287
|
signedTransactions: signedTxs,
|
|
280
288
|
txHashes,
|
|
281
|
-
message: `授权成功,共 ${successCount} 个钱包${errors.length > 0 ? `,${errors.length} 个失败` : ''}
|
|
289
|
+
message: `授权成功,共 ${successCount} 个钱包${errors.length > 0 ? `,${errors.length} 个失败` : ''}`,
|
|
282
290
|
};
|
|
283
291
|
}
|
|
284
292
|
else {
|
|
@@ -287,7 +295,7 @@ export async function approvePancakeProxyBatch(params) {
|
|
|
287
295
|
approvedCount: 0,
|
|
288
296
|
signedTransactions: signedTxs,
|
|
289
297
|
txHashes: [],
|
|
290
|
-
message: `授权失败: ${errors.join('; ')}
|
|
298
|
+
message: `授权失败: ${errors.join('; ')}`,
|
|
291
299
|
};
|
|
292
300
|
}
|
|
293
301
|
}
|
|
@@ -301,13 +309,13 @@ export async function pancakeProxyBatchBuyMerkle(params) {
|
|
|
301
309
|
}
|
|
302
310
|
const chainId = CHAIN_ID_MAP[chain];
|
|
303
311
|
const provider = getCachedProvider(chain, config.rpcUrl, chainId);
|
|
304
|
-
const buyers = privateKeys.map(k => new Wallet(k, provider));
|
|
305
|
-
const extractProfit = shouldExtractProfit(
|
|
312
|
+
const buyers = privateKeys.map((k) => new Wallet(k, provider));
|
|
313
|
+
const extractProfit = shouldExtractProfit();
|
|
306
314
|
const nonceManager = new NonceManager(provider);
|
|
307
315
|
const finalGasLimit = getGasLimit(config);
|
|
308
316
|
const useNativeToken = isUsingNativeToken(quoteToken);
|
|
309
|
-
const originalAmountsWei = buyAmounts.map(amount => ethers.parseEther(amount));
|
|
310
|
-
const { totalProfit, remainingAmounts } = calculateBatchProfit(originalAmountsWei
|
|
317
|
+
const originalAmountsWei = buyAmounts.map((amount) => ethers.parseEther(amount));
|
|
318
|
+
const { totalProfit, remainingAmounts } = calculateBatchProfit(originalAmountsWei);
|
|
311
319
|
const maxFundsIndex = findMaxAmountIndex(originalAmountsWei);
|
|
312
320
|
const shouldExtractProfitForBuy = extractProfit && useNativeToken;
|
|
313
321
|
const nativeProfitAmount = shouldExtractProfitForBuy ? totalProfit : 0n;
|
|
@@ -315,18 +323,17 @@ export async function pancakeProxyBatchBuyMerkle(params) {
|
|
|
315
323
|
if (!useNativeToken && quoteTokenDecimals !== undefined && quoteTokenDecimals !== 18) {
|
|
316
324
|
const decimalsDiff = 18 - quoteTokenDecimals;
|
|
317
325
|
const divisor = BigInt(10 ** decimalsDiff);
|
|
318
|
-
actualAmountsWei = remainingAmounts.map(amount => amount / divisor);
|
|
326
|
+
actualAmountsWei = remainingAmounts.map((amount) => amount / divisor);
|
|
319
327
|
}
|
|
320
328
|
const presetGasPrice = config.gasPrice;
|
|
321
329
|
const presetNonces = config.nonces;
|
|
322
|
-
const [gasPrice,
|
|
330
|
+
const [gasPrice, nonces] = await Promise.all([
|
|
323
331
|
presetGasPrice !== undefined
|
|
324
332
|
? Promise.resolve(presetGasPrice)
|
|
325
333
|
: getOptimizedGasPrice(provider, getGasPriceConfig(config)),
|
|
326
|
-
getTokenDecimals(tokenAddress, provider),
|
|
327
334
|
presetNonces && presetNonces.length === buyers.length
|
|
328
335
|
? Promise.resolve(presetNonces)
|
|
329
|
-
: allocateProfitAwareNonces(buyers, shouldExtractProfitForBuy, maxFundsIndex, nativeProfitAmount, nonceManager)
|
|
336
|
+
: allocateProfitAwareNonces(buyers, shouldExtractProfitForBuy, maxFundsIndex, nativeProfitAmount, nonceManager),
|
|
330
337
|
]);
|
|
331
338
|
const minOuts = new Array(buyers.length).fill(0n);
|
|
332
339
|
const needBNB = needSendBNB(routeType, params, useNativeToken);
|
|
@@ -337,14 +344,14 @@ export async function pancakeProxyBatchBuyMerkle(params) {
|
|
|
337
344
|
if (!params.v2Path || params.v2Path.length < 2) {
|
|
338
345
|
throw new Error('v2Path is required for V2 routing');
|
|
339
346
|
}
|
|
340
|
-
routers = buyers.map(w => new Contract(PANCAKE_V2_ROUTER_ADDRESS, V2_ROUTER_ABI, w));
|
|
347
|
+
routers = buyers.map((w) => new Contract(PANCAKE_V2_ROUTER_ADDRESS, V2_ROUTER_ABI, w));
|
|
341
348
|
unsignedBuys = await buildV2Transactions(routers, buyers, actualAmountsWei, minOuts, params.v2Path, true, needBNB);
|
|
342
349
|
}
|
|
343
350
|
else if (routeType === 'v3-single') {
|
|
344
351
|
if (!params.v3TokenIn || !params.v3Fee) {
|
|
345
352
|
throw new Error('v3TokenIn and v3Fee are required for V3 single-hop');
|
|
346
353
|
}
|
|
347
|
-
routers = buyers.map(w => new Contract(PANCAKE_V3_ROUTER_ADDRESS, V3_ROUTER_ABI, w));
|
|
354
|
+
routers = buyers.map((w) => new Contract(PANCAKE_V3_ROUTER_ADDRESS, V3_ROUTER_ABI, w));
|
|
348
355
|
unsignedBuys = await buildV3SingleTransactions(routers, buyers, params.v3TokenIn, tokenAddress, params.v3Fee, actualAmountsWei, minOuts, true, needBNB);
|
|
349
356
|
}
|
|
350
357
|
else if (routeType === 'v3-multi') {
|
|
@@ -355,7 +362,7 @@ export async function pancakeProxyBatchBuyMerkle(params) {
|
|
|
355
362
|
if (!params.v3Fees || params.v3Fees.length !== params.v3Tokens.length - 1) {
|
|
356
363
|
throw new Error(`v3Fees 长度必须等于 v3Tokens 长度 - 1`);
|
|
357
364
|
}
|
|
358
|
-
routers = buyers.map(w => new Contract(PANCAKE_V3_ROUTER_ADDRESS, V3_ROUTER_ABI, w));
|
|
365
|
+
routers = buyers.map((w) => new Contract(PANCAKE_V3_ROUTER_ADDRESS, V3_ROUTER_ABI, w));
|
|
359
366
|
unsignedBuys = await buildV3MultiHopTransactions(routers, buyers, params.v3Tokens, params.v3Fees, actualAmountsWei, minOuts, true, needBNB);
|
|
360
367
|
}
|
|
361
368
|
else {
|
|
@@ -379,11 +386,11 @@ export async function pancakeProxyBatchBuyMerkle(params) {
|
|
|
379
386
|
gasPrice,
|
|
380
387
|
gasLimit: GAS_LIMITS.BRIBE,
|
|
381
388
|
chainId,
|
|
382
|
-
type: txType
|
|
389
|
+
type: txType,
|
|
383
390
|
}));
|
|
384
391
|
}
|
|
385
392
|
unsignedBuys.forEach((unsigned, i) => {
|
|
386
|
-
const txValue = useNativeToken ? unsigned.value : 0n;
|
|
393
|
+
const txValue = useNativeToken ? (unsigned.value ?? 0n) : 0n;
|
|
387
394
|
signPromises.push(buyers[i].signTransaction({
|
|
388
395
|
...unsigned,
|
|
389
396
|
from: buyers[i].address,
|
|
@@ -392,7 +399,7 @@ export async function pancakeProxyBatchBuyMerkle(params) {
|
|
|
392
399
|
gasPrice,
|
|
393
400
|
chainId,
|
|
394
401
|
type: txType,
|
|
395
|
-
value: txValue
|
|
402
|
+
value: txValue,
|
|
396
403
|
}));
|
|
397
404
|
});
|
|
398
405
|
const signedTxs = await Promise.all(signPromises);
|
|
@@ -409,7 +416,7 @@ export async function pancakeProxyBatchBuyMerkle(params) {
|
|
|
409
416
|
gasPrice,
|
|
410
417
|
chainId,
|
|
411
418
|
txType,
|
|
412
|
-
startNonce: profitNonce
|
|
419
|
+
startNonce: profitNonce,
|
|
413
420
|
});
|
|
414
421
|
signedTxs.push(...profitHopResult.signedTransactions);
|
|
415
422
|
profitHopWallets = profitHopResult.hopWallets; // ✅ 收集利润多跳钱包
|
|
@@ -417,7 +424,7 @@ export async function pancakeProxyBatchBuyMerkle(params) {
|
|
|
417
424
|
nonceManager.clearTemp();
|
|
418
425
|
return {
|
|
419
426
|
signedTransactions: signedTxs,
|
|
420
|
-
profitHopWallets // ✅ 返回利润多跳钱包
|
|
427
|
+
profitHopWallets, // ✅ 返回利润多跳钱包
|
|
421
428
|
};
|
|
422
429
|
}
|
|
423
430
|
/**
|
|
@@ -430,9 +437,9 @@ export async function pancakeProxyBatchSellMerkle(params) {
|
|
|
430
437
|
}
|
|
431
438
|
const chainId = CHAIN_ID_MAP[chain];
|
|
432
439
|
const provider = getCachedProvider(chain, config.rpcUrl, chainId);
|
|
433
|
-
const sellers = privateKeys.map(k => new Wallet(k, provider));
|
|
440
|
+
const sellers = privateKeys.map((k) => new Wallet(k, provider));
|
|
434
441
|
const finalGasLimit = getGasLimit(config);
|
|
435
|
-
const extractProfit = shouldExtractProfit(
|
|
442
|
+
const extractProfit = shouldExtractProfit();
|
|
436
443
|
const nonceManager = new NonceManager(provider);
|
|
437
444
|
const presetGasPrice = config.gasPrice;
|
|
438
445
|
const presetNonces = config.nonces;
|
|
@@ -440,9 +447,9 @@ export async function pancakeProxyBatchSellMerkle(params) {
|
|
|
440
447
|
presetGasPrice !== undefined
|
|
441
448
|
? Promise.resolve(presetGasPrice)
|
|
442
449
|
: getOptimizedGasPrice(provider, getGasPriceConfig(config)),
|
|
443
|
-
getTokenDecimals(tokenAddress, provider)
|
|
450
|
+
getTokenDecimals(tokenAddress, provider),
|
|
444
451
|
]);
|
|
445
|
-
const amountsWei = sellAmounts.map(amount => ethers.parseUnits(amount, tokenDecimals));
|
|
452
|
+
const amountsWei = sellAmounts.map((amount) => ethers.parseUnits(amount, tokenDecimals));
|
|
446
453
|
// 获取报价
|
|
447
454
|
let quotedOutputs;
|
|
448
455
|
if (routeType === 'v2' && params.v2Path && params.v2Path.length >= 2) {
|
|
@@ -457,7 +464,7 @@ export async function pancakeProxyBatchSellMerkle(params) {
|
|
|
457
464
|
tokenOut: params.v3TokenOut,
|
|
458
465
|
amountIn: amount,
|
|
459
466
|
fee: params.v3Fee,
|
|
460
|
-
sqrtPriceLimitX96: 0
|
|
467
|
+
sqrtPriceLimitX96: 0,
|
|
461
468
|
});
|
|
462
469
|
return result[0];
|
|
463
470
|
}
|
|
@@ -478,7 +485,7 @@ export async function pancakeProxyBatchSellMerkle(params) {
|
|
|
478
485
|
for (let i = 0; i < sellers.length; i++) {
|
|
479
486
|
const quoted = quotedOutputs[i];
|
|
480
487
|
if (quoted > 0n) {
|
|
481
|
-
const { profit } = calculateProfit(quoted
|
|
488
|
+
const { profit } = calculateProfit(quoted);
|
|
482
489
|
totalProfit += profit;
|
|
483
490
|
if (quoted > maxRevenue) {
|
|
484
491
|
maxRevenue = quoted;
|
|
@@ -505,9 +512,7 @@ export async function pancakeProxyBatchSellMerkle(params) {
|
|
|
505
512
|
else if (maxRevenueNonceCount > 1 && maxRevenueIndex >= 0) {
|
|
506
513
|
const maxRevenueNonces = await nonceManager.getNextNonceBatch(sellers[maxRevenueIndex], maxRevenueNonceCount);
|
|
507
514
|
const otherSellers = sellers.filter((_, i) => i !== maxRevenueIndex);
|
|
508
|
-
const otherNonces = otherSellers.length > 0
|
|
509
|
-
? await nonceManager.getNextNoncesForWallets(otherSellers)
|
|
510
|
-
: [];
|
|
515
|
+
const otherNonces = otherSellers.length > 0 ? await nonceManager.getNextNoncesForWallets(otherSellers) : [];
|
|
511
516
|
nonces = [];
|
|
512
517
|
let otherIdx = 0;
|
|
513
518
|
let nonceIdx = 0;
|
|
@@ -536,14 +541,14 @@ export async function pancakeProxyBatchSellMerkle(params) {
|
|
|
536
541
|
if (!params.v2Path || params.v2Path.length < 2) {
|
|
537
542
|
throw new Error('v2Path is required for V2 routing');
|
|
538
543
|
}
|
|
539
|
-
routers = sellers.map(w => new Contract(PANCAKE_V2_ROUTER_ADDRESS, V2_ROUTER_ABI, w));
|
|
544
|
+
routers = sellers.map((w) => new Contract(PANCAKE_V2_ROUTER_ADDRESS, V2_ROUTER_ABI, w));
|
|
540
545
|
unsignedSells = await buildV2Transactions(routers, sellers, amountsWei, minOuts, params.v2Path, false, false);
|
|
541
546
|
}
|
|
542
547
|
else if (routeType === 'v3-single') {
|
|
543
548
|
if (!params.v3TokenOut || !params.v3Fee) {
|
|
544
549
|
throw new Error('v3TokenOut and v3Fee are required for V3 single-hop');
|
|
545
550
|
}
|
|
546
|
-
routers = sellers.map(w => new Contract(PANCAKE_V3_ROUTER_ADDRESS, V3_ROUTER_ABI, w));
|
|
551
|
+
routers = sellers.map((w) => new Contract(PANCAKE_V3_ROUTER_ADDRESS, V3_ROUTER_ABI, w));
|
|
547
552
|
unsignedSells = await buildV3SingleTransactions(routers, sellers, tokenAddress, params.v3TokenOut, params.v3Fee, amountsWei, minOuts, false, false);
|
|
548
553
|
}
|
|
549
554
|
else if (routeType === 'v3-multi') {
|
|
@@ -554,7 +559,7 @@ export async function pancakeProxyBatchSellMerkle(params) {
|
|
|
554
559
|
if (!params.v3Fees || params.v3Fees.length !== params.v3Tokens.length - 1) {
|
|
555
560
|
throw new Error(`v3Fees 长度必须等于 v3Tokens 长度 - 1`);
|
|
556
561
|
}
|
|
557
|
-
routers = sellers.map(w => new Contract(PANCAKE_V3_ROUTER_ADDRESS, V3_ROUTER_ABI, w));
|
|
562
|
+
routers = sellers.map((w) => new Contract(PANCAKE_V3_ROUTER_ADDRESS, V3_ROUTER_ABI, w));
|
|
558
563
|
unsignedSells = await buildV3MultiHopTransactions(routers, sellers, params.v3Tokens, params.v3Fees, amountsWei, minOuts, false, false);
|
|
559
564
|
}
|
|
560
565
|
else {
|
|
@@ -570,7 +575,7 @@ export async function pancakeProxyBatchSellMerkle(params) {
|
|
|
570
575
|
gasPrice,
|
|
571
576
|
gasLimit: GAS_LIMITS.BRIBE,
|
|
572
577
|
chainId,
|
|
573
|
-
type: txType
|
|
578
|
+
type: txType,
|
|
574
579
|
}));
|
|
575
580
|
}
|
|
576
581
|
unsignedSells.forEach((unsigned, i) => {
|
|
@@ -583,7 +588,7 @@ export async function pancakeProxyBatchSellMerkle(params) {
|
|
|
583
588
|
gasPrice,
|
|
584
589
|
chainId,
|
|
585
590
|
type: txType,
|
|
586
|
-
value: txValue
|
|
591
|
+
value: txValue,
|
|
587
592
|
}));
|
|
588
593
|
});
|
|
589
594
|
const signedTxs = await Promise.all(signPromises);
|
|
@@ -599,7 +604,7 @@ export async function pancakeProxyBatchSellMerkle(params) {
|
|
|
599
604
|
gasPrice,
|
|
600
605
|
chainId,
|
|
601
606
|
txType,
|
|
602
|
-
startNonce: profitNonce
|
|
607
|
+
startNonce: profitNonce,
|
|
603
608
|
});
|
|
604
609
|
signedTxs.push(...profitHopResult.signedTransactions);
|
|
605
610
|
profitHopWallets = profitHopResult.hopWallets; // ✅ 收集利润多跳钱包
|
|
@@ -607,7 +612,7 @@ export async function pancakeProxyBatchSellMerkle(params) {
|
|
|
607
612
|
nonceManager.clearTemp();
|
|
608
613
|
return {
|
|
609
614
|
signedTransactions: signedTxs,
|
|
610
|
-
profitHopWallets // ✅ 返回利润多跳钱包
|
|
615
|
+
profitHopWallets, // ✅ 返回利润多跳钱包
|
|
611
616
|
};
|
|
612
617
|
}
|
|
613
618
|
// ==================== 内部工具函数 ====================
|
|
@@ -630,10 +635,10 @@ async function batchGetV2Quotes(provider, amountsWei, v2Path) {
|
|
|
630
635
|
try {
|
|
631
636
|
const v2RouterIface = new Interface(V2_ROUTER_ABI);
|
|
632
637
|
const multicall = new Contract(MULTICALL3_ADDRESS, MULTICALL3_ABI, provider);
|
|
633
|
-
const calls = amountsWei.map(amount => ({
|
|
638
|
+
const calls = amountsWei.map((amount) => ({
|
|
634
639
|
target: PANCAKE_V2_ROUTER_ADDRESS,
|
|
635
640
|
allowFailure: true,
|
|
636
|
-
callData: v2RouterIface.encodeFunctionData('getAmountsOut', [amount, v2Path])
|
|
641
|
+
callData: v2RouterIface.encodeFunctionData('getAmountsOut', [amount, v2Path]),
|
|
637
642
|
}));
|
|
638
643
|
const results = await multicall.aggregate3.staticCall(calls);
|
|
639
644
|
return results.map((r) => {
|
|
@@ -684,9 +689,7 @@ async function allocateProfitAwareNonces(wallets, extractProfit, maxIndex, total
|
|
|
684
689
|
}
|
|
685
690
|
const maxIndexNonces = await nonceManager.getNextNonceBatch(wallets[maxIndex], 2);
|
|
686
691
|
const otherWallets = wallets.filter((_, i) => i !== maxIndex);
|
|
687
|
-
const otherNonces = otherWallets.length > 0
|
|
688
|
-
? await nonceManager.getNextNoncesForWallets(otherWallets)
|
|
689
|
-
: [];
|
|
692
|
+
const otherNonces = otherWallets.length > 0 ? await nonceManager.getNextNoncesForWallets(otherWallets) : [];
|
|
690
693
|
const nonces = [];
|
|
691
694
|
let otherIdx = 0;
|
|
692
695
|
for (let i = 0; i < wallets.length; i++) {
|