four-flap-meme-sdk 2.2.0 → 2.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +6 -41
- package/README.md +0 -31
- package/README.zh-CN.md +6 -41
- package/dist/chains/bsc/four/approve-tokenmanager.d.ts +26 -1
- package/dist/chains/bsc/four/approve-tokenmanager.js +113 -1
- package/dist/chains/bsc/four/config.d.ts +67 -5
- package/dist/chains/bsc/four/config.js +114 -2
- package/dist/chains/bsc/four/core.d.ts +4 -1
- package/dist/chains/bsc/four/core.js +592 -1
- package/dist/chains/bsc/four/index.d.ts +6 -6
- package/dist/chains/bsc/four/index.js +6 -6
- package/dist/chains/bsc/four/internal.d.ts +46 -2
- package/dist/chains/bsc/four/internal.js +239 -2
- package/dist/chains/bsc/four/pancake-proxy.d.ts +28 -1
- package/dist/chains/bsc/four/pancake-proxy.js +687 -1
- package/dist/chains/bsc/four/private.d.ts +27 -1
- package/dist/chains/bsc/four/private.js +477 -1
- package/dist/chains/bsc/four/submit.d.ts +315 -2
- package/dist/chains/bsc/four/submit.js +752 -2
- package/dist/chains/bsc/four/swap-buy-first.d.ts +55 -2
- package/dist/chains/bsc/four/swap-buy-first.js +507 -2
- package/dist/chains/bsc/four/swap-internal.d.ts +3 -1
- package/dist/chains/bsc/four/swap-internal.js +18 -1
- package/dist/chains/bsc/four/swap.d.ts +144 -2
- package/dist/chains/bsc/four/swap.js +766 -2
- package/dist/chains/bsc/four/types.d.ts +476 -1
- package/dist/chains/bsc/four/utils.d.ts +18 -5
- package/dist/chains/bsc/four/utils.js +1552 -5
- package/dist/chains/bsc/pancake/bundle-buy-first.d.ts +91 -1
- package/dist/chains/bsc/pancake/bundle-buy-first.js +212 -97
- package/dist/chains/bsc/pancake/bundle-swap.d.ts +79 -1
- package/dist/chains/bsc/pancake/bundle-swap.js +726 -114
- package/dist/chains/bsc/pancake/index.d.ts +2 -4
- package/dist/chains/bsc/pancake/index.js +3 -1
- package/dist/chains/bsc/platforms/iro/factory.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 +4 -4
- 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 +4 -8
- 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.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 +97 -26
- 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 +301 -58
- 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 +158 -83
- package/dist/chains/xlayer/eoa/constants.js +1 -1
- package/dist/chains/xlayer/eoa/dex-helpers.js +5 -5
- package/dist/chains/xlayer/eoa/eoa-bundle-swap.d.ts +95 -1
- package/dist/chains/xlayer/eoa/eoa-bundle-swap.js +299 -66
- package/dist/chains/xlayer/eoa/eoa-wash-volume.d.ts +1 -1
- package/dist/chains/xlayer/eoa/eoa-wash-volume.js +23 -18
- package/dist/chains/xlayer/eoa/index.d.ts +6 -10
- package/dist/chains/xlayer/eoa/index.js +23 -8
- package/dist/chains/xlayer/eoa/portal-ops.js +2 -7
- package/dist/chains/xlayer/eoa/router-manager.js +3 -3
- package/dist/chains/xlayer/eoa/types.d.ts +2 -2
- package/dist/chains/xlayer/eoa/types.js +3 -1
- package/dist/chains/xlayer/index.d.ts +2 -3
- package/dist/chains/xlayer/index.js +7 -4
- package/dist/contracts/helper3.d.ts +5 -20
- package/dist/contracts/helper3.js +20 -56
- package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.d.ts +26 -1
- package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.js +113 -1
- package/dist/contracts/tm-bundle-merkle/config.d.ts +67 -5
- package/dist/contracts/tm-bundle-merkle/config.js +114 -2
- package/dist/contracts/tm-bundle-merkle/core.d.ts +4 -1
- package/dist/contracts/tm-bundle-merkle/core.js +591 -1
- package/dist/contracts/tm-bundle-merkle/index.d.ts +5 -5
- package/dist/contracts/tm-bundle-merkle/index.js +5 -5
- package/dist/contracts/tm-bundle-merkle/internal.d.ts +46 -2
- package/dist/contracts/tm-bundle-merkle/internal.js +238 -2
- package/dist/contracts/tm-bundle-merkle/pancake-proxy.d.ts +28 -1
- package/dist/contracts/tm-bundle-merkle/pancake-proxy.js +686 -1
- package/dist/contracts/tm-bundle-merkle/private.d.ts +27 -1
- package/dist/contracts/tm-bundle-merkle/private.js +476 -1
- package/dist/contracts/tm-bundle-merkle/submit.d.ts +314 -3
- package/dist/contracts/tm-bundle-merkle/submit.js +928 -3
- package/dist/contracts/tm-bundle-merkle/swap-buy-first.d.ts +55 -2
- package/dist/contracts/tm-bundle-merkle/swap-buy-first.js +506 -2
- package/dist/contracts/tm-bundle-merkle/swap-internal.d.ts +3 -1
- package/dist/contracts/tm-bundle-merkle/swap-internal.js +18 -1
- package/dist/contracts/tm-bundle-merkle/swap.d.ts +144 -2
- package/dist/contracts/tm-bundle-merkle/swap.js +764 -2
- package/dist/contracts/tm-bundle-merkle/types.d.ts +476 -1
- package/dist/contracts/tm-bundle-merkle/utils.d.ts +18 -6
- package/dist/contracts/tm-bundle-merkle/utils.js +1501 -6
- package/dist/contracts/tm-bundle.d.ts +51 -3
- package/dist/contracts/tm-bundle.js +177 -108
- package/dist/contracts/tm.d.ts +2 -3
- package/dist/contracts/tm.js +32 -37
- package/dist/contracts/tm1.js +4 -9
- package/dist/contracts/tm2.js +4 -9
- package/dist/dex/direct-router.d.ts +125 -3
- package/dist/dex/direct-router.js +666 -237
- package/dist/flows/create.d.ts +1 -2
- package/dist/flows/create.js +6 -6
- package/dist/index.d.ts +85 -20
- package/dist/index.js +215 -20
- package/dist/shared/abis/TaxToken.json +105 -0
- package/dist/shared/abis/TokenManager2.json +60 -0
- package/dist/shared/abis/common.d.ts +83 -2
- package/dist/shared/abis/common.js +252 -2
- package/dist/shared/abis/index.d.ts +6 -5
- package/dist/shared/abis/index.js +7 -5
- package/dist/shared/clients/blockrazor.js +25 -39
- package/dist/shared/clients/club48.d.ts +2 -2
- package/dist/shared/clients/club48.js +29 -34
- package/dist/shared/clients/emitservice.js +0 -2
- package/dist/shared/clients/four.d.ts +5 -5
- package/dist/shared/clients/four.js +17 -21
- package/dist/shared/clients/merkle.js +34 -27
- package/dist/shared/constants/addresses.d.ts +1 -1
- package/dist/shared/constants/addresses.js +2 -11
- package/dist/shared/constants/chains.d.ts +1 -1
- package/dist/shared/constants/chains.js +1 -1
- package/dist/shared/constants/gas.d.ts +1 -1
- package/dist/shared/constants/gas.js +6 -2
- package/dist/shared/constants/index.d.ts +0 -3
- package/dist/shared/constants/index.js +0 -1
- package/dist/shared/flap/abi.js +1 -1
- package/dist/shared/flap/constants.d.ts +2 -1
- package/dist/shared/flap/constants.js +3 -2
- package/dist/shared/flap/curve.js +0 -3
- package/dist/shared/flap/errors.d.ts +4 -1
- package/dist/shared/flap/errors.js +1 -20
- package/dist/shared/flap/index.d.ts +3 -3
- package/dist/shared/flap/index.js +3 -3
- package/dist/shared/flap/meta.d.ts +18 -16
- package/dist/shared/flap/meta.js +17 -12
- package/dist/shared/flap/permit.js +2 -5
- package/dist/shared/flap/pinata.d.ts +4 -11
- package/dist/shared/flap/pinata.js +16 -21
- package/dist/shared/flap/portal-bundle-merkle/config.d.ts +72 -3
- package/dist/shared/flap/portal-bundle-merkle/config.js +124 -4
- package/dist/shared/flap/portal-bundle-merkle/core.d.ts +4 -0
- package/dist/shared/flap/portal-bundle-merkle/core.js +172 -92
- package/dist/shared/flap/portal-bundle-merkle/create-to-dex.js +99 -106
- package/dist/shared/flap/portal-bundle-merkle/curve-to-dex.js +92 -100
- package/dist/shared/flap/portal-bundle-merkle/index.d.ts +7 -11
- package/dist/shared/flap/portal-bundle-merkle/index.js +7 -4
- package/dist/shared/flap/portal-bundle-merkle/pancake-proxy.js +68 -71
- package/dist/shared/flap/portal-bundle-merkle/private.js +114 -61
- package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.d.ts +64 -1
- package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.js +247 -66
- package/dist/shared/flap/portal-bundle-merkle/swap.d.ts +71 -2
- package/dist/shared/flap/portal-bundle-merkle/swap.js +410 -103
- package/dist/shared/flap/portal-bundle-merkle/types.d.ts +7 -73
- package/dist/shared/flap/portal-bundle-merkle/utils.d.ts +80 -1
- package/dist/shared/flap/portal-bundle-merkle/utils.js +265 -145
- package/dist/shared/flap/portal-bundle.js +56 -55
- package/dist/shared/flap/portal.d.ts +3 -1
- package/dist/shared/flap/portal.js +25 -32
- package/dist/shared/flap/vanity.d.ts +5 -1
- package/dist/shared/flap/vanity.js +17 -6
- package/dist/shared/flap/vault.d.ts +124 -17
- package/dist/shared/flap/vault.js +148 -67
- package/dist/shared/four/tax-token.d.ts +1 -1
- package/dist/shared/four/tax-token.js +7 -27
- package/dist/shared/index.d.ts +0 -6
- package/dist/shared/index.js +0 -4
- package/dist/utils/airdrop-sweep.d.ts +76 -4
- package/dist/utils/airdrop-sweep.js +54 -40
- 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 +10 -5
- package/dist/utils/wallet.d.ts +25 -2
- package/dist/utils/wallet.js +8 -9
- package/package.json +4 -159
- package/dist/__tests__/subpath-exports.test.d.ts +0 -1
- package/dist/__tests__/subpath-exports.test.js +0 -64
- package/dist/abis/common.d.ts +0 -85
- package/dist/abis/common.js +0 -260
- package/dist/abis/contracts/TaxToken.json +0 -969
- package/dist/abis/contracts/TokenManager2.json +0 -136
- package/dist/abis/contracts/index.d.ts +0 -5
- package/dist/abis/contracts/index.js +0 -5
- package/dist/abis/flap/index.d.ts +0 -3
- package/dist/abis/flap/index.js +0 -3
- package/dist/abis/flap/portal-events.d.ts +0 -6
- package/dist/abis/flap/portal-events.js +0 -17
- package/dist/abis/flap/portal.d.ts +0 -6
- package/dist/abis/flap/portal.js +0 -37
- package/dist/abis/flap/vault.d.ts +0 -171
- package/dist/abis/flap/vault.js +0 -91
- package/dist/abis/index.d.ts +0 -8
- package/dist/abis/index.js +0 -11
- package/dist/bundle-core/__tests__/config-helpers.test.d.ts +0 -1
- package/dist/bundle-core/__tests__/config-helpers.test.js +0 -28
- package/dist/bundle-core/__tests__/facade-parity.test.d.ts +0 -1
- package/dist/bundle-core/__tests__/facade-parity.test.js +0 -33
- package/dist/bundle-core/__tests__/sign-context-helpers.test.d.ts +0 -1
- package/dist/bundle-core/__tests__/sign-context-helpers.test.js +0 -60
- package/dist/bundle-core/__tests__/sign-fixture.test.d.ts +0 -1
- package/dist/bundle-core/__tests__/sign-fixture.test.js +0 -220
- package/dist/bundle-core/__tests__/sign-fixtures.d.ts +0 -10
- package/dist/bundle-core/__tests__/sign-fixtures.js +0 -16
- package/dist/bundle-core/config-helpers.d.ts +0 -36
- package/dist/bundle-core/config-helpers.js +0 -57
- package/dist/bundle-core/errors.d.ts +0 -50
- package/dist/bundle-core/errors.js +0 -34
- 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 -39
- 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 -180
- 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
|
@@ -11,9 +11,8 @@
|
|
|
11
11
|
* 支持池子类型:V2, V3
|
|
12
12
|
*/
|
|
13
13
|
import { ethers, Wallet, Contract } from 'ethers';
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import { getProfitRecipient } from '../../../shared/constants/index.js';
|
|
14
|
+
import { directV2BatchBuy, directV2BatchSell, directV3BatchBuy, directV3BatchSell } from '../../../dex/direct-router.js';
|
|
15
|
+
import { PROFIT_CONFIG } from '../../../utils/constants.js';
|
|
17
16
|
// ============================================================================
|
|
18
17
|
// 辅助函数
|
|
19
18
|
// ============================================================================
|
|
@@ -55,8 +54,8 @@ export async function signEoaWashBuyTransactions(params) {
|
|
|
55
54
|
throw new Error('[signEoaWashBuyTransactions] 私钥数量与买入金额数量不一致');
|
|
56
55
|
}
|
|
57
56
|
// 创建钱包
|
|
58
|
-
const provider =
|
|
59
|
-
const wallets = privateKeys.map(
|
|
57
|
+
const provider = new ethers.JsonRpcProvider(config.rpcUrl);
|
|
58
|
+
const wallets = privateKeys.map(pk => new Wallet(pk, provider));
|
|
60
59
|
let result;
|
|
61
60
|
if (poolType === 'V2') {
|
|
62
61
|
result = await directV2BatchBuy({
|
|
@@ -70,7 +69,7 @@ export async function signEoaWashBuyTransactions(params) {
|
|
|
70
69
|
config: {
|
|
71
70
|
...config,
|
|
72
71
|
skipProfit: true, // 买入时不刮取利润(卖出时刮取)
|
|
73
|
-
}
|
|
72
|
+
}
|
|
74
73
|
});
|
|
75
74
|
}
|
|
76
75
|
else {
|
|
@@ -87,9 +86,10 @@ export async function signEoaWashBuyTransactions(params) {
|
|
|
87
86
|
config: {
|
|
88
87
|
...config,
|
|
89
88
|
skipProfit: true, // 买入时不刮取利润(卖出时刮取)
|
|
90
|
-
}
|
|
89
|
+
}
|
|
91
90
|
});
|
|
92
91
|
}
|
|
92
|
+
console.log(`[signEoaWashBuyTransactions] 签名 ${result.signedTransactions.length} 笔买入交易`);
|
|
93
93
|
return {
|
|
94
94
|
signedTransactions: result.signedTransactions,
|
|
95
95
|
wallets,
|
|
@@ -107,32 +107,35 @@ export async function signEoaWashBuyTransactions(params) {
|
|
|
107
107
|
*/
|
|
108
108
|
export async function signEoaWashSellTransactions(params, wallets, tokenDecimals) {
|
|
109
109
|
const { tokenAddress, poolType, routerAddress, quoteToken, config } = params;
|
|
110
|
-
const provider =
|
|
110
|
+
const provider = new ethers.JsonRpcProvider(config.rpcUrl);
|
|
111
111
|
// 获取代币精度
|
|
112
|
-
const decimals = tokenDecimals ??
|
|
112
|
+
const decimals = tokenDecimals ?? await getTokenDecimals(provider, tokenAddress);
|
|
113
|
+
console.log(`[signEoaWashSellTransactions] 代币精度: ${decimals}`);
|
|
113
114
|
// 查询所有钱包的代币余额
|
|
114
|
-
const balancesWei = await Promise.all(wallets.map(
|
|
115
|
+
const balancesWei = await Promise.all(wallets.map(w => getTokenBalance(provider, tokenAddress, w.address)));
|
|
115
116
|
// 转换为格式化金额
|
|
116
|
-
const sellAmounts = balancesWei.map(
|
|
117
|
+
const sellAmounts = balancesWei.map(balance => {
|
|
117
118
|
if (balance <= 0n)
|
|
118
119
|
return '0';
|
|
119
120
|
return ethers.formatUnits(balance, decimals);
|
|
120
121
|
});
|
|
122
|
+
console.log(`[signEoaWashSellTransactions] 钱包余额:`, sellAmounts);
|
|
121
123
|
// 过滤出有余额的钱包
|
|
122
124
|
const validIndices = sellAmounts
|
|
123
125
|
.map((amt, i) => ({ amt, i }))
|
|
124
126
|
.filter(({ amt }) => parseFloat(amt) > 0)
|
|
125
127
|
.map(({ i }) => i);
|
|
126
128
|
if (validIndices.length === 0) {
|
|
129
|
+
console.warn('[signEoaWashSellTransactions] 所有钱包余额为 0,无法卖出');
|
|
127
130
|
return {
|
|
128
131
|
signedTransactions: [],
|
|
129
132
|
profitHopWallets: [],
|
|
130
133
|
profitAmount: '0',
|
|
131
|
-
profitRecipient:
|
|
134
|
+
profitRecipient: PROFIT_CONFIG.RECIPIENT,
|
|
132
135
|
};
|
|
133
136
|
}
|
|
134
|
-
const validPrivateKeys = validIndices.map(
|
|
135
|
-
const validSellAmounts = validIndices.map(
|
|
137
|
+
const validPrivateKeys = validIndices.map(i => wallets[i].privateKey);
|
|
138
|
+
const validSellAmounts = validIndices.map(i => sellAmounts[i]);
|
|
136
139
|
let result;
|
|
137
140
|
if (poolType === 'V2') {
|
|
138
141
|
result = await directV2BatchSell({
|
|
@@ -145,7 +148,7 @@ export async function signEoaWashSellTransactions(params, wallets, tokenDecimals
|
|
|
145
148
|
config: {
|
|
146
149
|
...config,
|
|
147
150
|
// ✅ 卖出时正常刮取利润(XLayer 不使用多跳,直接转账)
|
|
148
|
-
}
|
|
151
|
+
}
|
|
149
152
|
});
|
|
150
153
|
}
|
|
151
154
|
else {
|
|
@@ -161,14 +164,15 @@ export async function signEoaWashSellTransactions(params, wallets, tokenDecimals
|
|
|
161
164
|
config: {
|
|
162
165
|
...config,
|
|
163
166
|
// ✅ 卖出时正常刮取利润(XLayer 不使用多跳,直接转账)
|
|
164
|
-
}
|
|
167
|
+
}
|
|
165
168
|
});
|
|
166
169
|
}
|
|
170
|
+
console.log(`[signEoaWashSellTransactions] 签名 ${result.signedTransactions.length} 笔卖出交易(含利润)`);
|
|
167
171
|
return {
|
|
168
172
|
signedTransactions: result.signedTransactions,
|
|
169
173
|
profitHopWallets: result.profitHopWallets ?? [],
|
|
170
174
|
profitAmount: result.metadata?.profitAmount ?? '0',
|
|
171
|
-
profitRecipient: result.metadata?.profitRecipient ??
|
|
175
|
+
profitRecipient: result.metadata?.profitRecipient ?? PROFIT_CONFIG.RECIPIENT,
|
|
172
176
|
};
|
|
173
177
|
}
|
|
174
178
|
/**
|
|
@@ -186,12 +190,13 @@ export async function signEoaWashVolumeTransactions(params) {
|
|
|
186
190
|
// 第一步:签名买入交易
|
|
187
191
|
const buyResult = await signEoaWashBuyTransactions(params);
|
|
188
192
|
// 注意:这里的卖出签名是基于预估的,实际使用时应该在买入确认后重新签名
|
|
193
|
+
console.log(`[signEoaWashVolumeTransactions] ⚠️ 注意:卖出签名应在买入确认后根据实际余额重新生成`);
|
|
189
194
|
// 暂时返回空的卖出签名(实际使用时应该在买入确认后调用 signEoaWashSellTransactions)
|
|
190
195
|
return {
|
|
191
196
|
buySignedTransactions: buyResult.signedTransactions,
|
|
192
197
|
sellSignedTransactions: [], // 需要在买入确认后重新签名
|
|
193
198
|
profitHopWallets: [],
|
|
194
199
|
profitAmount: '0',
|
|
195
|
-
profitRecipient:
|
|
200
|
+
profitRecipient: PROFIT_CONFIG.RECIPIENT,
|
|
196
201
|
};
|
|
197
202
|
}
|
|
@@ -11,18 +11,14 @@
|
|
|
11
11
|
*/
|
|
12
12
|
export * from './constants.js';
|
|
13
13
|
export * from './types.js';
|
|
14
|
-
import { createPortalQuery } from './portal-ops.js';
|
|
15
|
-
import { xlayerQuickBatchSwapMerkle, xlayerCrossSwapMerkle, xlayerPureCrossSwapMerkle } from './eoa-bundle-swap.js';
|
|
16
|
-
import { signEoaWashVolumeTransactions } from './eoa-wash-volume.js';
|
|
17
14
|
export { encodeBuyCall, encodeBuyCallV3, encodeSellCall, encodeApproveCall, encodeTransferCall, PortalQuery, createPortalQuery, applySlippage, formatOkb, parseOkb, formatTokenAmount, parseTokenAmount, type PortalQueryConfig, } from './portal-ops.js';
|
|
18
15
|
export { signEoaWashBuyTransactions, signEoaWashSellTransactions, signEoaWashVolumeTransactions, type EoaWashPoolType, type EoaWashVolumeParams, type EoaWashVolumeResult, } from './eoa-wash-volume.js';
|
|
19
|
-
export { xlayerQuickBatchSwapMerkle, xlayerCrossSwapMerkle, xlayerPureCrossSwapMerkle, type XLayerPureCrossSwapParams, type XLayerPureCrossSwapResult, } from './eoa-bundle-swap.js';
|
|
20
|
-
export type { XLayerEoaSwapConfig, XLayerQuickBatchSwapParams, XLayerQuickBatchSwapResult, XLayerCrossSwapParams, XLayerCrossSwapResult, UserType as XLayerUserType, RouteParams as XLayerRouteParams, V2RouteParams as XLayerV2RouteParams, V3SingleRouteParams as XLayerV3SingleRouteParams, V3MultiRouteParams as XLayerV3MultiRouteParams, } from './eoa-bundle-swap-helpers.js';
|
|
16
|
+
export { xlayerQuickBatchSwapMerkle, xlayerCrossSwapMerkle, xlayerPureCrossSwapMerkle, type XLayerEoaSwapConfig, type XLayerQuickBatchSwapParams, type XLayerQuickBatchSwapResult, type XLayerCrossSwapParams, type XLayerCrossSwapResult, type XLayerPureCrossSwapParams, type XLayerPureCrossSwapResult, type UserType as XLayerUserType, type RouteParams as XLayerRouteParams, type V2RouteParams as XLayerV2RouteParams, type V3SingleRouteParams as XLayerV3SingleRouteParams, } from './eoa-bundle-swap.js';
|
|
21
17
|
export declare const xlayer: {
|
|
22
|
-
createPortalQuery:
|
|
23
|
-
xlayerQuickBatchSwapMerkle:
|
|
24
|
-
xlayerCrossSwapMerkle:
|
|
25
|
-
xlayerPureCrossSwapMerkle:
|
|
26
|
-
signEoaWashVolumeTransactions:
|
|
18
|
+
createPortalQuery: (config?: import("./portal-ops.js").PortalQueryConfig | undefined) => Promise<import("./portal-ops.js").PortalQuery>;
|
|
19
|
+
xlayerQuickBatchSwapMerkle: (params: import("./eoa-bundle-swap.js").XLayerQuickBatchSwapParams) => Promise<import("./eoa-bundle-swap.js").XLayerQuickBatchSwapResult>;
|
|
20
|
+
xlayerCrossSwapMerkle: (params: import("./eoa-bundle-swap.js").XLayerCrossSwapParams) => Promise<import("./eoa-bundle-swap.js").XLayerCrossSwapResult>;
|
|
21
|
+
xlayerPureCrossSwapMerkle: (params: import("./eoa-bundle-swap.js").XLayerPureCrossSwapParams) => Promise<import("./eoa-bundle-swap.js").XLayerPureCrossSwapResult>;
|
|
22
|
+
signEoaWashVolumeTransactions: (params: import("./eoa-wash-volume.js").EoaWashVolumeParams) => Promise<import("./eoa-wash-volume.js").EoaWashVolumeResult>;
|
|
27
23
|
};
|
|
28
24
|
export default xlayer;
|
|
@@ -17,9 +17,6 @@ export * from './constants.js';
|
|
|
17
17
|
// 类型
|
|
18
18
|
// ============================================================================
|
|
19
19
|
export * from './types.js';
|
|
20
|
-
import { createPortalQuery } from './portal-ops.js';
|
|
21
|
-
import { xlayerQuickBatchSwapMerkle, xlayerCrossSwapMerkle, xlayerPureCrossSwapMerkle } from './eoa-bundle-swap.js';
|
|
22
|
-
import { signEoaWashVolumeTransactions } from './eoa-wash-volume.js';
|
|
23
20
|
// ============================================================================
|
|
24
21
|
// Portal 操作
|
|
25
22
|
// ============================================================================
|
|
@@ -36,10 +33,28 @@ export { xlayerQuickBatchSwapMerkle, xlayerCrossSwapMerkle, xlayerPureCrossSwapM
|
|
|
36
33
|
// 便捷重导出
|
|
37
34
|
// ============================================================================
|
|
38
35
|
export const xlayer = {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
36
|
+
// Portal 查询
|
|
37
|
+
createPortalQuery: async (...args) => {
|
|
38
|
+
const { createPortalQuery } = await import('./portal-ops.js');
|
|
39
|
+
return createPortalQuery(...args);
|
|
40
|
+
},
|
|
41
|
+
// EOA 换手
|
|
42
|
+
xlayerQuickBatchSwapMerkle: async (...args) => {
|
|
43
|
+
const { xlayerQuickBatchSwapMerkle } = await import('./eoa-bundle-swap.js');
|
|
44
|
+
return xlayerQuickBatchSwapMerkle(...args);
|
|
45
|
+
},
|
|
46
|
+
xlayerCrossSwapMerkle: async (...args) => {
|
|
47
|
+
const { xlayerCrossSwapMerkle } = await import('./eoa-bundle-swap.js');
|
|
48
|
+
return xlayerCrossSwapMerkle(...args);
|
|
49
|
+
},
|
|
50
|
+
xlayerPureCrossSwapMerkle: async (...args) => {
|
|
51
|
+
const { xlayerPureCrossSwapMerkle } = await import('./eoa-bundle-swap.js');
|
|
52
|
+
return xlayerPureCrossSwapMerkle(...args);
|
|
53
|
+
},
|
|
54
|
+
// EOA 刷量
|
|
55
|
+
signEoaWashVolumeTransactions: async (...args) => {
|
|
56
|
+
const { signEoaWashVolumeTransactions } = await import('./eoa-wash-volume.js');
|
|
57
|
+
return signEoaWashVolumeTransactions(...args);
|
|
58
|
+
},
|
|
44
59
|
};
|
|
45
60
|
export default xlayer;
|
|
@@ -165,9 +165,6 @@ export function encodeCreateCallV5(params) {
|
|
|
165
165
|
* - 代币状态
|
|
166
166
|
*/
|
|
167
167
|
export class PortalQuery {
|
|
168
|
-
provider;
|
|
169
|
-
portal;
|
|
170
|
-
portalAddress;
|
|
171
168
|
constructor(config = {}) {
|
|
172
169
|
const rpcUrl = config.rpcUrl ?? DEFAULT_RPC_URL;
|
|
173
170
|
const chainId = config.chainId ?? XLAYER_CHAIN_ID;
|
|
@@ -449,10 +446,8 @@ export function applySlippage(expectedOutput, slippageBps) {
|
|
|
449
446
|
*/
|
|
450
447
|
export function lpFeeProfileToV3Fee(profile) {
|
|
451
448
|
switch (profile) {
|
|
452
|
-
case 1:
|
|
453
|
-
|
|
454
|
-
case 2:
|
|
455
|
-
return 10000; // 1%
|
|
449
|
+
case 1: return 100; // 0.01%
|
|
450
|
+
case 2: return 10000; // 1%
|
|
456
451
|
case 0:
|
|
457
452
|
default:
|
|
458
453
|
return 2500; // 0.25%
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* XLayer Router 管理器
|
|
3
3
|
* 统一管理 V2/V3 Router 地址和授权目标选择逻辑
|
|
4
4
|
*/
|
|
5
|
-
import { POTATOSWAP_V2_ROUTER, POTATOSWAP_V3_ROUTER, FLAP_PORTAL } from './constants.js';
|
|
5
|
+
import { POTATOSWAP_V2_ROUTER, POTATOSWAP_V3_ROUTER, FLAP_PORTAL, } from './constants.js';
|
|
6
6
|
/**
|
|
7
7
|
* ✅ 获取 Router 地址
|
|
8
8
|
* @param params.routerVersion - Router 版本(V2 或 V3)
|
|
@@ -49,9 +49,9 @@ export function getApprovalTargetAddress(target) {
|
|
|
49
49
|
* @returns 目标信息数组
|
|
50
50
|
*/
|
|
51
51
|
export function getAllApprovalTargets(targets) {
|
|
52
|
-
return targets.map(
|
|
52
|
+
return targets.map(target => ({
|
|
53
53
|
target,
|
|
54
|
-
address: getApprovalTargetAddress(target)
|
|
54
|
+
address: getApprovalTargetAddress(target)
|
|
55
55
|
}));
|
|
56
56
|
}
|
|
57
57
|
/**
|
|
@@ -100,12 +100,12 @@ export interface XLayerConfig {
|
|
|
100
100
|
extractProfit?: boolean;
|
|
101
101
|
/**
|
|
102
102
|
* 利润比例(基点 bps,1 bps = 0.01%)
|
|
103
|
-
* -
|
|
103
|
+
* - 默认使用公共常量 PROFIT_CONFIG.RATE_BPS(当前为 30 bps)
|
|
104
104
|
*/
|
|
105
105
|
profitBps?: number;
|
|
106
106
|
/**
|
|
107
107
|
* 利润接收地址
|
|
108
|
-
* -
|
|
108
|
+
* - 默认使用公共常量 PROFIT_CONFIG.RECIPIENT
|
|
109
109
|
*/
|
|
110
110
|
profitRecipient?: string;
|
|
111
111
|
/**
|
|
@@ -15,7 +15,9 @@
|
|
|
15
15
|
* - 对“可能不生成 op”的分支(例如 withdraw 返回 null),使用 peek + commit,避免提前消耗 nonce。
|
|
16
16
|
*/
|
|
17
17
|
export class AANonceMap {
|
|
18
|
-
|
|
18
|
+
constructor() {
|
|
19
|
+
this.nextBySenderLower = new Map();
|
|
20
|
+
}
|
|
19
21
|
init(sender, startNonce) {
|
|
20
22
|
const k = sender.toLowerCase();
|
|
21
23
|
const cur = this.nextBySenderLower.get(k);
|
|
@@ -10,6 +10,5 @@ export * as eoa from './eoa/index.js';
|
|
|
10
10
|
export * as eip7702 from './eip7702/index.js';
|
|
11
11
|
export { PortalQuery, createPortalQuery, xlayerQuickBatchSwapMerkle, xlayerCrossSwapMerkle, xlayerPureCrossSwapMerkle, signEoaWashBuyTransactions, signEoaWashSellTransactions, signEoaWashVolumeTransactions, } from './eoa/index.js';
|
|
12
12
|
export type { BundleSwapParams, BundleSwapSignParams, BundleSwapResult, BundleSwapSignResult, BundleBatchSwapParams, BundleBatchSwapSignParams, BundleBatchSwapResult, BundleBatchSwapSignResult, BuyFirstParams, BuyFirstResult, BuyParams, SellParams, } from './eoa/types.js';
|
|
13
|
-
export
|
|
14
|
-
export { default as xlayer
|
|
15
|
-
export { lpFeeProfileToV3Fee } from './eoa/portal-ops.js';
|
|
13
|
+
export { bundleBuy as xlayerEip7702BundleBuy, bundleSell as xlayerEip7702BundleSell, bundleSwap as xlayerEip7702BundleSwap, bundleApprove as xlayerEip7702BundleApprove, bundleCreateBuy as xlayerEip7702BundleCreate, washVolume as xlayerEip7702WashVolume, bundleVolume as xlayerEip7702BundleVolume, } from './eip7702/index.js';
|
|
14
|
+
export { default as xlayer } from './eoa/index.js';
|
|
@@ -22,9 +22,12 @@ xlayerQuickBatchSwapMerkle, xlayerCrossSwapMerkle, xlayerPureCrossSwapMerkle,
|
|
|
22
22
|
// EOA 刷量
|
|
23
23
|
signEoaWashBuyTransactions, signEoaWashSellTransactions, signEoaWashVolumeTransactions, } from './eoa/index.js';
|
|
24
24
|
// ============================================================================
|
|
25
|
-
// 快捷导出 - EIP-7702
|
|
25
|
+
// 快捷导出 - EIP-7702 模式(使用实际名称)
|
|
26
26
|
// ============================================================================
|
|
27
|
-
export
|
|
27
|
+
export {
|
|
28
|
+
// Bundle 操作
|
|
29
|
+
bundleBuy as xlayerEip7702BundleBuy, bundleSell as xlayerEip7702BundleSell, bundleSwap as xlayerEip7702BundleSwap, bundleApprove as xlayerEip7702BundleApprove, bundleCreateBuy as xlayerEip7702BundleCreate,
|
|
30
|
+
// 刷量
|
|
31
|
+
washVolume as xlayerEip7702WashVolume, bundleVolume as xlayerEip7702BundleVolume, } from './eip7702/index.js';
|
|
28
32
|
// 导出旧模块的默认对象(向后兼容)
|
|
29
|
-
export { default as xlayer
|
|
30
|
-
export { lpFeeProfileToV3Fee } from './eoa/portal-ops.js';
|
|
33
|
+
export { default as xlayer } from './eoa/index.js';
|
|
@@ -1,19 +1,4 @@
|
|
|
1
1
|
import { JsonRpcProvider, Wallet } from 'ethers';
|
|
2
|
-
/** 与 Helper3 `getTokenInfo` 返回值一致(作 `calcBuyAmount` 等函数的 `ti` 入参) */
|
|
3
|
-
export type TokenManagerHelper3TokenInfo = {
|
|
4
|
-
version: bigint;
|
|
5
|
-
tokenManager: string;
|
|
6
|
-
quote: string;
|
|
7
|
-
lastPrice: bigint;
|
|
8
|
-
tradingFeeRate: bigint;
|
|
9
|
-
minTradingFee: bigint;
|
|
10
|
-
launchTime: bigint;
|
|
11
|
-
offers: bigint;
|
|
12
|
-
maxOffers: bigint;
|
|
13
|
-
funds: bigint;
|
|
14
|
-
maxFunds: bigint;
|
|
15
|
-
liquidityAdded: boolean;
|
|
16
|
-
};
|
|
17
2
|
type Providerish = JsonRpcProvider;
|
|
18
3
|
type Signerish = Wallet;
|
|
19
4
|
export declare class Helper3 {
|
|
@@ -22,14 +7,14 @@ export declare class Helper3 {
|
|
|
22
7
|
protected constructor(address: string, provider: Providerish);
|
|
23
8
|
static connectByChain(chain: 'BSC' | 'BASE' | 'ARBITRUM_ONE', rpcUrl: string): Helper3;
|
|
24
9
|
private get contract();
|
|
25
|
-
getTokenInfo(token: string): Promise<
|
|
10
|
+
getTokenInfo(token: string): Promise<any>;
|
|
26
11
|
tryBuy(token: string, amount: bigint, funds: bigint): Promise<any>;
|
|
27
12
|
trySell(token: string, amount: bigint): Promise<any>;
|
|
28
13
|
calcInitialPrice(maxRaising: bigint, totalSupply: bigint, offers: bigint, reserves: bigint): Promise<any>;
|
|
29
|
-
calcBuyAmount(ti:
|
|
30
|
-
calcBuyCost(ti:
|
|
31
|
-
calcSellCost(ti:
|
|
32
|
-
calcTradingFee(ti:
|
|
14
|
+
calcBuyAmount(ti: any, funds: bigint): Promise<any>;
|
|
15
|
+
calcBuyCost(ti: any, amount: bigint): Promise<any>;
|
|
16
|
+
calcSellCost(ti: any, amount: bigint): Promise<any>;
|
|
17
|
+
calcTradingFee(ti: any, funds: bigint): Promise<any>;
|
|
33
18
|
getPancakePair(token: string): Promise<any>;
|
|
34
19
|
WETH(): Promise<any>;
|
|
35
20
|
WHITE_LIST(): Promise<any>;
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import { Contract, JsonRpcProvider, Wallet } from 'ethers';
|
|
2
|
-
import Helper3Abi from '../abis/
|
|
3
|
-
import { ADDRESSES } from '../
|
|
4
|
-
const HELPER3_ABI = Helper3Abi;
|
|
2
|
+
import Helper3Abi from '../shared/abis/TokenManagerHelper3.json' with { type: 'json' };
|
|
3
|
+
import { ADDRESSES } from '../utils/constants.js';
|
|
5
4
|
export class Helper3 {
|
|
6
|
-
address;
|
|
7
|
-
provider;
|
|
8
5
|
constructor(address, provider) {
|
|
9
6
|
this.address = address;
|
|
10
7
|
this.provider = provider;
|
|
@@ -18,56 +15,25 @@ export class Helper3 {
|
|
|
18
15
|
return new Helper3(addresses[chain], new JsonRpcProvider(rpcUrl));
|
|
19
16
|
}
|
|
20
17
|
get contract() {
|
|
21
|
-
return new Contract(this.address,
|
|
22
|
-
}
|
|
23
|
-
async getTokenInfo(token) {
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
async
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
async
|
|
30
|
-
|
|
31
|
-
}
|
|
32
|
-
async
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
async
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
async calcBuyCost(ti, amount) {
|
|
39
|
-
return await this.contract.calcBuyCost(ti, amount);
|
|
40
|
-
}
|
|
41
|
-
async calcSellCost(ti, amount) {
|
|
42
|
-
return await this.contract.calcSellCost(ti, amount);
|
|
43
|
-
}
|
|
44
|
-
async calcTradingFee(ti, funds) {
|
|
45
|
-
return await this.contract.calcTradingFee(ti, funds);
|
|
46
|
-
}
|
|
47
|
-
async getPancakePair(token) {
|
|
48
|
-
return await this.contract.getPancakePair(token);
|
|
49
|
-
}
|
|
50
|
-
async WETH() {
|
|
51
|
-
return await this.contract.WETH();
|
|
52
|
-
}
|
|
53
|
-
async WHITE_LIST() {
|
|
54
|
-
return await this.contract.WHITE_LIST();
|
|
55
|
-
}
|
|
56
|
-
async calcEthIn(token, amount) {
|
|
57
|
-
return await this.contract.calcEthIn(token, amount);
|
|
58
|
-
}
|
|
59
|
-
async calcEthOut(token, amount) {
|
|
60
|
-
return await this.contract.calcEthOut(token, amount);
|
|
61
|
-
}
|
|
62
|
-
async calcTokenIn(token, amountEth) {
|
|
63
|
-
return await this.contract.calcTokenIn(token, amountEth);
|
|
64
|
-
}
|
|
65
|
-
async calcTokenOut(token, amountEth) {
|
|
66
|
-
return await this.contract.calcTokenOut(token, amountEth);
|
|
67
|
-
}
|
|
18
|
+
return new Contract(this.address, Helper3Abi, this.provider);
|
|
19
|
+
}
|
|
20
|
+
async getTokenInfo(token) { return await this.contract.getTokenInfo(token); }
|
|
21
|
+
async tryBuy(token, amount, funds) { return await this.contract.tryBuy(token, amount, funds); }
|
|
22
|
+
async trySell(token, amount) { return await this.contract.trySell(token, amount); }
|
|
23
|
+
async calcInitialPrice(maxRaising, totalSupply, offers, reserves) { return await this.contract.calcInitialPrice(maxRaising, totalSupply, offers, reserves); }
|
|
24
|
+
async calcBuyAmount(ti, funds) { return await this.contract.calcBuyAmount(ti, funds); }
|
|
25
|
+
async calcBuyCost(ti, amount) { return await this.contract.calcBuyCost(ti, amount); }
|
|
26
|
+
async calcSellCost(ti, amount) { return await this.contract.calcSellCost(ti, amount); }
|
|
27
|
+
async calcTradingFee(ti, funds) { return await this.contract.calcTradingFee(ti, funds); }
|
|
28
|
+
async getPancakePair(token) { return await this.contract.getPancakePair(token); }
|
|
29
|
+
async WETH() { return await this.contract.WETH(); }
|
|
30
|
+
async WHITE_LIST() { return await this.contract.WHITE_LIST(); }
|
|
31
|
+
async calcEthIn(token, amount) { return await this.contract.calcEthIn(token, amount); }
|
|
32
|
+
async calcEthOut(token, amount) { return await this.contract.calcEthOut(token, amount); }
|
|
33
|
+
async calcTokenIn(token, amountEth) { return await this.contract.calcTokenIn(token, amountEth); }
|
|
34
|
+
async calcTokenOut(token, amountEth) { return await this.contract.calcTokenOut(token, amountEth); }
|
|
68
35
|
}
|
|
69
36
|
export class Helper3Writer extends Helper3 {
|
|
70
|
-
signer;
|
|
71
37
|
constructor(address, signer) {
|
|
72
38
|
super(address, signer.provider);
|
|
73
39
|
this.signer = signer;
|
|
@@ -82,9 +48,7 @@ export class Helper3Writer extends Helper3 {
|
|
|
82
48
|
const signer = new Wallet(privateKey, provider);
|
|
83
49
|
return new Helper3Writer(addresses[chain], signer);
|
|
84
50
|
}
|
|
85
|
-
get writeContract() {
|
|
86
|
-
return new Contract(this.address, HELPER3_ABI, this.signer);
|
|
87
|
-
}
|
|
51
|
+
get writeContract() { return new Contract(this.address, Helper3Abi, this.signer); }
|
|
88
52
|
async buyWithEth(origin, token, to, funds, minAmount) {
|
|
89
53
|
const tx = await this.writeContract.buyWithEth(origin, token, to, funds, minAmount, { value: funds });
|
|
90
54
|
return await tx.wait();
|
|
@@ -1 +1,26 @@
|
|
|
1
|
-
|
|
1
|
+
import type { FourSignConfig } from './types.js';
|
|
2
|
+
/** ✅ 批量授权参数(直接提交到链上) */
|
|
3
|
+
export type ApproveFourTokenManagerBatchParams = {
|
|
4
|
+
privateKeys: string[];
|
|
5
|
+
tokenAddress: string;
|
|
6
|
+
amounts: string[];
|
|
7
|
+
config: FourSignConfig;
|
|
8
|
+
};
|
|
9
|
+
/** ✅ 批量授权结果(包含提交状态) */
|
|
10
|
+
export type ApproveFourTokenManagerBatchResult = {
|
|
11
|
+
success: boolean;
|
|
12
|
+
signedTransactions: string[];
|
|
13
|
+
approvedCount: number;
|
|
14
|
+
skippedCount: number;
|
|
15
|
+
txHashes?: string[];
|
|
16
|
+
message: string;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* 批量授权代币给 TokenManager(用于 Private Buy/Sell)
|
|
20
|
+
* ✅ 直接通过 RPC 提交到链上并等待确认
|
|
21
|
+
* ✅ 不需要 Merkle API Key,使用普通 RPC 即可
|
|
22
|
+
* ✅ 专门用于授权给 TokenManagerOriginal 合约
|
|
23
|
+
* ✅ 用于 fourBatchPrivateSell 和 fourBatchSellWithBundleMerkle
|
|
24
|
+
* ✅ 优化:并行获取 gasPrice、decimals、allowances
|
|
25
|
+
*/
|
|
26
|
+
export declare function approveFourTokenManagerBatch(params: ApproveFourTokenManagerBatchParams): Promise<ApproveFourTokenManagerBatchResult>;
|
|
@@ -1 +1,113 @@
|
|
|
1
|
-
|
|
1
|
+
import { ethers, Wallet } from 'ethers';
|
|
2
|
+
import { NonceManager, getOptimizedGasPrice } from '../../utils/bundle-helpers.js';
|
|
3
|
+
import { ADDRESSES } from '../../utils/constants.js';
|
|
4
|
+
import { ERC20_ABI } from '../../shared/abis/common.js';
|
|
5
|
+
import { getTxType, getGasPriceConfig } from './config.js';
|
|
6
|
+
import { batchCheckAllowances } from '../../utils/erc20.js';
|
|
7
|
+
/**
|
|
8
|
+
* 批量授权代币给 TokenManager(用于 Private Buy/Sell)
|
|
9
|
+
* ✅ 直接通过 RPC 提交到链上并等待确认
|
|
10
|
+
* ✅ 不需要 Merkle API Key,使用普通 RPC 即可
|
|
11
|
+
* ✅ 专门用于授权给 TokenManagerOriginal 合约
|
|
12
|
+
* ✅ 用于 fourBatchPrivateSell 和 fourBatchSellWithBundleMerkle
|
|
13
|
+
* ✅ 优化:并行获取 gasPrice、decimals、allowances
|
|
14
|
+
*/
|
|
15
|
+
export async function approveFourTokenManagerBatch(params) {
|
|
16
|
+
const { privateKeys, tokenAddress, amounts, config } = params;
|
|
17
|
+
if (privateKeys.length === 0 || amounts.length !== privateKeys.length) {
|
|
18
|
+
throw new Error('Private key count and amount count must match');
|
|
19
|
+
}
|
|
20
|
+
const tmAddr = ADDRESSES.BSC.TokenManagerOriginal;
|
|
21
|
+
const chainId = config.chainId ?? 56;
|
|
22
|
+
// ✅ 直接使用传入的 RPC URL 创建 provider(不依赖 Merkle)
|
|
23
|
+
const provider = new ethers.JsonRpcProvider(config.rpcUrl, {
|
|
24
|
+
chainId: chainId,
|
|
25
|
+
name: 'BSC'
|
|
26
|
+
});
|
|
27
|
+
const wallets = privateKeys.map(k => new Wallet(k, provider));
|
|
28
|
+
const allMax = amounts.every(a => a === 'max');
|
|
29
|
+
// ✅ 优化:并行获取 gasPrice、decimals(如果需要)、allowances
|
|
30
|
+
const [gasPrice, decimals, allowances] = await Promise.all([
|
|
31
|
+
getOptimizedGasPrice(provider, getGasPriceConfig(config)),
|
|
32
|
+
allMax
|
|
33
|
+
? Promise.resolve(18) // 如果都是 'max',不需要查询 decimals
|
|
34
|
+
: (async () => {
|
|
35
|
+
try {
|
|
36
|
+
const tokenContract = new ethers.Contract(tokenAddress, ERC20_ABI, provider);
|
|
37
|
+
return await tokenContract.decimals();
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
throw new Error(`查询代币 decimals 失败: ${error.message}`);
|
|
41
|
+
}
|
|
42
|
+
})(),
|
|
43
|
+
batchCheckAllowances(provider, tokenAddress, wallets.map(w => w.address), tmAddr)
|
|
44
|
+
]);
|
|
45
|
+
const amountsBigInt = amounts.map(a => a === 'max' ? ethers.MaxUint256 : ethers.parseUnits(a, decimals));
|
|
46
|
+
// 只授权不足的
|
|
47
|
+
// ✅ 策略:如果授权额度 < MaxUint256 / 2n,就重新授权(确保授权足够大)
|
|
48
|
+
const APPROVAL_THRESHOLD = ethers.MaxUint256 / 2n;
|
|
49
|
+
const needApproval = wallets.filter((_, i) => allowances[i] < APPROVAL_THRESHOLD);
|
|
50
|
+
const needApprovalAmounts = amountsBigInt.filter((_, i) => allowances[i] < APPROVAL_THRESHOLD);
|
|
51
|
+
const skippedCount = wallets.length - needApproval.length;
|
|
52
|
+
if (needApproval.length === 0) {
|
|
53
|
+
return {
|
|
54
|
+
success: true,
|
|
55
|
+
signedTransactions: [],
|
|
56
|
+
approvedCount: 0,
|
|
57
|
+
skippedCount: skippedCount,
|
|
58
|
+
message: '所有钱包已授权,无需重复授权'
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
// ✅ 优化:计算 gasLimit(不需要 RPC)
|
|
62
|
+
const getGasLimit = (cfg) => {
|
|
63
|
+
if (cfg.gasLimit)
|
|
64
|
+
return BigInt(cfg.gasLimit);
|
|
65
|
+
if (cfg.gasLimitMultiplier)
|
|
66
|
+
return BigInt(Math.ceil(60000 * cfg.gasLimitMultiplier));
|
|
67
|
+
return 60000n; // 默认授权 gas limit
|
|
68
|
+
};
|
|
69
|
+
const finalGasLimit = getGasLimit(config);
|
|
70
|
+
const txType = getTxType(config);
|
|
71
|
+
// ✅ 优化:并行获取 nonces 和构建未签名交易
|
|
72
|
+
const nonceManager = new NonceManager(provider);
|
|
73
|
+
const needApprovalTokens = needApproval.map(w => new ethers.Contract(tokenAddress, ERC20_ABI, w));
|
|
74
|
+
const [nonces, unsignedApprovals] = await Promise.all([
|
|
75
|
+
nonceManager.getNextNoncesForWallets(needApproval), // ✅ 批量获取 nonces(JSON-RPC 批量请求)
|
|
76
|
+
Promise.all(needApprovalTokens.map((token, i) => token.approve.populateTransaction(tmAddr, needApprovalAmounts[i])))
|
|
77
|
+
]);
|
|
78
|
+
// ✅ 并行签名所有授权交易
|
|
79
|
+
const signedTxs = await Promise.all(unsignedApprovals.map((unsigned, i) => needApproval[i].signTransaction({
|
|
80
|
+
...unsigned,
|
|
81
|
+
from: needApproval[i].address,
|
|
82
|
+
nonce: nonces[i],
|
|
83
|
+
gasLimit: finalGasLimit,
|
|
84
|
+
gasPrice,
|
|
85
|
+
chainId,
|
|
86
|
+
type: txType
|
|
87
|
+
})));
|
|
88
|
+
nonceManager.clearTemp();
|
|
89
|
+
try {
|
|
90
|
+
// ✅ 并行广播所有授权交易
|
|
91
|
+
const txResponses = await Promise.all(signedTxs.map(tx => provider.broadcastTransaction(tx)));
|
|
92
|
+
const txHashes = txResponses.map(r => r.hash);
|
|
93
|
+
// ✅ 并行等待所有授权交易确认(至少1个确认)
|
|
94
|
+
await Promise.all(txResponses.map(tx => tx.wait(1)));
|
|
95
|
+
return {
|
|
96
|
+
success: true,
|
|
97
|
+
signedTransactions: signedTxs,
|
|
98
|
+
approvedCount: signedTxs.length,
|
|
99
|
+
skippedCount: skippedCount,
|
|
100
|
+
txHashes: txHashes,
|
|
101
|
+
message: `授权成功!共 ${signedTxs.length} 个钱包已授权,跳过 ${skippedCount} 个已授权钱包`
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
return {
|
|
106
|
+
success: false,
|
|
107
|
+
signedTransactions: signedTxs,
|
|
108
|
+
approvedCount: 0,
|
|
109
|
+
skippedCount: skippedCount,
|
|
110
|
+
message: `授权提交失败: ${error.message}`
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
}
|