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
|
@@ -1,22 +1,24 @@
|
|
|
1
1
|
import { ethers, Wallet, Contract, Interface } from 'ethers';
|
|
2
|
-
import { NonceManager, getOptimizedGasPrice, buildProfitHopTransactions, PROFIT_HOP_COUNT } from '../../utils/bundle-helpers.js';
|
|
3
|
-
import { ADDRESSES,
|
|
4
|
-
import { MULTICALL3_ABI, ERC20_ABI } from '../../
|
|
5
|
-
import { FourClient
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import
|
|
2
|
+
import { NonceManager, getOptimizedGasPrice, buildProfitHopTransactions, PROFIT_HOP_COUNT, } from '../../utils/bundle-helpers.js';
|
|
3
|
+
import { ADDRESSES, ZERO_ADDRESS } from '../../core/constants/index.js';
|
|
4
|
+
import { MULTICALL3_ABI, ERC20_ABI } from '../../abis/common.js';
|
|
5
|
+
import { FourClient } from '../../core/clients/four.js';
|
|
6
|
+
import { getBundleErrorMessage } from '../errors.js';
|
|
7
|
+
import { getTxType, getGasPriceConfig, shouldExtractProfit, calculateProfit, getProfitRecipient, getBribeAmount, } from '../config-helpers.js';
|
|
8
|
+
import { createSignProvider, signBribeTransaction } from '../sign-context-helpers.js';
|
|
9
|
+
import { trySell } from '../../domains/four/contracts/tm.js';
|
|
10
|
+
import { createChainContext, createWallets, loginFourClient, resolveTokenImage } from './core-helpers.js';
|
|
11
|
+
import { TokenManagerHelper3 as Helper3Abi } from '../../abis/contracts/index.js';
|
|
9
12
|
// ✅ 常量
|
|
10
13
|
const MULTICALL3_ADDRESS = ADDRESSES.BSC.Multicall3;
|
|
11
14
|
// ✅ TM2 扩展 ABI(包含创建代币方法和事件)
|
|
12
|
-
import { TM2_ABI as _TM2_ABI } from '../../
|
|
15
|
+
import { TM2_ABI as _TM2_ABI } from '../../abis/common.js';
|
|
13
16
|
const TM2_ABI = [
|
|
14
17
|
..._TM2_ABI,
|
|
15
18
|
'function createToken(bytes args, bytes signature) payable',
|
|
16
|
-
'event TokenCreate(address indexed creator, address indexed token, uint256 timestamp)'
|
|
19
|
+
'event TokenCreate(address indexed creator, address indexed token, uint256 timestamp)',
|
|
17
20
|
];
|
|
18
21
|
const PLATFORM_CREATE_FEE = ethers.parseEther('0.01');
|
|
19
|
-
const CHAIN_ID = 56;
|
|
20
22
|
// ✅ 本地 getGasLimit(FourAnyConfig 支持 bigint gasLimit)
|
|
21
23
|
function getGasLimit(config, defaultGas = 800000) {
|
|
22
24
|
if (config.gasLimit !== undefined) {
|
|
@@ -41,22 +43,13 @@ export async function createTokenWithBundleBuyMerkle(params) {
|
|
|
41
43
|
const { provider, chainId } = createChainContext(rpcUrl);
|
|
42
44
|
const devWallet = new Wallet(creatorKey, provider);
|
|
43
45
|
const fourClient = new FourClient({ baseUrl: config.fourApiUrl });
|
|
44
|
-
// 🔍 检查创建者余额
|
|
45
|
-
const creatorBalance = await provider.getBalance(devWallet.address);
|
|
46
|
-
const estimatedB0 = ethers.parseEther(params.b0Amount ?? '0');
|
|
47
|
-
const estimatedPreSale = tokenInfo.preSale ? ethers.parseEther(tokenInfo.preSale) : 0n;
|
|
48
|
-
// 计算总需求:创建费用 + b0Amount + preSale + 买入金额 + gas预估
|
|
49
|
-
const buyAmount = ethers.parseEther(buyAmounts[0]);
|
|
50
|
-
let totalRequired = PLATFORM_CREATE_FEE + estimatedB0 + estimatedPreSale + buyAmount;
|
|
51
|
-
totalRequired += ethers.parseEther('0.01'); // 预留 0.01 BNB 作为 gas
|
|
52
|
-
if (creatorBalance < totalRequired) {
|
|
53
|
-
console.warn(`⚠️ 余额可能不足!当前: ${ethers.formatEther(creatorBalance)} BNB, 需要: ${ethers.formatEther(totalRequired)} BNB`);
|
|
54
|
-
}
|
|
55
46
|
const accessToken = await loginFourClient(devWallet, fourClient);
|
|
56
47
|
const imgUrl = await resolveTokenImage(fourClient, tokenInfo, accessToken);
|
|
57
48
|
// ✅ 兼容:历史调用可能把 Dev 首买金额塞在 buyAmounts[0],而不是 tokenInfo.preSale
|
|
58
49
|
// Four 官方 API/链上 createArg 使用 preSale 表达“创建者预购金额”
|
|
59
|
-
const effectivePreSaleStr =
|
|
50
|
+
const effectivePreSaleStr = tokenInfo.preSale && String(tokenInfo.preSale).trim().length > 0
|
|
51
|
+
? String(tokenInfo.preSale)
|
|
52
|
+
: String(buyAmounts[0] ?? '0');
|
|
60
53
|
const createResp = await fourClient.createToken(accessToken, {
|
|
61
54
|
name: tokenInfo.name,
|
|
62
55
|
shortName: tokenInfo.symbol,
|
|
@@ -89,20 +82,10 @@ export async function createTokenWithBundleBuyMerkle(params) {
|
|
|
89
82
|
const tmCreateAddr = ADDRESSES.BSC.TokenManagerOriginal;
|
|
90
83
|
// ✅ 单笔交易: 和 Four.meme 官网一样
|
|
91
84
|
// 计算利润
|
|
92
|
-
const extractProfit = shouldExtractProfit(
|
|
85
|
+
const extractProfit = shouldExtractProfit();
|
|
93
86
|
// ✅ 对 create 流程来说,“买入金额”就是 preSale(创建者预购)
|
|
94
87
|
const originalBuyAmount = ethers.parseEther(effectivePreSaleStr || '0');
|
|
95
|
-
|
|
96
|
-
let profitAmount;
|
|
97
|
-
if (extractProfit) {
|
|
98
|
-
const { remaining, profit } = calculateProfit(originalBuyAmount, config);
|
|
99
|
-
actualBuyFunds = remaining;
|
|
100
|
-
profitAmount = profit;
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
actualBuyFunds = originalBuyAmount;
|
|
104
|
-
profitAmount = 0n;
|
|
105
|
-
}
|
|
88
|
+
const profitAmount = extractProfit ? calculateProfit(originalBuyAmount).profit : 0n;
|
|
106
89
|
// ✅ 获取贿赂金额
|
|
107
90
|
const bribeAmount = getBribeAmount(config);
|
|
108
91
|
const needBribeTx = bribeAmount > 0n;
|
|
@@ -113,21 +96,14 @@ export async function createTokenWithBundleBuyMerkle(params) {
|
|
|
113
96
|
// 不要把“其它买入金额”额外塞进 msg.value,否则会被合约退回,造成“看起来没买到”的误解。
|
|
114
97
|
const valueWei = PLATFORM_CREATE_FEE + b0AmountWei + preSaleWei;
|
|
115
98
|
const tmCreate = new ethers.Contract(tmCreateAddr, TM2_ABI, devWallet);
|
|
116
|
-
const createTxUnsigned = await tmCreate.createToken.populateTransaction(createResp.createArg, createResp.signature, {
|
|
99
|
+
const createTxUnsigned = await tmCreate.createToken.populateTransaction(createResp.createArg, createResp.signature, {
|
|
100
|
+
value: valueWei,
|
|
101
|
+
});
|
|
117
102
|
// ✅ 贿赂交易放在首位(由 devWallet 发送)
|
|
118
103
|
let bribeNonce;
|
|
119
104
|
if (needBribeTx) {
|
|
120
105
|
bribeNonce = await nonceManager.getNextNonce(devWallet);
|
|
121
|
-
|
|
122
|
-
to: BLOCKRAZOR_BUILDER_EOA,
|
|
123
|
-
value: bribeAmount,
|
|
124
|
-
nonce: bribeNonce,
|
|
125
|
-
gasPrice,
|
|
126
|
-
gasLimit: 21000n,
|
|
127
|
-
chainId,
|
|
128
|
-
type: txType
|
|
129
|
-
});
|
|
130
|
-
signedTxs.push(bribeTx);
|
|
106
|
+
signedTxs.push(await signBribeTransaction(devWallet, bribeAmount, bribeNonce, gasPrice, chainId, txType));
|
|
131
107
|
}
|
|
132
108
|
const createTxRequest = {
|
|
133
109
|
...createTxUnsigned,
|
|
@@ -137,7 +113,7 @@ export async function createTokenWithBundleBuyMerkle(params) {
|
|
|
137
113
|
gasPrice,
|
|
138
114
|
chainId,
|
|
139
115
|
type: getTxType(config),
|
|
140
|
-
value: valueWei
|
|
116
|
+
value: valueWei,
|
|
141
117
|
};
|
|
142
118
|
signedTxs.push(await devWallet.signTransaction(createTxRequest));
|
|
143
119
|
// ✅ 利润多跳转账(强制 2 跳中转)
|
|
@@ -153,7 +129,7 @@ export async function createTokenWithBundleBuyMerkle(params) {
|
|
|
153
129
|
gasPrice,
|
|
154
130
|
chainId,
|
|
155
131
|
txType,
|
|
156
|
-
startNonce: profitNonce
|
|
132
|
+
startNonce: profitNonce,
|
|
157
133
|
});
|
|
158
134
|
signedTxs.push(...profitHopResult.signedTransactions);
|
|
159
135
|
profitHopWallets = profitHopResult.hopWallets; // ✅ 收集利润多跳钱包
|
|
@@ -161,23 +137,25 @@ export async function createTokenWithBundleBuyMerkle(params) {
|
|
|
161
137
|
nonceManager.clearTemp();
|
|
162
138
|
// ⚠️ 只返回签名交易,不提交
|
|
163
139
|
// 构建元数据
|
|
164
|
-
const metadata = extractProfit && profitAmount > 0n
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
140
|
+
const metadata = extractProfit && profitAmount > 0n
|
|
141
|
+
? {
|
|
142
|
+
totalBuyAmount: ethers.formatEther(originalBuyAmount),
|
|
143
|
+
profitAmount: ethers.formatEther(profitAmount),
|
|
144
|
+
profitRecipient: getProfitRecipient(),
|
|
145
|
+
buyerCount: 1,
|
|
146
|
+
}
|
|
147
|
+
: undefined;
|
|
170
148
|
return {
|
|
171
149
|
signedTransactions: signedTxs,
|
|
172
150
|
tokenAddress: ZERO_ADDRESS, // ⚠️ 占位符,实际地址需要等交易确认后从事件解析
|
|
173
151
|
profitHopWallets, // ✅ 返回利润多跳钱包
|
|
174
|
-
metadata
|
|
152
|
+
metadata,
|
|
175
153
|
};
|
|
176
154
|
}
|
|
177
155
|
export async function batchBuyWithBundleMerkle(params) {
|
|
178
156
|
const { privateKeys, buyAmounts, tokenAddress, config } = params;
|
|
179
157
|
if (privateKeys.length === 0 || buyAmounts.length !== privateKeys.length) {
|
|
180
|
-
throw new Error(
|
|
158
|
+
throw new Error(getBundleErrorMessage('KEY_AMOUNT_MISMATCH'));
|
|
181
159
|
}
|
|
182
160
|
const { provider, chainId } = createChainContext(config.rpcUrl);
|
|
183
161
|
const txType = getTxType(config);
|
|
@@ -185,7 +163,7 @@ export async function batchBuyWithBundleMerkle(params) {
|
|
|
185
163
|
// ✅ 优化:并行初始化 nonceManager 和获取 gasPrice
|
|
186
164
|
const [nonceManager, gasPrice] = await Promise.all([
|
|
187
165
|
Promise.resolve(new NonceManager(provider)),
|
|
188
|
-
getOptimizedGasPrice(provider, getGasPriceConfig(config))
|
|
166
|
+
getOptimizedGasPrice(provider, getGasPriceConfig(config)),
|
|
189
167
|
]);
|
|
190
168
|
const buyFlow = await executeBuyFlow({
|
|
191
169
|
wallets: buyers,
|
|
@@ -198,19 +176,19 @@ export async function batchBuyWithBundleMerkle(params) {
|
|
|
198
176
|
gasPrice,
|
|
199
177
|
chainId,
|
|
200
178
|
profitMode: { type: 'aggregated', payer: buyers[0] },
|
|
201
|
-
txType
|
|
179
|
+
txType,
|
|
202
180
|
});
|
|
203
181
|
nonceManager.clearTemp();
|
|
204
182
|
return {
|
|
205
183
|
signedTransactions: buyFlow.signedTxs,
|
|
206
184
|
profitHopWallets: buyFlow.profitHopWallets, // ✅ 返回利润多跳钱包
|
|
207
|
-
metadata: buyFlow.metadata
|
|
185
|
+
metadata: buyFlow.metadata,
|
|
208
186
|
};
|
|
209
187
|
}
|
|
210
188
|
export async function batchSellWithBundleMerkle(params) {
|
|
211
189
|
const { privateKeys, sellAmounts, tokenAddress, minOutputAmounts, config } = params;
|
|
212
190
|
if (privateKeys.length === 0 || sellAmounts.length !== privateKeys.length) {
|
|
213
|
-
throw new Error(
|
|
191
|
+
throw new Error(getBundleErrorMessage('SELL_KEY_AMOUNT_MISMATCH'));
|
|
214
192
|
}
|
|
215
193
|
const { provider, chainId } = createChainContext(config.rpcUrl);
|
|
216
194
|
const txType = getTxType(config);
|
|
@@ -218,7 +196,7 @@ export async function batchSellWithBundleMerkle(params) {
|
|
|
218
196
|
// ✅ 优化:并行初始化 nonceManager 和获取 gasPrice
|
|
219
197
|
const [nonceManager, gasPrice] = await Promise.all([
|
|
220
198
|
Promise.resolve(new NonceManager(provider)),
|
|
221
|
-
getOptimizedGasPrice(provider, getGasPriceConfig(config))
|
|
199
|
+
getOptimizedGasPrice(provider, getGasPriceConfig(config)),
|
|
222
200
|
]);
|
|
223
201
|
const sellFlow = await executeSellFlow({
|
|
224
202
|
wallets: sellers,
|
|
@@ -232,56 +210,18 @@ export async function batchSellWithBundleMerkle(params) {
|
|
|
232
210
|
gasPrice,
|
|
233
211
|
chainId,
|
|
234
212
|
rpcUrl: config.rpcUrl,
|
|
235
|
-
txType
|
|
213
|
+
txType,
|
|
236
214
|
});
|
|
237
215
|
nonceManager.clearTemp();
|
|
238
216
|
return {
|
|
239
217
|
signedTransactions: sellFlow.signedTxs,
|
|
240
|
-
profitHopWallets: sellFlow.profitHopWallets // ✅ 返回利润多跳钱包
|
|
218
|
+
profitHopWallets: sellFlow.profitHopWallets, // ✅ 返回利润多跳钱包
|
|
241
219
|
};
|
|
242
220
|
}
|
|
243
|
-
function createChainContext(rpcUrl) {
|
|
244
|
-
const provider = new ethers.JsonRpcProvider(rpcUrl, {
|
|
245
|
-
chainId: CHAIN_ID,
|
|
246
|
-
name: 'BSC'
|
|
247
|
-
});
|
|
248
|
-
return { provider, chainId: CHAIN_ID };
|
|
249
|
-
}
|
|
250
|
-
function createWallets(privateKeys, provider) {
|
|
251
|
-
return privateKeys.map((key) => new Wallet(key, provider));
|
|
252
|
-
}
|
|
253
|
-
async function loginFourClient(wallet, fourClient) {
|
|
254
|
-
const nonce = await fourClient.generateNonce({
|
|
255
|
-
accountAddress: wallet.address,
|
|
256
|
-
verifyType: 'LOGIN',
|
|
257
|
-
networkCode: 'BSC'
|
|
258
|
-
});
|
|
259
|
-
const loginSignature = await wallet.signMessage(buildLoginMessage(nonce));
|
|
260
|
-
return fourClient.loginDex({
|
|
261
|
-
region: 'WEB',
|
|
262
|
-
langType: 'EN',
|
|
263
|
-
verifyInfo: {
|
|
264
|
-
address: wallet.address,
|
|
265
|
-
networkCode: 'BSC',
|
|
266
|
-
signature: loginSignature,
|
|
267
|
-
verifyType: 'LOGIN'
|
|
268
|
-
},
|
|
269
|
-
walletName: 'MetaMask'
|
|
270
|
-
});
|
|
271
|
-
}
|
|
272
|
-
async function resolveTokenImage(fourClient, tokenInfo, accessToken) {
|
|
273
|
-
if (tokenInfo.imageUrl) {
|
|
274
|
-
return tokenInfo.imageUrl;
|
|
275
|
-
}
|
|
276
|
-
if (tokenInfo.imageFile) {
|
|
277
|
-
return fourClient.uploadImage(accessToken, tokenInfo.imageFile);
|
|
278
|
-
}
|
|
279
|
-
throw new Error(getErrorMessage('IMAGE_REQUIRED'));
|
|
280
|
-
}
|
|
281
221
|
async function executeBuyFlow(options) {
|
|
282
|
-
const { wallets, buyAmounts, tokenAddress, config, provider, nonceManager, contractAddress, gasPrice, chainId, profitMode, txType } = options;
|
|
283
|
-
const extractProfit = shouldExtractProfit(
|
|
284
|
-
const analysis = analyzeBuyFunds(buyAmounts,
|
|
222
|
+
const { wallets, buyAmounts, tokenAddress, config, provider, nonceManager, contractAddress, gasPrice, chainId, profitMode, txType, } = options;
|
|
223
|
+
const extractProfit = shouldExtractProfit();
|
|
224
|
+
const analysis = analyzeBuyFunds(buyAmounts, extractProfit);
|
|
285
225
|
const finalGasLimit = getGasLimit(config);
|
|
286
226
|
// ✅ 获取贿赂金额
|
|
287
227
|
const bribeAmount = getBribeAmount(config);
|
|
@@ -292,16 +232,7 @@ async function executeBuyFlow(options) {
|
|
|
292
232
|
let bribeNonceOffset = 0;
|
|
293
233
|
if (needBribeTx) {
|
|
294
234
|
const bribeNonce = await nonceManager.getNextNonce(payer);
|
|
295
|
-
|
|
296
|
-
to: BLOCKRAZOR_BUILDER_EOA,
|
|
297
|
-
value: bribeAmount,
|
|
298
|
-
nonce: bribeNonce,
|
|
299
|
-
gasPrice,
|
|
300
|
-
gasLimit: 21000n,
|
|
301
|
-
chainId,
|
|
302
|
-
type: txType
|
|
303
|
-
});
|
|
304
|
-
signedTxs.push(bribeTx);
|
|
235
|
+
signedTxs.push(await signBribeTransaction(payer, bribeAmount, bribeNonce, gasPrice, chainId, txType));
|
|
305
236
|
bribeNonceOffset = 1; // payer 的买入交易 nonce 需要偏移
|
|
306
237
|
}
|
|
307
238
|
// ✅ 优化:并行执行 populateBuyTransactions 和批量获取 nonces(JSON-RPC 批量请求)
|
|
@@ -310,13 +241,13 @@ async function executeBuyFlow(options) {
|
|
|
310
241
|
buyers: wallets,
|
|
311
242
|
contractAddress,
|
|
312
243
|
tokenAddress,
|
|
313
|
-
fundsList: analysis.fundsList
|
|
244
|
+
fundsList: analysis.fundsList,
|
|
314
245
|
}),
|
|
315
|
-
nonceManager.getNextNoncesForWallets(wallets) // ✅ 批量获取 nonce
|
|
246
|
+
nonceManager.getNextNoncesForWallets(wallets), // ✅ 批量获取 nonce
|
|
316
247
|
]);
|
|
317
248
|
// ✅ 调整 payer 的 nonce(如果有贿赂交易,需要偏移)
|
|
318
|
-
const payerIndex = wallets.findIndex(w => w.address.toLowerCase() === payer.address.toLowerCase());
|
|
319
|
-
const adjustedNonces = nonces.map((n, i) => i === payerIndex ? n + bribeNonceOffset : n);
|
|
249
|
+
const payerIndex = wallets.findIndex((w) => w.address.toLowerCase() === payer.address.toLowerCase());
|
|
250
|
+
const adjustedNonces = nonces.map((n, i) => (i === payerIndex ? n + bribeNonceOffset : n));
|
|
320
251
|
// ✅ 并行签名所有买入交易
|
|
321
252
|
const signedBuys = await Promise.all(unsignedBuys.map((unsigned, index) => wallets[index].signTransaction({
|
|
322
253
|
...unsigned,
|
|
@@ -326,7 +257,7 @@ async function executeBuyFlow(options) {
|
|
|
326
257
|
gasPrice,
|
|
327
258
|
chainId,
|
|
328
259
|
type: txType,
|
|
329
|
-
value: analysis.fundsList[index]
|
|
260
|
+
value: analysis.fundsList[index],
|
|
330
261
|
})));
|
|
331
262
|
signedTxs.push(...signedBuys);
|
|
332
263
|
// ✅ 利润多跳转账(强制 2 跳中转)
|
|
@@ -342,7 +273,7 @@ async function executeBuyFlow(options) {
|
|
|
342
273
|
gasPrice,
|
|
343
274
|
chainId,
|
|
344
275
|
txType,
|
|
345
|
-
startNonce: profitNonce
|
|
276
|
+
startNonce: profitNonce,
|
|
346
277
|
});
|
|
347
278
|
signedTxs.push(...profitHopResult.signedTransactions);
|
|
348
279
|
profitHopWallets = profitHopResult.hopWallets; // ✅ 收集利润多跳钱包
|
|
@@ -351,10 +282,10 @@ async function executeBuyFlow(options) {
|
|
|
351
282
|
return { signedTxs, metadata, profitHopWallets }; // ✅ 返回利润多跳钱包
|
|
352
283
|
}
|
|
353
284
|
async function executeSellFlow(options) {
|
|
354
|
-
const { wallets, sellAmounts, tokenAddress, minOutputAmounts, config, provider, nonceManager, contractAddress, gasPrice, chainId, rpcUrl, txType } = options;
|
|
285
|
+
const { wallets, sellAmounts, tokenAddress, minOutputAmounts, config, provider, nonceManager, contractAddress, gasPrice, chainId, rpcUrl, txType, } = options;
|
|
355
286
|
const amountsWei = sellAmounts.map((amount) => ethers.parseUnits(amount, 18));
|
|
356
287
|
const finalGasLimit = getGasLimit(config);
|
|
357
|
-
const extractProfit = shouldExtractProfit(
|
|
288
|
+
const extractProfit = shouldExtractProfit();
|
|
358
289
|
// ✅ 获取贿赂金额
|
|
359
290
|
const bribeAmount = getBribeAmount(config);
|
|
360
291
|
const needBribeTx = bribeAmount > 0n;
|
|
@@ -365,41 +296,32 @@ async function executeSellFlow(options) {
|
|
|
365
296
|
sellers: wallets,
|
|
366
297
|
amountsWei,
|
|
367
298
|
rpcUrl,
|
|
368
|
-
tokenAddress
|
|
299
|
+
tokenAddress,
|
|
369
300
|
}),
|
|
370
301
|
ensureSellerBalances({ provider, tokenAddress, sellers: wallets, amountsWei }),
|
|
371
|
-
nonceManager.getNextNoncesForWallets(wallets) // ✅ 批量获取 nonce(JSON-RPC 批量请求)
|
|
302
|
+
nonceManager.getNextNoncesForWallets(wallets), // ✅ 批量获取 nonce(JSON-RPC 批量请求)
|
|
372
303
|
]);
|
|
373
304
|
// ✅ 找出收益最多的钱包作为 payer(贿赂和利润都由它发送)
|
|
374
|
-
const { totalProfit, payer } = summarizeSellProfits(sellOutputs.quotedOutputs, wallets
|
|
305
|
+
const { totalProfit, payer } = summarizeSellProfits(sellOutputs.quotedOutputs, wallets);
|
|
375
306
|
const payerWallet = payer ?? wallets[0];
|
|
376
|
-
const payerIndex = wallets.findIndex(w => w.address.toLowerCase() === payerWallet.address.toLowerCase());
|
|
307
|
+
const payerIndex = wallets.findIndex((w) => w.address.toLowerCase() === payerWallet.address.toLowerCase());
|
|
377
308
|
// ✅ 贿赂交易放在首位
|
|
378
309
|
const signedTxs = [];
|
|
379
310
|
let bribeNonceOffset = 0;
|
|
380
311
|
if (needBribeTx) {
|
|
381
312
|
const bribeNonce = nonces[payerIndex];
|
|
382
|
-
|
|
383
|
-
to: BLOCKRAZOR_BUILDER_EOA,
|
|
384
|
-
value: bribeAmount,
|
|
385
|
-
nonce: bribeNonce,
|
|
386
|
-
gasPrice,
|
|
387
|
-
gasLimit: 21000n,
|
|
388
|
-
chainId,
|
|
389
|
-
type: txType
|
|
390
|
-
});
|
|
391
|
-
signedTxs.push(bribeTx);
|
|
313
|
+
signedTxs.push(await signBribeTransaction(payerWallet, bribeAmount, bribeNonce, gasPrice, chainId, txType));
|
|
392
314
|
bribeNonceOffset = 1;
|
|
393
315
|
}
|
|
394
316
|
// ✅ 调整 payer 的 nonce(如果有贿赂交易,需要偏移)
|
|
395
|
-
const adjustedNonces = nonces.map((n, i) => i === payerIndex ? n + bribeNonceOffset : n);
|
|
317
|
+
const adjustedNonces = nonces.map((n, i) => (i === payerIndex ? n + bribeNonceOffset : n));
|
|
396
318
|
// ✅ 构建未签名交易
|
|
397
319
|
const unsignedSells = await populateSellTransactions({
|
|
398
320
|
sellers: wallets,
|
|
399
321
|
contractAddress,
|
|
400
322
|
tokenAddress,
|
|
401
323
|
amountsWei,
|
|
402
|
-
minOuts: sellOutputs.minOuts
|
|
324
|
+
minOuts: sellOutputs.minOuts,
|
|
403
325
|
});
|
|
404
326
|
// ✅ 并行签名所有卖出交易
|
|
405
327
|
const signedSells = await Promise.all(unsignedSells.map((unsigned, index) => wallets[index].signTransaction({
|
|
@@ -409,7 +331,7 @@ async function executeSellFlow(options) {
|
|
|
409
331
|
gasLimit: finalGasLimit,
|
|
410
332
|
gasPrice,
|
|
411
333
|
chainId,
|
|
412
|
-
type: txType
|
|
334
|
+
type: txType,
|
|
413
335
|
})));
|
|
414
336
|
signedTxs.push(...signedSells);
|
|
415
337
|
// ✅ 利润多跳转账(强制 2 跳中转)
|
|
@@ -423,11 +345,11 @@ async function executeSellFlow(options) {
|
|
|
423
345
|
chainId,
|
|
424
346
|
txType,
|
|
425
347
|
signedTxs,
|
|
426
|
-
baseNonce: adjustedNonces[payerIndex] + 1 // ✅ 传入基础 nonce
|
|
348
|
+
baseNonce: adjustedNonces[payerIndex] + 1, // ✅ 传入基础 nonce
|
|
427
349
|
});
|
|
428
350
|
return { signedTxs, profitHopWallets }; // ✅ 返回利润多跳钱包
|
|
429
351
|
}
|
|
430
|
-
function analyzeBuyFunds(buyAmounts,
|
|
352
|
+
function analyzeBuyFunds(buyAmounts, extractProfit) {
|
|
431
353
|
const fundsList = [];
|
|
432
354
|
const profitList = [];
|
|
433
355
|
let totalProfit = 0n;
|
|
@@ -436,7 +358,7 @@ function analyzeBuyFunds(buyAmounts, config, extractProfit) {
|
|
|
436
358
|
const originalAmount = ethers.parseEther(amount);
|
|
437
359
|
totalBuyAmount += originalAmount;
|
|
438
360
|
if (extractProfit) {
|
|
439
|
-
const { remaining, profit } = calculateProfit(originalAmount
|
|
361
|
+
const { remaining, profit } = calculateProfit(originalAmount);
|
|
440
362
|
fundsList.push(remaining);
|
|
441
363
|
profitList.push(profit);
|
|
442
364
|
totalProfit += profit;
|
|
@@ -451,7 +373,9 @@ function analyzeBuyFunds(buyAmounts, config, extractProfit) {
|
|
|
451
373
|
async function populateBuyTransactions(params) {
|
|
452
374
|
const { buyers, contractAddress, tokenAddress, fundsList } = params;
|
|
453
375
|
const contracts = buyers.map((wallet) => new ethers.Contract(contractAddress, TM2_ABI, wallet));
|
|
454
|
-
return Promise.all(contracts.map((contract, index) => contract.buyTokenAMAP.populateTransaction(0n, tokenAddress, buyers[index].address, fundsList[index], 0n, {
|
|
376
|
+
return Promise.all(contracts.map((contract, index) => contract.buyTokenAMAP.populateTransaction(0n, tokenAddress, buyers[index].address, fundsList[index], 0n, {
|
|
377
|
+
value: fundsList[index],
|
|
378
|
+
})));
|
|
455
379
|
}
|
|
456
380
|
function buildBuyMetadata(extractProfit, totalBuyAmount, totalProfit, buyerCount) {
|
|
457
381
|
if (!extractProfit || totalBuyAmount <= 0n || totalProfit <= 0n) {
|
|
@@ -461,7 +385,7 @@ function buildBuyMetadata(extractProfit, totalBuyAmount, totalProfit, buyerCount
|
|
|
461
385
|
totalBuyAmount: ethers.formatEther(totalBuyAmount),
|
|
462
386
|
profitAmount: ethers.formatEther(totalProfit),
|
|
463
387
|
profitRecipient: getProfitRecipient(),
|
|
464
|
-
buyerCount
|
|
388
|
+
buyerCount,
|
|
465
389
|
};
|
|
466
390
|
}
|
|
467
391
|
/**
|
|
@@ -490,15 +414,15 @@ async function resolveSellOutputs(params) {
|
|
|
490
414
|
}
|
|
491
415
|
}
|
|
492
416
|
// ✅ 使用 Multicall3 批量获取报价
|
|
493
|
-
const provider =
|
|
417
|
+
const provider = createSignProvider(rpcUrl, 56, 'BSC');
|
|
494
418
|
const helper3Address = ADDRESSES.BSC.TokenManagerHelper3;
|
|
495
419
|
const helper3Iface = new Interface(Helper3Abi);
|
|
496
420
|
const multicall = new Contract(MULTICALL3_ADDRESS, MULTICALL3_ABI, provider);
|
|
497
421
|
// 构建批量调用
|
|
498
|
-
const calls = amountsWei.map(amount => ({
|
|
422
|
+
const calls = amountsWei.map((amount) => ({
|
|
499
423
|
target: helper3Address,
|
|
500
424
|
allowFailure: true, // 允许单个失败
|
|
501
|
-
callData: helper3Iface.encodeFunctionData('trySell', [tokenAddress, amount])
|
|
425
|
+
callData: helper3Iface.encodeFunctionData('trySell', [tokenAddress, amount]),
|
|
502
426
|
}));
|
|
503
427
|
try {
|
|
504
428
|
const results = await multicall.aggregate3.staticCall(calls);
|
|
@@ -551,7 +475,7 @@ async function populateSellTransactions(params) {
|
|
|
551
475
|
const contracts = sellers.map((wallet) => new ethers.Contract(contractAddress, TM2_ABI, wallet));
|
|
552
476
|
return Promise.all(contracts.map((contract, index) => contract.sellToken.populateTransaction(0n, tokenAddress, amountsWei[index], minOuts[index])));
|
|
553
477
|
}
|
|
554
|
-
function summarizeSellProfits(quotedOutputs, sellers
|
|
478
|
+
function summarizeSellProfits(quotedOutputs, sellers) {
|
|
555
479
|
let totalProfit = 0n;
|
|
556
480
|
let maxRevenue = 0n;
|
|
557
481
|
let payer;
|
|
@@ -559,7 +483,7 @@ function summarizeSellProfits(quotedOutputs, sellers, config) {
|
|
|
559
483
|
if (output <= 0n) {
|
|
560
484
|
return;
|
|
561
485
|
}
|
|
562
|
-
const { profit } = calculateProfit(output
|
|
486
|
+
const { profit } = calculateProfit(output);
|
|
563
487
|
totalProfit += profit;
|
|
564
488
|
if (output > maxRevenue) {
|
|
565
489
|
maxRevenue = output;
|
|
@@ -574,7 +498,7 @@ async function appendAggregatedProfitTransfer(params) {
|
|
|
574
498
|
return undefined;
|
|
575
499
|
}
|
|
576
500
|
// ✅ 利润多跳转账(强制 2 跳中转)
|
|
577
|
-
const profitNonce = baseNonce ?? await nonceManager.getNextNonce(payer);
|
|
501
|
+
const profitNonce = baseNonce ?? (await nonceManager.getNextNonce(payer));
|
|
578
502
|
const profitHopResult = await buildProfitHopTransactions({
|
|
579
503
|
provider,
|
|
580
504
|
payerWallet: payer,
|
|
@@ -584,7 +508,7 @@ async function appendAggregatedProfitTransfer(params) {
|
|
|
584
508
|
gasPrice,
|
|
585
509
|
chainId,
|
|
586
510
|
txType,
|
|
587
|
-
startNonce: profitNonce
|
|
511
|
+
startNonce: profitNonce,
|
|
588
512
|
});
|
|
589
513
|
signedTxs.push(...profitHopResult.signedTransactions);
|
|
590
514
|
return profitHopResult.hopWallets; // ✅ 返回利润多跳钱包
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* - V3 Router: 0x13f4EA83D0bd40E75C8222255bc855a974568Dd4
|
|
7
7
|
* - V3 Quoter: 0xB048Bbc1Ee6b733FFfCFb9e9CeF7375518e25997
|
|
8
8
|
*/
|
|
9
|
-
import { FourPancakeProxyBatchBuySignParams, FourPancakeProxyBatchBuyResult, FourPancakeProxyBatchSellSignParams, FourPancakeProxyBatchSellResult, FourPancakeProxyApprovalParams, FourPancakeProxyApprovalBatchParams, FourPancakeProxyApprovalBatchResult } from './types.js';
|
|
9
|
+
import type { FourPancakeProxyBatchBuySignParams, FourPancakeProxyBatchBuyResult, FourPancakeProxyBatchSellSignParams, FourPancakeProxyBatchSellResult, FourPancakeProxyApprovalParams, FourPancakeProxyApprovalBatchParams, FourPancakeProxyApprovalBatchResult } from './types.js';
|
|
10
10
|
/**
|
|
11
11
|
* ✅ 授权代币给 PancakeSwap Router(根据 routeType 选择 V2/V3)
|
|
12
12
|
*/
|