four-flap-meme-sdk 2.2.19 → 3.0.0
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/dist/{shared/abis → abis}/common.d.ts +1 -1
- package/dist/{shared/abis → abis}/common.js +75 -91
- package/dist/abis/contracts/TaxToken.json +969 -0
- package/dist/abis/contracts/TokenManager2.json +136 -0
- package/dist/{shared/abis → abis/contracts}/index.d.ts +0 -1
- package/dist/{shared/abis → abis/contracts}/index.js +0 -2
- package/dist/abis/flap/index.d.ts +5 -0
- package/dist/abis/flap/index.js +5 -0
- package/dist/abis/flap/portal-eip7702.d.ts +4 -0
- package/dist/abis/flap/portal-eip7702.js +39 -0
- package/dist/abis/flap/portal-events.d.ts +6 -0
- package/dist/abis/flap/portal-events.js +17 -0
- package/dist/abis/flap/portal-merkle.d.ts +4 -0
- package/dist/abis/flap/portal-merkle.js +25 -0
- package/dist/abis/flap/portal.d.ts +6 -0
- package/dist/abis/flap/portal.js +37 -0
- package/dist/abis/flap/vault.d.ts +171 -0
- package/dist/abis/flap/vault.js +91 -0
- package/dist/abis/index.d.ts +6 -0
- package/dist/abis/index.js +9 -0
- package/dist/bundle/config-helpers.d.ts +37 -0
- package/dist/bundle/config-helpers.js +58 -0
- package/dist/bundle/errors.d.ts +50 -0
- package/dist/bundle/errors.js +38 -0
- package/dist/bundle/four-meme/approve-tokenmanager.d.ts +7 -0
- package/dist/bundle/four-meme/approve-tokenmanager.js +99 -0
- package/dist/bundle/four-meme/core-helpers.d.ts +8 -0
- package/dist/bundle/four-meme/core-helpers.js +41 -0
- package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/core.d.ts +1 -1
- package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/core.js +74 -150
- package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/pancake-proxy.d.ts +1 -1
- package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/pancake-proxy.js +85 -92
- package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/private.d.ts +1 -1
- package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/private.js +48 -59
- package/dist/bundle/four-meme/sign-context-helpers.d.ts +2 -0
- package/dist/bundle/four-meme/sign-context-helpers.js +2 -0
- package/dist/bundle/four-meme/swap-buy-first.d.ts +8 -0
- package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/swap-buy-first.js +56 -108
- package/dist/bundle/four-meme/swap-hop-helpers.d.ts +6 -0
- package/dist/bundle/four-meme/swap-hop-helpers.js +63 -0
- package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/swap-internal.js +4 -4
- package/dist/bundle/four-meme/swap-sign-helpers.d.ts +28 -0
- package/dist/bundle/four-meme/swap-sign-helpers.js +105 -0
- package/dist/bundle/four-meme/swap.d.ts +17 -0
- package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/swap.js +84 -345
- package/dist/{contracts/tm-bundle-merkle/swap-buy-first.d.ts → bundle/four-meme/types/buy-first.d.ts} +11 -18
- package/dist/bundle/four-meme/types/core-flow.d.ts +63 -0
- package/dist/bundle/four-meme/types/core-flow.js +1 -0
- package/dist/{contracts/tm-bundle-merkle/types.d.ts → bundle/four-meme/types/index.d.ts} +130 -6
- package/dist/bundle/four-meme/types/index.js +1 -0
- package/dist/bundle/four-meme/types/swap-internal.d.ts +19 -0
- package/dist/bundle/four-meme/types/swap-internal.js +1 -0
- package/dist/bundle/four-meme/types.d.ts +1 -0
- package/dist/bundle/four-meme/utils-disperse.d.ts +7 -0
- package/dist/bundle/four-meme/utils-disperse.js +396 -0
- package/dist/bundle/four-meme/utils-pairwise.d.ts +8 -0
- package/dist/bundle/four-meme/utils-pairwise.js +328 -0
- package/dist/bundle/four-meme/utils-sweep.d.ts +8 -0
- package/dist/bundle/four-meme/utils-sweep.js +744 -0
- package/dist/bundle/index.d.ts +8 -0
- package/dist/bundle/index.js +8 -0
- package/dist/bundle/internal.d.ts +16 -0
- package/dist/bundle/internal.js +160 -0
- package/dist/bundle/sign-context-helpers.d.ts +26 -0
- package/dist/bundle/sign-context-helpers.js +63 -0
- package/dist/{contracts/tm-bundle-merkle → bundle}/submit.d.ts +6 -27
- package/dist/{contracts/tm-bundle-merkle → bundle}/submit.js +116 -313
- package/dist/bundle/types/index.d.ts +8 -0
- package/dist/bundle/types/index.js +1 -0
- package/dist/bundle/types.d.ts +1 -0
- package/dist/bundle/types.js +1 -0
- package/dist/chains/bsc/constants.js +1 -1
- package/dist/chains/bsc/four/approve-tokenmanager.d.ts +1 -26
- package/dist/chains/bsc/four/approve-tokenmanager.js +1 -113
- package/dist/chains/bsc/four/config.d.ts +5 -67
- package/dist/chains/bsc/four/config.js +2 -114
- package/dist/chains/bsc/four/core.d.ts +1 -4
- package/dist/chains/bsc/four/core.js +1 -592
- 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 +2 -46
- package/dist/chains/bsc/four/internal.js +2 -239
- package/dist/chains/bsc/four/pancake-proxy.d.ts +1 -28
- package/dist/chains/bsc/four/pancake-proxy.js +1 -687
- package/dist/chains/bsc/four/private.d.ts +1 -27
- package/dist/chains/bsc/four/private.js +1 -477
- package/dist/chains/bsc/four/submit.d.ts +2 -315
- package/dist/chains/bsc/four/submit.js +2 -752
- package/dist/chains/bsc/four/swap-buy-first.d.ts +2 -55
- package/dist/chains/bsc/four/swap-buy-first.js +2 -507
- package/dist/chains/bsc/four/swap-internal.d.ts +1 -3
- package/dist/chains/bsc/four/swap-internal.js +1 -18
- package/dist/chains/bsc/four/swap.d.ts +2 -144
- package/dist/chains/bsc/four/swap.js +2 -766
- package/dist/chains/bsc/four/types.d.ts +1 -476
- package/dist/chains/bsc/four/utils-disperse.d.ts +1 -0
- package/dist/chains/bsc/four/utils-disperse.js +1 -0
- package/dist/chains/bsc/four/utils-pairwise.d.ts +1 -0
- package/dist/chains/bsc/four/utils-pairwise.js +1 -0
- package/dist/chains/bsc/four/utils-sweep.d.ts +1 -0
- package/dist/chains/bsc/four/utils-sweep.js +1 -0
- package/dist/chains/bsc/four/utils.d.ts +5 -18
- package/dist/chains/bsc/four/utils.js +5 -1552
- package/dist/chains/bsc/iro.d.ts +5 -0
- package/dist/chains/bsc/iro.js +4 -0
- package/dist/chains/bsc/pancake/bundle-buy-first-helpers.d.ts +155 -0
- package/dist/chains/bsc/pancake/bundle-buy-first-helpers.js +80 -0
- package/dist/chains/bsc/pancake/bundle-buy-first.d.ts +1 -91
- package/dist/chains/bsc/pancake/bundle-buy-first.js +99 -214
- package/dist/chains/bsc/pancake/bundle-swap-helpers.d.ts +241 -0
- package/dist/chains/bsc/pancake/bundle-swap-helpers.js +565 -0
- package/dist/chains/bsc/pancake/bundle-swap.d.ts +1 -79
- package/dist/chains/bsc/pancake/bundle-swap.js +114 -726
- package/dist/chains/bsc/pancake/index.d.ts +4 -2
- package/dist/chains/bsc/pancake/index.js +1 -3
- package/dist/chains/bsc/platforms/iro/constants.js +1 -1
- package/dist/chains/bsc/platforms/iro/factory.d.ts +2 -2
- package/dist/chains/bsc/platforms/iro/factory.js +3 -1
- 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 +31 -10
- package/dist/chains/bsc/platforms/iro/token.js +5 -2
- package/dist/chains/eni/batch-router/bundle-approve.js +4 -3
- package/dist/chains/eni/batch-router/transfer.js +57 -27
- package/dist/chains/eni/batch-router/utils.js +32 -6
- package/dist/chains/eni/bundler/sign.js +5 -6
- package/dist/chains/eni/bundler/submit.js +1 -4
- package/dist/chains/eni/constants.js +2 -2
- package/dist/chains/eni/flat-aliases.d.ts +10 -0
- package/dist/chains/eni/flat-aliases.js +8 -0
- package/dist/chains/eni/index.d.ts +2 -1
- package/dist/chains/eni/index.js +1 -0
- package/dist/chains/eni/platforms/daoaas/create.js +3 -3
- 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 +9 -6
- package/dist/chains/eni/platforms/daoaas/portal-direct.js +29 -45
- package/dist/chains/eni/platforms/daoaas/portal.js +10 -6
- package/dist/chains/eni/platforms/dswap/liquidity.js +59 -27
- package/dist/chains/eni/platforms/fair-launch/constants.js +1 -1
- 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 +88 -47
- package/dist/chains/eni/platforms/fair-launch/pool.js +5 -2
- package/dist/chains/eni/platforms/fair-launch/presets.js +2 -2
- package/dist/chains/eni/platforms/iro/constants.d.ts +1 -1
- package/dist/chains/eni/platforms/iro/constants.js +2 -2
- package/dist/chains/eni/platforms/iro/factory.d.ts +2 -2
- package/dist/chains/eni/platforms/iro/factory.js +3 -1
- 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 +90 -26
- package/dist/chains/eni/platforms/iro/token.js +108 -32
- package/dist/chains/eni/platforms/iro/whitelist.js +6 -18
- package/dist/chains/eni/submit.d.ts +43 -0
- package/dist/chains/eni/submit.js +287 -0
- package/dist/chains/index.d.ts +13 -0
- package/dist/chains/index.js +13 -0
- package/dist/chains/monad/constants.js +1 -1
- package/dist/chains/xlayer/constants.d.ts +5 -0
- package/dist/chains/xlayer/constants.js +1 -1
- package/dist/chains/xlayer/eip7702/bundle-approve.d.ts +2 -26
- package/dist/chains/xlayer/eip7702/bundle-approve.js +11 -21
- package/dist/chains/xlayer/eip7702/bundle-buy.d.ts +2 -6
- package/dist/chains/xlayer/eip7702/bundle-buy.js +13 -51
- package/dist/chains/xlayer/eip7702/bundle-create.js +104 -74
- package/dist/chains/xlayer/eip7702/bundle-sell.d.ts +2 -6
- package/dist/chains/xlayer/eip7702/bundle-sell.js +30 -112
- package/dist/chains/xlayer/eip7702/bundle-swap.d.ts +3 -65
- package/dist/chains/xlayer/eip7702/bundle-swap.js +52 -246
- package/dist/chains/xlayer/eip7702/constants.d.ts +11 -26
- package/dist/chains/xlayer/eip7702/constants.js +15 -68
- package/dist/chains/xlayer/eip7702/flat-aliases.d.ts +13 -0
- package/dist/chains/xlayer/eip7702/flat-aliases.js +10 -0
- package/dist/chains/xlayer/eip7702/index.d.ts +28 -46
- package/dist/chains/xlayer/eip7702/index.js +28 -81
- package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.d.ts +79 -0
- package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.js +1 -0
- package/dist/chains/xlayer/eip7702/multi-hop-transfer.d.ts +2 -203
- package/dist/chains/xlayer/eip7702/multi-hop-transfer.js +64 -308
- package/dist/chains/xlayer/eip7702/transfer-context-helpers.d.ts +26 -0
- package/dist/chains/xlayer/eip7702/transfer-context-helpers.js +58 -0
- package/dist/chains/xlayer/eip7702/types.d.ts +88 -0
- package/dist/chains/xlayer/eip7702/utils.d.ts +0 -3
- package/dist/chains/xlayer/eip7702/utils.js +23 -28
- package/dist/chains/xlayer/eip7702/volume-helpers.d.ts +148 -0
- package/dist/chains/xlayer/eip7702/volume-helpers.js +48 -0
- package/dist/chains/xlayer/eip7702/volume.d.ts +6 -184
- package/dist/chains/xlayer/eip7702/volume.js +89 -164
- package/dist/chains/xlayer/eoa/constants.d.ts +1 -1
- package/dist/chains/xlayer/eoa/constants.js +2 -16
- package/dist/chains/xlayer/eoa/dex-helpers.d.ts +1 -1
- package/dist/chains/xlayer/eoa/dex-helpers.js +7 -37
- package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.d.ts +126 -0
- package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.js +228 -0
- package/dist/chains/xlayer/eoa/eoa-bundle-swap.d.ts +1 -95
- package/dist/chains/xlayer/eoa/eoa-bundle-swap.js +66 -299
- package/dist/chains/xlayer/eoa/eoa-wash-volume.d.ts +1 -1
- package/dist/chains/xlayer/eoa/eoa-wash-volume.js +18 -23
- package/dist/chains/xlayer/eoa/index.d.ts +10 -6
- package/dist/chains/xlayer/eoa/index.js +8 -23
- package/dist/chains/xlayer/eoa/portal-ops.js +7 -2
- package/dist/chains/xlayer/eoa/router-manager.js +5 -4
- package/dist/chains/xlayer/eoa/types.d.ts +2 -2
- package/dist/chains/xlayer/eoa/types.js +1 -3
- package/dist/chains/xlayer/index.d.ts +3 -2
- package/dist/chains/xlayer/index.js +4 -7
- package/dist/core/amount/split-by-weight.d.ts +5 -0
- package/dist/core/amount/split-by-weight.js +35 -0
- package/dist/{shared → core}/clients/blockrazor.d.ts +4 -8
- package/dist/{shared → core}/clients/blockrazor.js +43 -35
- package/dist/{shared → core}/clients/club48.d.ts +2 -2
- package/dist/{shared → core}/clients/club48.js +36 -30
- package/dist/{shared → core}/clients/emitservice.js +2 -0
- package/dist/{shared → core}/clients/four.d.ts +21 -6
- package/dist/{shared → core}/clients/four.js +29 -24
- package/dist/core/clients/index.d.ts +8 -0
- package/dist/core/clients/index.js +8 -0
- package/dist/{shared → core}/clients/merkle.d.ts +4 -3
- package/dist/{shared → core}/clients/merkle.js +30 -47
- package/dist/{shared → core}/constants/addresses.d.ts +27 -1
- package/dist/{shared → core}/constants/addresses.js +39 -2
- package/dist/{shared → core}/constants/chains.d.ts +1 -1
- package/dist/{shared → core}/constants/chains.js +1 -1
- package/dist/{shared → core}/constants/gas.d.ts +1 -1
- package/dist/{shared → core}/constants/gas.js +2 -6
- package/dist/{shared → core}/constants/index.d.ts +5 -2
- package/dist/{shared → core}/constants/index.js +3 -2
- package/dist/core/constants/quote.d.ts +30 -0
- package/dist/core/constants/quote.js +37 -0
- package/dist/core/dex/v3-path.d.ts +6 -0
- package/dist/core/dex/v3-path.js +35 -0
- package/dist/core/erc20/decimals.d.ts +7 -0
- package/dist/core/erc20/decimals.js +24 -0
- package/dist/{utils → core}/erc20.d.ts +7 -89
- package/dist/{utils → core}/erc20.js +99 -130
- package/dist/core/foundation.d.ts +15 -0
- package/dist/core/foundation.js +14 -0
- package/dist/core/gas/bundle-gas.d.ts +49 -0
- package/dist/core/gas/bundle-gas.js +93 -0
- package/dist/core/gas/profit-hop.d.ts +20 -0
- package/dist/core/gas/profit-hop.js +72 -0
- package/dist/core/index.d.ts +5 -0
- package/dist/core/index.js +5 -0
- package/dist/core/legacy-types/errors.d.ts +27 -0
- package/dist/core/legacy-types/errors.js +34 -0
- package/dist/core/nonce/nonce-manager.d.ts +19 -0
- package/dist/core/nonce/nonce-manager.js +217 -0
- package/dist/core/normalize-unknown.d.ts +9 -0
- package/dist/core/normalize-unknown.js +29 -0
- package/dist/core/sdk-logger.d.ts +13 -0
- package/dist/core/sdk-logger.js +12 -0
- package/dist/core/shared-abis/common.d.ts +4 -0
- package/dist/core/shared-abis/common.js +4 -0
- package/dist/core/shared-abis/index.d.ts +5 -0
- package/dist/core/shared-abis/index.js +5 -0
- package/dist/core/tx/build-request.d.ts +17 -0
- package/dist/core/tx/build-request.js +25 -0
- package/dist/core/tx/sign-batch.d.ts +5 -0
- package/dist/core/tx/sign-batch.js +26 -0
- package/dist/core/tx/wallet-sign-patch.d.ts +1 -0
- package/dist/core/tx/wallet-sign-patch.js +18 -0
- package/dist/core/types/airdrop-sweep.d.ts +79 -0
- package/dist/core/types/airdrop-sweep.js +1 -0
- package/dist/core/types/erc20.d.ts +65 -0
- package/dist/core/types/erc20.js +1 -0
- package/dist/core/types/holders-maker.d.ts +64 -0
- package/dist/core/types/holders-maker.js +1 -0
- package/dist/core/types/index.d.ts +7 -0
- package/dist/core/types/index.js +1 -0
- package/dist/{utils → core/types}/lp-inspect.d.ts +4 -52
- package/dist/core/types/lp-inspect.js +1 -0
- package/dist/core/types/multicall.d.ts +5 -0
- package/dist/core/types/multicall.js +1 -0
- package/dist/core/types/private-sale.d.ts +35 -0
- package/dist/core/types/private-sale.js +1 -0
- package/dist/core/types/quote-helpers.d.ts +17 -0
- package/dist/core/types/quote-helpers.js +1 -0
- package/dist/core/types-erc20.d.ts +1 -0
- package/dist/core/types-erc20.js +1 -0
- package/dist/core/wallet/generate.d.ts +5 -0
- package/dist/core/wallet/generate.js +8 -0
- package/dist/domains/dex/direct-router-helpers.d.ts +269 -0
- package/dist/domains/dex/direct-router-helpers.js +536 -0
- package/dist/domains/dex/direct-router.d.ts +28 -0
- package/dist/{dex → domains/dex}/direct-router.js +246 -674
- package/dist/domains/dex/types.d.ts +81 -0
- package/dist/domains/dex/types.js +1 -0
- package/dist/{shared → domains}/flap/abi.js +1 -1
- package/dist/{shared → domains}/flap/constants.d.ts +1 -2
- package/dist/{shared → domains}/flap/constants.js +3 -4
- package/dist/{shared → domains}/flap/curve.js +3 -0
- package/dist/{shared → domains}/flap/errors.d.ts +1 -4
- package/dist/{shared → domains}/flap/errors.js +20 -1
- package/dist/domains/flap/index.d.ts +7 -0
- package/dist/domains/flap/index.js +5 -0
- package/dist/{shared → domains}/flap/meta.d.ts +22 -18
- package/dist/{shared → domains}/flap/meta.js +32 -24
- package/dist/{shared/flap/index.d.ts → domains/flap/module.d.ts} +4 -5
- package/dist/{shared/flap/index.js → domains/flap/module.js} +4 -5
- package/dist/{shared → domains}/flap/permit.js +10 -3
- package/dist/{shared → domains}/flap/pinata.d.ts +22 -6
- package/dist/{shared → domains}/flap/pinata.js +21 -26
- package/dist/domains/flap/portal-bundle-merkle/config.d.ts +10 -0
- package/dist/domains/flap/portal-bundle-merkle/config.js +13 -0
- package/dist/domains/flap/portal-bundle-merkle/core-helpers.d.ts +32 -0
- package/dist/domains/flap/portal-bundle-merkle/core-helpers.js +83 -0
- package/dist/{shared → domains}/flap/portal-bundle-merkle/core.d.ts +0 -4
- package/dist/{shared → domains}/flap/portal-bundle-merkle/core.js +168 -175
- package/dist/{shared → domains}/flap/portal-bundle-merkle/create-to-dex.d.ts +17 -4
- package/dist/{shared → domains}/flap/portal-bundle-merkle/create-to-dex.js +97 -118
- package/dist/{shared → domains}/flap/portal-bundle-merkle/curve-to-dex.js +105 -123
- package/dist/domains/flap/portal-bundle-merkle/index.d.ts +18 -0
- package/dist/{shared → domains}/flap/portal-bundle-merkle/index.js +4 -7
- package/dist/{shared → domains}/flap/portal-bundle-merkle/pancake-proxy.js +73 -70
- package/dist/{shared → domains}/flap/portal-bundle-merkle/private.js +63 -116
- package/dist/domains/flap/portal-bundle-merkle/swap-batch.d.ts +8 -0
- package/dist/domains/flap/portal-bundle-merkle/swap-batch.js +227 -0
- package/dist/domains/flap/portal-bundle-merkle/swap-buy-first-helpers.d.ts +125 -0
- package/dist/domains/flap/portal-bundle-merkle/swap-buy-first-helpers.js +113 -0
- package/dist/domains/flap/portal-bundle-merkle/swap-buy-first.d.ts +2 -0
- package/dist/{shared → domains}/flap/portal-bundle-merkle/swap-buy-first.js +69 -288
- package/dist/domains/flap/portal-bundle-merkle/swap-cross.d.ts +9 -0
- package/dist/domains/flap/portal-bundle-merkle/swap-cross.js +139 -0
- package/dist/domains/flap/portal-bundle-merkle/swap-helpers.d.ts +149 -0
- package/dist/domains/flap/portal-bundle-merkle/swap-helpers.js +259 -0
- package/dist/domains/flap/portal-bundle-merkle/swap-planning.d.ts +70 -0
- package/dist/domains/flap/portal-bundle-merkle/swap-planning.js +182 -0
- package/dist/domains/flap/portal-bundle-merkle/swap-quick-batch.d.ts +16 -0
- package/dist/domains/flap/portal-bundle-merkle/swap-quick-batch.js +327 -0
- package/dist/domains/flap/portal-bundle-merkle/swap-single.d.ts +2 -0
- package/dist/domains/flap/portal-bundle-merkle/swap-single.js +184 -0
- package/dist/domains/flap/portal-bundle-merkle/swap-types.d.ts +101 -0
- package/dist/domains/flap/portal-bundle-merkle/swap-types.js +1 -0
- package/dist/domains/flap/portal-bundle-merkle/swap.d.ts +8 -0
- package/dist/domains/flap/portal-bundle-merkle/swap.js +7 -0
- package/dist/{shared → domains}/flap/portal-bundle-merkle/types.d.ts +88 -12
- package/dist/domains/flap/portal-bundle-merkle/types.js +1 -0
- package/dist/domains/flap/portal-bundle-merkle/utils.d.ts +10 -0
- package/dist/{shared → domains}/flap/portal-bundle-merkle/utils.js +145 -265
- package/dist/{shared → domains}/flap/portal-bundle.d.ts +2 -2
- package/dist/{shared → domains}/flap/portal-bundle.js +84 -79
- package/dist/domains/flap/portal-create-token.d.ts +81 -0
- package/dist/domains/flap/portal-create-token.js +255 -0
- package/dist/{shared → domains}/flap/portal.d.ts +1 -2
- package/dist/{shared → domains}/flap/portal.js +36 -28
- package/dist/{shared → domains}/flap/vanity.d.ts +6 -6
- package/dist/{shared → domains}/flap/vanity.js +15 -21
- package/dist/{shared → domains}/flap/vault.d.ts +25 -93
- package/dist/{shared → domains}/flap/vault.js +77 -127
- package/dist/{flows → domains/flows}/create.d.ts +2 -1
- package/dist/{flows → domains/flows}/create.js +8 -8
- package/dist/domains/flows/index.d.ts +9 -0
- package/dist/domains/flows/index.js +9 -0
- package/dist/{contracts → domains/four/contracts}/helper3.d.ts +20 -5
- package/dist/{contracts → domains/four/contracts}/helper3.js +56 -20
- package/dist/domains/four/contracts/tm-bundle-helpers.d.ts +88 -0
- package/dist/domains/four/contracts/tm-bundle-helpers.js +73 -0
- package/dist/{contracts → domains/four/contracts}/tm-bundle.d.ts +4 -52
- package/dist/{contracts → domains/four/contracts}/tm-bundle.js +122 -189
- package/dist/{contracts → domains/four/contracts}/tm.d.ts +10 -8
- package/dist/{contracts → domains/four/contracts}/tm.js +39 -35
- package/dist/{contracts → domains/four/contracts}/tm1.js +9 -4
- package/dist/{contracts → domains/four/contracts}/tm2.js +10 -5
- package/dist/domains/four/index.d.ts +7 -0
- package/dist/domains/four/index.js +7 -0
- package/dist/{shared → domains}/four/tax-token.d.ts +1 -1
- package/dist/{shared → domains}/four/tax-token.js +31 -10
- package/dist/domains/holders/holders-maker-helpers.d.ts +9 -0
- package/dist/domains/holders/holders-maker-helpers.js +9 -0
- package/dist/domains/holders/holders-maker.d.ts +18 -0
- package/dist/domains/holders/holders-maker.js +324 -0
- package/dist/domains/holders/index.d.ts +1 -0
- package/dist/domains/holders/index.js +1 -0
- package/dist/domains/holders/internal/addresses.d.ts +12 -0
- package/dist/domains/holders/internal/addresses.js +15 -0
- package/dist/domains/holders/internal/buy-tx.d.ts +44 -0
- package/dist/domains/holders/internal/buy-tx.js +278 -0
- package/dist/domains/holders/internal/constants.d.ts +6 -0
- package/dist/domains/holders/internal/constants.js +7 -0
- package/dist/domains/holders/internal/disperse.d.ts +18 -0
- package/dist/domains/holders/internal/disperse.js +90 -0
- package/dist/domains/holders/internal/routing.d.ts +4 -0
- package/dist/domains/holders/internal/routing.js +45 -0
- package/dist/domains/holders/internal/transfer-tx.d.ts +4 -0
- package/dist/domains/holders/internal/transfer-tx.js +67 -0
- package/dist/domains/holders/types.d.ts +1 -0
- package/dist/domains/holders/types.js +1 -0
- package/dist/domains/lp-inspect/index.d.ts +1 -0
- package/dist/domains/lp-inspect/index.js +1 -0
- package/dist/domains/lp-inspect/lp-inspect-helpers.d.ts +9 -0
- package/dist/domains/lp-inspect/lp-inspect-helpers.js +109 -0
- package/dist/domains/lp-inspect/lp-inspect.d.ts +40 -0
- package/dist/{utils → domains/lp-inspect}/lp-inspect.js +78 -293
- package/dist/domains/lp-inspect/types.d.ts +1 -0
- package/dist/domains/lp-inspect/types.js +1 -0
- package/dist/domains/merkle/index.d.ts +12 -0
- package/dist/domains/merkle/index.js +11 -0
- package/dist/domains/private-sale/index.d.ts +1 -0
- package/dist/domains/private-sale/index.js +1 -0
- package/dist/domains/private-sale/private-sale.d.ts +34 -0
- package/dist/{utils → domains/private-sale}/private-sale.js +5 -16
- package/dist/domains/private-sale/types.d.ts +1 -0
- package/dist/domains/private-sale/types.js +1 -0
- package/dist/domains/quote/index.d.ts +1 -0
- package/dist/domains/quote/index.js +1 -0
- package/dist/{utils → domains/quote}/quote-helpers.d.ts +4 -45
- package/dist/{utils → domains/quote}/quote-helpers.js +17 -74
- package/dist/domains/quote/types.d.ts +1 -0
- package/dist/domains/quote/types.js +1 -0
- package/dist/domains/vanity/index.d.ts +5 -0
- package/dist/domains/vanity/index.js +5 -0
- package/dist/exports/root-bundle-and-tooling.d.ts +27 -0
- package/dist/exports/root-bundle-and-tooling.js +30 -0
- package/dist/exports/root-eni-and-bsc-iro.d.ts +26 -0
- package/dist/exports/root-eni-and-bsc-iro.js +66 -0
- package/dist/exports/root-foundations.d.ts +35 -0
- package/dist/exports/root-foundations.js +70 -0
- package/dist/exports/root-swap-dex-and-xlayer.d.ts +30 -0
- package/dist/exports/root-swap-dex-and-xlayer.js +78 -0
- package/dist/index.d.ts +17 -88
- package/dist/index.js +17 -218
- package/dist/utils/airdrop-sweep.d.ts +4 -76
- package/dist/utils/airdrop-sweep.js +42 -55
- package/dist/utils/bundle-helpers.d.ts +9 -243
- package/dist/utils/bundle-helpers.js +10 -584
- package/dist/utils/constants.d.ts +5 -61
- package/dist/utils/constants.js +5 -80
- package/dist/utils/contract-factory.d.ts +2 -4
- package/dist/utils/contract-factory.js +25 -18
- package/dist/utils/errors.d.ts +12 -1
- package/dist/utils/errors.js +60 -1
- package/dist/utils/hop-chains.d.ts +35 -0
- package/dist/utils/hop-chains.js +215 -0
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/index.js +5 -0
- package/dist/utils/mpcExclusive.d.ts +2 -5
- package/dist/utils/mpcExclusive.js +4 -3
- package/dist/utils/provider-factory.d.ts +4 -0
- package/dist/utils/provider-factory.js +10 -0
- package/dist/utils/stealth-transfer.d.ts +2 -28
- package/dist/utils/stealth-transfer.js +41 -21
- package/dist/utils/swap-helpers.d.ts +2 -15
- package/dist/utils/swap-helpers.js +7 -12
- package/dist/utils/types/airdrop-sweep.d.ts +1 -0
- package/dist/utils/types/airdrop-sweep.js +1 -0
- package/dist/utils/types/contract-factory.d.ts +1 -0
- package/dist/utils/types/contract-factory.js +1 -0
- package/dist/utils/types/errors.d.ts +1 -0
- package/dist/utils/types/errors.js +1 -0
- package/dist/utils/types/hop-chains.d.ts +8 -0
- package/dist/utils/types/hop-chains.js +1 -0
- package/dist/utils/types/index.d.ts +13 -0
- package/dist/utils/types/index.js +1 -0
- package/dist/utils/types/mpc-exclusive.d.ts +5 -0
- package/dist/utils/types/mpc-exclusive.js +1 -0
- package/dist/utils/types/stealth-transfer.d.ts +44 -0
- package/dist/utils/types/stealth-transfer.js +1 -0
- package/dist/utils/types/wallet.d.ts +25 -0
- package/dist/utils/types/wallet.js +1 -0
- package/dist/utils/wallet.d.ts +4 -25
- package/dist/utils/wallet.js +27 -22
- package/package.json +96 -2
- package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.d.ts +0 -26
- package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.js +0 -113
- package/dist/contracts/tm-bundle-merkle/config.d.ts +0 -70
- package/dist/contracts/tm-bundle-merkle/config.js +0 -114
- package/dist/contracts/tm-bundle-merkle/index.d.ts +0 -15
- package/dist/contracts/tm-bundle-merkle/index.js +0 -29
- package/dist/contracts/tm-bundle-merkle/internal.d.ts +0 -48
- package/dist/contracts/tm-bundle-merkle/internal.js +0 -240
- package/dist/contracts/tm-bundle-merkle/swap.d.ts +0 -146
- package/dist/contracts/tm-bundle-merkle/utils.d.ts +0 -20
- package/dist/contracts/tm-bundle-merkle/utils.js +0 -1503
- package/dist/dex/direct-router.d.ts +0 -150
- package/dist/shared/abis/TaxToken.json +0 -105
- package/dist/shared/abis/TokenManager2.json +0 -60
- package/dist/shared/flap/graduated-dex.d.ts +0 -1
- package/dist/shared/flap/graduated-dex.js +0 -1
- package/dist/shared/flap/launch-v6.d.ts +0 -132
- package/dist/shared/flap/launch-v6.js +0 -137
- package/dist/shared/flap/portal-bundle-merkle/config.d.ts +0 -79
- package/dist/shared/flap/portal-bundle-merkle/config.js +0 -133
- package/dist/shared/flap/portal-bundle-merkle/index.d.ts +0 -14
- package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.d.ts +0 -65
- package/dist/shared/flap/portal-bundle-merkle/swap.d.ts +0 -201
- package/dist/shared/flap/portal-bundle-merkle/swap.js +0 -1359
- package/dist/shared/flap/portal-bundle-merkle/utils.d.ts +0 -89
- package/dist/shared/flap/portal-create-token.d.ts +0 -63
- package/dist/shared/flap/portal-create-token.js +0 -258
- package/dist/shared/four/index.d.ts +0 -7
- package/dist/shared/four/index.js +0 -22
- package/dist/shared/index.d.ts +0 -10
- package/dist/shared/index.js +0 -10
- package/dist/utils/holders-maker.d.ts +0 -154
- package/dist/utils/holders-maker.js +0 -945
- package/dist/utils/pcs-infinity-cl.d.ts +0 -65
- package/dist/utils/pcs-infinity-cl.js +0 -426
- package/dist/utils/private-sale.d.ts +0 -90
- /package/dist/{shared/abis → abis/contracts}/TokenManager.json +0 -0
- /package/dist/{shared/abis → abis/contracts}/TokenManagerHelper3.json +0 -0
- /package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/swap-internal.d.ts +0 -0
- /package/dist/{shared/flap/portal-bundle-merkle/types.js → bundle/four-meme/types/buy-first.js} +0 -0
- /package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/types.js +0 -0
- /package/dist/{shared → core}/clients/emitservice.d.ts +0 -0
- /package/dist/{shared → core}/constants/profit.d.ts +0 -0
- /package/dist/{shared → core}/constants/profit.js +0 -0
- /package/dist/{dex → domains/dex}/index.d.ts +0 -0
- /package/dist/{dex → domains/dex}/index.js +0 -0
- /package/dist/{shared → domains}/flap/abi.d.ts +0 -0
- /package/dist/{shared → domains}/flap/curve.d.ts +0 -0
- /package/dist/{shared → domains}/flap/ipfs.d.ts +0 -0
- /package/dist/{shared → domains}/flap/ipfs.js +0 -0
- /package/dist/{shared → domains}/flap/permit.d.ts +0 -0
- /package/dist/{shared → domains}/flap/portal-bundle-merkle/curve-to-dex.d.ts +0 -0
- /package/dist/{shared → domains}/flap/portal-bundle-merkle/pancake-proxy.d.ts +0 -0
- /package/dist/{shared → domains}/flap/portal-bundle-merkle/private.d.ts +0 -0
- /package/dist/{contracts → domains/four/contracts}/tm1.d.ts +0 -0
- /package/dist/{contracts → domains/four/contracts}/tm2.d.ts +0 -0
|
@@ -6,11 +6,13 @@
|
|
|
6
6
|
* - V3 Router: 0x13f4EA83D0bd40E75C8222255bc855a974568Dd4
|
|
7
7
|
* - V3 Quoter: 0xB048Bbc1Ee6b733FFfCFb9e9CeF7375518e25997
|
|
8
8
|
*/
|
|
9
|
-
import { ethers, Wallet,
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
9
|
+
import { ethers, Wallet, Contract, Interface } from 'ethers';
|
|
10
|
+
import { createSignProvider } from '../sign-context-helpers.js';
|
|
11
|
+
import { NonceManager, getOptimizedGasPrice, getDeadline, encodeV3Path, buildProfitHopTransactions, PROFIT_HOP_COUNT, } from '../../utils/bundle-helpers.js';
|
|
12
|
+
import { ADDRESSES, BLOCKRAZOR_BUILDER_EOA, CHAINS } from '../../core/constants/index.js';
|
|
13
|
+
import { MULTICALL3_ABI, V2_ROUTER_ABI, V3_ROUTER02_ABI, V3_QUOTER_ABI, ERC20_ABI } from '../../abis/common.js';
|
|
14
|
+
import { getErrorMessageFromUnknown } from '../../core/index.js';
|
|
15
|
+
import { getTxType, getGasPriceConfig, shouldExtractProfit, calculateProfit, calculateBatchProfit, getProfitRecipient, getBribeAmount, } from '../config-helpers.js';
|
|
14
16
|
// ==================== 常量 ====================
|
|
15
17
|
const MULTICALL3_ADDRESS = ADDRESSES.BSC.Multicall3;
|
|
16
18
|
const WBNB_ADDRESS = ADDRESSES.BSC.WBNB;
|
|
@@ -47,9 +49,6 @@ async function getTokenDecimals(tokenAddress, provider) {
|
|
|
47
49
|
return 18;
|
|
48
50
|
}
|
|
49
51
|
}
|
|
50
|
-
/**
|
|
51
|
-
* 判断是否需要发送 BNB
|
|
52
|
-
*/
|
|
53
52
|
function needSendBNB(routeType, params) {
|
|
54
53
|
if (routeType === 'v2' && params.v2Path && params.v2Path[0].toLowerCase() === WBNB_ADDRESS.toLowerCase()) {
|
|
55
54
|
return true;
|
|
@@ -57,7 +56,9 @@ function needSendBNB(routeType, params) {
|
|
|
57
56
|
if (routeType === 'v3-single' && params.v3TokenIn && params.v3TokenIn.toLowerCase() === WBNB_ADDRESS.toLowerCase()) {
|
|
58
57
|
return true;
|
|
59
58
|
}
|
|
60
|
-
if (routeType === 'v3-multi' &&
|
|
59
|
+
if (routeType === 'v3-multi' &&
|
|
60
|
+
params.v3ExactTokenIn &&
|
|
61
|
+
params.v3ExactTokenIn.toLowerCase() === WBNB_ADDRESS.toLowerCase()) {
|
|
61
62
|
return true;
|
|
62
63
|
}
|
|
63
64
|
return false;
|
|
@@ -75,8 +76,7 @@ async function buildV2Transactions(routers, wallets, amountsWei, minOuts, path,
|
|
|
75
76
|
path, // path
|
|
76
77
|
wallets[i].address, // to
|
|
77
78
|
deadline, // deadline
|
|
78
|
-
{ value: amountsWei[i] }
|
|
79
|
-
);
|
|
79
|
+
{ value: amountsWei[i] });
|
|
80
80
|
}
|
|
81
81
|
else {
|
|
82
82
|
// ✅ 卖出:Token → BNB,使用 swapExactTokensForETHSupportingFeeOnTransferTokens
|
|
@@ -84,8 +84,7 @@ async function buildV2Transactions(routers, wallets, amountsWei, minOuts, path,
|
|
|
84
84
|
minOuts[i], // amountOutMin
|
|
85
85
|
path, // path
|
|
86
86
|
wallets[i].address, // to
|
|
87
|
-
deadline
|
|
88
|
-
);
|
|
87
|
+
deadline);
|
|
89
88
|
}
|
|
90
89
|
}));
|
|
91
90
|
}
|
|
@@ -98,15 +97,17 @@ async function buildV3SingleTransactions(routers, wallets, tokenIn, tokenOut, fe
|
|
|
98
97
|
return Promise.all(routers.map(async (router, i) => {
|
|
99
98
|
const isTokenOutWBNB = tokenOut.toLowerCase() === WBNB_ADDRESS.toLowerCase();
|
|
100
99
|
// ✅ 构建 exactInputSingle calldata
|
|
101
|
-
const exactInputSingleData = v3RouterIface.encodeFunctionData('exactInputSingle', [
|
|
100
|
+
const exactInputSingleData = v3RouterIface.encodeFunctionData('exactInputSingle', [
|
|
101
|
+
{
|
|
102
102
|
tokenIn: tokenIn,
|
|
103
103
|
tokenOut: tokenOut,
|
|
104
104
|
fee: fee,
|
|
105
105
|
recipient: isTokenOutWBNB ? PANCAKE_V3_ROUTER_ADDRESS : wallets[i].address, // 如果输出是 WBNB,先发给 Router
|
|
106
106
|
amountIn: amountsWei[i],
|
|
107
107
|
amountOutMinimum: minOuts[i],
|
|
108
|
-
sqrtPriceLimitX96: 0n
|
|
109
|
-
}
|
|
108
|
+
sqrtPriceLimitX96: 0n,
|
|
109
|
+
},
|
|
110
|
+
]);
|
|
110
111
|
if (isBuy && needBNB) {
|
|
111
112
|
// ✅ 买入:BNB → Token,只需要 exactInputSingle
|
|
112
113
|
// 通过 multicall 包装,传入 deadline 和 ETH value
|
|
@@ -116,7 +117,7 @@ async function buildV3SingleTransactions(routers, wallets, tokenIn, tokenOut, fe
|
|
|
116
117
|
// ✅ 卖出:Token → WBNB → BNB,需要 exactInputSingle + unwrapWETH9
|
|
117
118
|
const unwrapData = v3RouterIface.encodeFunctionData('unwrapWETH9', [
|
|
118
119
|
minOuts[i], // amountMinimum
|
|
119
|
-
wallets[i].address // recipient
|
|
120
|
+
wallets[i].address, // recipient
|
|
120
121
|
]);
|
|
121
122
|
return router.multicall.populateTransaction(deadline, [exactInputSingleData, unwrapData]);
|
|
122
123
|
}
|
|
@@ -158,40 +159,43 @@ async function buildV3MultiHopTransactions(routers, wallets, tokens, fees, amoun
|
|
|
158
159
|
return Promise.all(routers.map(async (router, i) => {
|
|
159
160
|
if (isBuy && needBNB) {
|
|
160
161
|
// ✅ 买入:BNB → ... → Token
|
|
161
|
-
const swapData = v3RouterIface.encodeFunctionData('exactInput', [
|
|
162
|
+
const swapData = v3RouterIface.encodeFunctionData('exactInput', [
|
|
163
|
+
{
|
|
162
164
|
path: forwardPath,
|
|
163
165
|
recipient: wallets[i].address,
|
|
164
166
|
amountIn: amountsWei[i],
|
|
165
|
-
amountOutMinimum: minOuts[i]
|
|
166
|
-
}
|
|
167
|
+
amountOutMinimum: minOuts[i],
|
|
168
|
+
},
|
|
169
|
+
]);
|
|
167
170
|
return router.multicall.populateTransaction(deadline, [swapData], { value: amountsWei[i] });
|
|
168
171
|
}
|
|
169
172
|
else if (!isBuy) {
|
|
170
173
|
// ✅ 卖出:Token → ... → BNB
|
|
171
|
-
const swapData = v3RouterIface.encodeFunctionData('exactInput', [
|
|
174
|
+
const swapData = v3RouterIface.encodeFunctionData('exactInput', [
|
|
175
|
+
{
|
|
172
176
|
path: reversePath,
|
|
173
177
|
recipient: isTokenOutWBNB ? PANCAKE_V3_ROUTER_ADDRESS : wallets[i].address,
|
|
174
178
|
amountIn: amountsWei[i],
|
|
175
|
-
amountOutMinimum: minOuts[i]
|
|
176
|
-
}
|
|
179
|
+
amountOutMinimum: minOuts[i],
|
|
180
|
+
},
|
|
181
|
+
]);
|
|
177
182
|
if (isTokenOutWBNB) {
|
|
178
183
|
// 需要 unwrapWETH9
|
|
179
|
-
const unwrapData = v3RouterIface.encodeFunctionData('unwrapWETH9', [
|
|
180
|
-
minOuts[i],
|
|
181
|
-
wallets[i].address
|
|
182
|
-
]);
|
|
184
|
+
const unwrapData = v3RouterIface.encodeFunctionData('unwrapWETH9', [minOuts[i], wallets[i].address]);
|
|
183
185
|
return router.multicall.populateTransaction(deadline, [swapData, unwrapData]);
|
|
184
186
|
}
|
|
185
187
|
return router.multicall.populateTransaction(deadline, [swapData]);
|
|
186
188
|
}
|
|
187
189
|
else {
|
|
188
190
|
// Token → Token(不需要 BNB)
|
|
189
|
-
const swapData = v3RouterIface.encodeFunctionData('exactInput', [
|
|
191
|
+
const swapData = v3RouterIface.encodeFunctionData('exactInput', [
|
|
192
|
+
{
|
|
190
193
|
path: forwardPath,
|
|
191
194
|
recipient: wallets[i].address,
|
|
192
195
|
amountIn: amountsWei[i],
|
|
193
|
-
amountOutMinimum: minOuts[i]
|
|
194
|
-
}
|
|
196
|
+
amountOutMinimum: minOuts[i],
|
|
197
|
+
},
|
|
198
|
+
]);
|
|
195
199
|
return router.multicall.populateTransaction(deadline, [swapData]);
|
|
196
200
|
}
|
|
197
201
|
}));
|
|
@@ -215,10 +219,10 @@ async function batchGetV2Quotes(provider, amountsWei, v2Path) {
|
|
|
215
219
|
try {
|
|
216
220
|
const v2RouterIface = new Interface(V2_ROUTER_ABI);
|
|
217
221
|
const multicall = new Contract(MULTICALL3_ADDRESS, MULTICALL3_ABI, provider);
|
|
218
|
-
const calls = amountsWei.map(amount => ({
|
|
222
|
+
const calls = amountsWei.map((amount) => ({
|
|
219
223
|
target: PANCAKE_V2_ROUTER_ADDRESS,
|
|
220
224
|
allowFailure: true,
|
|
221
|
-
callData: v2RouterIface.encodeFunctionData('getAmountsOut', [amount, v2Path])
|
|
225
|
+
callData: v2RouterIface.encodeFunctionData('getAmountsOut', [amount, v2Path]),
|
|
222
226
|
}));
|
|
223
227
|
const results = await multicall.aggregate3.staticCall(calls);
|
|
224
228
|
return results.map((r) => {
|
|
@@ -266,7 +270,7 @@ export async function approveFourPancakeProxy(params) {
|
|
|
266
270
|
const { privateKey, tokenAddress, amount, rpcUrl, routeType } = params;
|
|
267
271
|
// 根据 routeType 选择授权目标
|
|
268
272
|
const approvalTarget = getApprovalTarget(routeType || 'v2');
|
|
269
|
-
const provider =
|
|
273
|
+
const provider = createSignProvider(rpcUrl, 56, 'BSC');
|
|
270
274
|
const wallet = new Wallet(privateKey, provider);
|
|
271
275
|
const token = new Contract(tokenAddress, ERC20_ABI, wallet);
|
|
272
276
|
const decimals = await getTokenDecimals(tokenAddress, provider);
|
|
@@ -279,7 +283,7 @@ export async function approveFourPancakeProxy(params) {
|
|
|
279
283
|
const receipt = await tx.wait();
|
|
280
284
|
return {
|
|
281
285
|
txHash: receipt.hash,
|
|
282
|
-
approved: receipt.status === 1
|
|
286
|
+
approved: receipt.status === 1,
|
|
283
287
|
};
|
|
284
288
|
}
|
|
285
289
|
/**
|
|
@@ -292,16 +296,13 @@ export async function approveFourPancakeProxyBatch(params) {
|
|
|
292
296
|
}
|
|
293
297
|
// 根据 routeType 选择授权目标
|
|
294
298
|
const approvalTarget = getApprovalTarget(routeType || 'v2');
|
|
295
|
-
const provider =
|
|
296
|
-
chainId: 56,
|
|
297
|
-
name: 'BSC'
|
|
298
|
-
});
|
|
299
|
+
const provider = createSignProvider(config.rpcUrl, 56, 'BSC');
|
|
299
300
|
const gasPrice = await getOptimizedGasPrice(provider, getGasPriceConfig(config));
|
|
300
301
|
const decimals = await getTokenDecimals(tokenAddress, provider);
|
|
301
|
-
const wallets = privateKeys.map(k => new Wallet(k, provider));
|
|
302
|
-
const amountsBigInt = amounts.map(a => a === 'max' ? ethers.MaxUint256 : ethers.parseUnits(a, decimals));
|
|
302
|
+
const wallets = privateKeys.map((k) => new Wallet(k, provider));
|
|
303
|
+
const amountsBigInt = amounts.map((a) => (a === 'max' ? ethers.MaxUint256 : ethers.parseUnits(a, decimals)));
|
|
303
304
|
// 检查现有授权
|
|
304
|
-
const tokens = wallets.map(w => new Contract(tokenAddress, ERC20_ABI, w));
|
|
305
|
+
const tokens = wallets.map((w) => new Contract(tokenAddress, ERC20_ABI, w));
|
|
305
306
|
const allowances = await Promise.all(tokens.map((token, i) => token.allowance(wallets[i].address, approvalTarget)));
|
|
306
307
|
// 只授权不足的
|
|
307
308
|
const needApproval = wallets.filter((_, i) => allowances[i] < amountsBigInt[i]);
|
|
@@ -311,15 +312,15 @@ export async function approveFourPancakeProxyBatch(params) {
|
|
|
311
312
|
success: true,
|
|
312
313
|
approvedCount: 0,
|
|
313
314
|
signedTransactions: [],
|
|
314
|
-
message: '所有钱包已授权'
|
|
315
|
+
message: '所有钱包已授权',
|
|
315
316
|
};
|
|
316
317
|
}
|
|
317
318
|
// 构建授权交易
|
|
318
|
-
const needApprovalTokens = needApproval.map(w => new Contract(tokenAddress, ERC20_ABI, w));
|
|
319
|
+
const needApprovalTokens = needApproval.map((w) => new Contract(tokenAddress, ERC20_ABI, w));
|
|
319
320
|
const unsignedApprovals = await Promise.all(needApprovalTokens.map((token, i) => token.approve.populateTransaction(approvalTarget, needApprovalAmounts[i])));
|
|
320
321
|
const finalGasLimit = getGasLimit(config);
|
|
321
322
|
const nonceManager = new NonceManager(provider);
|
|
322
|
-
const nonces = await Promise.all(needApproval.map(w => nonceManager.getNextNonce(w)));
|
|
323
|
+
const nonces = await Promise.all(needApproval.map((w) => nonceManager.getNextNonce(w)));
|
|
323
324
|
const txType = getTxType(config);
|
|
324
325
|
const signedTxs = await Promise.all(unsignedApprovals.map((unsigned, i) => needApproval[i].signTransaction({
|
|
325
326
|
...unsigned,
|
|
@@ -327,8 +328,8 @@ export async function approveFourPancakeProxyBatch(params) {
|
|
|
327
328
|
nonce: nonces[i],
|
|
328
329
|
gasLimit: finalGasLimit,
|
|
329
330
|
gasPrice,
|
|
330
|
-
chainId:
|
|
331
|
-
type: txType
|
|
331
|
+
chainId: CHAINS.BSC.chainId,
|
|
332
|
+
type: txType,
|
|
332
333
|
})));
|
|
333
334
|
nonceManager.clearTemp();
|
|
334
335
|
// 广播交易
|
|
@@ -340,7 +341,7 @@ export async function approveFourPancakeProxyBatch(params) {
|
|
|
340
341
|
txHashes.push(tx.hash);
|
|
341
342
|
}
|
|
342
343
|
catch (error) {
|
|
343
|
-
errors.push(`钱包 ${i} 授权失败: ${error
|
|
344
|
+
errors.push(`钱包 ${i} 授权失败: ${getErrorMessageFromUnknown(error)}`);
|
|
344
345
|
}
|
|
345
346
|
}
|
|
346
347
|
const successCount = txHashes.length;
|
|
@@ -350,7 +351,7 @@ export async function approveFourPancakeProxyBatch(params) {
|
|
|
350
351
|
approvedCount: successCount,
|
|
351
352
|
signedTransactions: signedTxs,
|
|
352
353
|
txHashes,
|
|
353
|
-
message: `授权成功,共 ${successCount} 个钱包${errors.length > 0 ? `,${errors.length} 个失败` : ''}
|
|
354
|
+
message: `授权成功,共 ${successCount} 个钱包${errors.length > 0 ? `,${errors.length} 个失败` : ''}`,
|
|
354
355
|
};
|
|
355
356
|
}
|
|
356
357
|
else {
|
|
@@ -359,7 +360,7 @@ export async function approveFourPancakeProxyBatch(params) {
|
|
|
359
360
|
approvedCount: 0,
|
|
360
361
|
signedTransactions: signedTxs,
|
|
361
362
|
txHashes: [],
|
|
362
|
-
message: `授权失败: ${errors.join('; ')}
|
|
363
|
+
message: `授权失败: ${errors.join('; ')}`,
|
|
363
364
|
};
|
|
364
365
|
}
|
|
365
366
|
}
|
|
@@ -371,15 +372,12 @@ export async function fourPancakeProxyBatchBuyMerkle(params) {
|
|
|
371
372
|
if (privateKeys.length === 0 || buyAmounts.length !== privateKeys.length) {
|
|
372
373
|
throw new Error('Private key count and buy amount count must match');
|
|
373
374
|
}
|
|
374
|
-
const provider =
|
|
375
|
-
chainId: 56,
|
|
376
|
-
name: 'BSC'
|
|
377
|
-
});
|
|
375
|
+
const provider = createSignProvider(config.rpcUrl, 56, 'BSC');
|
|
378
376
|
const txType = getTxType(config);
|
|
379
|
-
const buyers = privateKeys.map(k => new Wallet(k, provider));
|
|
380
|
-
const originalAmountsWei = buyAmounts.map(a => ethers.parseEther(a));
|
|
381
|
-
const extractProfit = shouldExtractProfit(
|
|
382
|
-
const { totalProfit, remainingAmounts } = calculateBatchProfit(originalAmountsWei
|
|
377
|
+
const buyers = privateKeys.map((k) => new Wallet(k, provider));
|
|
378
|
+
const originalAmountsWei = buyAmounts.map((a) => ethers.parseEther(a));
|
|
379
|
+
const extractProfit = shouldExtractProfit();
|
|
380
|
+
const { totalProfit, remainingAmounts } = calculateBatchProfit(originalAmountsWei);
|
|
383
381
|
const actualAmountsWei = remainingAmounts;
|
|
384
382
|
const finalGasLimit = getGasLimit(config);
|
|
385
383
|
const nonceManager = new NonceManager(provider);
|
|
@@ -387,7 +385,7 @@ export async function fourPancakeProxyBatchBuyMerkle(params) {
|
|
|
387
385
|
const needBribeTx = bribeAmount > 0n;
|
|
388
386
|
const [gasPrice, tokenDecimals] = await Promise.all([
|
|
389
387
|
getOptimizedGasPrice(provider, getGasPriceConfig(config)),
|
|
390
|
-
getTokenDecimals(tokenAddress, provider)
|
|
388
|
+
getTokenDecimals(tokenAddress, provider),
|
|
391
389
|
]);
|
|
392
390
|
// 计算 nonce 分配
|
|
393
391
|
const needProfitTx = extractProfit && totalProfit > 0n;
|
|
@@ -409,7 +407,7 @@ export async function fourPancakeProxyBatchBuyMerkle(params) {
|
|
|
409
407
|
// 计算 minOutputAmounts
|
|
410
408
|
let minOuts;
|
|
411
409
|
if (params.minOutputAmounts && params.minOutputAmounts.length === buyers.length) {
|
|
412
|
-
minOuts = params.minOutputAmounts.map(m => typeof m === 'string' ? ethers.parseUnits(m, tokenDecimals) : m);
|
|
410
|
+
minOuts = params.minOutputAmounts.map((m) => (typeof m === 'string' ? ethers.parseUnits(m, tokenDecimals) : m));
|
|
413
411
|
}
|
|
414
412
|
else {
|
|
415
413
|
minOuts = new Array(buyers.length).fill(0n);
|
|
@@ -422,14 +420,14 @@ export async function fourPancakeProxyBatchBuyMerkle(params) {
|
|
|
422
420
|
if (!params.v2Path || params.v2Path.length < 2) {
|
|
423
421
|
throw new Error('v2Path is required for V2 routing');
|
|
424
422
|
}
|
|
425
|
-
routers = buyers.map(w => new Contract(PANCAKE_V2_ROUTER_ADDRESS, V2_ROUTER_ABI, w));
|
|
423
|
+
routers = buyers.map((w) => new Contract(PANCAKE_V2_ROUTER_ADDRESS, V2_ROUTER_ABI, w));
|
|
426
424
|
unsignedBuys = await buildV2Transactions(routers, buyers, actualAmountsWei, minOuts, params.v2Path, true, needBNB);
|
|
427
425
|
}
|
|
428
426
|
else if (routeType === 'v3-single') {
|
|
429
427
|
if (!params.v3TokenIn || !params.v3Fee) {
|
|
430
428
|
throw new Error('v3TokenIn and v3Fee are required for V3 single-hop');
|
|
431
429
|
}
|
|
432
|
-
routers = buyers.map(w => new Contract(PANCAKE_V3_ROUTER_ADDRESS, V3_ROUTER_ABI, w));
|
|
430
|
+
routers = buyers.map((w) => new Contract(PANCAKE_V3_ROUTER_ADDRESS, V3_ROUTER_ABI, w));
|
|
433
431
|
unsignedBuys = await buildV3SingleTransactions(routers, buyers, params.v3TokenIn, tokenAddress, params.v3Fee, actualAmountsWei, minOuts, true, needBNB);
|
|
434
432
|
}
|
|
435
433
|
else if (routeType === 'v3-multi') {
|
|
@@ -440,7 +438,7 @@ export async function fourPancakeProxyBatchBuyMerkle(params) {
|
|
|
440
438
|
if (!params.v3Fees || params.v3Fees.length !== params.v3Tokens.length - 1) {
|
|
441
439
|
throw new Error(`v3Fees 长度必须等于 v3Tokens 长度 - 1`);
|
|
442
440
|
}
|
|
443
|
-
routers = buyers.map(w => new Contract(PANCAKE_V3_ROUTER_ADDRESS, V3_ROUTER_ABI, w));
|
|
441
|
+
routers = buyers.map((w) => new Contract(PANCAKE_V3_ROUTER_ADDRESS, V3_ROUTER_ABI, w));
|
|
444
442
|
unsignedBuys = await buildV3MultiHopTransactions(routers, buyers, params.v3Tokens, params.v3Fees, actualAmountsWei, minOuts, true, needBNB);
|
|
445
443
|
}
|
|
446
444
|
else {
|
|
@@ -456,8 +454,8 @@ export async function fourPancakeProxyBatchBuyMerkle(params) {
|
|
|
456
454
|
nonce: bribeNonce,
|
|
457
455
|
gasPrice,
|
|
458
456
|
gasLimit: 21000n,
|
|
459
|
-
chainId:
|
|
460
|
-
type: txType
|
|
457
|
+
chainId: CHAINS.BSC.chainId,
|
|
458
|
+
type: txType,
|
|
461
459
|
}));
|
|
462
460
|
}
|
|
463
461
|
// 买入交易
|
|
@@ -468,9 +466,9 @@ export async function fourPancakeProxyBatchBuyMerkle(params) {
|
|
|
468
466
|
nonce: nonces[i],
|
|
469
467
|
gasLimit: finalGasLimit,
|
|
470
468
|
gasPrice,
|
|
471
|
-
chainId:
|
|
469
|
+
chainId: CHAINS.BSC.chainId,
|
|
472
470
|
type: txType,
|
|
473
|
-
value: unsigned.value
|
|
471
|
+
value: unsigned.value,
|
|
474
472
|
}));
|
|
475
473
|
});
|
|
476
474
|
const signedTxs = await Promise.all(signPromises);
|
|
@@ -484,9 +482,9 @@ export async function fourPancakeProxyBatchBuyMerkle(params) {
|
|
|
484
482
|
profitRecipient: getProfitRecipient(),
|
|
485
483
|
hopCount: PROFIT_HOP_COUNT,
|
|
486
484
|
gasPrice,
|
|
487
|
-
chainId:
|
|
485
|
+
chainId: CHAINS.BSC.chainId,
|
|
488
486
|
txType,
|
|
489
|
-
startNonce: profitNonce
|
|
487
|
+
startNonce: profitNonce,
|
|
490
488
|
});
|
|
491
489
|
signedTxs.push(...profitHopResult.signedTransactions);
|
|
492
490
|
profitHopWallets = profitHopResult.hopWallets; // ✅ 收集利润多跳钱包
|
|
@@ -494,7 +492,7 @@ export async function fourPancakeProxyBatchBuyMerkle(params) {
|
|
|
494
492
|
nonceManager.clearTemp();
|
|
495
493
|
return {
|
|
496
494
|
signedTransactions: signedTxs,
|
|
497
|
-
profitHopWallets // ✅ 返回利润多跳钱包
|
|
495
|
+
profitHopWallets, // ✅ 返回利润多跳钱包
|
|
498
496
|
};
|
|
499
497
|
}
|
|
500
498
|
/**
|
|
@@ -505,22 +503,19 @@ export async function fourPancakeProxyBatchSellMerkle(params) {
|
|
|
505
503
|
if (privateKeys.length === 0 || sellAmounts.length !== privateKeys.length) {
|
|
506
504
|
throw new Error('Private key count and sell amount count must match');
|
|
507
505
|
}
|
|
508
|
-
const provider =
|
|
509
|
-
chainId: 56,
|
|
510
|
-
name: 'BSC'
|
|
511
|
-
});
|
|
506
|
+
const provider = createSignProvider(config.rpcUrl, 56, 'BSC');
|
|
512
507
|
const txType = getTxType(config);
|
|
513
|
-
const sellers = privateKeys.map(k => new Wallet(k, provider));
|
|
508
|
+
const sellers = privateKeys.map((k) => new Wallet(k, provider));
|
|
514
509
|
const finalGasLimit = getGasLimit(config);
|
|
515
510
|
const nonceManager = new NonceManager(provider);
|
|
516
|
-
const extractProfit = shouldExtractProfit(
|
|
511
|
+
const extractProfit = shouldExtractProfit();
|
|
517
512
|
const bribeAmount = getBribeAmount(config);
|
|
518
513
|
const needBribeTx = bribeAmount > 0n;
|
|
519
514
|
const [gasPrice, tokenDecimals] = await Promise.all([
|
|
520
515
|
getOptimizedGasPrice(provider, getGasPriceConfig(config)),
|
|
521
|
-
getTokenDecimals(tokenAddress, provider)
|
|
516
|
+
getTokenDecimals(tokenAddress, provider),
|
|
522
517
|
]);
|
|
523
|
-
const amountsWei = sellAmounts.map(a => ethers.parseUnits(a, tokenDecimals));
|
|
518
|
+
const amountsWei = sellAmounts.map((a) => ethers.parseUnits(a, tokenDecimals));
|
|
524
519
|
// 获取报价
|
|
525
520
|
let quotedOutputs;
|
|
526
521
|
if (routeType === 'v2' && params.v2Path && params.v2Path.length >= 2) {
|
|
@@ -535,7 +530,7 @@ export async function fourPancakeProxyBatchSellMerkle(params) {
|
|
|
535
530
|
tokenOut: params.v3TokenOut,
|
|
536
531
|
amountIn: amount,
|
|
537
532
|
fee: params.v3Fee,
|
|
538
|
-
sqrtPriceLimitX96: 0
|
|
533
|
+
sqrtPriceLimitX96: 0,
|
|
539
534
|
});
|
|
540
535
|
return result[0];
|
|
541
536
|
}
|
|
@@ -558,7 +553,7 @@ export async function fourPancakeProxyBatchSellMerkle(params) {
|
|
|
558
553
|
if (extractProfit && quotedOutputs.length > 0) {
|
|
559
554
|
for (let i = 0; i < sellers.length; i++) {
|
|
560
555
|
if (quotedOutputs[i] > 0n) {
|
|
561
|
-
const { profit } = calculateProfit(quotedOutputs[i]
|
|
556
|
+
const { profit } = calculateProfit(quotedOutputs[i]);
|
|
562
557
|
totalProfit += profit;
|
|
563
558
|
if (quotedOutputs[i] > maxRevenue) {
|
|
564
559
|
maxRevenue = quotedOutputs[i];
|
|
@@ -580,9 +575,7 @@ export async function fourPancakeProxyBatchSellMerkle(params) {
|
|
|
580
575
|
maxRevenueNonceCount++;
|
|
581
576
|
const maxRevenueNonces = await nonceManager.getNextNonceBatch(sellers[maxRevenueIndex], maxRevenueNonceCount);
|
|
582
577
|
const otherSellers = sellers.filter((_, i) => i !== maxRevenueIndex);
|
|
583
|
-
const otherNonces = otherSellers.length > 0
|
|
584
|
-
? await nonceManager.getNextNoncesForWallets(otherSellers)
|
|
585
|
-
: [];
|
|
578
|
+
const otherNonces = otherSellers.length > 0 ? await nonceManager.getNextNoncesForWallets(otherSellers) : [];
|
|
586
579
|
let maxRevenueNonceIdx = 0;
|
|
587
580
|
bribeNonce = needBribeTx ? maxRevenueNonces[maxRevenueNonceIdx++] : undefined;
|
|
588
581
|
const maxRevenueSellNonce = maxRevenueNonces[maxRevenueNonceIdx++];
|
|
@@ -609,14 +602,14 @@ export async function fourPancakeProxyBatchSellMerkle(params) {
|
|
|
609
602
|
if (!params.v2Path || params.v2Path.length < 2) {
|
|
610
603
|
throw new Error('v2Path is required for V2 routing');
|
|
611
604
|
}
|
|
612
|
-
routers = sellers.map(w => new Contract(PANCAKE_V2_ROUTER_ADDRESS, V2_ROUTER_ABI, w));
|
|
605
|
+
routers = sellers.map((w) => new Contract(PANCAKE_V2_ROUTER_ADDRESS, V2_ROUTER_ABI, w));
|
|
613
606
|
unsignedSells = await buildV2Transactions(routers, sellers, amountsWei, minOuts, params.v2Path, false, needBNB);
|
|
614
607
|
}
|
|
615
608
|
else if (routeType === 'v3-single') {
|
|
616
609
|
if (!params.v3TokenOut || !params.v3Fee) {
|
|
617
610
|
throw new Error('v3TokenOut and v3Fee are required for V3 single-hop');
|
|
618
611
|
}
|
|
619
|
-
routers = sellers.map(w => new Contract(PANCAKE_V3_ROUTER_ADDRESS, V3_ROUTER_ABI, w));
|
|
612
|
+
routers = sellers.map((w) => new Contract(PANCAKE_V3_ROUTER_ADDRESS, V3_ROUTER_ABI, w));
|
|
620
613
|
unsignedSells = await buildV3SingleTransactions(routers, sellers, tokenAddress, params.v3TokenOut, params.v3Fee, amountsWei, minOuts, false, needBNB);
|
|
621
614
|
}
|
|
622
615
|
else if (routeType === 'v3-multi') {
|
|
@@ -627,7 +620,7 @@ export async function fourPancakeProxyBatchSellMerkle(params) {
|
|
|
627
620
|
if (!params.v3Fees || params.v3Fees.length !== params.v3Tokens.length - 1) {
|
|
628
621
|
throw new Error(`v3Fees 长度必须等于 v3Tokens 长度 - 1`);
|
|
629
622
|
}
|
|
630
|
-
routers = sellers.map(w => new Contract(PANCAKE_V3_ROUTER_ADDRESS, V3_ROUTER_ABI, w));
|
|
623
|
+
routers = sellers.map((w) => new Contract(PANCAKE_V3_ROUTER_ADDRESS, V3_ROUTER_ABI, w));
|
|
631
624
|
unsignedSells = await buildV3MultiHopTransactions(routers, sellers, params.v3Tokens, params.v3Fees, amountsWei, minOuts, false, needBNB);
|
|
632
625
|
}
|
|
633
626
|
else {
|
|
@@ -643,8 +636,8 @@ export async function fourPancakeProxyBatchSellMerkle(params) {
|
|
|
643
636
|
nonce: bribeNonce,
|
|
644
637
|
gasPrice,
|
|
645
638
|
gasLimit: 21000n,
|
|
646
|
-
chainId:
|
|
647
|
-
type: txType
|
|
639
|
+
chainId: CHAINS.BSC.chainId,
|
|
640
|
+
type: txType,
|
|
648
641
|
}));
|
|
649
642
|
}
|
|
650
643
|
// 卖出交易
|
|
@@ -655,9 +648,9 @@ export async function fourPancakeProxyBatchSellMerkle(params) {
|
|
|
655
648
|
nonce: nonces[i],
|
|
656
649
|
gasLimit: finalGasLimit,
|
|
657
650
|
gasPrice,
|
|
658
|
-
chainId:
|
|
651
|
+
chainId: CHAINS.BSC.chainId,
|
|
659
652
|
type: txType,
|
|
660
|
-
value: unsigned.value
|
|
653
|
+
value: unsigned.value,
|
|
661
654
|
}));
|
|
662
655
|
});
|
|
663
656
|
const signedTxs = await Promise.all(signPromises);
|
|
@@ -671,9 +664,9 @@ export async function fourPancakeProxyBatchSellMerkle(params) {
|
|
|
671
664
|
profitRecipient: getProfitRecipient(),
|
|
672
665
|
hopCount: PROFIT_HOP_COUNT,
|
|
673
666
|
gasPrice,
|
|
674
|
-
chainId:
|
|
667
|
+
chainId: CHAINS.BSC.chainId,
|
|
675
668
|
txType,
|
|
676
|
-
startNonce: profitNonce
|
|
669
|
+
startNonce: profitNonce,
|
|
677
670
|
});
|
|
678
671
|
signedTxs.push(...profitHopResult.signedTransactions);
|
|
679
672
|
profitHopWallets = profitHopResult.hopWallets; // ✅ 收集利润多跳钱包
|
|
@@ -681,6 +674,6 @@ export async function fourPancakeProxyBatchSellMerkle(params) {
|
|
|
681
674
|
nonceManager.clearTemp();
|
|
682
675
|
return {
|
|
683
676
|
signedTransactions: signedTxs,
|
|
684
|
-
profitHopWallets // ✅ 返回利润多跳钱包
|
|
677
|
+
profitHopWallets, // ✅ 返回利润多跳钱包
|
|
685
678
|
};
|
|
686
679
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FourPrivateBuySignParams, FourPrivateSellSignParams, FourPrivateTransactionResult, FourBatchPrivateBuySignParams, FourBatchPrivateSellSignParams, FourBatchPrivateMerkleResult } from './types.js';
|
|
1
|
+
import type { FourPrivateBuySignParams, FourPrivateSellSignParams, FourPrivateTransactionResult, FourBatchPrivateBuySignParams, FourBatchPrivateSellSignParams, FourBatchPrivateMerkleResult } from './types.js';
|
|
2
2
|
/**
|
|
3
3
|
* 私有购买(单笔)(仅签名版本 - 不依赖 Merkle)
|
|
4
4
|
* ✅ 精简版:只负责签名交易,不提交到 Merkle
|