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
|
@@ -1,565 +0,0 @@
|
|
|
1
|
-
import { ethers, Wallet, Contract } from 'ethers';
|
|
2
|
-
import { generateWallets } from '../../../utils/wallet.js';
|
|
3
|
-
import { V2_ROUTER_ABI, V3_ROUTER02_ABI, ERC20_BALANCE_ABI, ERC20_ABI } from '../../../abis/common.js';
|
|
4
|
-
import { createSignProvider } from '../../../bundle-core/sign-context-helpers.js';
|
|
5
|
-
import { quoteV2, quoteV3 } from '../../../utils/quote-helpers.js';
|
|
6
|
-
import { GAS_LIMITS } from '../../../shared/constants/index.js';
|
|
7
|
-
import { getDeadline } from '../../../utils/bundle-helpers.js';
|
|
8
|
-
import { ADDRESSES } from '../../../shared/constants/index.js';
|
|
9
|
-
// ==================== 多跳转账常量(使用统一常量) ====================
|
|
10
|
-
export const NATIVE_TRANSFER_GAS_LIMIT = GAS_LIMITS.NATIVE_TRANSFER;
|
|
11
|
-
export const ERC20_TRANSFER_GAS_LIMIT_HOP = GAS_LIMITS.ERC20_TRANSFER;
|
|
12
|
-
export const BRIBE_GAS_LIMIT = GAS_LIMITS.BRIBE;
|
|
13
|
-
/**
|
|
14
|
-
* 生成分发多跳路径
|
|
15
|
-
*/
|
|
16
|
-
export function generateDisperseHopPaths(targetAddresses, hopCount, provider) {
|
|
17
|
-
if (hopCount <= 0) {
|
|
18
|
-
return targetAddresses.map((addr) => ({
|
|
19
|
-
targetAddress: addr,
|
|
20
|
-
hopWallets: [],
|
|
21
|
-
hopWalletsInfo: [],
|
|
22
|
-
}));
|
|
23
|
-
}
|
|
24
|
-
return targetAddresses.map((targetAddress) => {
|
|
25
|
-
const hopWalletsInfo = generateWallets(hopCount);
|
|
26
|
-
const hopWallets = hopWalletsInfo.map((w) => new Wallet(w.privateKey, provider));
|
|
27
|
-
return { targetAddress, hopWallets, hopWalletsInfo };
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* 构建原生代币多跳转账链
|
|
32
|
-
*/
|
|
33
|
-
export async function buildNativeHopChain(payer, path, finalAmount, gasPrice, chainId, txType, payerNonce) {
|
|
34
|
-
const signedTxs = [];
|
|
35
|
-
const hopCount = path.hopWallets.length;
|
|
36
|
-
if (hopCount === 0) {
|
|
37
|
-
const tx = {
|
|
38
|
-
to: path.targetAddress,
|
|
39
|
-
value: finalAmount,
|
|
40
|
-
nonce: payerNonce,
|
|
41
|
-
gasLimit: NATIVE_TRANSFER_GAS_LIMIT,
|
|
42
|
-
chainId,
|
|
43
|
-
type: txType,
|
|
44
|
-
};
|
|
45
|
-
if (txType === 2) {
|
|
46
|
-
tx.maxFeePerGas = gasPrice;
|
|
47
|
-
tx.maxPriorityFeePerGas = gasPrice / 10n || 1n;
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
tx.gasPrice = gasPrice;
|
|
51
|
-
}
|
|
52
|
-
signedTxs.push(await payer.signTransaction(tx));
|
|
53
|
-
return signedTxs;
|
|
54
|
-
}
|
|
55
|
-
const hopGasCost = NATIVE_TRANSFER_GAS_LIMIT * gasPrice;
|
|
56
|
-
// 计算每跳需要的金额
|
|
57
|
-
const amountsPerHop = [];
|
|
58
|
-
for (let i = 0; i < hopCount; i++) {
|
|
59
|
-
const remainingHops = hopCount - i;
|
|
60
|
-
amountsPerHop.push(finalAmount + hopGasCost * BigInt(remainingHops));
|
|
61
|
-
}
|
|
62
|
-
// payer → hop1
|
|
63
|
-
const firstTx = {
|
|
64
|
-
to: path.hopWallets[0].address,
|
|
65
|
-
value: amountsPerHop[0],
|
|
66
|
-
nonce: payerNonce,
|
|
67
|
-
gasLimit: NATIVE_TRANSFER_GAS_LIMIT,
|
|
68
|
-
chainId,
|
|
69
|
-
type: txType,
|
|
70
|
-
};
|
|
71
|
-
if (txType === 2) {
|
|
72
|
-
firstTx.maxFeePerGas = gasPrice;
|
|
73
|
-
firstTx.maxPriorityFeePerGas = gasPrice / 10n || 1n;
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
firstTx.gasPrice = gasPrice;
|
|
77
|
-
}
|
|
78
|
-
signedTxs.push(await payer.signTransaction(firstTx));
|
|
79
|
-
// hop1 → hop2 → ... → target
|
|
80
|
-
for (let i = 0; i < hopCount; i++) {
|
|
81
|
-
const fromWallet = path.hopWallets[i];
|
|
82
|
-
const toAddress = i === hopCount - 1 ? path.targetAddress : path.hopWallets[i + 1].address;
|
|
83
|
-
const amount = i === hopCount - 1 ? finalAmount : amountsPerHop[i + 1];
|
|
84
|
-
const tx = {
|
|
85
|
-
to: toAddress,
|
|
86
|
-
value: amount,
|
|
87
|
-
nonce: 0,
|
|
88
|
-
gasLimit: NATIVE_TRANSFER_GAS_LIMIT,
|
|
89
|
-
chainId,
|
|
90
|
-
type: txType,
|
|
91
|
-
};
|
|
92
|
-
if (txType === 2) {
|
|
93
|
-
tx.maxFeePerGas = gasPrice;
|
|
94
|
-
tx.maxPriorityFeePerGas = gasPrice / 10n || 1n;
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
97
|
-
tx.gasPrice = gasPrice;
|
|
98
|
-
}
|
|
99
|
-
signedTxs.push(await fromWallet.signTransaction(tx));
|
|
100
|
-
}
|
|
101
|
-
return signedTxs;
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* 构建 ERC20 多跳转账链(需要配合 BNB 多跳使用)
|
|
105
|
-
*/
|
|
106
|
-
export async function buildERC20HopChain(payer, path, erc20Address, erc20Amount, gasPrice, chainId, txType, payerNonce) {
|
|
107
|
-
const signedTxs = [];
|
|
108
|
-
const hopCount = path.hopWallets.length;
|
|
109
|
-
const erc20Interface = new ethers.Interface(ERC20_ABI);
|
|
110
|
-
if (hopCount === 0) {
|
|
111
|
-
const data = erc20Interface.encodeFunctionData('transfer', [path.targetAddress, erc20Amount]);
|
|
112
|
-
const tx = {
|
|
113
|
-
to: erc20Address,
|
|
114
|
-
data,
|
|
115
|
-
value: 0n,
|
|
116
|
-
nonce: payerNonce,
|
|
117
|
-
gasLimit: ERC20_TRANSFER_GAS_LIMIT_HOP,
|
|
118
|
-
chainId,
|
|
119
|
-
type: txType,
|
|
120
|
-
};
|
|
121
|
-
if (txType === 2) {
|
|
122
|
-
tx.maxFeePerGas = gasPrice;
|
|
123
|
-
tx.maxPriorityFeePerGas = gasPrice / 10n || 1n;
|
|
124
|
-
}
|
|
125
|
-
else {
|
|
126
|
-
tx.gasPrice = gasPrice;
|
|
127
|
-
}
|
|
128
|
-
signedTxs.push(await payer.signTransaction(tx));
|
|
129
|
-
return signedTxs;
|
|
130
|
-
}
|
|
131
|
-
// payer → hop1
|
|
132
|
-
const firstData = erc20Interface.encodeFunctionData('transfer', [path.hopWallets[0].address, erc20Amount]);
|
|
133
|
-
const firstTx = {
|
|
134
|
-
to: erc20Address,
|
|
135
|
-
data: firstData,
|
|
136
|
-
value: 0n,
|
|
137
|
-
nonce: payerNonce,
|
|
138
|
-
gasLimit: ERC20_TRANSFER_GAS_LIMIT_HOP,
|
|
139
|
-
chainId,
|
|
140
|
-
type: txType,
|
|
141
|
-
};
|
|
142
|
-
if (txType === 2) {
|
|
143
|
-
firstTx.maxFeePerGas = gasPrice;
|
|
144
|
-
firstTx.maxPriorityFeePerGas = gasPrice / 10n || 1n;
|
|
145
|
-
}
|
|
146
|
-
else {
|
|
147
|
-
firstTx.gasPrice = gasPrice;
|
|
148
|
-
}
|
|
149
|
-
signedTxs.push(await payer.signTransaction(firstTx));
|
|
150
|
-
// hop1 → hop2 → ... → target (nonce=1,nonce=0 用于 BNB 转发)
|
|
151
|
-
for (let i = 0; i < hopCount; i++) {
|
|
152
|
-
const fromWallet = path.hopWallets[i];
|
|
153
|
-
const toAddress = i === hopCount - 1 ? path.targetAddress : path.hopWallets[i + 1].address;
|
|
154
|
-
const data = erc20Interface.encodeFunctionData('transfer', [toAddress, erc20Amount]);
|
|
155
|
-
const tx = {
|
|
156
|
-
to: erc20Address,
|
|
157
|
-
data,
|
|
158
|
-
value: 0n,
|
|
159
|
-
nonce: 1, // nonce=0 已用于 BNB 转发
|
|
160
|
-
gasLimit: ERC20_TRANSFER_GAS_LIMIT_HOP,
|
|
161
|
-
chainId,
|
|
162
|
-
type: txType,
|
|
163
|
-
};
|
|
164
|
-
if (txType === 2) {
|
|
165
|
-
tx.maxFeePerGas = gasPrice;
|
|
166
|
-
tx.maxPriorityFeePerGas = gasPrice / 10n || 1n;
|
|
167
|
-
}
|
|
168
|
-
else {
|
|
169
|
-
tx.gasPrice = gasPrice;
|
|
170
|
-
}
|
|
171
|
-
signedTxs.push(await fromWallet.signTransaction(tx));
|
|
172
|
-
}
|
|
173
|
-
return signedTxs;
|
|
174
|
-
}
|
|
175
|
-
/**
|
|
176
|
-
* 构建 BNB 多跳转账链(为 ERC20 中间钱包预留 gas)
|
|
177
|
-
*/
|
|
178
|
-
export async function buildBNBHopChainForERC20(payer, path, finalGasAmount, gasPrice, chainId, txType, payerNonce) {
|
|
179
|
-
const signedTxs = [];
|
|
180
|
-
const hopCount = path.hopWallets.length;
|
|
181
|
-
if (hopCount === 0) {
|
|
182
|
-
// 无多跳时不需要转 gas
|
|
183
|
-
return signedTxs;
|
|
184
|
-
}
|
|
185
|
-
const hopGasCost = NATIVE_TRANSFER_GAS_LIMIT * gasPrice;
|
|
186
|
-
const erc20GasCost = ERC20_TRANSFER_GAS_LIMIT_HOP * gasPrice;
|
|
187
|
-
// 每个中间钱包需要: BNB 转发 gas + ERC20 转发 gas
|
|
188
|
-
const gasPerHop = hopGasCost + erc20GasCost * 2n; // 2倍安全系数
|
|
189
|
-
// 计算每跳需要的金额
|
|
190
|
-
const amountsPerHop = [];
|
|
191
|
-
for (let i = 0; i < hopCount; i++) {
|
|
192
|
-
const remainingHops = hopCount - i;
|
|
193
|
-
amountsPerHop.push(finalGasAmount + gasPerHop * BigInt(remainingHops));
|
|
194
|
-
}
|
|
195
|
-
// payer → hop1
|
|
196
|
-
const firstTx = {
|
|
197
|
-
to: path.hopWallets[0].address,
|
|
198
|
-
value: amountsPerHop[0],
|
|
199
|
-
nonce: payerNonce,
|
|
200
|
-
gasLimit: NATIVE_TRANSFER_GAS_LIMIT,
|
|
201
|
-
chainId,
|
|
202
|
-
type: txType,
|
|
203
|
-
};
|
|
204
|
-
if (txType === 2) {
|
|
205
|
-
firstTx.maxFeePerGas = gasPrice;
|
|
206
|
-
firstTx.maxPriorityFeePerGas = gasPrice / 10n || 1n;
|
|
207
|
-
}
|
|
208
|
-
else {
|
|
209
|
-
firstTx.gasPrice = gasPrice;
|
|
210
|
-
}
|
|
211
|
-
signedTxs.push(await payer.signTransaction(firstTx));
|
|
212
|
-
// hop1 → hop2 → ... → target (nonce=0)
|
|
213
|
-
for (let i = 0; i < hopCount; i++) {
|
|
214
|
-
const fromWallet = path.hopWallets[i];
|
|
215
|
-
const toAddress = i === hopCount - 1 ? path.targetAddress : path.hopWallets[i + 1].address;
|
|
216
|
-
const amount = i === hopCount - 1 ? finalGasAmount : amountsPerHop[i + 1];
|
|
217
|
-
const tx = {
|
|
218
|
-
to: toAddress,
|
|
219
|
-
value: amount,
|
|
220
|
-
nonce: 0,
|
|
221
|
-
gasLimit: NATIVE_TRANSFER_GAS_LIMIT,
|
|
222
|
-
chainId,
|
|
223
|
-
type: txType,
|
|
224
|
-
};
|
|
225
|
-
if (txType === 2) {
|
|
226
|
-
tx.maxFeePerGas = gasPrice;
|
|
227
|
-
tx.maxPriorityFeePerGas = gasPrice / 10n || 1n;
|
|
228
|
-
}
|
|
229
|
-
else {
|
|
230
|
-
tx.gasPrice = gasPrice;
|
|
231
|
-
}
|
|
232
|
-
signedTxs.push(await fromWallet.signTransaction(tx));
|
|
233
|
-
}
|
|
234
|
-
return signedTxs;
|
|
235
|
-
}
|
|
236
|
-
// ==================== 工具函数 ====================
|
|
237
|
-
export function createPancakeContext(config) {
|
|
238
|
-
const chainId = config.chainId ?? 56;
|
|
239
|
-
const provider = createSignProvider(config.rpcUrl, chainId);
|
|
240
|
-
return { chainId, provider };
|
|
241
|
-
}
|
|
242
|
-
export async function quoteSellOutput({ routeParams, sellAmountWei, provider, v2RouterAddress, }) {
|
|
243
|
-
if (routeParams.routeType === 'v2') {
|
|
244
|
-
const { v2Path } = routeParams;
|
|
245
|
-
const tokenIn = v2Path[0];
|
|
246
|
-
const tokenOut = v2Path[v2Path.length - 1];
|
|
247
|
-
const result = await quoteV2(provider, tokenIn, tokenOut, sellAmountWei, 'BSC', v2RouterAddress);
|
|
248
|
-
if (result.amountOut > 0n) {
|
|
249
|
-
return { estimatedBNBOut: result.amountOut };
|
|
250
|
-
}
|
|
251
|
-
throw new Error('V2 报价失败: 所有路径均无效');
|
|
252
|
-
}
|
|
253
|
-
// ==================== V3 单跳报价 ====================
|
|
254
|
-
if (routeParams.routeType === 'v3-single') {
|
|
255
|
-
const params = routeParams;
|
|
256
|
-
const result = await quoteV3(provider, params.v3TokenIn, params.v3TokenOut, sellAmountWei, 'BSC', params.v3Fee);
|
|
257
|
-
if (result.amountOut > 0n) {
|
|
258
|
-
return { estimatedBNBOut: result.amountOut };
|
|
259
|
-
}
|
|
260
|
-
// ❌ V3 报价失败时不再 fallback 到 V2,因为价格可能差异很大
|
|
261
|
-
throw new Error(`V3 单跳报价失败: tokenIn=${params.v3TokenIn}, tokenOut=${params.v3TokenOut}, fee=${params.v3Fee}`);
|
|
262
|
-
}
|
|
263
|
-
// ==================== V3 多跳报价 ====================
|
|
264
|
-
if (routeParams.routeType === 'v3-multi') {
|
|
265
|
-
const params = routeParams;
|
|
266
|
-
if (params.v3LpAddresses && params.v3LpAddresses.length > 0) {
|
|
267
|
-
const tokenIn = params.v3ExactTokenIn;
|
|
268
|
-
const WBNB = '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c';
|
|
269
|
-
const result = await quoteV3(provider, tokenIn, WBNB, sellAmountWei, 'BSC');
|
|
270
|
-
if (result.amountOut > 0n) {
|
|
271
|
-
return { estimatedBNBOut: result.amountOut };
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
// ❌ V3 多跳报价失败时不再 fallback 到 V2,因为价格可能差异很大
|
|
275
|
-
throw new Error(`V3 多跳报价失败: LPs=${params.v3LpAddresses?.join(', ')}, tokenIn=${params.v3ExactTokenIn}`);
|
|
276
|
-
}
|
|
277
|
-
throw new Error(`不支持的路由类型: ${routeParams.routeType}`);
|
|
278
|
-
}
|
|
279
|
-
export async function buildSwapTransactions({ routeParams, sellAmountWei, buyAmountBNB, buyer, seller, tokenAddress, useNativeToken = true, v2RouterAddress, }) {
|
|
280
|
-
void tokenAddress;
|
|
281
|
-
const deadline = getDeadline();
|
|
282
|
-
const buyValue = useNativeToken ? buyAmountBNB + FLAT_FEE : 0n;
|
|
283
|
-
if (routeParams.routeType === 'v2') {
|
|
284
|
-
const { v2Path } = routeParams;
|
|
285
|
-
const reversePath = [...v2Path].reverse();
|
|
286
|
-
const routerAddr = v2RouterAddress || PANCAKE_V2_ROUTER_ADDRESS;
|
|
287
|
-
const v2RouterSeller = new Contract(routerAddr, PANCAKE_V2_ROUTER_ABI, seller);
|
|
288
|
-
const v2RouterBuyer = new Contract(routerAddr, PANCAKE_V2_ROUTER_ABI, buyer);
|
|
289
|
-
let sellUnsigned;
|
|
290
|
-
let buyUnsigned;
|
|
291
|
-
if (useNativeToken) {
|
|
292
|
-
// ✅ 原生代币模式(BNB)
|
|
293
|
-
// 卖出:Token → WBNB → BNB
|
|
294
|
-
sellUnsigned = await v2RouterSeller.swapExactTokensForETHSupportingFeeOnTransferTokens.populateTransaction(sellAmountWei, 0n, v2Path, seller.address, deadline);
|
|
295
|
-
// 买入:BNB → WBNB → Token
|
|
296
|
-
buyUnsigned = await v2RouterBuyer.swapExactETHForTokensSupportingFeeOnTransferTokens.populateTransaction(0n, reversePath, buyer.address, deadline, { value: buyValue });
|
|
297
|
-
}
|
|
298
|
-
else {
|
|
299
|
-
// ✅ ERC20 模式(如 USDT)
|
|
300
|
-
// 卖出:Token → USDT
|
|
301
|
-
sellUnsigned = await v2RouterSeller.swapExactTokensForTokensSupportingFeeOnTransferTokens.populateTransaction(sellAmountWei, 0n, v2Path, seller.address, deadline);
|
|
302
|
-
// 买入:USDT → Token
|
|
303
|
-
buyUnsigned = await v2RouterBuyer.swapExactTokensForTokensSupportingFeeOnTransferTokens.populateTransaction(buyAmountBNB, // USDT 数量
|
|
304
|
-
0n, reversePath, buyer.address, deadline);
|
|
305
|
-
}
|
|
306
|
-
return { sellUnsigned, buyUnsigned };
|
|
307
|
-
}
|
|
308
|
-
if (routeParams.routeType === 'v3-single') {
|
|
309
|
-
const { v3TokenIn, v3TokenOut, v3Fee } = routeParams;
|
|
310
|
-
const v3RouterIface = new ethers.Interface(PANCAKE_V3_ROUTER_ABI);
|
|
311
|
-
const v3RouterSeller = new Contract(PANCAKE_V3_ROUTER_ADDRESS, PANCAKE_V3_ROUTER_ABI, seller);
|
|
312
|
-
const v3RouterBuyer = new Contract(PANCAKE_V3_ROUTER_ADDRESS, PANCAKE_V3_ROUTER_ABI, buyer);
|
|
313
|
-
// 卖出:Token → WBNB,需要 unwrapWETH9
|
|
314
|
-
const sellSwapData = v3RouterIface.encodeFunctionData('exactInputSingle', [
|
|
315
|
-
{
|
|
316
|
-
tokenIn: v3TokenIn,
|
|
317
|
-
tokenOut: v3TokenOut,
|
|
318
|
-
fee: v3Fee,
|
|
319
|
-
recipient: PANCAKE_V3_ROUTER_ADDRESS, // 先发给 Router
|
|
320
|
-
amountIn: sellAmountWei,
|
|
321
|
-
amountOutMinimum: 0n,
|
|
322
|
-
sqrtPriceLimitX96: 0n,
|
|
323
|
-
},
|
|
324
|
-
]);
|
|
325
|
-
const sellUnwrapData = v3RouterIface.encodeFunctionData('unwrapWETH9', [0n, seller.address]);
|
|
326
|
-
const sellUnsigned = await v3RouterSeller.multicall.populateTransaction(deadline, [sellSwapData, sellUnwrapData]);
|
|
327
|
-
// 买入:WBNB → Token
|
|
328
|
-
const buySwapData = v3RouterIface.encodeFunctionData('exactInputSingle', [
|
|
329
|
-
{
|
|
330
|
-
tokenIn: v3TokenOut,
|
|
331
|
-
tokenOut: v3TokenIn,
|
|
332
|
-
fee: v3Fee,
|
|
333
|
-
recipient: buyer.address,
|
|
334
|
-
amountIn: buyAmountBNB,
|
|
335
|
-
amountOutMinimum: 0n,
|
|
336
|
-
sqrtPriceLimitX96: 0n,
|
|
337
|
-
},
|
|
338
|
-
]);
|
|
339
|
-
const buyUnsigned = await v3RouterBuyer.multicall.populateTransaction(deadline, [buySwapData], { value: buyValue });
|
|
340
|
-
return { sellUnsigned, buyUnsigned };
|
|
341
|
-
}
|
|
342
|
-
// V3 多跳暂不支持官方合约
|
|
343
|
-
throw new Error('V3 多跳路由暂不支持官方合约,请使用 V2 路由或 V3 单跳');
|
|
344
|
-
}
|
|
345
|
-
export async function calculateBuyerBudget({ buyer, quotedBNBOut, reserveGasBNB, useNativeToken = true, quoteToken, quoteTokenDecimals = 18, provider, }) {
|
|
346
|
-
const reserveGas = ethers.parseEther((reserveGasBNB ?? 0.0005).toString());
|
|
347
|
-
// ✅ 已移除滑点保护:直接使用报价金额
|
|
348
|
-
const buyAmountBNB = quotedBNBOut;
|
|
349
|
-
// ✅ 根据是否使用原生代币获取不同的余额
|
|
350
|
-
let buyerBalance;
|
|
351
|
-
if (useNativeToken) {
|
|
352
|
-
buyerBalance = await buyer.provider.getBalance(buyer.address);
|
|
353
|
-
const requiredBalance = buyAmountBNB + FLAT_FEE + reserveGas;
|
|
354
|
-
if (buyerBalance < requiredBalance) {
|
|
355
|
-
throw new Error(`买方余额不足: 需要 ${ethers.formatEther(requiredBalance)} BNB, 实际 ${ethers.formatEther(buyerBalance)} BNB`);
|
|
356
|
-
}
|
|
357
|
-
return { buyerBalance, reserveGas, requiredBalance, buyAmountBNB, useNativeToken };
|
|
358
|
-
}
|
|
359
|
-
else {
|
|
360
|
-
// ERC20 代币余额
|
|
361
|
-
const erc20 = new Contract(quoteToken, ERC20_BALANCE_OF_ABI, provider || buyer.provider);
|
|
362
|
-
buyerBalance = await erc20.balanceOf(buyer.address);
|
|
363
|
-
const requiredBalance = buyAmountBNB + FLAT_FEE; // ERC20 不需要预留 Gas 在代币余额中
|
|
364
|
-
if (buyerBalance < requiredBalance) {
|
|
365
|
-
throw new Error(`买方代币余额不足: 需要 ${ethers.formatUnits(requiredBalance, quoteTokenDecimals)}, 实际 ${ethers.formatUnits(buyerBalance, quoteTokenDecimals)}`);
|
|
366
|
-
}
|
|
367
|
-
// ✅ ERC20 购买时,还需要检查买方是否有足够 BNB 支付 Gas
|
|
368
|
-
const buyerBnbBalance = await buyer.provider.getBalance(buyer.address);
|
|
369
|
-
if (buyerBnbBalance < reserveGas) {
|
|
370
|
-
throw new Error(`买方 BNB 余额不足 (用于支付 Gas): 需要 ${ethers.formatEther(reserveGas)} BNB, 实际 ${ethers.formatEther(buyerBnbBalance)} BNB`);
|
|
371
|
-
}
|
|
372
|
-
return { buyerBalance, reserveGas, requiredBalance, buyAmountBNB, useNativeToken };
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
/**
|
|
376
|
-
* ✅ 从前端传入的 startNonces 构建 NoncePlan(用于性能优化)
|
|
377
|
-
* 顺序:[sellerBaseNonce, buyerNonce]
|
|
378
|
-
*/
|
|
379
|
-
export function buildNoncePlanFromNonces(startNonces, sameAddress, approvalExists, profitNeeded, needBribeTx) {
|
|
380
|
-
if (sameAddress) {
|
|
381
|
-
let idx = 0;
|
|
382
|
-
const bribeNonce = needBribeTx ? startNonces[0] + idx++ : undefined;
|
|
383
|
-
if (approvalExists)
|
|
384
|
-
idx++;
|
|
385
|
-
const sellerNonce = startNonces[0] + idx++;
|
|
386
|
-
const buyerNonce = startNonces[0] + idx++;
|
|
387
|
-
const profitNonce = profitNeeded ? startNonces[0] + idx : undefined;
|
|
388
|
-
return { sellerNonce, buyerNonce, bribeNonce, profitNonce };
|
|
389
|
-
}
|
|
390
|
-
let sellerIdx = 0;
|
|
391
|
-
const bribeNonce = needBribeTx ? startNonces[0] + sellerIdx++ : undefined;
|
|
392
|
-
if (approvalExists)
|
|
393
|
-
sellerIdx++;
|
|
394
|
-
const sellerNonce = startNonces[0] + sellerIdx++;
|
|
395
|
-
const profitNonce = profitNeeded ? startNonces[0] + sellerIdx : undefined;
|
|
396
|
-
const buyerNonce = startNonces[1];
|
|
397
|
-
return { sellerNonce, buyerNonce, bribeNonce, profitNonce };
|
|
398
|
-
}
|
|
399
|
-
/**
|
|
400
|
-
* ✅ 规划 nonce
|
|
401
|
-
* 交易顺序:贿赂 → 授权 → 卖出 → 买入 → 利润
|
|
402
|
-
* 贿赂和利润由卖方发送
|
|
403
|
-
*/
|
|
404
|
-
export async function planNonces({ seller, buyer, sameAddress, approvalExists, profitNeeded, needBribeTx, nonceManager, }) {
|
|
405
|
-
if (sameAddress) {
|
|
406
|
-
// 同一地址:贿赂(可选) + 授权(可选) + 卖出 + 买入 + 利润(可选)
|
|
407
|
-
const txCount = countTruthy([needBribeTx, approvalExists, true, true, profitNeeded]);
|
|
408
|
-
const nonces = await nonceManager.getNextNonceBatch(buyer, txCount);
|
|
409
|
-
let idx = 0;
|
|
410
|
-
const bribeNonce = needBribeTx ? nonces[idx++] : undefined;
|
|
411
|
-
if (approvalExists)
|
|
412
|
-
idx++;
|
|
413
|
-
const sellerNonce = nonces[idx++];
|
|
414
|
-
const buyerNonce = nonces[idx++];
|
|
415
|
-
const profitNonce = profitNeeded ? nonces[idx] : undefined;
|
|
416
|
-
return { sellerNonce, buyerNonce, bribeNonce, profitNonce };
|
|
417
|
-
}
|
|
418
|
-
if (needBribeTx || approvalExists || profitNeeded) {
|
|
419
|
-
// 卖方需要多个 nonce:贿赂(可选) + 授权(可选) + 卖出 + 利润(可选)
|
|
420
|
-
const sellerTxCount = countTruthy([needBribeTx, approvalExists, true, profitNeeded]);
|
|
421
|
-
// ✅ 并行获取 seller 和 buyer 的 nonce
|
|
422
|
-
const [sellerNonces, buyerNonce] = await Promise.all([
|
|
423
|
-
nonceManager.getNextNonceBatch(seller, sellerTxCount),
|
|
424
|
-
nonceManager.getNextNonce(buyer),
|
|
425
|
-
]);
|
|
426
|
-
let idx = 0;
|
|
427
|
-
const bribeNonce = needBribeTx ? sellerNonces[idx++] : undefined;
|
|
428
|
-
if (approvalExists)
|
|
429
|
-
idx++;
|
|
430
|
-
const sellerNonce = sellerNonces[idx++];
|
|
431
|
-
const profitNonce = profitNeeded ? sellerNonces[idx] : undefined;
|
|
432
|
-
return { sellerNonce, buyerNonce, bribeNonce, profitNonce };
|
|
433
|
-
}
|
|
434
|
-
// ✅ 并行获取 seller 和 buyer 的 nonce
|
|
435
|
-
const [sellerNonce, buyerNonce] = await Promise.all([
|
|
436
|
-
nonceManager.getNextNonce(seller),
|
|
437
|
-
nonceManager.getNextNonce(buyer),
|
|
438
|
-
]);
|
|
439
|
-
return { sellerNonce, buyerNonce };
|
|
440
|
-
}
|
|
441
|
-
/**
|
|
442
|
-
* 根据 userType 计算利润率
|
|
443
|
-
*/
|
|
444
|
-
export function getProfitRateBps(userType) {
|
|
445
|
-
if (userType === 'v0') {
|
|
446
|
-
return 4; // 0.06%
|
|
447
|
-
}
|
|
448
|
-
else if (userType === 'v1') {
|
|
449
|
-
return 5; // 0.05%
|
|
450
|
-
}
|
|
451
|
-
return 4; // 默认 0.06%
|
|
452
|
-
}
|
|
453
|
-
export function calculateProfitAmount(estimatedBNBOut, userType) {
|
|
454
|
-
if (estimatedBNBOut <= 0n) {
|
|
455
|
-
return 0n;
|
|
456
|
-
}
|
|
457
|
-
const rateBps = getProfitRateBps(userType);
|
|
458
|
-
return (estimatedBNBOut * BigInt(rateBps)) / 10000n;
|
|
459
|
-
}
|
|
460
|
-
/**
|
|
461
|
-
* ✅ 获取 ERC20 代币 → 原生代币(BNB)的报价
|
|
462
|
-
* 用于将 ERC20 利润转换为 BNB
|
|
463
|
-
* 使用共享的报价函数
|
|
464
|
-
*/
|
|
465
|
-
export async function getERC20ToNativeQuote(provider, tokenAddress, tokenAmount, version = 'v2', fee) {
|
|
466
|
-
if (tokenAmount <= 0n)
|
|
467
|
-
return 0n;
|
|
468
|
-
const tokenLower = tokenAddress.toLowerCase();
|
|
469
|
-
const wbnbLower = WBNB_ADDRESS.toLowerCase();
|
|
470
|
-
// 如果代币本身就是 WBNB,直接返回
|
|
471
|
-
if (tokenLower === wbnbLower) {
|
|
472
|
-
return tokenAmount;
|
|
473
|
-
}
|
|
474
|
-
// 使用共享的报价函数
|
|
475
|
-
if (version === 'v3') {
|
|
476
|
-
const result = await quoteV3(provider, tokenAddress, WBNB_ADDRESS, tokenAmount, 'BSC', fee);
|
|
477
|
-
if (result.amountOut > 0n) {
|
|
478
|
-
return result.amountOut;
|
|
479
|
-
}
|
|
480
|
-
return 0n;
|
|
481
|
-
}
|
|
482
|
-
const result = await quoteV2(provider, tokenAddress, WBNB_ADDRESS, tokenAmount, 'BSC');
|
|
483
|
-
return result.amountOut > 0n ? result.amountOut : 0n;
|
|
484
|
-
}
|
|
485
|
-
export async function validateFinalBalances({ sameAddress, buyerBalance, buyAmountBNB, reserveGas, gasLimit, gasPrice, useNativeToken = true, quoteTokenDecimals = 18, provider, buyerAddress, }) {
|
|
486
|
-
const gasCost = gasLimit * gasPrice;
|
|
487
|
-
if (sameAddress) {
|
|
488
|
-
// 同一地址:需要足够的余额支付两笔交易
|
|
489
|
-
if (useNativeToken) {
|
|
490
|
-
const requiredCombined = buyAmountBNB + FLAT_FEE * 2n + gasCost * 2n;
|
|
491
|
-
if (buyerBalance < requiredCombined) {
|
|
492
|
-
throw new Error(`账户余额不足:\n - 需要: ${ethers.formatEther(requiredCombined)} BNB(含两笔Gas与两笔手续费)\n - 实际: ${ethers.formatEther(buyerBalance)} BNB`);
|
|
493
|
-
}
|
|
494
|
-
}
|
|
495
|
-
else {
|
|
496
|
-
// ERC20:检查代币余额 + BNB Gas 余额
|
|
497
|
-
const requiredToken = buyAmountBNB + FLAT_FEE * 2n;
|
|
498
|
-
if (buyerBalance < requiredToken) {
|
|
499
|
-
throw new Error(`账户代币余额不足:\n - 需要: ${ethers.formatUnits(requiredToken, quoteTokenDecimals)}\n - 实际: ${ethers.formatUnits(buyerBalance, quoteTokenDecimals)}`);
|
|
500
|
-
}
|
|
501
|
-
// 检查 BNB Gas
|
|
502
|
-
if (provider && buyerAddress) {
|
|
503
|
-
const bnbBalance = await provider.getBalance(buyerAddress);
|
|
504
|
-
const requiredGas = gasCost * 2n;
|
|
505
|
-
if (bnbBalance < requiredGas) {
|
|
506
|
-
throw new Error(`账户 BNB 余额不足 (用于支付 Gas):\n - 需要: ${ethers.formatEther(requiredGas)} BNB\n - 实际: ${ethers.formatEther(bnbBalance)} BNB`);
|
|
507
|
-
}
|
|
508
|
-
}
|
|
509
|
-
}
|
|
510
|
-
return;
|
|
511
|
-
}
|
|
512
|
-
// 不同地址
|
|
513
|
-
if (useNativeToken) {
|
|
514
|
-
const requiredBuyer = buyAmountBNB + FLAT_FEE + reserveGas;
|
|
515
|
-
if (buyerBalance < requiredBuyer) {
|
|
516
|
-
throw new Error(`买方余额不足:\n - 需要: ${ethers.formatEther(requiredBuyer)} BNB\n - 实际: ${ethers.formatEther(buyerBalance)} BNB`);
|
|
517
|
-
}
|
|
518
|
-
}
|
|
519
|
-
// ERC20 余额已在 calculateBuyerBudget 中检查过
|
|
520
|
-
}
|
|
521
|
-
export function countTruthy(values) {
|
|
522
|
-
return values.filter(Boolean).length;
|
|
523
|
-
}
|
|
524
|
-
/**
|
|
525
|
-
* 获取 Gas Limit
|
|
526
|
-
*/
|
|
527
|
-
export function getGasLimit(config, defaultGas = 800000) {
|
|
528
|
-
if (config.gasLimit !== undefined) {
|
|
529
|
-
return typeof config.gasLimit === 'bigint' ? config.gasLimit : BigInt(config.gasLimit);
|
|
530
|
-
}
|
|
531
|
-
const multiplier = config.gasLimitMultiplier ?? 1.0;
|
|
532
|
-
const calculatedGas = Math.ceil(defaultGas * multiplier);
|
|
533
|
-
return BigInt(calculatedGas);
|
|
534
|
-
}
|
|
535
|
-
export async function getGasPrice(provider, config) {
|
|
536
|
-
const feeData = await provider.getFeeData();
|
|
537
|
-
let gasPrice = feeData.gasPrice || ethers.parseUnits('3', 'gwei');
|
|
538
|
-
if (config.minGasPriceGwei) {
|
|
539
|
-
const minGas = ethers.parseUnits(config.minGasPriceGwei.toString(), 'gwei');
|
|
540
|
-
if (gasPrice < minGas)
|
|
541
|
-
gasPrice = minGas;
|
|
542
|
-
}
|
|
543
|
-
if (config.maxGasPriceGwei) {
|
|
544
|
-
const maxGas = ethers.parseUnits(config.maxGasPriceGwei.toString(), 'gwei');
|
|
545
|
-
if (gasPrice > maxGas)
|
|
546
|
-
gasPrice = maxGas;
|
|
547
|
-
}
|
|
548
|
-
return gasPrice;
|
|
549
|
-
}
|
|
550
|
-
// ✅ ABI 别名(从公共模块导入)
|
|
551
|
-
export const PANCAKE_V2_ROUTER_ABI = V2_ROUTER_ABI;
|
|
552
|
-
export const PANCAKE_V3_ROUTER_ABI = V3_ROUTER02_ABI;
|
|
553
|
-
export const ERC20_BALANCE_OF_ABI = ERC20_BALANCE_ABI;
|
|
554
|
-
// ✅ 使用官方 PancakeSwap Router 地址
|
|
555
|
-
export const PANCAKE_V2_ROUTER_ADDRESS = ADDRESSES.BSC.PancakeV2Router;
|
|
556
|
-
export const PANCAKE_V3_ROUTER_ADDRESS = ADDRESSES.BSC.PancakeV3Router;
|
|
557
|
-
// 常量
|
|
558
|
-
export const FLAT_FEE = 0n;
|
|
559
|
-
export const WBNB_ADDRESS = ADDRESSES.BSC.WBNB;
|
|
560
|
-
export const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';
|
|
561
|
-
// ✅ ERC20_BALANCE_OF_ABI 已在文件开头定义
|
|
562
|
-
/**
|
|
563
|
-
* PancakeSwap捆绑换手(V2/V3通用)
|
|
564
|
-
* ✅ 支持 quoteToken:传入 USDT 等地址时,卖出得到该代币,买入使用该代币
|
|
565
|
-
*/
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ENI 包根扁平别名(子路径 `four-flap-meme-sdk/chains/eni` 可直接 import)
|
|
3
|
-
*
|
|
4
|
-
* 与 `root-eni-and-bsc-iro.ts` 中 `eni*` / `Eni*` 命名对齐,避免为 ENI 拉包根。
|
|
5
|
-
*/
|
|
6
|
-
export { DaoaasPortalQuery as EniPortalQuery, createPortalQuery as eniCreatePortalQuery, encodeBuyCall as eniEncodeBuyCall, encodeSellCall as eniEncodeSellCall, encodeCreateCall as eniEncodeCreateCall, applySlippage as eniApplySlippage, formatEgas as eniFormatEgas, parseEgas as eniParseEgas, directBuy as eniDirectBuy, directSell as eniDirectSell, directBatchBuy as eniDirectBatchBuy, directBatchSell as eniDirectBatchSell, directBuyForSubmit as eniDirectBuyForSubmit, directSellForSubmit as eniDirectSellForSubmit, directBatchBuyForSubmit as eniDirectBatchBuyForSubmit, directBatchSellForSubmit as eniDirectBatchSellForSubmit, directQuickSwap as eniDirectQuickSwap, directQuickSwapForSubmit as eniDirectQuickSwapForSubmit, buildProfitTransfer as eniBuildProfitTransfer, createToken as eniCreateToken, createTokenForSubmit as eniCreateTokenForSubmit, getGraduationInfo as eniGetGraduationInfo, batchGetGraduationInfo as eniBatchGetGraduationInfo, getTokenMeta as eniGetTokenMeta, getFairLaunchTokenMeta as eniGetFairLaunchTokenMeta, getTokenMetasBatch as eniGetTokenMetasBatch, DaoaasTokenStatus as EniDaoaasTokenStatus, } from './platforms/daoaas/index.js';
|
|
7
|
-
export type { DaoaasTokenState as EniDaoaasTokenState, DaoaasBuyParams as EniDaoaasBuyParams, DaoaasSellParams as EniDaoaasSellParams, DaoaasCreateParams as EniDaoaasCreateParams, PortalQueryConfig as EniPortalQueryConfig, GraduationInfo as EniGraduationInfo, DaoaasTokenMeta as EniDaoaasTokenMeta, } from './platforms/daoaas/index.js';
|
|
8
|
-
export { eniDisperseForSubmit, eniSweepForSubmit, batchTransferEgas, batchSweepEgas, batchSweepToken, } from './batch-router/index.js';
|
|
9
|
-
export type { EniDisperseParams, EniDisperseResult, EniSweepParams, EniSweepResult } from './batch-router/index.js';
|
|
10
|
-
export * as EniBatchRouter from './batch-router/index.js';
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ENI 包根扁平别名(子路径 `four-flap-meme-sdk/chains/eni` 可直接 import)
|
|
3
|
-
*
|
|
4
|
-
* 与 `root-eni-and-bsc-iro.ts` 中 `eni*` / `Eni*` 命名对齐,避免为 ENI 拉包根。
|
|
5
|
-
*/
|
|
6
|
-
export { DaoaasPortalQuery as EniPortalQuery, createPortalQuery as eniCreatePortalQuery, encodeBuyCall as eniEncodeBuyCall, encodeSellCall as eniEncodeSellCall, encodeCreateCall as eniEncodeCreateCall, applySlippage as eniApplySlippage, formatEgas as eniFormatEgas, parseEgas as eniParseEgas, directBuy as eniDirectBuy, directSell as eniDirectSell, directBatchBuy as eniDirectBatchBuy, directBatchSell as eniDirectBatchSell, directBuyForSubmit as eniDirectBuyForSubmit, directSellForSubmit as eniDirectSellForSubmit, directBatchBuyForSubmit as eniDirectBatchBuyForSubmit, directBatchSellForSubmit as eniDirectBatchSellForSubmit, directQuickSwap as eniDirectQuickSwap, directQuickSwapForSubmit as eniDirectQuickSwapForSubmit, buildProfitTransfer as eniBuildProfitTransfer, createToken as eniCreateToken, createTokenForSubmit as eniCreateTokenForSubmit, getGraduationInfo as eniGetGraduationInfo, batchGetGraduationInfo as eniBatchGetGraduationInfo, getTokenMeta as eniGetTokenMeta, getFairLaunchTokenMeta as eniGetFairLaunchTokenMeta, getTokenMetasBatch as eniGetTokenMetasBatch, DaoaasTokenStatus as EniDaoaasTokenStatus, } from './platforms/daoaas/index.js';
|
|
7
|
-
export { eniDisperseForSubmit, eniSweepForSubmit, batchTransferEgas, batchSweepEgas, batchSweepToken, } from './batch-router/index.js';
|
|
8
|
-
export * as EniBatchRouter from './batch-router/index.js';
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ENI 链交易提交方法
|
|
3
|
-
*
|
|
4
|
-
* 包括快速顺序广播、同块确认等提交策略。
|
|
5
|
-
*/
|
|
6
|
-
export interface EniBundleSubmitConfig {
|
|
7
|
-
rpcUrl: string;
|
|
8
|
-
chainId?: number;
|
|
9
|
-
chainName?: string;
|
|
10
|
-
simulationTimeout?: number;
|
|
11
|
-
blockConfirmTimeout?: number;
|
|
12
|
-
}
|
|
13
|
-
export interface EniTxResult {
|
|
14
|
-
index: number;
|
|
15
|
-
success: boolean;
|
|
16
|
-
txHash?: string;
|
|
17
|
-
error?: string;
|
|
18
|
-
}
|
|
19
|
-
export interface EniBundleSubmitResult {
|
|
20
|
-
code: boolean;
|
|
21
|
-
totalTransactions: number;
|
|
22
|
-
successCount: number;
|
|
23
|
-
failedCount: number;
|
|
24
|
-
txHashes: string[];
|
|
25
|
-
results: EniTxResult[];
|
|
26
|
-
sameBlock: boolean;
|
|
27
|
-
blockNumber?: number;
|
|
28
|
-
blockNumbers?: number[];
|
|
29
|
-
simulationDurationMs?: number;
|
|
30
|
-
broadcastDurationMs?: number;
|
|
31
|
-
errorSummary?: string;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* ENI 快速并行广播:业务交易并行 + 利润交易顺序跟随
|
|
35
|
-
*/
|
|
36
|
-
export declare function submitEniParallelThenProfit(signedTransactions: string[], config: EniBundleSubmitConfig): Promise<EniBundleSubmitResult>;
|
|
37
|
-
/**
|
|
38
|
-
* ENI Bundle 提交:模拟验证 → 快速顺序广播 → 同块确认
|
|
39
|
-
*
|
|
40
|
-
* 复用同一 Provider 快速顺序广播,最小化延迟、最大化同块概率。
|
|
41
|
-
* ENI 出块 ~1.08s,连续 nonce 快速提交同块率极高。
|
|
42
|
-
*/
|
|
43
|
-
export declare function submitBundleToEni(signedTransactions: string[], config: EniBundleSubmitConfig): Promise<EniBundleSubmitResult>;
|