four-flap-meme-sdk 2.2.1 → 2.2.2
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 +85 -20
- package/dist/index.js +215 -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 +252 -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 +3 -2
- 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 +3 -3
- package/dist/shared/flap/index.js +3 -3
- 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 +172 -92
- package/dist/shared/flap/portal-bundle-merkle/create-to-dex.d.ts +1 -2
- package/dist/shared/flap/portal-bundle-merkle/create-to-dex.js +99 -106
- 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 +7 -73
- 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 -1
- package/dist/shared/flap/portal.js +25 -32
- package/dist/shared/flap/vanity.d.ts +5 -1
- package/dist/shared/flap/vanity.js +17 -6
- package/dist/shared/flap/vault.d.ts +124 -17
- package/dist/shared/flap/vault.js +148 -67
- 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 -260
- 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/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
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 私募转账签名 — 类型定义
|
|
3
|
-
*/
|
|
4
|
-
import type { GeneratedWallet } from '../../../utils/wallet.js';
|
|
5
|
-
export interface PrivateSaleSignConfig {
|
|
6
|
-
rpcUrl: string;
|
|
7
|
-
chainId?: number;
|
|
8
|
-
gasLimit?: number;
|
|
9
|
-
gasPriceGwei?: number;
|
|
10
|
-
bribeAmount?: number;
|
|
11
|
-
extractProfit?: boolean;
|
|
12
|
-
profitBps?: number;
|
|
13
|
-
}
|
|
14
|
-
export interface PrivateSaleTransferParams {
|
|
15
|
-
senderPrivateKey: string;
|
|
16
|
-
recipient: string;
|
|
17
|
-
amount: number;
|
|
18
|
-
}
|
|
19
|
-
export interface BatchPrivateSaleParams {
|
|
20
|
-
transfers: PrivateSaleTransferParams[];
|
|
21
|
-
config: PrivateSaleSignConfig;
|
|
22
|
-
}
|
|
23
|
-
export interface PrivateSaleResult {
|
|
24
|
-
signedTransactions: string[];
|
|
25
|
-
profitHopWallets?: GeneratedWallet[];
|
|
26
|
-
metadata: {
|
|
27
|
-
totalCount: number;
|
|
28
|
-
bribeCount: number;
|
|
29
|
-
transferCount: number;
|
|
30
|
-
profitCount: number;
|
|
31
|
-
totalAmountWei: string;
|
|
32
|
-
totalProfitWei: string;
|
|
33
|
-
bribeAmountWei: string;
|
|
34
|
-
};
|
|
35
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { JsonRpcProvider } from 'ethers';
|
|
2
|
-
export type SupportedChain = 'BSC' | 'MONAD' | 'XLAYER' | 'ENI';
|
|
3
|
-
export interface QuoteParams {
|
|
4
|
-
provider: JsonRpcProvider;
|
|
5
|
-
tokenIn: string;
|
|
6
|
-
tokenOut: string;
|
|
7
|
-
amountIn: bigint;
|
|
8
|
-
chain: string;
|
|
9
|
-
version?: 'v2' | 'v3';
|
|
10
|
-
fee?: number;
|
|
11
|
-
routerOverride?: string;
|
|
12
|
-
}
|
|
13
|
-
export interface QuoteResult {
|
|
14
|
-
amountOut: bigint;
|
|
15
|
-
path?: string[];
|
|
16
|
-
fee?: number;
|
|
17
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/types/errors.d.ts
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 统一 SDK 错误代码
|
|
3
|
-
*
|
|
4
|
-
* 合并 Four.meme (parseFourError) 和 Flap Protocol (parseFlapError) 的错误代码。
|
|
5
|
-
*/
|
|
6
|
-
export declare enum SdkErrorCode {
|
|
7
|
-
UNKNOWN_ERROR = "UNKNOWN_ERROR",
|
|
8
|
-
INSUFFICIENT_BALANCE = "INSUFFICIENT_BALANCE",
|
|
9
|
-
SLIPPAGE_EXCEEDED = "SLIPPAGE_EXCEEDED",
|
|
10
|
-
TRANSACTION_FAILED = "TRANSACTION_FAILED",
|
|
11
|
-
TOKEN_ALREADY_EXISTS = "TOKEN_ALREADY_EXISTS",
|
|
12
|
-
TOKEN_NOT_FOUND = "TOKEN_NOT_FOUND",
|
|
13
|
-
TOKEN_NOT_TRADABLE = "TOKEN_NOT_TRADABLE",
|
|
14
|
-
ALREADY_ON_DEX = "ALREADY_ON_DEX",
|
|
15
|
-
FOUR_GWEI_PRECISION = "FOUR_GWEI_PRECISION",
|
|
16
|
-
FOUR_ZERO_ADDRESS = "FOUR_ZERO_ADDRESS",
|
|
17
|
-
FOUR_SLIPPAGE = "FOUR_SLIPPAGE",
|
|
18
|
-
FOUR_INSUFFICIENT_FUNDS = "FOUR_INSUFFICIENT_FUNDS",
|
|
19
|
-
FOUR_FEE_TOO_HIGH = "FOUR_FEE_TOO_HIGH",
|
|
20
|
-
FOUR_ORDER_TOO_SMALL = "FOUR_ORDER_TOO_SMALL",
|
|
21
|
-
INVALID_AMOUNT = "INVALID_AMOUNT",
|
|
22
|
-
INVALID_TOKEN = "INVALID_TOKEN",
|
|
23
|
-
INVALID_QUOTE_TOKEN = "INVALID_QUOTE_TOKEN",
|
|
24
|
-
TAX_RATE_TOO_HIGH = "TAX_RATE_TOO_HIGH",
|
|
25
|
-
PERMIT_EXPIRED = "PERMIT_EXPIRED",
|
|
26
|
-
PERMIT_INVALID = "PERMIT_INVALID"
|
|
27
|
-
}
|
package/dist/types/errors.js
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 统一 SDK 错误代码
|
|
3
|
-
*
|
|
4
|
-
* 合并 Four.meme (parseFourError) 和 Flap Protocol (parseFlapError) 的错误代码。
|
|
5
|
-
*/
|
|
6
|
-
export var SdkErrorCode;
|
|
7
|
-
(function (SdkErrorCode) {
|
|
8
|
-
// Generic
|
|
9
|
-
SdkErrorCode["UNKNOWN_ERROR"] = "UNKNOWN_ERROR";
|
|
10
|
-
// Transaction / Bundle
|
|
11
|
-
SdkErrorCode["INSUFFICIENT_BALANCE"] = "INSUFFICIENT_BALANCE";
|
|
12
|
-
SdkErrorCode["SLIPPAGE_EXCEEDED"] = "SLIPPAGE_EXCEEDED";
|
|
13
|
-
SdkErrorCode["TRANSACTION_FAILED"] = "TRANSACTION_FAILED";
|
|
14
|
-
// Token state
|
|
15
|
-
SdkErrorCode["TOKEN_ALREADY_EXISTS"] = "TOKEN_ALREADY_EXISTS";
|
|
16
|
-
SdkErrorCode["TOKEN_NOT_FOUND"] = "TOKEN_NOT_FOUND";
|
|
17
|
-
SdkErrorCode["TOKEN_NOT_TRADABLE"] = "TOKEN_NOT_TRADABLE";
|
|
18
|
-
SdkErrorCode["ALREADY_ON_DEX"] = "ALREADY_ON_DEX";
|
|
19
|
-
// Four.meme specific
|
|
20
|
-
SdkErrorCode["FOUR_GWEI_PRECISION"] = "FOUR_GWEI_PRECISION";
|
|
21
|
-
SdkErrorCode["FOUR_ZERO_ADDRESS"] = "FOUR_ZERO_ADDRESS";
|
|
22
|
-
SdkErrorCode["FOUR_SLIPPAGE"] = "FOUR_SLIPPAGE";
|
|
23
|
-
SdkErrorCode["FOUR_INSUFFICIENT_FUNDS"] = "FOUR_INSUFFICIENT_FUNDS";
|
|
24
|
-
SdkErrorCode["FOUR_FEE_TOO_HIGH"] = "FOUR_FEE_TOO_HIGH";
|
|
25
|
-
SdkErrorCode["FOUR_ORDER_TOO_SMALL"] = "FOUR_ORDER_TOO_SMALL";
|
|
26
|
-
// Validation
|
|
27
|
-
SdkErrorCode["INVALID_AMOUNT"] = "INVALID_AMOUNT";
|
|
28
|
-
SdkErrorCode["INVALID_TOKEN"] = "INVALID_TOKEN";
|
|
29
|
-
SdkErrorCode["INVALID_QUOTE_TOKEN"] = "INVALID_QUOTE_TOKEN";
|
|
30
|
-
SdkErrorCode["TAX_RATE_TOO_HIGH"] = "TAX_RATE_TOO_HIGH";
|
|
31
|
-
// Permit
|
|
32
|
-
SdkErrorCode["PERMIT_EXPIRED"] = "PERMIT_EXPIRED";
|
|
33
|
-
SdkErrorCode["PERMIT_INVALID"] = "PERMIT_INVALID";
|
|
34
|
-
})(SdkErrorCode || (SdkErrorCode = {}));
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export declare const FOUR_TM2_ABI: string[];
|
|
2
|
-
export declare const PANCAKE_V2_ROUTER_ADDRESS: "0x10ED43C718714eb63d5aA57B78B54704E256024E";
|
|
3
|
-
export declare const PANCAKE_V3_ROUTER_ADDRESS: "0x13f4EA83D0bd40E75C8222255bc855a974568Dd4";
|
|
4
|
-
export declare const WBNB_ADDRESS: "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c";
|
|
5
|
-
export declare const USDT_ADDRESS: "0x55d398326f99059fF775485246999027B3197955";
|
|
6
|
-
export declare const USDC_ADDRESS: "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d";
|
|
7
|
-
export declare const XLAYER_V2_ROUTER_ADDRESS: "0x881fb2f98c13d521009464e7d1cbf16e1b394e8e";
|
|
8
|
-
export declare const XLAYER_V3_ROUTER_ADDRESS: "0xBB069e9465BcabC4F488d21e793BDEf0F2d41D41";
|
|
9
|
-
export declare const WOKB_ADDRESS: "0xe538905cf8410324e03a5a23c1c177a474d59b2b";
|
|
10
|
-
export declare const ENI_V2_ROUTER_ADDRESS: "0x97ed8be49d9a8b86247090aa41e908e76b8fcf22";
|
|
11
|
-
export declare const ENI_DAOAAS_PORTAL_ADDRESS: "0x0078341F4CD09D7E6D3125ef6eb4cB2F46CA8310";
|
|
12
|
-
export declare const WEGAS_ADDRESS: "0x6d1e851446f4d004ae2a72f9afed85e8829a205e";
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { ADDRESSES } from '../constants.js';
|
|
2
|
-
export const FOUR_TM2_ABI = [
|
|
3
|
-
'function buyTokenAMAP(uint256 origin, address token, address to, uint256 funds, uint256 minAmount) payable',
|
|
4
|
-
];
|
|
5
|
-
export const PANCAKE_V2_ROUTER_ADDRESS = ADDRESSES.BSC.PancakeV2Router;
|
|
6
|
-
export const PANCAKE_V3_ROUTER_ADDRESS = ADDRESSES.BSC.PancakeV3Router;
|
|
7
|
-
export const WBNB_ADDRESS = ADDRESSES.BSC.WBNB;
|
|
8
|
-
export const USDT_ADDRESS = ADDRESSES.BSC.USDT;
|
|
9
|
-
export const USDC_ADDRESS = ADDRESSES.BSC.USDC;
|
|
10
|
-
export const XLAYER_V2_ROUTER_ADDRESS = ADDRESSES.XLAYER.PotatoSwapV2Router;
|
|
11
|
-
export const XLAYER_V3_ROUTER_ADDRESS = ADDRESSES.XLAYER.PotatoSwapV3Router;
|
|
12
|
-
export const WOKB_ADDRESS = ADDRESSES.XLAYER.WOKB;
|
|
13
|
-
export const ENI_V2_ROUTER_ADDRESS = ADDRESSES.ENI.DswapV2Router;
|
|
14
|
-
export const ENI_DAOAAS_PORTAL_ADDRESS = ADDRESSES.ENI.DaoaasPortal;
|
|
15
|
-
export const WEGAS_ADDRESS = ADDRESSES.ENI.WEGAS;
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { Wallet } from 'ethers';
|
|
2
|
-
import type { HoldersMakerChain } from '../../shared/foundation/types/holders-maker.js';
|
|
3
|
-
/**
|
|
4
|
-
* 构建 Flap 买入交易
|
|
5
|
-
* 使用 swapExactInput 方法
|
|
6
|
-
*/
|
|
7
|
-
export declare function buildFlapBuyTx(wallet: Wallet, tokenAddress: string, buyAmount: bigint, nonce: number, gasPrice: bigint, gasLimit: number, chainId: number, txType: 0 | 2, chain: HoldersMakerChain): Promise<string>;
|
|
8
|
-
/**
|
|
9
|
-
* 构建 Four 内盘买入交易
|
|
10
|
-
* 使用 buyTokenAMAP 方法
|
|
11
|
-
*/
|
|
12
|
-
export declare function buildFourBuyTx(wallet: Wallet, tokenAddress: string, buyAmount: bigint, nonce: number, gasPrice: bigint, gasLimit: number, chainId: number, txType: 0 | 2): Promise<string>;
|
|
13
|
-
/**
|
|
14
|
-
* 构建 DAOaaS 内盘买入交易 (ENI 链)
|
|
15
|
-
* EGAS → Token (使用 DAOaaS Portal buy)
|
|
16
|
-
*/
|
|
17
|
-
export declare function buildDaoaasBuyTx(wallet: Wallet, tokenAddress: string, buyAmount: bigint, nonce: number, gasPrice: bigint, gasLimit: number, chainId: number): Promise<string>;
|
|
18
|
-
/**
|
|
19
|
-
* 构建 V2 买入交易
|
|
20
|
-
* BNB/OKB → Token (使用 swapExactETHForTokensSupportingFeeOnTransferTokens)
|
|
21
|
-
*/
|
|
22
|
-
export declare function buildV2BuyTx(wallet: Wallet, tokenAddress: string, buyAmount: bigint, nonce: number, gasPrice: bigint, gasLimit: number, chainId: number, txType: 0 | 2, v2Path?: string[], chain?: HoldersMakerChain, v2RouterOverride?: string): Promise<string>;
|
|
23
|
-
/**
|
|
24
|
-
* 构建 V3 单跳买入交易
|
|
25
|
-
* BNB/OKB → Token (使用 exactInputSingle + multicall)
|
|
26
|
-
*
|
|
27
|
-
* ✅ 修复:根据链类型选择正确的 Router ABI 版本
|
|
28
|
-
* - XLayer/Monad: 旧版 Router(exactInputSingle 包含 deadline,multicall(bytes[]))
|
|
29
|
-
* - BSC: 新版 SwapRouter02(exactInputSingle 不含 deadline,multicall(uint256,bytes[]))
|
|
30
|
-
*/
|
|
31
|
-
export declare function buildV3BuyTx(wallet: Wallet, tokenAddress: string, buyAmount: bigint, nonce: number, gasPrice: bigint, gasLimit: number, chainId: number, txType: 0 | 2, v3Fee?: number, // 默认 0.25% 手续费
|
|
32
|
-
chain?: HoldersMakerChain): Promise<string>;
|
|
33
|
-
/**
|
|
34
|
-
* 构建 V2 买入交易(ERC20 输入)
|
|
35
|
-
* USDT/USDC → Token (使用 swapExactTokensForTokensSupportingFeeOnTransferTokens)
|
|
36
|
-
*/
|
|
37
|
-
export declare function buildV2BuyTxWithERC20(wallet: Wallet, tokenAddress: string, baseTokenAddress: string, buyAmount: bigint, nonce: number, gasPrice: bigint, gasLimit: number, chainId: number, txType: 0 | 2, v2RouterOverride?: string, chain?: HoldersMakerChain): Promise<string>;
|
|
38
|
-
/**
|
|
39
|
-
* 构建 V3 买入交易(ERC20 输入)
|
|
40
|
-
* USDT/USDC → Token (使用 exactInputSingle + multicall)
|
|
41
|
-
*
|
|
42
|
-
* ✅ 修复:使用 ethers.Interface 手动编码 calldata,避免 multicall 重载问题
|
|
43
|
-
*/
|
|
44
|
-
export declare function buildV3BuyTxWithERC20(wallet: Wallet, tokenAddress: string, baseTokenAddress: string, buyAmount: bigint, nonce: number, gasPrice: bigint, gasLimit: number, chainId: number, txType: 0 | 2, v3Fee?: number): Promise<string>;
|
|
@@ -1,278 +0,0 @@
|
|
|
1
|
-
import { ethers, Contract } from 'ethers';
|
|
2
|
-
import { getDeadline } from '../bundle-helpers.js';
|
|
3
|
-
import { ADDRESSES } from '../constants.js';
|
|
4
|
-
import { FLAP_PORTAL_ADDRESSES } from '../../shared/flap/constants.js';
|
|
5
|
-
import { V2_ROUTER_ABI, V3_ROUTER02_ABI, V3_ROUTER_LEGACY_ABI } from '../../abis/common.js';
|
|
6
|
-
import { ENI_DAOAAS_PORTAL_ADDRESS, FOUR_TM2_ABI, PANCAKE_V3_ROUTER_ADDRESS, XLAYER_V3_ROUTER_ADDRESS, } from './addresses.js';
|
|
7
|
-
import { getRouterAddress, getWrappedNativeAddress } from './routing.js';
|
|
8
|
-
/**
|
|
9
|
-
* 构建 Flap 买入交易
|
|
10
|
-
* 使用 swapExactInput 方法
|
|
11
|
-
*/
|
|
12
|
-
export async function buildFlapBuyTx(wallet, tokenAddress, buyAmount, nonce, gasPrice, gasLimit, chainId, txType, chain) {
|
|
13
|
-
const portalAddress = FLAP_PORTAL_ADDRESSES[chain];
|
|
14
|
-
// ✅ 使用正确的 Flap Portal ABI
|
|
15
|
-
const iface = new ethers.Interface([
|
|
16
|
-
'function swapExactInput((address inputToken,address outputToken,uint256 inputAmount,uint256 minOutputAmount,bytes permitData)) external payable returns (uint256)',
|
|
17
|
-
]);
|
|
18
|
-
// ✅ 构建 swapExactInput 参数
|
|
19
|
-
// inputToken = 0x0 表示原生代币(BNB)
|
|
20
|
-
// outputToken = tokenAddress(要买入的代币)
|
|
21
|
-
const data = iface.encodeFunctionData('swapExactInput', [
|
|
22
|
-
{
|
|
23
|
-
inputToken: ethers.ZeroAddress, // 原生代币(BNB)
|
|
24
|
-
outputToken: tokenAddress, // 要买入的代币
|
|
25
|
-
inputAmount: buyAmount,
|
|
26
|
-
minOutputAmount: 0n, // 不设滑点保护
|
|
27
|
-
permitData: '0x',
|
|
28
|
-
},
|
|
29
|
-
]);
|
|
30
|
-
const tx = {
|
|
31
|
-
to: portalAddress,
|
|
32
|
-
data,
|
|
33
|
-
value: buyAmount,
|
|
34
|
-
nonce,
|
|
35
|
-
gasLimit: BigInt(gasLimit),
|
|
36
|
-
chainId,
|
|
37
|
-
};
|
|
38
|
-
if (txType === 2) {
|
|
39
|
-
tx.maxFeePerGas = gasPrice;
|
|
40
|
-
tx.maxPriorityFeePerGas = gasPrice / 10n || 1n;
|
|
41
|
-
tx.type = 2;
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
tx.gasPrice = gasPrice;
|
|
45
|
-
tx.type = 0;
|
|
46
|
-
}
|
|
47
|
-
return await wallet.signTransaction(tx);
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* 构建 Four 内盘买入交易
|
|
51
|
-
* 使用 buyTokenAMAP 方法
|
|
52
|
-
*/
|
|
53
|
-
export async function buildFourBuyTx(wallet, tokenAddress, buyAmount, nonce, gasPrice, gasLimit, chainId, txType) {
|
|
54
|
-
const tmAddress = ADDRESSES.BSC.TokenManagerOriginal;
|
|
55
|
-
const iface = new ethers.Interface(FOUR_TM2_ABI);
|
|
56
|
-
const data = iface.encodeFunctionData('buyTokenAMAP', [
|
|
57
|
-
0n, // origin
|
|
58
|
-
tokenAddress, // token
|
|
59
|
-
wallet.address, // to(接收者为自己)
|
|
60
|
-
buyAmount, // funds
|
|
61
|
-
0n, // minAmount(不设滑点保护)
|
|
62
|
-
]);
|
|
63
|
-
const tx = {
|
|
64
|
-
to: tmAddress,
|
|
65
|
-
data,
|
|
66
|
-
value: buyAmount,
|
|
67
|
-
nonce,
|
|
68
|
-
gasLimit: BigInt(gasLimit),
|
|
69
|
-
chainId,
|
|
70
|
-
};
|
|
71
|
-
if (txType === 2) {
|
|
72
|
-
tx.maxFeePerGas = gasPrice;
|
|
73
|
-
tx.maxPriorityFeePerGas = gasPrice / 10n || 1n;
|
|
74
|
-
tx.type = 2;
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
tx.gasPrice = gasPrice;
|
|
78
|
-
tx.type = 0;
|
|
79
|
-
}
|
|
80
|
-
return await wallet.signTransaction(tx);
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* 构建 DAOaaS 内盘买入交易 (ENI 链)
|
|
84
|
-
* EGAS → Token (使用 DAOaaS Portal buy)
|
|
85
|
-
*/
|
|
86
|
-
export async function buildDaoaasBuyTx(wallet, tokenAddress, buyAmount, nonce, gasPrice, gasLimit, chainId) {
|
|
87
|
-
const portalAbi = ['function purchaseToken(address token, uint256 AmountMin) payable'];
|
|
88
|
-
const iface = new ethers.Interface(portalAbi);
|
|
89
|
-
const data = iface.encodeFunctionData('purchaseToken', [tokenAddress, 0n]);
|
|
90
|
-
const tx = {
|
|
91
|
-
to: ENI_DAOAAS_PORTAL_ADDRESS,
|
|
92
|
-
data,
|
|
93
|
-
value: buyAmount,
|
|
94
|
-
nonce,
|
|
95
|
-
gasLimit: BigInt(gasLimit),
|
|
96
|
-
chainId,
|
|
97
|
-
type: 2,
|
|
98
|
-
maxFeePerGas: gasPrice,
|
|
99
|
-
maxPriorityFeePerGas: gasPrice / 10n || 1n,
|
|
100
|
-
};
|
|
101
|
-
return await wallet.signTransaction(tx);
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* 构建 V2 买入交易
|
|
105
|
-
* BNB/OKB → Token (使用 swapExactETHForTokensSupportingFeeOnTransferTokens)
|
|
106
|
-
*/
|
|
107
|
-
export async function buildV2BuyTx(wallet, tokenAddress, buyAmount, nonce, gasPrice, gasLimit, chainId, txType, v2Path, chain, v2RouterOverride) {
|
|
108
|
-
const wrappedNative = getWrappedNativeAddress(chain);
|
|
109
|
-
const routerAddress = v2RouterOverride || getRouterAddress('v2', chain);
|
|
110
|
-
const path = v2Path ? [...v2Path].reverse() : [wrappedNative, tokenAddress];
|
|
111
|
-
const deadline = getDeadline();
|
|
112
|
-
const v2Router = new Contract(routerAddress, V2_ROUTER_ABI, wallet);
|
|
113
|
-
const unsigned = await v2Router.swapExactETHForTokensSupportingFeeOnTransferTokens.populateTransaction(0n, // amountOutMin(不设滑点保护)
|
|
114
|
-
path, wallet.address, deadline, { value: buyAmount });
|
|
115
|
-
const tx = {
|
|
116
|
-
...unsigned,
|
|
117
|
-
nonce,
|
|
118
|
-
gasLimit: BigInt(gasLimit),
|
|
119
|
-
chainId,
|
|
120
|
-
};
|
|
121
|
-
if (txType === 2) {
|
|
122
|
-
tx.maxFeePerGas = gasPrice;
|
|
123
|
-
tx.maxPriorityFeePerGas = gasPrice / 10n || 1n;
|
|
124
|
-
tx.type = 2;
|
|
125
|
-
}
|
|
126
|
-
else {
|
|
127
|
-
tx.gasPrice = gasPrice;
|
|
128
|
-
tx.type = 0;
|
|
129
|
-
}
|
|
130
|
-
return await wallet.signTransaction(tx);
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* 构建 V3 单跳买入交易
|
|
134
|
-
* BNB/OKB → Token (使用 exactInputSingle + multicall)
|
|
135
|
-
*
|
|
136
|
-
* ✅ 修复:根据链类型选择正确的 Router ABI 版本
|
|
137
|
-
* - XLayer/Monad: 旧版 Router(exactInputSingle 包含 deadline,multicall(bytes[]))
|
|
138
|
-
* - BSC: 新版 SwapRouter02(exactInputSingle 不含 deadline,multicall(uint256,bytes[]))
|
|
139
|
-
*/
|
|
140
|
-
export async function buildV3BuyTx(wallet, tokenAddress, buyAmount, nonce, gasPrice, gasLimit, chainId, txType, v3Fee = 2500, // 默认 0.25% 手续费
|
|
141
|
-
chain) {
|
|
142
|
-
const deadline = getDeadline();
|
|
143
|
-
const wrappedNative = getWrappedNativeAddress(chain);
|
|
144
|
-
const routerAddress = chain === 'XLAYER' ? XLAYER_V3_ROUTER_ADDRESS : PANCAKE_V3_ROUTER_ADDRESS;
|
|
145
|
-
// ✅ 根据链类型选择正确的 ABI 版本
|
|
146
|
-
// XLayer/Monad 使用旧版 Router(exactInputSingle 包含 deadline)
|
|
147
|
-
// BSC 使用新版 SwapRouter02(exactInputSingle 不含 deadline)
|
|
148
|
-
const useLegacyRouter = chain === 'XLAYER' || chain === 'MONAD';
|
|
149
|
-
const v3RouterIface = new ethers.Interface(useLegacyRouter ? V3_ROUTER_LEGACY_ABI : V3_ROUTER02_ABI);
|
|
150
|
-
let multicallData;
|
|
151
|
-
if (useLegacyRouter) {
|
|
152
|
-
// ✅ 旧版 Router:swapParams 包含 deadline,multicall(bytes[])
|
|
153
|
-
const swapParams = {
|
|
154
|
-
tokenIn: wrappedNative,
|
|
155
|
-
tokenOut: tokenAddress,
|
|
156
|
-
fee: v3Fee,
|
|
157
|
-
recipient: wallet.address,
|
|
158
|
-
deadline, // ✅ 旧版包含 deadline
|
|
159
|
-
amountIn: buyAmount,
|
|
160
|
-
amountOutMinimum: 0n,
|
|
161
|
-
sqrtPriceLimitX96: 0n,
|
|
162
|
-
};
|
|
163
|
-
const exactInputSingleData = v3RouterIface.encodeFunctionData('exactInputSingle', [swapParams]);
|
|
164
|
-
const refundETHData = v3RouterIface.encodeFunctionData('refundETH', []);
|
|
165
|
-
// ✅ 旧版 multicall:只有 bytes[] 参数
|
|
166
|
-
multicallData = v3RouterIface.encodeFunctionData('multicall(bytes[])', [[exactInputSingleData, refundETHData]]);
|
|
167
|
-
}
|
|
168
|
-
else {
|
|
169
|
-
// ✅ 新版 SwapRouter02:swapParams 不含 deadline,multicall(uint256,bytes[])
|
|
170
|
-
const swapParams = {
|
|
171
|
-
tokenIn: wrappedNative,
|
|
172
|
-
tokenOut: tokenAddress,
|
|
173
|
-
fee: v3Fee,
|
|
174
|
-
recipient: wallet.address,
|
|
175
|
-
amountIn: buyAmount,
|
|
176
|
-
amountOutMinimum: 0n,
|
|
177
|
-
sqrtPriceLimitX96: 0n,
|
|
178
|
-
};
|
|
179
|
-
const exactInputSingleData = v3RouterIface.encodeFunctionData('exactInputSingle', [swapParams]);
|
|
180
|
-
const refundETHData = v3RouterIface.encodeFunctionData('refundETH', []);
|
|
181
|
-
// ✅ 新版 multicall:deadline 作为第一个参数
|
|
182
|
-
multicallData = v3RouterIface.encodeFunctionData('multicall(uint256,bytes[])', [
|
|
183
|
-
deadline,
|
|
184
|
-
[exactInputSingleData, refundETHData],
|
|
185
|
-
]);
|
|
186
|
-
}
|
|
187
|
-
const tx = {
|
|
188
|
-
to: routerAddress,
|
|
189
|
-
data: multicallData,
|
|
190
|
-
value: buyAmount,
|
|
191
|
-
nonce,
|
|
192
|
-
gasLimit: BigInt(gasLimit),
|
|
193
|
-
chainId,
|
|
194
|
-
};
|
|
195
|
-
if (txType === 2) {
|
|
196
|
-
tx.maxFeePerGas = gasPrice;
|
|
197
|
-
tx.maxPriorityFeePerGas = gasPrice / 10n || 1n;
|
|
198
|
-
tx.type = 2;
|
|
199
|
-
}
|
|
200
|
-
else {
|
|
201
|
-
tx.gasPrice = gasPrice;
|
|
202
|
-
tx.type = 0;
|
|
203
|
-
}
|
|
204
|
-
return await wallet.signTransaction(tx);
|
|
205
|
-
}
|
|
206
|
-
/**
|
|
207
|
-
* 构建 V2 买入交易(ERC20 输入)
|
|
208
|
-
* USDT/USDC → Token (使用 swapExactTokensForTokensSupportingFeeOnTransferTokens)
|
|
209
|
-
*/
|
|
210
|
-
export async function buildV2BuyTxWithERC20(wallet, tokenAddress, baseTokenAddress, buyAmount, nonce, gasPrice, gasLimit, chainId, txType, v2RouterOverride, chain) {
|
|
211
|
-
const path = [baseTokenAddress, tokenAddress];
|
|
212
|
-
const deadline = getDeadline();
|
|
213
|
-
const routerAddress = v2RouterOverride || getRouterAddress('v2', chain);
|
|
214
|
-
const v2Router = new Contract(routerAddress, V2_ROUTER_ABI, wallet);
|
|
215
|
-
const unsigned = await v2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens.populateTransaction(buyAmount, // amountIn
|
|
216
|
-
0n, // amountOutMin(不设滑点保护)
|
|
217
|
-
path, wallet.address, deadline);
|
|
218
|
-
const tx = {
|
|
219
|
-
...unsigned,
|
|
220
|
-
nonce,
|
|
221
|
-
gasLimit: BigInt(gasLimit),
|
|
222
|
-
chainId,
|
|
223
|
-
};
|
|
224
|
-
if (txType === 2) {
|
|
225
|
-
tx.maxFeePerGas = gasPrice;
|
|
226
|
-
tx.maxPriorityFeePerGas = gasPrice / 10n || 1n;
|
|
227
|
-
tx.type = 2;
|
|
228
|
-
}
|
|
229
|
-
else {
|
|
230
|
-
tx.gasPrice = gasPrice;
|
|
231
|
-
tx.type = 0;
|
|
232
|
-
}
|
|
233
|
-
return await wallet.signTransaction(tx);
|
|
234
|
-
}
|
|
235
|
-
/**
|
|
236
|
-
* 构建 V3 买入交易(ERC20 输入)
|
|
237
|
-
* USDT/USDC → Token (使用 exactInputSingle + multicall)
|
|
238
|
-
*
|
|
239
|
-
* ✅ 修复:使用 ethers.Interface 手动编码 calldata,避免 multicall 重载问题
|
|
240
|
-
*/
|
|
241
|
-
export async function buildV3BuyTxWithERC20(wallet, tokenAddress, baseTokenAddress, buyAmount, nonce, gasPrice, gasLimit, chainId, txType, v3Fee = 2500) {
|
|
242
|
-
const deadline = getDeadline();
|
|
243
|
-
const v3RouterIface = new ethers.Interface(V3_ROUTER02_ABI);
|
|
244
|
-
// 构建 exactInputSingle calldata
|
|
245
|
-
const swapParams = {
|
|
246
|
-
tokenIn: baseTokenAddress,
|
|
247
|
-
tokenOut: tokenAddress,
|
|
248
|
-
fee: v3Fee,
|
|
249
|
-
recipient: wallet.address,
|
|
250
|
-
amountIn: buyAmount,
|
|
251
|
-
amountOutMinimum: 0n,
|
|
252
|
-
sqrtPriceLimitX96: 0n,
|
|
253
|
-
};
|
|
254
|
-
const exactInputSingleData = v3RouterIface.encodeFunctionData('exactInputSingle', [swapParams]);
|
|
255
|
-
// ✅ 使用明确的函数签名编码 multicall,避免重载问题
|
|
256
|
-
const multicallData = v3RouterIface.encodeFunctionData('multicall(uint256,bytes[])', [
|
|
257
|
-
deadline,
|
|
258
|
-
[exactInputSingleData],
|
|
259
|
-
]);
|
|
260
|
-
const tx = {
|
|
261
|
-
to: PANCAKE_V3_ROUTER_ADDRESS,
|
|
262
|
-
data: multicallData,
|
|
263
|
-
value: 0n,
|
|
264
|
-
nonce,
|
|
265
|
-
gasLimit: BigInt(gasLimit),
|
|
266
|
-
chainId,
|
|
267
|
-
};
|
|
268
|
-
if (txType === 2) {
|
|
269
|
-
tx.maxFeePerGas = gasPrice;
|
|
270
|
-
tx.maxPriorityFeePerGas = gasPrice / 10n || 1n;
|
|
271
|
-
tx.type = 2;
|
|
272
|
-
}
|
|
273
|
-
else {
|
|
274
|
-
tx.gasPrice = gasPrice;
|
|
275
|
-
tx.type = 0;
|
|
276
|
-
}
|
|
277
|
-
return await wallet.signTransaction(tx);
|
|
278
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export declare const ERC20_TRANSFER_GAS_LIMIT: 65000n;
|
|
2
|
-
export declare const ERC20_APPROVE_GAS_LIMIT = 50000n;
|
|
3
|
-
export declare const DEFAULT_GAS_LIMIT = 800000;
|
|
4
|
-
export declare const DEFAULT_GAS_PRICE_GWEI = 3;
|
|
5
|
-
export declare const GAS_BUFFER_MULTIPLIER = 2;
|
|
6
|
-
export declare const NATIVE_TRANSFER_GAS_LIMIT: 21055n;
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { GAS_LIMITS } from '../../shared/constants/index.js';
|
|
2
|
-
export const ERC20_TRANSFER_GAS_LIMIT = GAS_LIMITS.ERC20_TRANSFER;
|
|
3
|
-
export const ERC20_APPROVE_GAS_LIMIT = 50000n;
|
|
4
|
-
export const DEFAULT_GAS_LIMIT = 800000;
|
|
5
|
-
export const DEFAULT_GAS_PRICE_GWEI = 3;
|
|
6
|
-
export const GAS_BUFFER_MULTIPLIER = 2;
|
|
7
|
-
export const NATIVE_TRANSFER_GAS_LIMIT = GAS_LIMITS.NATIVE_TRANSFER;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { JsonRpcProvider, Wallet } from 'ethers';
|
|
2
|
-
import type { GeneratedWallet } from '../types/wallet.js';
|
|
3
|
-
import type { DisperseHopPath } from '../types/hop-chains.js';
|
|
4
|
-
import type { HoldersMakerChain } from '../../shared/foundation/types/holders-maker.js';
|
|
5
|
-
export type { DisperseHopPath } from '../types/hop-chains.js';
|
|
6
|
-
export declare function generateDisperseHopPaths(targetWallets: GeneratedWallet[], hopCount: number, provider: JsonRpcProvider): DisperseHopPath[];
|
|
7
|
-
export declare function buildDisperseHopChainNative(payer: Wallet, path: DisperseHopPath, finalAmount: bigint, gasPrice: bigint, chainId: number, txType: 0 | 2, payerNonce: number, isERC20Mode?: boolean): Promise<{
|
|
8
|
-
signedTxs: string[];
|
|
9
|
-
payerNoncesUsed: number;
|
|
10
|
-
}>;
|
|
11
|
-
export declare function buildDisperseHopChainERC20(payer: Wallet, path: DisperseHopPath, erc20Address: string, erc20Amount: bigint, gasPrice: bigint, chainId: number, txType: 0 | 2, payerNonce: number): Promise<{
|
|
12
|
-
signedTxs: string[];
|
|
13
|
-
payerNoncesUsed: number;
|
|
14
|
-
}>;
|
|
15
|
-
export declare function calculateMaxWalletsPerBatch(isERC20Mode: boolean, disperseHopCount: number, chain?: HoldersMakerChain): number;
|
|
16
|
-
export declare const DEFAULT_MAX_WALLETS_PER_BATCH_NATIVE: number;
|
|
17
|
-
export declare const DEFAULT_MAX_WALLETS_PER_BATCH_ERC20: number;
|
|
18
|
-
export declare function chunkArray<T>(arr: T[], size: number): T[][];
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import { Wallet } from 'ethers';
|
|
2
|
-
import { generateWallets } from '../wallet.js';
|
|
3
|
-
import { PROFIT_HOP_COUNT } from '../bundle-helpers.js';
|
|
4
|
-
import { ERC20_TRANSFER_GAS_LIMIT, NATIVE_TRANSFER_GAS_LIMIT } from './constants.js';
|
|
5
|
-
import { buildERC20TransferTx, buildNativeTransferTx } from './transfer-tx.js';
|
|
6
|
-
export function generateDisperseHopPaths(targetWallets, hopCount, provider) {
|
|
7
|
-
if (hopCount <= 0) {
|
|
8
|
-
return targetWallets.map((w) => ({
|
|
9
|
-
targetAddress: w.address,
|
|
10
|
-
hopWallets: [],
|
|
11
|
-
hopWalletsInfo: [],
|
|
12
|
-
}));
|
|
13
|
-
}
|
|
14
|
-
return targetWallets.map((targetWallet) => {
|
|
15
|
-
const hopWalletsInfo = generateWallets(hopCount);
|
|
16
|
-
const hopWallets = hopWalletsInfo.map((w) => new Wallet(w.privateKey, provider));
|
|
17
|
-
return {
|
|
18
|
-
targetAddress: targetWallet.address,
|
|
19
|
-
hopWallets,
|
|
20
|
-
hopWalletsInfo,
|
|
21
|
-
};
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
export async function buildDisperseHopChainNative(payer, path, finalAmount, gasPrice, chainId, txType, payerNonce, isERC20Mode = false) {
|
|
25
|
-
const signedTxs = [];
|
|
26
|
-
const hopCount = path.hopWallets.length;
|
|
27
|
-
if (hopCount === 0) {
|
|
28
|
-
const tx = await buildNativeTransferTx(payer, path.targetAddress, finalAmount, payerNonce, gasPrice, chainId, txType);
|
|
29
|
-
signedTxs.push(tx);
|
|
30
|
-
return { signedTxs, payerNoncesUsed: 1 };
|
|
31
|
-
}
|
|
32
|
-
const hopGasCost = NATIVE_TRANSFER_GAS_LIMIT * gasPrice;
|
|
33
|
-
const erc20TransferGasCost = isERC20Mode ? ERC20_TRANSFER_GAS_LIMIT * gasPrice : 0n;
|
|
34
|
-
const amountsPerHop = [];
|
|
35
|
-
for (let i = 0; i < hopCount; i++) {
|
|
36
|
-
const remainingHops = hopCount - i;
|
|
37
|
-
const amount = finalAmount +
|
|
38
|
-
hopGasCost * BigInt(remainingHops) +
|
|
39
|
-
(isERC20Mode ? erc20TransferGasCost * BigInt(remainingHops) : 0n);
|
|
40
|
-
amountsPerHop.push(amount);
|
|
41
|
-
}
|
|
42
|
-
const firstTx = await buildNativeTransferTx(payer, path.hopWallets[0].address, amountsPerHop[0], payerNonce, gasPrice, chainId, txType);
|
|
43
|
-
signedTxs.push(firstTx);
|
|
44
|
-
for (let i = 0; i < hopCount; i++) {
|
|
45
|
-
const fromWallet = path.hopWallets[i];
|
|
46
|
-
const toAddress = i === hopCount - 1 ? path.targetAddress : path.hopWallets[i + 1].address;
|
|
47
|
-
const amount = i === hopCount - 1 ? finalAmount : amountsPerHop[i + 1];
|
|
48
|
-
const tx = await buildNativeTransferTx(fromWallet, toAddress, amount, 0, gasPrice, chainId, txType);
|
|
49
|
-
signedTxs.push(tx);
|
|
50
|
-
}
|
|
51
|
-
return { signedTxs, payerNoncesUsed: 1 };
|
|
52
|
-
}
|
|
53
|
-
export async function buildDisperseHopChainERC20(payer, path, erc20Address, erc20Amount, gasPrice, chainId, txType, payerNonce) {
|
|
54
|
-
const signedTxs = [];
|
|
55
|
-
const hopCount = path.hopWallets.length;
|
|
56
|
-
if (hopCount === 0) {
|
|
57
|
-
const tx = await buildERC20TransferTx(payer, erc20Address, path.targetAddress, erc20Amount, payerNonce, gasPrice, chainId, txType);
|
|
58
|
-
signedTxs.push(tx);
|
|
59
|
-
return { signedTxs, payerNoncesUsed: 1 };
|
|
60
|
-
}
|
|
61
|
-
const firstTx = await buildERC20TransferTx(payer, erc20Address, path.hopWallets[0].address, erc20Amount, payerNonce, gasPrice, chainId, txType);
|
|
62
|
-
signedTxs.push(firstTx);
|
|
63
|
-
for (let i = 0; i < hopCount; i++) {
|
|
64
|
-
const fromWallet = path.hopWallets[i];
|
|
65
|
-
const toAddress = i === hopCount - 1 ? path.targetAddress : path.hopWallets[i + 1].address;
|
|
66
|
-
const tx = await buildERC20TransferTx(fromWallet, erc20Address, toAddress, erc20Amount, 1, gasPrice, chainId, txType);
|
|
67
|
-
signedTxs.push(tx);
|
|
68
|
-
}
|
|
69
|
-
return { signedTxs, payerNoncesUsed: 1 };
|
|
70
|
-
}
|
|
71
|
-
export function calculateMaxWalletsPerBatch(isERC20Mode, disperseHopCount, chain) {
|
|
72
|
-
const isSimpleChain = chain === 'XLAYER' || chain === 'ENI';
|
|
73
|
-
const fixedOverhead = isSimpleChain ? 1 : 1 + PROFIT_HOP_COUNT + 1;
|
|
74
|
-
const maxTxs = 50 - fixedOverhead;
|
|
75
|
-
if (isERC20Mode) {
|
|
76
|
-
const perWalletTxs = 2 * (disperseHopCount + 1) + 2;
|
|
77
|
-
return Math.floor(maxTxs / perWalletTxs);
|
|
78
|
-
}
|
|
79
|
-
const perWalletTxs = disperseHopCount + 2;
|
|
80
|
-
return Math.floor(maxTxs / perWalletTxs);
|
|
81
|
-
}
|
|
82
|
-
export const DEFAULT_MAX_WALLETS_PER_BATCH_NATIVE = calculateMaxWalletsPerBatch(false, 0);
|
|
83
|
-
export const DEFAULT_MAX_WALLETS_PER_BATCH_ERC20 = calculateMaxWalletsPerBatch(true, 0);
|
|
84
|
-
export function chunkArray(arr, size) {
|
|
85
|
-
const chunks = [];
|
|
86
|
-
for (let i = 0; i < arr.length; i += size) {
|
|
87
|
-
chunks.push(arr.slice(i, i + size));
|
|
88
|
-
}
|
|
89
|
-
return chunks;
|
|
90
|
-
}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { BaseTokenType, HoldersMakerChain, HoldersMakerTradeType } from '../../shared/foundation/types/holders-maker.js';
|
|
2
|
-
export declare function getBaseTokenAddress(baseToken: BaseTokenType, chain: HoldersMakerChain, customAddress?: string): string;
|
|
3
|
-
export declare function getRouterAddress(tradeType: HoldersMakerTradeType, chain?: HoldersMakerChain, v2RouterOverride?: string): string;
|
|
4
|
-
export declare function getWrappedNativeAddress(chain?: HoldersMakerChain): string;
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { ADDRESSES } from '../constants.js';
|
|
2
|
-
import { ENI_DAOAAS_PORTAL_ADDRESS, ENI_V2_ROUTER_ADDRESS, PANCAKE_V2_ROUTER_ADDRESS, PANCAKE_V3_ROUTER_ADDRESS, USDC_ADDRESS, USDT_ADDRESS, WBNB_ADDRESS, WEGAS_ADDRESS, WOKB_ADDRESS, XLAYER_V2_ROUTER_ADDRESS, XLAYER_V3_ROUTER_ADDRESS, } from './addresses.js';
|
|
3
|
-
export function getBaseTokenAddress(baseToken, chain, customAddress) {
|
|
4
|
-
if (customAddress)
|
|
5
|
-
return customAddress;
|
|
6
|
-
if (chain === 'ENI') {
|
|
7
|
-
if (baseToken === 'usdt')
|
|
8
|
-
return ADDRESSES.ENI.USDT;
|
|
9
|
-
if (baseToken === 'usdc')
|
|
10
|
-
return ADDRESSES.ENI.USDC;
|
|
11
|
-
}
|
|
12
|
-
if (baseToken === 'usdt')
|
|
13
|
-
return USDT_ADDRESS;
|
|
14
|
-
if (baseToken === 'usdc')
|
|
15
|
-
return USDC_ADDRESS;
|
|
16
|
-
throw new Error(`未知的基础代币类型: ${baseToken}`);
|
|
17
|
-
}
|
|
18
|
-
export function getRouterAddress(tradeType, chain, v2RouterOverride) {
|
|
19
|
-
if (chain === 'ENI') {
|
|
20
|
-
switch (tradeType) {
|
|
21
|
-
case 'v2':
|
|
22
|
-
return v2RouterOverride || ENI_V2_ROUTER_ADDRESS;
|
|
23
|
-
case 'daoaas':
|
|
24
|
-
return ENI_DAOAAS_PORTAL_ADDRESS;
|
|
25
|
-
default:
|
|
26
|
-
throw new Error(`ENI 链不支持交易类型: ${tradeType},仅支持 daoaas/v2`);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
const isXLayer = chain === 'XLAYER';
|
|
30
|
-
switch (tradeType) {
|
|
31
|
-
case 'v2':
|
|
32
|
-
if (v2RouterOverride)
|
|
33
|
-
return v2RouterOverride;
|
|
34
|
-
return isXLayer ? XLAYER_V2_ROUTER_ADDRESS : PANCAKE_V2_ROUTER_ADDRESS;
|
|
35
|
-
case 'v3':
|
|
36
|
-
return isXLayer ? XLAYER_V3_ROUTER_ADDRESS : PANCAKE_V3_ROUTER_ADDRESS;
|
|
37
|
-
default:
|
|
38
|
-
throw new Error(`ERC20 模式不支持交易类型: ${tradeType},仅支持 v2/v3`);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
export function getWrappedNativeAddress(chain) {
|
|
42
|
-
if (chain === 'ENI')
|
|
43
|
-
return WEGAS_ADDRESS;
|
|
44
|
-
return chain === 'XLAYER' ? WOKB_ADDRESS : WBNB_ADDRESS;
|
|
45
|
-
}
|