four-flap-meme-sdk 2.2.8 → 2.2.11
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 +87 -20
- package/dist/index.js +217 -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 +254 -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 -4
- package/dist/shared/flap/index.js +5 -4
- package/dist/shared/flap/launch-v6.d.ts +127 -0
- package/dist/shared/flap/launch-v6.js +123 -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 +151 -142
- 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 +86 -86
- 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-create-token.d.ts +19 -37
- package/dist/shared/flap/portal-create-token.js +124 -121
- package/dist/shared/flap/portal.d.ts +2 -1
- package/dist/shared/flap/portal.js +28 -36
- package/dist/shared/flap/vanity.d.ts +6 -6
- package/dist/shared/flap/vanity.js +21 -15
- 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/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,15 +1,34 @@
|
|
|
1
1
|
import { ethers, JsonRpcProvider } from 'ethers';
|
|
2
|
-
import { GAS_LIMITS
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
function
|
|
6
|
-
|
|
2
|
+
import { GAS_LIMITS } from '../shared/constants/index.js';
|
|
3
|
+
async function getErc20Decimals(provider, token) {
|
|
4
|
+
try {
|
|
5
|
+
const erc20 = new ethers.Contract(token, ['function decimals() view returns (uint8)'], provider);
|
|
6
|
+
const d = await erc20.decimals();
|
|
7
|
+
if (!Number.isFinite(d) || d < 0 || d > 36)
|
|
8
|
+
return 18;
|
|
9
|
+
return d;
|
|
10
|
+
}
|
|
11
|
+
catch {
|
|
12
|
+
return 18;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* 分散(仅签名版本 - 不提交 Bundle)
|
|
17
|
+
* ✅ 精简版:只负责签名交易,不提交
|
|
18
|
+
*/
|
|
19
|
+
/** ENI Chain ID — EIP-1559 (type 2) */
|
|
20
|
+
const ENI_CHAIN_ID = 173;
|
|
21
|
+
function getTxType(chainId) {
|
|
22
|
+
return chainId === ENI_CHAIN_ID ? 2 : 0;
|
|
23
|
+
}
|
|
24
|
+
function buildGasFields(txType, gasPrice) {
|
|
25
|
+
if (txType === 2) {
|
|
26
|
+
return { type: 2, maxFeePerGas: gasPrice, maxPriorityFeePerGas: gasPrice / 10n || 1n };
|
|
27
|
+
}
|
|
28
|
+
return { type: 0, gasPrice };
|
|
7
29
|
}
|
|
8
|
-
// ==========================================
|
|
9
|
-
// 通用:原生/代币 一键分散 & 一键归集(Bundle)
|
|
10
|
-
// ==========================================
|
|
11
30
|
export async function disperseWithBundle(params) {
|
|
12
|
-
const { rpcUrl, chainId, fromPrivateKey, recipients, amount, amounts, tokenAddress, gasPriceGwei, transferGasLimit = GAS_LIMITS.ERC20_TRANSFER, nativeGasLimit = GAS_LIMITS.BRIBE
|
|
31
|
+
const { rpcUrl, chainId, fromPrivateKey, recipients, amount, amounts, tokenAddress, gasPriceGwei, transferGasLimit = GAS_LIMITS.ERC20_TRANSFER, nativeGasLimit = GAS_LIMITS.BRIBE } = params;
|
|
13
32
|
if (!recipients || recipients.length === 0) {
|
|
14
33
|
return { signedTransactions: [] };
|
|
15
34
|
}
|
|
@@ -17,22 +36,22 @@ export async function disperseWithBundle(params) {
|
|
|
17
36
|
const wallet = new ethers.Wallet(fromPrivateKey, provider);
|
|
18
37
|
const gasPrice = gasPriceGwei && gasPriceGwei.trim().length > 0
|
|
19
38
|
? ethers.parseUnits(gasPriceGwei, 'gwei')
|
|
20
|
-
: (
|
|
39
|
+
: (await provider.getFeeData()).gasPrice ?? ethers.parseUnits('1', 'gwei');
|
|
21
40
|
// 规范化 amounts:优先使用数组;否则将单值扩展为数组
|
|
22
41
|
const useAmountsArray = Array.isArray(amounts) && amounts.length > 0;
|
|
23
42
|
const effAmounts = useAmountsArray
|
|
24
43
|
? amounts
|
|
25
|
-
: typeof amount === 'string' && amount.trim().length > 0
|
|
44
|
+
: (typeof amount === 'string' && amount.trim().length > 0
|
|
26
45
|
? new Array(recipients.length).fill(amount)
|
|
27
|
-
: [];
|
|
46
|
+
: []);
|
|
28
47
|
if (effAmounts.length !== recipients.length) {
|
|
29
48
|
throw new Error('recipients and amounts length mismatch');
|
|
30
49
|
}
|
|
31
|
-
|
|
50
|
+
let isNative = !tokenAddress || tokenAddress.trim().length === 0;
|
|
32
51
|
const signedTxs = [];
|
|
33
52
|
if (isNative) {
|
|
34
53
|
const baseNonce = await provider.getTransactionCount(wallet.address, 'pending');
|
|
35
|
-
const txType =
|
|
54
|
+
const txType = getTxType(chainId);
|
|
36
55
|
const signedTxList = await Promise.all(recipients.map(async (to, i) => {
|
|
37
56
|
const amountWei = ethers.parseEther(effAmounts[i]);
|
|
38
57
|
return wallet.signTransaction({
|
|
@@ -50,10 +69,10 @@ export async function disperseWithBundle(params) {
|
|
|
50
69
|
// ✅ 并行获取 decimals 和 nonce
|
|
51
70
|
const [decimals, baseNonce] = await Promise.all([
|
|
52
71
|
getErc20Decimals(provider, tokenAddress),
|
|
53
|
-
provider.getTransactionCount(wallet.address, 'pending')
|
|
72
|
+
provider.getTransactionCount(wallet.address, 'pending')
|
|
54
73
|
]);
|
|
55
74
|
const iface = new ethers.Interface(['function transfer(address,uint256) returns (bool)']);
|
|
56
|
-
const txType =
|
|
75
|
+
const txType = getTxType(chainId);
|
|
57
76
|
const signedTxList = await Promise.all(recipients.map(async (to, i) => {
|
|
58
77
|
const amountWei = ethers.parseUnits(effAmounts[i], decimals);
|
|
59
78
|
const data = iface.encodeFunctionData('transfer', [to, amountWei]);
|
|
@@ -77,15 +96,15 @@ export async function disperseWithBundle(params) {
|
|
|
77
96
|
* ✅ 精简版:只负责签名交易,不提交
|
|
78
97
|
*/
|
|
79
98
|
export async function sweepWithBundle(params) {
|
|
80
|
-
const { rpcUrl, chainId, sourcePrivateKeys, target, ratioPct, amount, tokenAddress, gasPriceGwei, transferGasLimit = GAS_LIMITS.ERC20_TRANSFER, nativeGasLimit = GAS_LIMITS.BRIBE, skipIfInsufficient = true
|
|
99
|
+
const { rpcUrl, chainId, sourcePrivateKeys, target, ratioPct, amount, tokenAddress, gasPriceGwei, transferGasLimit = GAS_LIMITS.ERC20_TRANSFER, nativeGasLimit = GAS_LIMITS.BRIBE, skipIfInsufficient = true } = params;
|
|
81
100
|
if (!sourcePrivateKeys || sourcePrivateKeys.length === 0) {
|
|
82
101
|
return { signedTransactions: [] };
|
|
83
102
|
}
|
|
84
103
|
const provider = new JsonRpcProvider(rpcUrl, chainId);
|
|
85
104
|
const gasPrice = gasPriceGwei && gasPriceGwei.trim().length > 0
|
|
86
105
|
? ethers.parseUnits(gasPriceGwei, 'gwei')
|
|
87
|
-
: (
|
|
88
|
-
|
|
106
|
+
: (await provider.getFeeData()).gasPrice ?? ethers.parseUnits('1', 'gwei');
|
|
107
|
+
let isNative = !tokenAddress || tokenAddress.trim().length === 0;
|
|
89
108
|
const signedTxs = [];
|
|
90
109
|
const clampRatio = (n) => {
|
|
91
110
|
if (typeof n !== 'number' || !Number.isFinite(n))
|
|
@@ -99,18 +118,18 @@ export async function sweepWithBundle(params) {
|
|
|
99
118
|
const ratio = clampRatio(ratioPct);
|
|
100
119
|
if (isNative) {
|
|
101
120
|
// ✅ 并行处理所有源钱包
|
|
102
|
-
const wallets = sourcePrivateKeys.map(
|
|
121
|
+
const wallets = sourcePrivateKeys.map(pk => new ethers.Wallet(pk, provider));
|
|
103
122
|
const gasCost = nativeGasLimit * gasPrice;
|
|
104
123
|
// 并行获取所有余额和 nonce
|
|
105
124
|
const [balances, nonces] = await Promise.all([
|
|
106
|
-
Promise.all(wallets.map(
|
|
107
|
-
Promise.all(wallets.map(
|
|
125
|
+
Promise.all(wallets.map(w => provider.getBalance(w.address).catch(() => 0n))),
|
|
126
|
+
Promise.all(wallets.map(w => provider.getTransactionCount(w.address, 'pending')))
|
|
108
127
|
]);
|
|
109
128
|
// 计算每个钱包的发送金额
|
|
110
|
-
const sendAmounts = balances.map(
|
|
129
|
+
const sendAmounts = balances.map(bal => {
|
|
111
130
|
if (ratio !== undefined) {
|
|
112
131
|
const want = (bal * BigInt(ratio)) / 100n;
|
|
113
|
-
const maxSendable = bal > gasCost ? bal - gasCost : 0n;
|
|
132
|
+
const maxSendable = bal > gasCost ? (bal - gasCost) : 0n;
|
|
114
133
|
return want > maxSendable ? maxSendable : want;
|
|
115
134
|
}
|
|
116
135
|
else if (amount && amount.trim().length > 0) {
|
|
@@ -121,9 +140,9 @@ export async function sweepWithBundle(params) {
|
|
|
121
140
|
}
|
|
122
141
|
return 0n;
|
|
123
142
|
});
|
|
124
|
-
const txType =
|
|
125
|
-
const validIndices = sendAmounts.map((amt, i) =>
|
|
126
|
-
const signedTxList = await Promise.all(validIndices.map(
|
|
143
|
+
const txType = getTxType(chainId);
|
|
144
|
+
const validIndices = sendAmounts.map((amt, i) => amt > 0n ? i : -1).filter(i => i >= 0);
|
|
145
|
+
const signedTxList = await Promise.all(validIndices.map(i => wallets[i].signTransaction({
|
|
127
146
|
to: target,
|
|
128
147
|
value: sendAmounts[i],
|
|
129
148
|
nonce: nonces[i],
|
|
@@ -134,11 +153,8 @@ export async function sweepWithBundle(params) {
|
|
|
134
153
|
signedTxs.push(...signedTxList);
|
|
135
154
|
}
|
|
136
155
|
else {
|
|
137
|
-
const wallets = sourcePrivateKeys.map(
|
|
138
|
-
const iface = new ethers.Interface([
|
|
139
|
-
'function balanceOf(address) view returns (uint256)',
|
|
140
|
-
'function transfer(address,uint256) returns (bool)',
|
|
141
|
-
]);
|
|
156
|
+
const wallets = sourcePrivateKeys.map(pk => new ethers.Wallet(pk, provider));
|
|
157
|
+
const iface = new ethers.Interface(['function balanceOf(address) view returns (uint256)', 'function transfer(address,uint256) returns (bool)']);
|
|
142
158
|
// ✅ 并行获取 decimals、所有代币余额和 nonce
|
|
143
159
|
const [decimals, balanceResults, nonces] = await Promise.all([
|
|
144
160
|
getErc20Decimals(provider, tokenAddress),
|
|
@@ -146,18 +162,17 @@ export async function sweepWithBundle(params) {
|
|
|
146
162
|
try {
|
|
147
163
|
const balData = iface.encodeFunctionData('balanceOf', [w.address]);
|
|
148
164
|
const balRaw = await provider.call({ to: tokenAddress, data: balData });
|
|
149
|
-
const
|
|
150
|
-
const bal = decoded[0];
|
|
165
|
+
const [bal] = iface.decodeFunctionResult('balanceOf', balRaw);
|
|
151
166
|
return bal;
|
|
152
167
|
}
|
|
153
168
|
catch {
|
|
154
169
|
return 0n;
|
|
155
170
|
}
|
|
156
171
|
})),
|
|
157
|
-
Promise.all(wallets.map(
|
|
172
|
+
Promise.all(wallets.map(w => provider.getTransactionCount(w.address, 'pending')))
|
|
158
173
|
]);
|
|
159
174
|
// 计算每个钱包的发送金额
|
|
160
|
-
const sendAmounts = balanceResults.map(
|
|
175
|
+
const sendAmounts = balanceResults.map(bal => {
|
|
161
176
|
if (ratio !== undefined) {
|
|
162
177
|
return (bal * BigInt(ratio)) / 100n;
|
|
163
178
|
}
|
|
@@ -169,17 +184,15 @@ export async function sweepWithBundle(params) {
|
|
|
169
184
|
return 0n;
|
|
170
185
|
});
|
|
171
186
|
// 过滤余额不足的钱包
|
|
172
|
-
const validIndices = sendAmounts
|
|
173
|
-
.map((amt, i) => {
|
|
187
|
+
const validIndices = sendAmounts.map((amt, i) => {
|
|
174
188
|
if (amt <= 0n)
|
|
175
189
|
return -1;
|
|
176
190
|
if (skipIfInsufficient && balanceResults[i] < amt)
|
|
177
191
|
return -1;
|
|
178
192
|
return i;
|
|
179
|
-
})
|
|
180
|
-
|
|
181
|
-
const
|
|
182
|
-
const signedTxList = await Promise.all(validIndices.map((i) => {
|
|
193
|
+
}).filter(i => i >= 0);
|
|
194
|
+
const txType = getTxType(chainId);
|
|
195
|
+
const signedTxList = await Promise.all(validIndices.map(i => {
|
|
183
196
|
const data = iface.encodeFunctionData('transfer', [target, sendAmounts[i]]);
|
|
184
197
|
return wallets[i].signTransaction({
|
|
185
198
|
to: tokenAddress,
|
|
@@ -1,10 +1,244 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Bundle 交易辅助工具
|
|
3
|
-
*
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
2
|
+
* Bundle 交易辅助工具
|
|
3
|
+
* 提供可复用的 nonce 管理、gas 估算等功能
|
|
4
|
+
*/
|
|
5
|
+
import { JsonRpcProvider, Wallet } from 'ethers';
|
|
6
|
+
import { type GeneratedWallet } from './wallet.js';
|
|
7
|
+
/**
|
|
8
|
+
* Nonce 管理器
|
|
9
|
+
* 用于在 bundle 交易中管理多个钱包的 nonce
|
|
10
|
+
*
|
|
11
|
+
* 策略:
|
|
12
|
+
* 1. 每次获取 nonce 时查询链上状态(使用 'pending' 包含待处理交易)
|
|
13
|
+
* 2. 仅在同一批次内维护临时递增缓存
|
|
14
|
+
* 3. 不持久化缓存,避免因失败交易导致 nonce 过高
|
|
15
|
+
*/
|
|
16
|
+
export declare class NonceManager {
|
|
17
|
+
private provider;
|
|
18
|
+
private tempNonceCache;
|
|
19
|
+
private chainIdPromise?;
|
|
20
|
+
constructor(provider: JsonRpcProvider);
|
|
21
|
+
private getChainId;
|
|
22
|
+
/**
|
|
23
|
+
* 获取下一个可用的 nonce
|
|
24
|
+
* @param wallet 钱包对象或地址
|
|
25
|
+
* @returns 下一个 nonce
|
|
26
|
+
*/
|
|
27
|
+
getNextNonce(wallet: Wallet | string): Promise<number>;
|
|
28
|
+
/**
|
|
29
|
+
* 批量获取连续 nonce(推荐用于同一地址的批量交易)
|
|
30
|
+
* @param wallet 钱包对象或地址
|
|
31
|
+
* @param count 需要的 nonce 数量
|
|
32
|
+
* @returns nonce 数组
|
|
33
|
+
*/
|
|
34
|
+
getNextNonceBatch(wallet: Wallet | string, count: number): Promise<number[]>;
|
|
35
|
+
/**
|
|
36
|
+
* 清空临时缓存(建议在每次 bundle 提交后调用)
|
|
37
|
+
*/
|
|
38
|
+
clearTemp(): void;
|
|
39
|
+
/**
|
|
40
|
+
* 获取当前临时缓存的 nonce(调试用)
|
|
41
|
+
*/
|
|
42
|
+
getTempCachedNonce(address: string): number | undefined;
|
|
43
|
+
/**
|
|
44
|
+
* ✅ 批量获取多个不同地址的 nonce(真正的单次 JSON-RPC 批量请求)
|
|
45
|
+
* 使用 provider.send 发送批量请求,N 个地址只需 1 次网络往返
|
|
46
|
+
* @param wallets 钱包数组
|
|
47
|
+
* @returns nonce 数组(顺序与 wallets 对应)
|
|
48
|
+
*/
|
|
49
|
+
getNextNoncesForWallets(wallets: (Wallet | string)[]): Promise<number[]>;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Gas 价格配置
|
|
53
|
+
*/
|
|
54
|
+
export interface GasPriceConfig {
|
|
55
|
+
/** 基础 gas price(如果不提供则从链上获取) */
|
|
56
|
+
baseGasPrice?: bigint;
|
|
57
|
+
/** Gas price 增幅百分比(默认 50,即提高 50%) */
|
|
58
|
+
multiplierPercent?: number;
|
|
59
|
+
/** 最小 gas price */
|
|
60
|
+
minGasPrice?: bigint;
|
|
61
|
+
/** 最大 gas price */
|
|
62
|
+
maxGasPrice?: bigint;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* 获取优化后的 Gas Price
|
|
66
|
+
* @param provider Provider 实例
|
|
67
|
+
* @param config Gas 配置
|
|
68
|
+
* @returns Gas price
|
|
69
|
+
*/
|
|
70
|
+
export declare function getOptimizedGasPrice(provider: JsonRpcProvider, config?: GasPriceConfig): Promise<bigint>;
|
|
71
|
+
/**
|
|
72
|
+
* Gas 估算配置
|
|
73
|
+
*/
|
|
74
|
+
export interface GasEstimateConfig {
|
|
75
|
+
/** Gas limit 安全余量倍数(默认 1.2 = 20%) */
|
|
76
|
+
multiplier?: number;
|
|
77
|
+
/** 失败时的默认 gas limit */
|
|
78
|
+
fallbackGasLimit?: bigint;
|
|
79
|
+
/** 是否允许估算失败 */
|
|
80
|
+
allowFailure?: boolean;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* 估算 gas 并应用安全余量
|
|
84
|
+
* @param provider Provider 实例
|
|
85
|
+
* @param txRequest 交易请求
|
|
86
|
+
* @param config Gas 估算配置
|
|
87
|
+
* @returns Gas limit
|
|
88
|
+
*/
|
|
89
|
+
export declare function estimateGasWithSafety(provider: JsonRpcProvider, txRequest: any, config?: GasEstimateConfig): Promise<bigint>;
|
|
90
|
+
/**
|
|
91
|
+
* 批量估算 gas(并行)
|
|
92
|
+
* @param provider Provider 实例
|
|
93
|
+
* @param txRequests 交易请求数组
|
|
94
|
+
* @param config Gas 估算配置
|
|
95
|
+
* @returns Gas limit 数组
|
|
96
|
+
*/
|
|
97
|
+
export declare function estimateGasBatch(provider: JsonRpcProvider, txRequests: any[], config?: GasEstimateConfig): Promise<bigint[]>;
|
|
98
|
+
/**
|
|
99
|
+
* 构建交易对象
|
|
100
|
+
*/
|
|
101
|
+
export interface BuildTransactionOptions {
|
|
102
|
+
from: string;
|
|
103
|
+
to?: string;
|
|
104
|
+
data?: string;
|
|
105
|
+
value?: bigint;
|
|
106
|
+
nonce: number;
|
|
107
|
+
gasPrice: bigint;
|
|
108
|
+
gasLimit: bigint;
|
|
109
|
+
chainId: number;
|
|
110
|
+
type?: 0 | 2;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* 构建标准交易对象
|
|
114
|
+
* @param options 交易选项
|
|
115
|
+
* @returns 交易对象
|
|
116
|
+
*/
|
|
117
|
+
export declare function buildTransaction(options: BuildTransactionOptions): any;
|
|
118
|
+
/**
|
|
119
|
+
* 通用配置接口(用于提取公共配置字段)
|
|
120
|
+
*/
|
|
121
|
+
export interface CommonBundleConfig {
|
|
122
|
+
gasLimit?: number;
|
|
123
|
+
gasLimitMultiplier?: number;
|
|
124
|
+
minGasPriceGwei?: number;
|
|
125
|
+
maxGasPriceGwei?: number;
|
|
126
|
+
txType?: 0 | 2;
|
|
127
|
+
chainId?: number;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* 获取 Gas Limit
|
|
131
|
+
* 优先使用 config.gasLimit,否则使用默认值 * multiplier
|
|
132
|
+
*/
|
|
133
|
+
export declare function getGasLimit(config: CommonBundleConfig, defaultGas?: number): bigint;
|
|
134
|
+
/**
|
|
135
|
+
* 获取 Gas Price 配置(转换为 GasPriceConfig)
|
|
136
|
+
*/
|
|
137
|
+
export declare function getGasPriceConfig(config: CommonBundleConfig): GasPriceConfig;
|
|
138
|
+
/**
|
|
139
|
+
* 获取交易类型
|
|
140
|
+
*/
|
|
141
|
+
export declare function getTxType(config: CommonBundleConfig): 0 | 2;
|
|
142
|
+
/**
|
|
143
|
+
* 根据交易类型构建 gas 字段
|
|
144
|
+
* type 0 (Legacy): 使用 gasPrice
|
|
145
|
+
* type 2 (EIP-1559): 使用 maxFeePerGas + maxPriorityFeePerGas
|
|
146
|
+
*
|
|
147
|
+
* BaseWallet.signTransaction -> Transaction.from() 不会自动转换
|
|
148
|
+
* gasPrice 到 maxFeePerGas,必须显式传入正确字段
|
|
149
|
+
*/
|
|
150
|
+
export declare function buildGasFields(txType: number, gasPrice: bigint): Record<string, unknown>;
|
|
151
|
+
/**
|
|
152
|
+
* 获取链 ID(从 provider 或 config)
|
|
153
|
+
*/
|
|
154
|
+
export declare function getChainId(provider: JsonRpcProvider, configChainId?: number): Promise<number>;
|
|
155
|
+
/**
|
|
156
|
+
* 并行签名多个交易
|
|
157
|
+
* @param wallet 钱包
|
|
158
|
+
* @param transactions 交易数组
|
|
159
|
+
* @returns 已签名的交易数组
|
|
160
|
+
*/
|
|
161
|
+
export declare function signTransactionsBatch(wallet: Wallet, transactions: any[]): Promise<string[]>;
|
|
162
|
+
/**
|
|
163
|
+
* 批量签名(支持多个钱包)
|
|
164
|
+
* @param wallets 钱包数组
|
|
165
|
+
* @param transactions 交易数组(必须与钱包一一对应)
|
|
166
|
+
* @returns 已签名的交易数组
|
|
167
|
+
*/
|
|
168
|
+
export declare function signTransactionsBatchMultiWallet(wallets: Wallet[], transactions: any[]): Promise<string[]>;
|
|
169
|
+
/**
|
|
170
|
+
* 验证已签名交易的格式
|
|
171
|
+
* @param signedTxs 已签名的交易数组
|
|
172
|
+
* @returns 是否全部有效
|
|
173
|
+
*/
|
|
174
|
+
export declare function validateSignedTransactions(signedTxs: string[]): boolean;
|
|
175
|
+
/**
|
|
176
|
+
* 获取交易 deadline(Unix 时间戳秒)
|
|
177
|
+
* @param minutes 有效分钟数,默认 20
|
|
178
|
+
* @returns Unix 时间戳(秒)
|
|
179
|
+
*/
|
|
180
|
+
export declare function getDeadline(minutes?: number): number;
|
|
181
|
+
/**
|
|
182
|
+
* 编码 V3 多跳 path
|
|
183
|
+
* 格式:token0 (20 bytes) + fee (3 bytes) + token1 (20 bytes) + fee (3 bytes) + token2 (20 bytes) ...
|
|
184
|
+
*
|
|
185
|
+
* @param tokens 代币地址数组 [tokenIn, tokenMid1, tokenMid2, ..., tokenOut]
|
|
186
|
+
* @param fees 费率数组 [fee0, fee1, ...] - 长度应该是 tokens.length - 1
|
|
187
|
+
* @returns 编码后的 path(hex string)
|
|
188
|
+
*
|
|
189
|
+
* @example
|
|
190
|
+
* // WBNB → USDT(500) → TOKEN(2500)
|
|
191
|
+
* encodeV3Path(['0xWBNB...', '0xUSDT...', '0xTOKEN...'], [500, 2500])
|
|
192
|
+
*/
|
|
193
|
+
export declare function encodeV3Path(tokens: string[], fees: number[]): string;
|
|
194
|
+
/**
|
|
195
|
+
* 解码 V3 path 为代币和费率数组
|
|
196
|
+
* @param path 编码后的 path
|
|
197
|
+
* @returns { tokens, fees }
|
|
198
|
+
*/
|
|
199
|
+
export declare function decodeV3Path(path: string): {
|
|
200
|
+
tokens: string[];
|
|
201
|
+
fees: number[];
|
|
202
|
+
};
|
|
203
|
+
/**
|
|
204
|
+
* 利润多跳转账配置
|
|
205
|
+
*/
|
|
206
|
+
export interface ProfitHopConfig {
|
|
207
|
+
provider: JsonRpcProvider;
|
|
208
|
+
payerWallet: Wallet;
|
|
209
|
+
profitAmount: bigint;
|
|
210
|
+
profitRecipient: string;
|
|
211
|
+
hopCount?: number;
|
|
212
|
+
gasPrice: bigint;
|
|
213
|
+
chainId: number;
|
|
214
|
+
txType: number;
|
|
215
|
+
startNonce?: number;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* 利润多跳结果
|
|
219
|
+
*/
|
|
220
|
+
export interface ProfitHopResult {
|
|
221
|
+
signedTransactions: string[];
|
|
222
|
+
hopWallets: GeneratedWallet[];
|
|
223
|
+
totalNonceUsed: number;
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* 强制 2 跳的利润转账常量
|
|
227
|
+
*/
|
|
228
|
+
export declare const PROFIT_HOP_COUNT = 2;
|
|
229
|
+
/**
|
|
230
|
+
* 生成利润转账交易
|
|
231
|
+
*
|
|
232
|
+
* BSC 链:使用多跳转账
|
|
233
|
+
* 流程(2 跳):
|
|
234
|
+
* 1. 支付者 → 中转1(gas + 利润 + 中转1的gas)
|
|
235
|
+
* 2. 中转1 → 中转2(gas + 利润)
|
|
236
|
+
* 3. 中转2 → 利润地址(利润)
|
|
237
|
+
*
|
|
238
|
+
* 其他链:直接转账到收益地址
|
|
239
|
+
* 流程:支付者 → 利润地址
|
|
240
|
+
*
|
|
241
|
+
* @param config 配置参数
|
|
242
|
+
* @returns 签名交易和中转钱包私钥
|
|
243
|
+
*/
|
|
244
|
+
export declare function buildProfitHopTransactions(config: ProfitHopConfig): Promise<ProfitHopResult>;
|