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