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,10 +1,10 @@
|
|
|
1
|
-
import { ethers, Wallet
|
|
1
|
+
import { ethers, Wallet } from 'ethers';
|
|
2
2
|
import { MerkleClient } from '../../clients/merkle.js';
|
|
3
3
|
import { getOptimizedGasPrice, buildProfitHopTransactions, PROFIT_HOP_COUNT } from '../../../utils/bundle-helpers.js';
|
|
4
4
|
import { FLAP_PORTAL_ADDRESSES } from '../constants.js';
|
|
5
|
-
import { ZERO_ADDRESS } from '../../../
|
|
5
|
+
import { ZERO_ADDRESS } from '../../../utils/constants.js';
|
|
6
6
|
import { GAS_LIMITS, CHAINS } from '../../constants/index.js';
|
|
7
|
-
import { CHAIN_ID_MAP, PORTAL_ABI, getTxType, getGasPriceConfig, shouldExtractProfit, calculateProfit, calculateBatchProfit, getProfitRecipient, getBribeAmount, BLOCKRAZOR_BUILDER_EOA
|
|
7
|
+
import { CHAIN_ID_MAP, PORTAL_ABI, getTxType, getGasPriceConfig, shouldExtractProfit, calculateProfit, calculateBatchProfit, getProfitRecipient, getBribeAmount, BLOCKRAZOR_BUILDER_EOA } from './config.js';
|
|
8
8
|
const DEFAULT_GAS_LIMIT = 800000;
|
|
9
9
|
/**
|
|
10
10
|
* 私有购买(单笔)(Merkle 版本)
|
|
@@ -16,8 +16,8 @@ export async function flapPrivateBuyMerkle(params) {
|
|
|
16
16
|
const portalAddr = FLAP_PORTAL_ADDRESSES[chain];
|
|
17
17
|
const originalAmountWei = ethers.parseEther(amountIn);
|
|
18
18
|
// ✅ 利润提取配置
|
|
19
|
-
const extractProfit = shouldExtractProfit();
|
|
20
|
-
const { actualAmountWei, profitWei } = splitBuyAmount(originalAmountWei, extractProfit);
|
|
19
|
+
const extractProfit = shouldExtractProfit(config);
|
|
20
|
+
const { actualAmountWei, profitWei } = splitBuyAmount(originalAmountWei, extractProfit, config);
|
|
21
21
|
const minAmountOut = parseMinOutput(minOutputAmount);
|
|
22
22
|
const portal = new ethers.Contract(portalAddr, PORTAL_ABI, wallet);
|
|
23
23
|
// ✅ 并行获取 gasPrice、nonce 和构建未签名交易
|
|
@@ -31,7 +31,7 @@ export async function flapPrivateBuyMerkle(params) {
|
|
|
31
31
|
inputAmount: actualAmountWei,
|
|
32
32
|
minOutputAmount: minAmountOut,
|
|
33
33
|
permitData: '0x',
|
|
34
|
-
}, { value: actualAmountWei })
|
|
34
|
+
}, { value: actualAmountWei })
|
|
35
35
|
]);
|
|
36
36
|
const gasLimit = resolveGasLimit(config.gasLimitMultiplier);
|
|
37
37
|
// ✅ 获取贿赂金额
|
|
@@ -55,7 +55,7 @@ export async function flapPrivateBuyMerkle(params) {
|
|
|
55
55
|
gasPrice,
|
|
56
56
|
gasLimit: GAS_LIMITS.BRIBE,
|
|
57
57
|
chainId,
|
|
58
|
-
type: txType
|
|
58
|
+
type: txType
|
|
59
59
|
}));
|
|
60
60
|
}
|
|
61
61
|
// 买入交易
|
|
@@ -67,7 +67,7 @@ export async function flapPrivateBuyMerkle(params) {
|
|
|
67
67
|
gasPrice,
|
|
68
68
|
chainId,
|
|
69
69
|
type: txType,
|
|
70
|
-
value: actualAmountWei
|
|
70
|
+
value: actualAmountWei
|
|
71
71
|
}));
|
|
72
72
|
// ✅ 并行签名完成后按顺序返回
|
|
73
73
|
const signedTxs = await Promise.all(signPromises);
|
|
@@ -83,7 +83,7 @@ export async function flapPrivateBuyMerkle(params) {
|
|
|
83
83
|
gasPrice,
|
|
84
84
|
chainId,
|
|
85
85
|
txType,
|
|
86
|
-
startNonce: profitNonce
|
|
86
|
+
startNonce: profitNonce
|
|
87
87
|
});
|
|
88
88
|
signedTxs.push(...profitHopResult.signedTransactions);
|
|
89
89
|
profitHopWallets = profitHopResult.hopWallets; // ✅ 收集利润多跳钱包
|
|
@@ -112,7 +112,7 @@ export async function flapPrivateSellMerkle(params) {
|
|
|
112
112
|
inputAmount: amountWei,
|
|
113
113
|
minOutputAmount: 0n, // ✅ 已移除滑点保护
|
|
114
114
|
permitData: '0x',
|
|
115
|
-
})
|
|
115
|
+
})
|
|
116
116
|
]);
|
|
117
117
|
const gasLimit = resolveGasLimit(config.gasLimitMultiplier);
|
|
118
118
|
const txType = getTxType(config);
|
|
@@ -120,8 +120,10 @@ export async function flapPrivateSellMerkle(params) {
|
|
|
120
120
|
const bribeAmount = getBribeAmount(config);
|
|
121
121
|
const needBribeTx = bribeAmount > 0n;
|
|
122
122
|
// ✅ 利润计算
|
|
123
|
-
const extractProfit = shouldExtractProfit();
|
|
124
|
-
const { profit: profitWei } = extractProfit && quotedOutput > 0n
|
|
123
|
+
const extractProfit = shouldExtractProfit(config);
|
|
124
|
+
const { profit: profitWei } = extractProfit && quotedOutput > 0n
|
|
125
|
+
? calculateProfit(quotedOutput, config)
|
|
126
|
+
: { profit: 0n };
|
|
125
127
|
const needProfitTx = extractProfit && profitWei > 0n;
|
|
126
128
|
// ✅ 分配 nonces:贿赂 → 卖出 → 利润
|
|
127
129
|
let nonceIdx = 0;
|
|
@@ -139,7 +141,7 @@ export async function flapPrivateSellMerkle(params) {
|
|
|
139
141
|
gasPrice,
|
|
140
142
|
gasLimit: GAS_LIMITS.BRIBE,
|
|
141
143
|
chainId,
|
|
142
|
-
type: txType
|
|
144
|
+
type: txType
|
|
143
145
|
}));
|
|
144
146
|
}
|
|
145
147
|
// 卖出交易
|
|
@@ -150,7 +152,7 @@ export async function flapPrivateSellMerkle(params) {
|
|
|
150
152
|
gasLimit,
|
|
151
153
|
gasPrice,
|
|
152
154
|
chainId,
|
|
153
|
-
type: txType
|
|
155
|
+
type: txType
|
|
154
156
|
}));
|
|
155
157
|
// ✅ 并行签名完成后按顺序返回
|
|
156
158
|
const signedTxs = await Promise.all(signPromises);
|
|
@@ -166,7 +168,7 @@ export async function flapPrivateSellMerkle(params) {
|
|
|
166
168
|
gasPrice,
|
|
167
169
|
chainId,
|
|
168
170
|
txType,
|
|
169
|
-
startNonce: profitNonce
|
|
171
|
+
startNonce: profitNonce
|
|
170
172
|
});
|
|
171
173
|
signedTxs.push(...profitHopResult.signedTransactions);
|
|
172
174
|
profitHopWallets = profitHopResult.hopWallets; // ✅ 收集利润多跳钱包
|
|
@@ -183,15 +185,15 @@ export async function flapBatchPrivateBuyMerkle(params) {
|
|
|
183
185
|
}
|
|
184
186
|
const { chainId, provider } = createMerkleContext(chain, config);
|
|
185
187
|
const portalAddr = FLAP_PORTAL_ADDRESSES[chain];
|
|
186
|
-
const wallets = privateKeys.map(
|
|
187
|
-
const originalAmountsWei = amountsIn.map(
|
|
188
|
+
const wallets = privateKeys.map(k => new Wallet(k, provider));
|
|
189
|
+
const originalAmountsWei = amountsIn.map(a => ethers.parseEther(a));
|
|
188
190
|
// ✅ 利润提取配置
|
|
189
|
-
const extractProfit = shouldExtractProfit();
|
|
190
|
-
const { totalProfit, remainingAmounts } = calculateBatchProfit(originalAmountsWei);
|
|
191
|
+
const extractProfit = shouldExtractProfit(config);
|
|
192
|
+
const { totalProfit, remainingAmounts } = calculateBatchProfit(originalAmountsWei, config);
|
|
191
193
|
const actualAmountsWei = remainingAmounts;
|
|
192
194
|
const maxFundsIndex = findMaxIndex(originalAmountsWei);
|
|
193
195
|
const minOuts = resolveBatchMinOutputs(minOutputAmounts, wallets.length);
|
|
194
|
-
const portals = wallets.map(
|
|
196
|
+
const portals = wallets.map(w => new ethers.Contract(portalAddr, PORTAL_ABI, w));
|
|
195
197
|
// ✅ 获取贿赂金额
|
|
196
198
|
const bribeAmount = getBribeAmount(config);
|
|
197
199
|
const needBribeTx = bribeAmount > 0n;
|
|
@@ -200,14 +202,14 @@ export async function flapBatchPrivateBuyMerkle(params) {
|
|
|
200
202
|
const [gasPrice, initialNonces, unsignedList] = await Promise.all([
|
|
201
203
|
getOptimizedGasPrice(provider, getGasPriceConfig(config)),
|
|
202
204
|
// ✅ 使用 pending nonce,避免 xLayer 等链上“已有 pending 交易”导致 nonce too low
|
|
203
|
-
Promise.all(wallets.map(
|
|
205
|
+
Promise.all(wallets.map(w => provider.getTransactionCount(w.address, 'pending'))),
|
|
204
206
|
Promise.all(portals.map((portal, i) => portal.swapExactInput.populateTransaction({
|
|
205
207
|
inputToken: ZERO_ADDRESS,
|
|
206
208
|
outputToken: tokenAddress,
|
|
207
209
|
inputAmount: actualAmountsWei[i],
|
|
208
210
|
minOutputAmount: minOuts[i],
|
|
209
211
|
permitData: '0x',
|
|
210
|
-
}, { value: actualAmountsWei[i] })))
|
|
212
|
+
}, { value: actualAmountsWei[i] })))
|
|
211
213
|
]);
|
|
212
214
|
// ✅ 分配 nonces:贿赂(可选) → 买入 → 利润(可选)
|
|
213
215
|
let payerNonceOffset = 0;
|
|
@@ -222,7 +224,9 @@ export async function flapBatchPrivateBuyMerkle(params) {
|
|
|
222
224
|
}
|
|
223
225
|
return n;
|
|
224
226
|
});
|
|
225
|
-
const profitNonce = needProfitTx && maxFundsIndex >= 0
|
|
227
|
+
const profitNonce = needProfitTx && maxFundsIndex >= 0
|
|
228
|
+
? initialNonces[maxFundsIndex] + payerNonceOffset + 1
|
|
229
|
+
: undefined;
|
|
226
230
|
const gasLimit = resolveGasLimit(config.gasLimitMultiplier);
|
|
227
231
|
const gasLimits = new Array(wallets.length).fill(gasLimit);
|
|
228
232
|
const signedTxs = [];
|
|
@@ -235,7 +239,7 @@ export async function flapBatchPrivateBuyMerkle(params) {
|
|
|
235
239
|
gasPrice,
|
|
236
240
|
gasLimit: GAS_LIMITS.BRIBE,
|
|
237
241
|
chainId,
|
|
238
|
-
type: getTxType(config)
|
|
242
|
+
type: getTxType(config)
|
|
239
243
|
});
|
|
240
244
|
signedTxs.push(bribeTx);
|
|
241
245
|
}
|
|
@@ -248,7 +252,7 @@ export async function flapBatchPrivateBuyMerkle(params) {
|
|
|
248
252
|
gasPrice,
|
|
249
253
|
chainId,
|
|
250
254
|
config,
|
|
251
|
-
values: actualAmountsWei
|
|
255
|
+
values: actualAmountsWei
|
|
252
256
|
});
|
|
253
257
|
signedTxs.push(...signedList);
|
|
254
258
|
// ✅ 利润多跳转账(强制 2 跳中转)
|
|
@@ -263,7 +267,7 @@ export async function flapBatchPrivateBuyMerkle(params) {
|
|
|
263
267
|
gasPrice,
|
|
264
268
|
chainId,
|
|
265
269
|
txType: getTxType(config),
|
|
266
|
-
startNonce: profitNonce
|
|
270
|
+
startNonce: profitNonce
|
|
267
271
|
});
|
|
268
272
|
signedTxs.push(...profitHopResult.signedTransactions);
|
|
269
273
|
profitHopWallets = profitHopResult.hopWallets; // ✅ 收集利润多跳钱包
|
|
@@ -274,39 +278,37 @@ export async function flapBatchPrivateBuyMerkle(params) {
|
|
|
274
278
|
* 批量私有卖出(Merkle 版本)
|
|
275
279
|
*/
|
|
276
280
|
export async function flapBatchPrivateSellMerkle(params) {
|
|
277
|
-
const { chain, privateKeys, amounts, tokenAddress, config } = params;
|
|
281
|
+
const { chain, privateKeys, amounts, tokenAddress, minOutputAmounts, config } = params;
|
|
278
282
|
if (privateKeys.length !== amounts.length) {
|
|
279
283
|
throw new Error('privateKeys and amounts length mismatch');
|
|
280
284
|
}
|
|
281
285
|
const { chainId, provider } = createMerkleContext(chain, config);
|
|
282
286
|
const portalAddr = FLAP_PORTAL_ADDRESSES[chain];
|
|
283
|
-
const wallets = privateKeys.map(
|
|
284
|
-
const amountsWei = amounts.map(
|
|
287
|
+
const wallets = privateKeys.map(k => new Wallet(k, provider));
|
|
288
|
+
const amountsWei = amounts.map(a => ethers.parseUnits(a, 18));
|
|
285
289
|
const portal = new ethers.Contract(portalAddr, PORTAL_ABI, provider);
|
|
286
|
-
const portals = wallets.map(
|
|
290
|
+
const portals = wallets.map(w => new ethers.Contract(portalAddr, PORTAL_ABI, w));
|
|
287
291
|
// ✅ 并行获取 gasPrice、所有 nonces、所有报价和构建未签名交易
|
|
288
292
|
const [gasPrice, initialNonces, quotedOutputs, unsignedList] = await Promise.all([
|
|
289
293
|
getOptimizedGasPrice(provider, getGasPriceConfig(config)),
|
|
290
294
|
// ✅ 使用 pending nonce,避免 xLayer 等链上“已有 pending 交易”导致 nonce too low
|
|
291
|
-
Promise.all(wallets.map(
|
|
292
|
-
Promise.all(amountsWei.map(
|
|
293
|
-
.staticCall({
|
|
295
|
+
Promise.all(wallets.map(w => provider.getTransactionCount(w.address, 'pending'))),
|
|
296
|
+
Promise.all(amountsWei.map(amount => portal.quoteExactInput.staticCall({
|
|
294
297
|
inputToken: tokenAddress,
|
|
295
298
|
outputToken: ZERO_ADDRESS,
|
|
296
|
-
inputAmount: amount
|
|
297
|
-
})
|
|
298
|
-
.catch(() => 0n))),
|
|
299
|
+
inputAmount: amount
|
|
300
|
+
}).catch(() => 0n))),
|
|
299
301
|
// ✅ 并行构建未签名交易(已移除滑点保护:minOuts 固定为 0)
|
|
300
302
|
Promise.all(portals.map((p, i) => p.swapExactInput.populateTransaction({
|
|
301
303
|
inputToken: tokenAddress,
|
|
302
304
|
outputToken: ZERO_ADDRESS,
|
|
303
305
|
inputAmount: amountsWei[i],
|
|
304
306
|
minOutputAmount: 0n,
|
|
305
|
-
permitData: '0x'
|
|
306
|
-
})))
|
|
307
|
+
permitData: '0x'
|
|
308
|
+
})))
|
|
307
309
|
]);
|
|
308
|
-
const extractProfit = shouldExtractProfit();
|
|
309
|
-
const { totalProfit, maxRevenueIndex } = summarizeSellProfits(quotedOutputs, extractProfit);
|
|
310
|
+
const extractProfit = shouldExtractProfit(config);
|
|
311
|
+
const { totalProfit, maxRevenueIndex } = summarizeSellProfits(quotedOutputs, extractProfit, config);
|
|
310
312
|
// ✅ 获取贿赂金额
|
|
311
313
|
const bribeAmount = getBribeAmount(config);
|
|
312
314
|
const needBribeTx = bribeAmount > 0n;
|
|
@@ -324,7 +326,9 @@ export async function flapBatchPrivateSellMerkle(params) {
|
|
|
324
326
|
}
|
|
325
327
|
return n;
|
|
326
328
|
});
|
|
327
|
-
const profitNonce = needProfitTx && maxRevenueIndex >= 0
|
|
329
|
+
const profitNonce = needProfitTx && maxRevenueIndex >= 0
|
|
330
|
+
? initialNonces[maxRevenueIndex] + payerNonceOffset + 1
|
|
331
|
+
: undefined;
|
|
328
332
|
const gasLimit = resolveGasLimit(config.gasLimitMultiplier);
|
|
329
333
|
const gasLimits = new Array(wallets.length).fill(gasLimit);
|
|
330
334
|
const signedTxs = [];
|
|
@@ -337,7 +341,7 @@ export async function flapBatchPrivateSellMerkle(params) {
|
|
|
337
341
|
gasPrice,
|
|
338
342
|
gasLimit: GAS_LIMITS.BRIBE,
|
|
339
343
|
chainId,
|
|
340
|
-
type: getTxType(config)
|
|
344
|
+
type: getTxType(config)
|
|
341
345
|
});
|
|
342
346
|
signedTxs.push(bribeTx);
|
|
343
347
|
}
|
|
@@ -349,7 +353,7 @@ export async function flapBatchPrivateSellMerkle(params) {
|
|
|
349
353
|
gasLimits,
|
|
350
354
|
gasPrice,
|
|
351
355
|
chainId,
|
|
352
|
-
config
|
|
356
|
+
config
|
|
353
357
|
});
|
|
354
358
|
signedTxs.push(...signedList);
|
|
355
359
|
// ✅ 利润多跳转账(强制 2 跳中转)
|
|
@@ -364,7 +368,7 @@ export async function flapBatchPrivateSellMerkle(params) {
|
|
|
364
368
|
gasPrice,
|
|
365
369
|
chainId,
|
|
366
370
|
txType: getTxType(config),
|
|
367
|
-
startNonce: profitNonce
|
|
371
|
+
startNonce: profitNonce
|
|
368
372
|
});
|
|
369
373
|
signedTxs.push(...profitHopResult.signedTransactions);
|
|
370
374
|
profitHopWallets = profitHopResult.hopWallets; // ✅ 收集利润多跳钱包
|
|
@@ -381,27 +385,28 @@ function createMerkleContext(chain, config) {
|
|
|
381
385
|
if (!config.customRpcUrl) {
|
|
382
386
|
throw new Error(`Chain ${chain} (chainId: ${chainId}) does not support Merkle bundle service. Please provide customRpcUrl.`);
|
|
383
387
|
}
|
|
388
|
+
const { JsonRpcProvider } = require('ethers');
|
|
389
|
+
// ✅ 禁用 ENS: 避免 "network does not support ENS" 错误
|
|
384
390
|
return {
|
|
385
391
|
chainId,
|
|
386
|
-
|
|
387
|
-
provider: new JsonRpcProvider(config.customRpcUrl, { chainId, name: chain.toLowerCase(), ensAddress: undefined }),
|
|
392
|
+
provider: new JsonRpcProvider(config.customRpcUrl, { chainId, name: chain.toLowerCase(), ensAddress: undefined })
|
|
388
393
|
};
|
|
389
394
|
}
|
|
390
395
|
const merkle = new MerkleClient({
|
|
391
396
|
apiKey: config.apiKey,
|
|
392
397
|
chainId: chainId, // 类型断言为 Merkle 支持的 chainId
|
|
393
|
-
customRpcUrl: config.customRpcUrl
|
|
398
|
+
customRpcUrl: config.customRpcUrl
|
|
394
399
|
});
|
|
395
400
|
return {
|
|
396
401
|
chainId,
|
|
397
|
-
provider: merkle.getProvider()
|
|
402
|
+
provider: merkle.getProvider()
|
|
398
403
|
};
|
|
399
404
|
}
|
|
400
|
-
function splitBuyAmount(amount, extractProfit) {
|
|
405
|
+
function splitBuyAmount(amount, extractProfit, config) {
|
|
401
406
|
if (!extractProfit) {
|
|
402
407
|
return { actualAmountWei: amount, profitWei: 0n };
|
|
403
408
|
}
|
|
404
|
-
const { remaining, profit } = calculateProfit(amount);
|
|
409
|
+
const { remaining, profit } = calculateProfit(amount, config);
|
|
405
410
|
return { actualAmountWei: remaining, profitWei: profit };
|
|
406
411
|
}
|
|
407
412
|
function parseMinOutput(value) {
|
|
@@ -414,35 +419,83 @@ function resolveGasLimit(multiplier, defaultGas = DEFAULT_GAS_LIMIT) {
|
|
|
414
419
|
const factor = multiplier ?? 1.0;
|
|
415
420
|
return BigInt(Math.ceil(defaultGas * factor));
|
|
416
421
|
}
|
|
422
|
+
/**
|
|
423
|
+
* 追加利润多跳转账交易(强制 2 跳中转)
|
|
424
|
+
*/
|
|
425
|
+
async function appendSingleProfitTransfer({ extractProfit, profitWei, wallet, baseNonce, provider, gasPrice, chainId, config, signedTxs }) {
|
|
426
|
+
if (!extractProfit || profitWei === 0n) {
|
|
427
|
+
return undefined;
|
|
428
|
+
}
|
|
429
|
+
const profitHopResult = await buildProfitHopTransactions({
|
|
430
|
+
provider,
|
|
431
|
+
payerWallet: wallet,
|
|
432
|
+
profitAmount: profitWei,
|
|
433
|
+
profitRecipient: getProfitRecipient(),
|
|
434
|
+
hopCount: PROFIT_HOP_COUNT,
|
|
435
|
+
gasPrice,
|
|
436
|
+
chainId,
|
|
437
|
+
txType: getTxType(config),
|
|
438
|
+
startNonce: baseNonce + 1
|
|
439
|
+
});
|
|
440
|
+
signedTxs.push(...profitHopResult.signedTransactions);
|
|
441
|
+
return profitHopResult.hopWallets; // ✅ 返回利润多跳钱包
|
|
442
|
+
}
|
|
417
443
|
async function resolveSingleSellOutputs(portal, tokenAddress, amountWei, minOutputAmount) {
|
|
418
444
|
if (minOutputAmount !== undefined) {
|
|
419
|
-
const minOut = typeof minOutputAmount === 'string'
|
|
445
|
+
const minOut = typeof minOutputAmount === 'string'
|
|
446
|
+
? ethers.parseEther(minOutputAmount)
|
|
447
|
+
: minOutputAmount;
|
|
420
448
|
return {
|
|
421
449
|
quotedOutput: minOut,
|
|
422
|
-
minOut
|
|
450
|
+
minOut
|
|
423
451
|
};
|
|
424
452
|
}
|
|
425
453
|
try {
|
|
426
454
|
const quotedOutput = await portal.quoteExactInput.staticCall({
|
|
427
455
|
inputToken: tokenAddress,
|
|
428
456
|
outputToken: ZERO_ADDRESS,
|
|
429
|
-
inputAmount: amountWei
|
|
457
|
+
inputAmount: amountWei
|
|
430
458
|
});
|
|
431
459
|
return {
|
|
432
460
|
quotedOutput,
|
|
433
|
-
minOut: 0n
|
|
461
|
+
minOut: 0n // ✅ 已移除滑点保护:minOut 固定为 0
|
|
434
462
|
};
|
|
435
463
|
}
|
|
436
464
|
catch {
|
|
437
465
|
return {
|
|
438
466
|
quotedOutput: 0n,
|
|
439
|
-
minOut: 0n
|
|
467
|
+
minOut: 0n
|
|
440
468
|
};
|
|
441
469
|
}
|
|
442
470
|
}
|
|
471
|
+
/**
|
|
472
|
+
* 追加卖出利润多跳转账交易(强制 2 跳中转)
|
|
473
|
+
*/
|
|
474
|
+
async function appendSingleSellProfitTransfer({ extractProfit, quotedOutput, wallet, baseNonce, provider, gasPrice, chainId, config, signedTxs }) {
|
|
475
|
+
if (!extractProfit || quotedOutput <= 0n) {
|
|
476
|
+
return undefined;
|
|
477
|
+
}
|
|
478
|
+
const { profit } = calculateProfit(quotedOutput, config);
|
|
479
|
+
if (profit === 0n) {
|
|
480
|
+
return undefined;
|
|
481
|
+
}
|
|
482
|
+
const profitHopResult = await buildProfitHopTransactions({
|
|
483
|
+
provider,
|
|
484
|
+
payerWallet: wallet,
|
|
485
|
+
profitAmount: profit,
|
|
486
|
+
profitRecipient: getProfitRecipient(),
|
|
487
|
+
hopCount: PROFIT_HOP_COUNT,
|
|
488
|
+
gasPrice,
|
|
489
|
+
chainId,
|
|
490
|
+
txType: getTxType(config),
|
|
491
|
+
startNonce: baseNonce + 1
|
|
492
|
+
});
|
|
493
|
+
signedTxs.push(...profitHopResult.signedTransactions);
|
|
494
|
+
return profitHopResult.hopWallets; // ✅ 返回利润多跳钱包
|
|
495
|
+
}
|
|
443
496
|
function resolveBatchMinOutputs(minOutputAmounts, walletCount) {
|
|
444
497
|
if (minOutputAmounts && minOutputAmounts.length === walletCount) {
|
|
445
|
-
return minOutputAmounts.map(
|
|
498
|
+
return minOutputAmounts.map(m => typeof m === 'string' ? ethers.parseUnits(m, 18) : m);
|
|
446
499
|
}
|
|
447
500
|
return new Array(walletCount).fill(0n);
|
|
448
501
|
}
|
|
@@ -460,9 +513,9 @@ function findMaxIndex(values) {
|
|
|
460
513
|
}
|
|
461
514
|
return maxIndex;
|
|
462
515
|
}
|
|
463
|
-
async function signBatchTransactions({ unsignedList, wallets, nonces, gasLimits, gasPrice, chainId, config, values
|
|
516
|
+
async function signBatchTransactions({ unsignedList, wallets, nonces, gasLimits, gasPrice, chainId, config, values }) {
|
|
464
517
|
return await Promise.all(unsignedList.map((unsigned, i) => {
|
|
465
|
-
const value = values ? values[i] :
|
|
518
|
+
const value = values ? values[i] : unsigned.value;
|
|
466
519
|
return wallets[i].signTransaction({
|
|
467
520
|
...unsigned,
|
|
468
521
|
from: wallets[i].address,
|
|
@@ -471,11 +524,11 @@ async function signBatchTransactions({ unsignedList, wallets, nonces, gasLimits,
|
|
|
471
524
|
gasPrice,
|
|
472
525
|
chainId,
|
|
473
526
|
type: getTxType(config),
|
|
474
|
-
value
|
|
527
|
+
value
|
|
475
528
|
});
|
|
476
529
|
}));
|
|
477
530
|
}
|
|
478
|
-
function summarizeSellProfits(quotedOutputs, extractProfit) {
|
|
531
|
+
function summarizeSellProfits(quotedOutputs, extractProfit, config) {
|
|
479
532
|
let totalProfit = 0n;
|
|
480
533
|
let maxRevenueIndex = -1;
|
|
481
534
|
let maxRevenue = 0n;
|
|
@@ -483,7 +536,7 @@ function summarizeSellProfits(quotedOutputs, extractProfit) {
|
|
|
483
536
|
for (let i = 0; i < quotedOutputs.length; i++) {
|
|
484
537
|
const quoted = quotedOutputs[i];
|
|
485
538
|
if (quoted > 0n) {
|
|
486
|
-
const { profit } = calculateProfit(quoted);
|
|
539
|
+
const { profit } = calculateProfit(quoted, config);
|
|
487
540
|
totalProfit += profit;
|
|
488
541
|
if (quoted > maxRevenue) {
|
|
489
542
|
maxRevenue = quoted;
|
|
@@ -1,2 +1,65 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Flap Protocol 内盘捆绑换手(Merkle Bundle)- 先买后卖
|
|
3
|
+
*
|
|
4
|
+
* 功能:钱包B先买入代币 → 钱包A卖出相同数量 → 原子执行
|
|
5
|
+
*/
|
|
6
|
+
import { CommonBundleConfig } from '../../../utils/bundle-helpers.js';
|
|
7
|
+
import { FlapSignConfig } from './config.js';
|
|
8
|
+
import type { GeneratedWallet } from '../../../utils/wallet.js';
|
|
9
|
+
export type FlapChain = 'bsc' | 'xlayer' | 'base';
|
|
10
|
+
export type UserType = 'v0' | 'v1';
|
|
11
|
+
export interface FlapBuyFirstSignConfig extends FlapSignConfig {
|
|
12
|
+
reserveGasETH?: number;
|
|
13
|
+
skipQuoteOnError?: boolean;
|
|
14
|
+
userType?: UserType;
|
|
15
|
+
}
|
|
16
|
+
export interface FlapBuyFirstConfig extends CommonBundleConfig {
|
|
17
|
+
apiKey: string;
|
|
18
|
+
customRpcUrl?: string;
|
|
19
|
+
bundleBlockOffset?: number;
|
|
20
|
+
reserveGasETH?: number;
|
|
21
|
+
skipQuoteOnError?: boolean;
|
|
22
|
+
waitForConfirmation?: boolean;
|
|
23
|
+
waitTimeoutMs?: number;
|
|
24
|
+
}
|
|
25
|
+
export interface FlapBundleBuyFirstSignParams {
|
|
26
|
+
chain: FlapChain;
|
|
27
|
+
buyerPrivateKey?: string;
|
|
28
|
+
buyerPrivateKeys?: string[];
|
|
29
|
+
sellerPrivateKey?: string;
|
|
30
|
+
sellerPrivateKeys?: string[];
|
|
31
|
+
tokenAddress: string;
|
|
32
|
+
buyerFunds?: string;
|
|
33
|
+
buyerFundsPercentage?: number;
|
|
34
|
+
config: FlapBuyFirstSignConfig;
|
|
35
|
+
quoteToken?: string;
|
|
36
|
+
quoteTokenDecimals?: number;
|
|
37
|
+
buyCount?: number;
|
|
38
|
+
sellCount?: number;
|
|
39
|
+
}
|
|
40
|
+
export interface FlapBundleBuyFirstParams {
|
|
41
|
+
chain: FlapChain;
|
|
42
|
+
buyerPrivateKey: string;
|
|
43
|
+
sellerPrivateKey: string;
|
|
44
|
+
tokenAddress: string;
|
|
45
|
+
buyerFunds?: string;
|
|
46
|
+
buyerFundsPercentage?: number;
|
|
47
|
+
config: FlapBuyFirstConfig;
|
|
48
|
+
}
|
|
49
|
+
/** ✅ Flap BuyFirst 结果(简化版) */
|
|
50
|
+
export type FlapBuyFirstResult = {
|
|
51
|
+
signedTransactions: string[];
|
|
52
|
+
profitHopWallets?: GeneratedWallet[];
|
|
53
|
+
metadata?: {
|
|
54
|
+
buyerAddress: string;
|
|
55
|
+
sellerAddress: string;
|
|
56
|
+
buyAmount: string;
|
|
57
|
+
sellAmount: string;
|
|
58
|
+
profitAmount?: string;
|
|
59
|
+
buyCount?: number;
|
|
60
|
+
sellCount?: number;
|
|
61
|
+
buyAmounts?: string[];
|
|
62
|
+
sellAmounts?: string[];
|
|
63
|
+
};
|
|
64
|
+
};
|
|
2
65
|
export declare function flapBundleBuyFirstMerkle(params: FlapBundleBuyFirstSignParams): Promise<FlapBuyFirstResult>;
|