four-flap-meme-sdk 2.2.19 → 2.2.20
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/__tests__/subpath-exports.test.d.ts +1 -0
- package/dist/__tests__/subpath-exports.test.js +64 -0
- package/dist/abis/common.d.ts +85 -0
- package/dist/abis/common.js +240 -0
- package/dist/abis/contracts/TaxToken.json +969 -0
- package/dist/abis/contracts/TokenManager.json +836 -0
- package/dist/abis/contracts/TokenManager2.json +136 -0
- package/dist/abis/contracts/TokenManagerHelper3.json +993 -0
- package/dist/abis/contracts/index.d.ts +5 -0
- package/dist/abis/contracts/index.js +5 -0
- 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 +8 -0
- package/dist/abis/index.js +11 -0
- package/dist/bundle-core/__tests__/config-helpers.test.d.ts +1 -0
- package/dist/bundle-core/__tests__/config-helpers.test.js +28 -0
- package/dist/bundle-core/__tests__/facade-parity.test.d.ts +1 -0
- package/dist/bundle-core/__tests__/facade-parity.test.js +33 -0
- package/dist/bundle-core/__tests__/sign-context-helpers.test.d.ts +1 -0
- package/dist/bundle-core/__tests__/sign-context-helpers.test.js +60 -0
- package/dist/bundle-core/__tests__/sign-fixture.test.d.ts +1 -0
- package/dist/bundle-core/__tests__/sign-fixture.test.js +220 -0
- package/dist/bundle-core/__tests__/sign-fixtures.d.ts +10 -0
- package/dist/bundle-core/__tests__/sign-fixtures.js +16 -0
- package/dist/bundle-core/config-helpers.d.ts +37 -0
- package/dist/bundle-core/config-helpers.js +58 -0
- package/dist/bundle-core/errors.d.ts +50 -0
- package/dist/bundle-core/errors.js +38 -0
- package/dist/bundle-core/four-meme/approve-tokenmanager.d.ts +7 -0
- package/dist/bundle-core/four-meme/approve-tokenmanager.js +99 -0
- package/dist/bundle-core/four-meme/core-helpers.d.ts +8 -0
- package/dist/bundle-core/four-meme/core-helpers.js +41 -0
- package/dist/bundle-core/four-meme/core.d.ts +4 -0
- package/dist/bundle-core/four-meme/core.js +515 -0
- package/dist/bundle-core/four-meme/pancake-proxy.d.ts +28 -0
- package/dist/bundle-core/four-meme/pancake-proxy.js +679 -0
- package/dist/bundle-core/four-meme/private.d.ts +27 -0
- package/dist/bundle-core/four-meme/private.js +465 -0
- package/dist/bundle-core/four-meme/sign-context-helpers.d.ts +2 -0
- package/dist/bundle-core/four-meme/sign-context-helpers.js +2 -0
- package/dist/bundle-core/four-meme/swap-buy-first.d.ts +8 -0
- package/dist/bundle-core/four-meme/swap-buy-first.js +456 -0
- package/dist/bundle-core/four-meme/swap-hop-helpers.d.ts +6 -0
- package/dist/bundle-core/four-meme/swap-hop-helpers.js +63 -0
- package/dist/bundle-core/four-meme/swap-internal.d.ts +3 -0
- package/dist/bundle-core/four-meme/swap-internal.js +18 -0
- package/dist/bundle-core/four-meme/swap-sign-helpers.d.ts +28 -0
- package/dist/bundle-core/four-meme/swap-sign-helpers.js +105 -0
- package/dist/bundle-core/four-meme/swap.d.ts +17 -0
- package/dist/bundle-core/four-meme/swap.js +505 -0
- package/dist/bundle-core/four-meme/types/buy-first.d.ts +50 -0
- package/dist/bundle-core/four-meme/types/buy-first.js +1 -0
- package/dist/bundle-core/four-meme/types/core-flow.d.ts +63 -0
- package/dist/bundle-core/four-meme/types/core-flow.js +1 -0
- package/dist/bundle-core/four-meme/types/index.d.ts +600 -0
- package/dist/bundle-core/four-meme/types/index.js +1 -0
- package/dist/bundle-core/four-meme/types/swap-internal.d.ts +19 -0
- package/dist/bundle-core/four-meme/types/swap-internal.js +1 -0
- package/dist/bundle-core/four-meme/types.d.ts +1 -0
- package/dist/bundle-core/four-meme/types.js +1 -0
- package/dist/bundle-core/four-meme/utils-disperse.d.ts +7 -0
- package/dist/bundle-core/four-meme/utils-disperse.js +396 -0
- package/dist/bundle-core/four-meme/utils-pairwise.d.ts +8 -0
- package/dist/bundle-core/four-meme/utils-pairwise.js +328 -0
- package/dist/bundle-core/four-meme/utils-sweep.d.ts +8 -0
- package/dist/bundle-core/four-meme/utils-sweep.js +744 -0
- package/dist/bundle-core/index.d.ts +8 -0
- package/dist/bundle-core/index.js +8 -0
- package/dist/bundle-core/internal.d.ts +16 -0
- package/dist/bundle-core/internal.js +160 -0
- package/dist/bundle-core/sign-context-helpers.d.ts +26 -0
- package/dist/bundle-core/sign-context-helpers.js +63 -0
- package/dist/bundle-core/submit.d.ts +293 -0
- package/dist/bundle-core/submit.js +731 -0
- package/dist/bundle-core/types/index.d.ts +8 -0
- package/dist/bundle-core/types/index.js +1 -0
- package/dist/bundle-core/types.d.ts +1 -0
- package/dist/bundle-core/types.js +1 -0
- 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 +98 -213
- 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/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 +4 -1
- package/dist/chains/eni/batch-router/bundle-approve.js +4 -3
- package/dist/chains/eni/batch-router/transfer.js +55 -25
- 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 +1 -1
- 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 +2 -2
- package/dist/chains/eni/platforms/daoaas/index.d.ts +3 -3
- package/dist/chains/eni/platforms/daoaas/index.js +3 -3
- package/dist/chains/eni/platforms/daoaas/meta.js +9 -6
- package/dist/chains/eni/platforms/daoaas/portal-direct.js +28 -44
- package/dist/chains/eni/platforms/daoaas/portal.js +10 -6
- package/dist/chains/eni/platforms/dswap/liquidity.js +58 -26
- 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 +87 -46
- package/dist/chains/eni/platforms/fair-launch/pool.js +4 -1
- package/dist/chains/eni/platforms/fair-launch/presets.js +2 -2
- package/dist/chains/eni/platforms/iro/factory.d.ts +2 -2
- package/dist/chains/eni/platforms/iro/factory.js +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 +107 -31
- 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/xlayer/constants.d.ts +5 -0
- 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 +29 -111
- package/dist/chains/xlayer/eip7702/bundle-swap.d.ts +3 -65
- package/dist/chains/xlayer/eip7702/bundle-swap.js +51 -245
- 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 +63 -307
- 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/contracts/helper3.d.ts +20 -5
- package/dist/contracts/helper3.js +56 -20
- package/dist/contracts/tm-bundle-helpers.d.ts +88 -0
- package/dist/contracts/tm-bundle-helpers.js +73 -0
- package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.d.ts +1 -26
- package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.js +1 -113
- package/dist/contracts/tm-bundle-merkle/config.d.ts +5 -67
- package/dist/contracts/tm-bundle-merkle/config.js +2 -114
- package/dist/contracts/tm-bundle-merkle/core.d.ts +1 -4
- package/dist/contracts/tm-bundle-merkle/core.js +1 -591
- package/dist/contracts/tm-bundle-merkle/index.d.ts +5 -5
- package/dist/contracts/tm-bundle-merkle/index.js +5 -5
- package/dist/contracts/tm-bundle-merkle/internal.d.ts +2 -46
- package/dist/contracts/tm-bundle-merkle/internal.js +2 -238
- package/dist/contracts/tm-bundle-merkle/pancake-proxy.d.ts +1 -28
- package/dist/contracts/tm-bundle-merkle/pancake-proxy.js +1 -686
- package/dist/contracts/tm-bundle-merkle/private.d.ts +1 -27
- package/dist/contracts/tm-bundle-merkle/private.js +1 -476
- package/dist/contracts/tm-bundle-merkle/submit.d.ts +3 -314
- package/dist/contracts/tm-bundle-merkle/submit.js +3 -928
- package/dist/contracts/tm-bundle-merkle/swap-buy-first.d.ts +2 -55
- package/dist/contracts/tm-bundle-merkle/swap-buy-first.js +2 -506
- package/dist/contracts/tm-bundle-merkle/swap-internal.d.ts +1 -3
- package/dist/contracts/tm-bundle-merkle/swap-internal.js +1 -18
- package/dist/contracts/tm-bundle-merkle/swap.d.ts +2 -144
- package/dist/contracts/tm-bundle-merkle/swap.js +2 -764
- package/dist/contracts/tm-bundle-merkle/types.d.ts +1 -476
- package/dist/contracts/tm-bundle-merkle/utils-disperse.d.ts +1 -0
- package/dist/contracts/tm-bundle-merkle/utils-disperse.js +1 -0
- package/dist/contracts/tm-bundle-merkle/utils-pairwise.d.ts +1 -0
- package/dist/contracts/tm-bundle-merkle/utils-pairwise.js +1 -0
- package/dist/contracts/tm-bundle-merkle/utils-sweep.d.ts +1 -0
- package/dist/contracts/tm-bundle-merkle/utils-sweep.js +1 -0
- package/dist/contracts/tm-bundle-merkle/utils.d.ts +6 -18
- package/dist/contracts/tm-bundle-merkle/utils.js +6 -1501
- package/dist/contracts/tm-bundle.d.ts +3 -51
- package/dist/contracts/tm-bundle.js +120 -187
- package/dist/contracts/tm.d.ts +10 -8
- package/dist/contracts/tm.js +39 -35
- package/dist/contracts/tm1.js +9 -4
- package/dist/contracts/tm2.js +10 -5
- package/dist/dex/direct-router-helpers.d.ts +269 -0
- package/dist/dex/direct-router-helpers.js +536 -0
- package/dist/dex/direct-router.d.ts +3 -125
- package/dist/dex/direct-router.js +244 -672
- package/dist/dex/types.d.ts +81 -0
- package/dist/dex/types.js +1 -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/flap/index.d.ts +11 -0
- package/dist/flap/index.js +9 -0
- package/dist/flows/create.d.ts +2 -1
- package/dist/flows/create.js +6 -6
- package/dist/flows/index.d.ts +9 -0
- package/dist/flows/index.js +9 -0
- package/dist/index.d.ts +20 -88
- package/dist/index.js +20 -218
- package/dist/merkle/index.d.ts +12 -0
- package/dist/merkle/index.js +11 -0
- package/dist/shared/abis/common.d.ts +2 -83
- package/dist/shared/abis/common.js +2 -254
- package/dist/shared/abis/index.d.ts +5 -6
- package/dist/shared/abis/index.js +5 -7
- package/dist/shared/clients/blockrazor.d.ts +4 -8
- package/dist/shared/clients/blockrazor.js +43 -35
- package/dist/shared/clients/club48.d.ts +2 -2
- package/dist/shared/clients/club48.js +36 -30
- package/dist/shared/clients/emitservice.js +2 -0
- package/dist/shared/clients/four.d.ts +21 -6
- package/dist/shared/clients/four.js +29 -24
- package/dist/shared/clients/index.d.ts +8 -0
- package/dist/shared/clients/index.js +8 -0
- package/dist/shared/clients/merkle.d.ts +4 -3
- package/dist/shared/clients/merkle.js +30 -47
- package/dist/shared/constants/addresses.d.ts +27 -1
- package/dist/shared/constants/addresses.js +39 -2
- package/dist/shared/constants/chains.d.ts +1 -1
- package/dist/shared/constants/chains.js +1 -1
- package/dist/shared/constants/gas.d.ts +1 -1
- package/dist/shared/constants/gas.js +2 -6
- package/dist/shared/constants/index.d.ts +4 -1
- package/dist/shared/constants/index.js +2 -1
- package/dist/shared/constants/quote.d.ts +30 -0
- package/dist/shared/constants/quote.js +37 -0
- package/dist/shared/flap/abi.js +1 -1
- package/dist/shared/flap/constants.d.ts +1 -2
- package/dist/shared/flap/constants.js +3 -4
- package/dist/shared/flap/curve.js +3 -0
- package/dist/shared/flap/errors.d.ts +1 -4
- package/dist/shared/flap/errors.js +20 -1
- package/dist/shared/flap/index.d.ts +4 -5
- package/dist/shared/flap/index.js +4 -5
- package/dist/shared/flap/launch-v6.d.ts +0 -5
- package/dist/shared/flap/launch-v6.js +2 -16
- package/dist/shared/flap/meta.d.ts +22 -18
- package/dist/shared/flap/meta.js +32 -24
- package/dist/shared/flap/permit.js +10 -3
- package/dist/shared/flap/pinata.d.ts +22 -6
- package/dist/shared/flap/pinata.js +21 -26
- package/dist/shared/flap/portal-bundle-merkle/config.d.ts +3 -72
- package/dist/shared/flap/portal-bundle-merkle/config.js +4 -124
- package/dist/shared/flap/portal-bundle-merkle/core-helpers.d.ts +32 -0
- package/dist/shared/flap/portal-bundle-merkle/core-helpers.js +83 -0
- package/dist/shared/flap/portal-bundle-merkle/core.d.ts +0 -4
- package/dist/shared/flap/portal-bundle-merkle/core.js +168 -175
- package/dist/shared/flap/portal-bundle-merkle/create-to-dex.d.ts +17 -4
- package/dist/shared/flap/portal-bundle-merkle/create-to-dex.js +96 -117
- package/dist/shared/flap/portal-bundle-merkle/curve-to-dex.js +104 -122
- package/dist/shared/flap/portal-bundle-merkle/index.d.ts +11 -7
- package/dist/shared/flap/portal-bundle-merkle/index.js +4 -7
- package/dist/shared/flap/portal-bundle-merkle/pancake-proxy.js +71 -68
- package/dist/shared/flap/portal-bundle-merkle/private.js +61 -114
- package/dist/shared/flap/portal-bundle-merkle/swap-batch.d.ts +8 -0
- package/dist/shared/flap/portal-bundle-merkle/swap-batch.js +227 -0
- package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.d.ts +125 -0
- package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.js +113 -0
- package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.d.ts +1 -64
- package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.js +69 -288
- package/dist/shared/flap/portal-bundle-merkle/swap-cross.d.ts +9 -0
- package/dist/shared/flap/portal-bundle-merkle/swap-cross.js +139 -0
- package/dist/shared/flap/portal-bundle-merkle/swap-helpers.d.ts +149 -0
- package/dist/shared/flap/portal-bundle-merkle/swap-helpers.js +259 -0
- package/dist/shared/flap/portal-bundle-merkle/swap-planning.d.ts +70 -0
- package/dist/shared/flap/portal-bundle-merkle/swap-planning.js +182 -0
- package/dist/shared/flap/portal-bundle-merkle/swap-quick-batch.d.ts +16 -0
- package/dist/shared/flap/portal-bundle-merkle/swap-quick-batch.js +327 -0
- package/dist/shared/flap/portal-bundle-merkle/swap-single.d.ts +2 -0
- package/dist/shared/flap/portal-bundle-merkle/swap-single.js +184 -0
- package/dist/shared/flap/portal-bundle-merkle/swap-types.d.ts +101 -0
- package/dist/shared/flap/portal-bundle-merkle/swap-types.js +1 -0
- package/dist/shared/flap/portal-bundle-merkle/swap.d.ts +6 -199
- package/dist/shared/flap/portal-bundle-merkle/swap.js +5 -1357
- package/dist/shared/flap/portal-bundle-merkle/types.d.ts +88 -12
- package/dist/shared/flap/portal-bundle-merkle/utils.d.ts +1 -80
- package/dist/shared/flap/portal-bundle-merkle/utils.js +145 -265
- package/dist/shared/flap/portal-bundle.js +83 -78
- package/dist/shared/flap/portal-create-token.d.ts +39 -21
- package/dist/shared/flap/portal-create-token.js +121 -124
- package/dist/shared/flap/portal.d.ts +1 -2
- package/dist/shared/flap/portal.js +36 -28
- package/dist/shared/flap/vanity.d.ts +6 -6
- package/dist/shared/flap/vanity.js +15 -21
- package/dist/shared/flap/vault.d.ts +25 -93
- package/dist/shared/flap/vault.js +77 -127
- package/dist/shared/foundation/amount/split-by-weight.d.ts +5 -0
- package/dist/shared/foundation/amount/split-by-weight.js +35 -0
- package/dist/shared/foundation/dex/v3-path.d.ts +6 -0
- package/dist/shared/foundation/dex/v3-path.js +35 -0
- package/dist/shared/foundation/erc20/decimals.d.ts +7 -0
- package/dist/shared/foundation/erc20/decimals.js +24 -0
- package/dist/shared/foundation/gas/bundle-gas.d.ts +49 -0
- package/dist/shared/foundation/gas/bundle-gas.js +93 -0
- package/dist/shared/foundation/gas/profit-hop.d.ts +20 -0
- package/dist/shared/foundation/gas/profit-hop.js +72 -0
- package/dist/shared/foundation/index.d.ts +15 -0
- package/dist/shared/foundation/index.js +14 -0
- package/dist/shared/foundation/nonce/nonce-manager.d.ts +19 -0
- package/dist/shared/foundation/nonce/nonce-manager.js +217 -0
- package/dist/shared/foundation/normalize-unknown.d.ts +9 -0
- package/dist/shared/foundation/normalize-unknown.js +29 -0
- package/dist/shared/foundation/sdk-logger.d.ts +13 -0
- package/dist/shared/foundation/sdk-logger.js +12 -0
- package/dist/shared/foundation/tx/build-request.d.ts +17 -0
- package/dist/shared/foundation/tx/build-request.js +25 -0
- package/dist/shared/foundation/tx/sign-batch.d.ts +5 -0
- package/dist/shared/foundation/tx/sign-batch.js +26 -0
- package/dist/shared/foundation/tx/wallet-sign-patch.d.ts +1 -0
- package/dist/shared/foundation/tx/wallet-sign-patch.js +18 -0
- package/dist/shared/foundation/types/airdrop-sweep.d.ts +79 -0
- package/dist/shared/foundation/types/airdrop-sweep.js +1 -0
- package/dist/shared/foundation/types/erc20.d.ts +65 -0
- package/dist/shared/foundation/types/erc20.js +1 -0
- package/dist/shared/foundation/types/holders-maker.d.ts +64 -0
- package/dist/shared/foundation/types/holders-maker.js +1 -0
- package/dist/shared/foundation/types/index.d.ts +7 -0
- package/dist/shared/foundation/types/index.js +1 -0
- package/dist/shared/foundation/types/lp-inspect.d.ts +102 -0
- package/dist/shared/foundation/types/lp-inspect.js +1 -0
- package/dist/shared/foundation/types/multicall.d.ts +5 -0
- package/dist/shared/foundation/types/multicall.js +1 -0
- package/dist/shared/foundation/types/private-sale.d.ts +35 -0
- package/dist/shared/foundation/types/private-sale.js +1 -0
- package/dist/shared/foundation/types/quote-helpers.d.ts +17 -0
- package/dist/shared/foundation/types/quote-helpers.js +1 -0
- package/dist/shared/foundation/wallet/generate.d.ts +5 -0
- package/dist/shared/foundation/wallet/generate.js +8 -0
- package/dist/shared/four/tax-token.d.ts +1 -1
- package/dist/shared/four/tax-token.js +31 -10
- package/dist/shared/index.d.ts +6 -0
- package/dist/shared/index.js +4 -0
- package/dist/types/errors.d.ts +27 -0
- package/dist/types/errors.js +34 -0
- 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/erc20.d.ts +7 -89
- package/dist/utils/erc20.js +98 -129
- package/dist/utils/errors.d.ts +12 -1
- package/dist/utils/errors.js +60 -1
- package/dist/utils/holders-maker/addresses.d.ts +12 -0
- package/dist/utils/holders-maker/addresses.js +15 -0
- package/dist/utils/holders-maker/buy-tx.d.ts +44 -0
- package/dist/utils/holders-maker/buy-tx.js +278 -0
- package/dist/utils/holders-maker/constants.d.ts +6 -0
- package/dist/utils/holders-maker/constants.js +7 -0
- package/dist/utils/holders-maker/disperse.d.ts +18 -0
- package/dist/utils/holders-maker/disperse.js +90 -0
- package/dist/utils/holders-maker/routing.d.ts +4 -0
- package/dist/utils/holders-maker/routing.js +45 -0
- package/dist/utils/holders-maker/transfer-tx.d.ts +4 -0
- package/dist/utils/holders-maker/transfer-tx.js +67 -0
- package/dist/utils/holders-maker-helpers.d.ts +9 -0
- package/dist/utils/holders-maker-helpers.js +9 -0
- package/dist/utils/holders-maker.d.ts +2 -138
- package/dist/utils/holders-maker.js +50 -671
- package/dist/utils/hop-chains.d.ts +35 -0
- package/dist/utils/hop-chains.js +215 -0
- package/dist/utils/lp-inspect-helpers.d.ts +9 -0
- package/dist/utils/lp-inspect-helpers.js +109 -0
- package/dist/utils/lp-inspect.d.ts +2 -112
- package/dist/utils/lp-inspect.js +78 -293
- package/dist/utils/mpcExclusive.d.ts +2 -5
- package/dist/utils/mpcExclusive.js +4 -3
- package/dist/utils/pcs-infinity-cl.js +18 -54
- package/dist/utils/private-sale.d.ts +2 -58
- package/dist/utils/private-sale.js +4 -15
- package/dist/utils/provider-factory.d.ts +4 -0
- package/dist/utils/provider-factory.js +10 -0
- package/dist/utils/quote-helpers.d.ts +4 -45
- package/dist/utils/quote-helpers.js +17 -74
- package/dist/utils/stealth-transfer.d.ts +2 -28
- package/dist/utils/stealth-transfer.js +39 -19
- package/dist/utils/swap-helpers.d.ts +2 -15
- package/dist/utils/swap-helpers.js +6 -11
- 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/erc20.d.ts +1 -0
- package/dist/utils/types/erc20.js +1 -0
- package/dist/utils/types/errors.d.ts +1 -0
- package/dist/utils/types/errors.js +1 -0
- package/dist/utils/types/holders-maker.d.ts +1 -0
- package/dist/utils/types/holders-maker.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/lp-inspect.d.ts +1 -0
- package/dist/utils/types/lp-inspect.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/private-sale.d.ts +1 -0
- package/dist/utils/types/private-sale.js +1 -0
- package/dist/utils/types/quote-helpers.d.ts +1 -0
- package/dist/utils/types/quote-helpers.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/dist/vanity/index.d.ts +5 -0
- package/dist/vanity/index.js +5 -0
- package/package.json +100 -2
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { ethers, Wallet, JsonRpcProvider } from 'ethers';
|
|
2
2
|
import { Club48Client, sendBatchPrivateTransactions, BUILDER_CONTROL_EOA } from '../clients/club48.js';
|
|
3
3
|
import { FLAP_PORTAL_ADDRESSES, FLAP_ORIGINAL_PORTAL_ADDRESSES } from './constants.js';
|
|
4
|
-
import { GAS_LIMITS } from '../constants/index.js';
|
|
4
|
+
import { GAS_LIMITS, CHAINS, ZERO_ADDRESS } from '../constants/index.js';
|
|
5
|
+
import { consoleSdkLogger } from '../foundation/index.js';
|
|
6
|
+
const sdkLogger = consoleSdkLogger;
|
|
5
7
|
// Portal ABI (简化版,仅包含需要的方法)
|
|
6
8
|
const PORTAL_ABI = [
|
|
7
9
|
'function newToken(string name, string symbol, string meta) external payable returns (address)',
|
|
8
10
|
'function newTokenV2((string name,string symbol,string meta,uint8 dexThresh,bytes32 salt,uint16 taxRate,uint8 migratorType,address quoteToken,uint256 quoteAmt,address beneficiary,bytes permitData)) external payable returns (address)',
|
|
9
11
|
'function swapExactInputBuy((address inputToken,address outputToken,uint256 inputAmount,uint256 minOutputAmount,bytes permitData)) external payable returns (uint256)',
|
|
10
12
|
'function swapExactInputSell((address inputToken,address outputToken,uint256 inputAmount,uint256 minOutputAmount,bytes permitData)) external returns (uint256)',
|
|
11
|
-
'function quoteExactInput((address inputToken,address outputToken,uint256 inputAmount)) external returns (uint256)'
|
|
13
|
+
'function quoteExactInput((address inputToken,address outputToken,uint256 inputAmount)) external returns (uint256)',
|
|
12
14
|
];
|
|
13
15
|
/**
|
|
14
16
|
* Flap Protocol Bundle 交易方法
|
|
@@ -18,20 +20,20 @@ const PORTAL_ABI = [
|
|
|
18
20
|
const ERRORS = {
|
|
19
21
|
NO_PRIVATE_KEY: {
|
|
20
22
|
en: 'At least 1 private key (creator) is required',
|
|
21
|
-
zh: '至少需要 1 个私钥(创建者)'
|
|
23
|
+
zh: '至少需要 1 个私钥(创建者)',
|
|
22
24
|
},
|
|
23
25
|
AMOUNT_MISMATCH: {
|
|
24
26
|
en: (buyCount, buyerCount) => `Buy amount count (${buyCount}) must equal buyer count (${buyerCount})`,
|
|
25
|
-
zh: (buyCount, buyerCount) => `购买金额数量(${buyCount})必须等于买家数量(${buyerCount})
|
|
27
|
+
zh: (buyCount, buyerCount) => `购买金额数量(${buyCount})必须等于买家数量(${buyerCount})`,
|
|
26
28
|
},
|
|
27
29
|
KEY_AMOUNT_MISMATCH: {
|
|
28
30
|
en: 'Private key count and amount count must match',
|
|
29
|
-
zh: '私钥和购买金额数量必须一致'
|
|
31
|
+
zh: '私钥和购买金额数量必须一致',
|
|
30
32
|
},
|
|
31
33
|
SELL_KEY_AMOUNT_MISMATCH: {
|
|
32
34
|
en: 'Private key count and sell amount count must match',
|
|
33
|
-
zh: '私钥和卖出数量必须一致'
|
|
34
|
-
}
|
|
35
|
+
zh: '私钥和卖出数量必须一致',
|
|
36
|
+
},
|
|
35
37
|
};
|
|
36
38
|
// 获取错误信息(根据环境语言)
|
|
37
39
|
function getErrorMessage(key, ...args) {
|
|
@@ -56,28 +58,11 @@ async function estimateGasWithMultiplier(provider, txRequest, multiplier) {
|
|
|
56
58
|
function getTxType(config) {
|
|
57
59
|
return config.txType ?? 0; // 默认 Legacy (type 0),适用于 48.club/BSC
|
|
58
60
|
}
|
|
59
|
-
/**
|
|
60
|
-
* 构建完整的交易请求(包含 gas 估算和交易类型)
|
|
61
|
-
*/
|
|
62
|
-
async function buildTxRequest(provider, unsigned, from, nonce, gasPrice, config, value) {
|
|
63
|
-
const gasLimit = await estimateGasWithMultiplier(provider, { ...unsigned, from, value }, config.gasLimitMultiplier);
|
|
64
|
-
return {
|
|
65
|
-
...unsigned,
|
|
66
|
-
from,
|
|
67
|
-
nonce,
|
|
68
|
-
gasLimit,
|
|
69
|
-
gasPrice,
|
|
70
|
-
chainId: 56,
|
|
71
|
-
type: getTxType(config)
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
61
|
/**
|
|
75
62
|
* Flap Protocol: 创建代币 + 捆绑购买
|
|
76
63
|
*/
|
|
77
64
|
export async function createTokenWithBundleBuy(params) {
|
|
78
|
-
const { chain, privateKeys, buyAmounts, tokenInfo,
|
|
79
|
-
// 默认使用 BNB (0地址)
|
|
80
|
-
const quoteTokenAddress = quoteToken || '0x0000000000000000000000000000000000000000';
|
|
65
|
+
const { chain, privateKeys, buyAmounts, tokenInfo, tokenAddress, config } = params;
|
|
81
66
|
if (privateKeys.length === 0) {
|
|
82
67
|
throw new Error(getErrorMessage('NO_PRIVATE_KEY'));
|
|
83
68
|
}
|
|
@@ -88,7 +73,7 @@ export async function createTokenWithBundleBuy(params) {
|
|
|
88
73
|
const devWallet = new Wallet(privateKeys[0], provider);
|
|
89
74
|
const club48 = new Club48Client({
|
|
90
75
|
endpoint: config.club48Endpoint,
|
|
91
|
-
explorerEndpoint: config.club48ExplorerEndpoint
|
|
76
|
+
explorerEndpoint: config.club48ExplorerEndpoint,
|
|
92
77
|
});
|
|
93
78
|
const blockOffset = config.bundleBlockOffset ?? 100;
|
|
94
79
|
// 1. 构建交易(为重复地址分配顺序 nonce)
|
|
@@ -119,10 +104,10 @@ export async function createTokenWithBundleBuy(params) {
|
|
|
119
104
|
salt: params.salt ?? '0x' + '00'.repeat(32),
|
|
120
105
|
taxRate: (params.taxRate ?? 0) & 0xffff,
|
|
121
106
|
migratorType: (params.migratorType ?? 0) & 0xff,
|
|
122
|
-
quoteToken: params.quoteToken ||
|
|
107
|
+
quoteToken: params.quoteToken || ZERO_ADDRESS,
|
|
123
108
|
quoteAmt: 0n,
|
|
124
109
|
beneficiary: new Wallet(privateKeys[0]).address,
|
|
125
|
-
permitData: '0x'
|
|
110
|
+
permitData: '0x',
|
|
126
111
|
});
|
|
127
112
|
// 估算 gas 并应用用户配置的安全余量
|
|
128
113
|
const createGasLimit = await estimateGasWithMultiplier(provider, { ...createTxUnsigned, from: devWallet.address }, config.gasLimitMultiplier);
|
|
@@ -132,8 +117,8 @@ export async function createTokenWithBundleBuy(params) {
|
|
|
132
117
|
nonce: await getNextNonce(devWallet),
|
|
133
118
|
gasLimit: createGasLimit,
|
|
134
119
|
gasPrice: gasPrice,
|
|
135
|
-
chainId:
|
|
136
|
-
type: getTxType(config) // 用户可配置:0=Legacy(默认),2=EIP-1559
|
|
120
|
+
chainId: CHAINS.BSC.chainId, // BSC
|
|
121
|
+
type: getTxType(config), // 用户可配置:0=Legacy(默认),2=EIP-1559
|
|
137
122
|
};
|
|
138
123
|
const signedCreateTx = await devWallet.signTransaction(createTxRequest);
|
|
139
124
|
signedTxs.push(signedCreateTx);
|
|
@@ -144,9 +129,9 @@ export async function createTokenWithBundleBuy(params) {
|
|
|
144
129
|
value: config.tipAmountWei,
|
|
145
130
|
gasPrice,
|
|
146
131
|
gasLimit: GAS_LIMITS.BRIBE,
|
|
147
|
-
chainId:
|
|
132
|
+
chainId: CHAINS.BSC.chainId,
|
|
148
133
|
type: 0, // Legacy transaction
|
|
149
|
-
nonce: await getNextNonce(devWallet)
|
|
134
|
+
nonce: await getNextNonce(devWallet),
|
|
150
135
|
});
|
|
151
136
|
signedTxs.push(tipTx);
|
|
152
137
|
}
|
|
@@ -161,17 +146,19 @@ export async function createTokenWithBundleBuy(params) {
|
|
|
161
146
|
try {
|
|
162
147
|
const quote = new ethers.Contract(portalAddr, PORTAL_ABI, buyerWallet);
|
|
163
148
|
const exactOut = await quote.quoteExactInput.staticCall({
|
|
164
|
-
inputToken:
|
|
149
|
+
inputToken: ZERO_ADDRESS,
|
|
165
150
|
outputToken: tokenAddress,
|
|
166
|
-
inputAmount: amountIn
|
|
151
|
+
inputAmount: amountIn,
|
|
167
152
|
});
|
|
168
153
|
const keep = BigInt(10000 - slippageBps);
|
|
169
154
|
minAmountOut = (exactOut * keep) / 10000n;
|
|
170
155
|
}
|
|
171
|
-
catch {
|
|
156
|
+
catch (error) {
|
|
157
|
+
sdkLogger.debug?.('[Flap bundle] quoteExactInput failed, fallback minAmountOut=0', error);
|
|
158
|
+
}
|
|
172
159
|
const buyPortal = new ethers.Contract(portalAddr, PORTAL_ABI, buyerWallet);
|
|
173
160
|
const buyTxUnsigned = await buyPortal.swapExactInputBuy.populateTransaction({
|
|
174
|
-
inputToken:
|
|
161
|
+
inputToken: ZERO_ADDRESS,
|
|
175
162
|
outputToken: tokenAddress,
|
|
176
163
|
inputAmount: 0n,
|
|
177
164
|
minOutputAmount: minAmountOut,
|
|
@@ -192,8 +179,8 @@ export async function createTokenWithBundleBuy(params) {
|
|
|
192
179
|
nonce: await getNextNonce(buyerWallet),
|
|
193
180
|
gasLimit: buyGasLimit,
|
|
194
181
|
gasPrice: gasPrice,
|
|
195
|
-
chainId:
|
|
196
|
-
type: getTxType(config) // 用户可配置
|
|
182
|
+
chainId: CHAINS.BSC.chainId, // BSC
|
|
183
|
+
type: getTxType(config), // 用户可配置
|
|
197
184
|
};
|
|
198
185
|
const signedBuyTx = await buyerWallet.signTransaction(buyTxRequest);
|
|
199
186
|
signedTxs.push(signedBuyTx);
|
|
@@ -203,11 +190,11 @@ export async function createTokenWithBundleBuy(params) {
|
|
|
203
190
|
const bundleUuid = await club48.sendBundle({
|
|
204
191
|
txs: signedTxs,
|
|
205
192
|
maxBlockNumber: (await provider.getBlockNumber()) + blockOffset,
|
|
206
|
-
noMerge: config.noMerge
|
|
193
|
+
noMerge: config.noMerge,
|
|
207
194
|
}, {
|
|
208
195
|
spMode: params.config.spMode ?? 'timestampPersonalSign',
|
|
209
196
|
spPrivateKey: params.config.spPrivateKey || privateKeys[0],
|
|
210
|
-
spVMode: params.config.spVMode
|
|
197
|
+
spVMode: params.config.spVMode,
|
|
211
198
|
});
|
|
212
199
|
// 3. 等待完成
|
|
213
200
|
const status = await club48.waitForBundle(bundleUuid, params.config.waitTimeoutMs ?? 60000);
|
|
@@ -216,7 +203,7 @@ export async function createTokenWithBundleBuy(params) {
|
|
|
216
203
|
tokenAddress,
|
|
217
204
|
status,
|
|
218
205
|
createTx: signedCreateTx,
|
|
219
|
-
buyTxs
|
|
206
|
+
buyTxs,
|
|
220
207
|
};
|
|
221
208
|
}
|
|
222
209
|
/**
|
|
@@ -230,7 +217,7 @@ export async function batchBuyWithBundle(params) {
|
|
|
230
217
|
const provider = new JsonRpcProvider(config.rpcUrl);
|
|
231
218
|
const club48 = new Club48Client({
|
|
232
219
|
endpoint: config.club48Endpoint,
|
|
233
|
-
explorerEndpoint: config.club48ExplorerEndpoint
|
|
220
|
+
explorerEndpoint: config.club48ExplorerEndpoint,
|
|
234
221
|
});
|
|
235
222
|
const blockOffset = config.bundleBlockOffset ?? 100;
|
|
236
223
|
const portalAddr = FLAP_PORTAL_ADDRESSES[chain];
|
|
@@ -257,9 +244,9 @@ export async function batchBuyWithBundle(params) {
|
|
|
257
244
|
value: config.tipAmountWei,
|
|
258
245
|
gasPrice,
|
|
259
246
|
gasLimit: GAS_LIMITS.BRIBE,
|
|
260
|
-
chainId:
|
|
247
|
+
chainId: CHAINS.BSC.chainId,
|
|
261
248
|
type: 0, // Legacy transaction
|
|
262
|
-
nonce: await getNextNonce(tipWallet)
|
|
249
|
+
nonce: await getNextNonce(tipWallet),
|
|
263
250
|
});
|
|
264
251
|
signedTxs.unshift(tipTx);
|
|
265
252
|
}
|
|
@@ -272,17 +259,19 @@ export async function batchBuyWithBundle(params) {
|
|
|
272
259
|
try {
|
|
273
260
|
const quote = new ethers.Contract(portalAddr, PORTAL_ABI, buyerWallet);
|
|
274
261
|
const exactOut = await quote.quoteExactInput.staticCall({
|
|
275
|
-
inputToken:
|
|
262
|
+
inputToken: ZERO_ADDRESS,
|
|
276
263
|
outputToken: tokenAddress,
|
|
277
|
-
inputAmount: amountIn
|
|
264
|
+
inputAmount: amountIn,
|
|
278
265
|
});
|
|
279
266
|
const keep = BigInt(10000 - slippageBps);
|
|
280
267
|
minAmountOut = (exactOut * keep) / 10000n;
|
|
281
268
|
}
|
|
282
|
-
catch {
|
|
269
|
+
catch (error) {
|
|
270
|
+
sdkLogger.debug?.('[Flap bundle] quoteExactInput failed, fallback minAmountOut=0', error);
|
|
271
|
+
}
|
|
283
272
|
const portal = new ethers.Contract(portalAddr, PORTAL_ABI, buyerWallet);
|
|
284
273
|
const buyTxUnsigned = await portal.swapExactInputBuy.populateTransaction({
|
|
285
|
-
inputToken:
|
|
274
|
+
inputToken: ZERO_ADDRESS,
|
|
286
275
|
outputToken: tokenAddress,
|
|
287
276
|
inputAmount: 0n,
|
|
288
277
|
minOutputAmount: minAmountOut,
|
|
@@ -292,7 +281,7 @@ export async function batchBuyWithBundle(params) {
|
|
|
292
281
|
const estimatedGas = await provider.estimateGas({
|
|
293
282
|
...buyTxUnsigned,
|
|
294
283
|
from: buyerWallet.address,
|
|
295
|
-
value: amountIn
|
|
284
|
+
value: amountIn,
|
|
296
285
|
});
|
|
297
286
|
const gasLimit = (estimatedGas * 120n) / 100n;
|
|
298
287
|
const buyTxRequest = {
|
|
@@ -301,8 +290,8 @@ export async function batchBuyWithBundle(params) {
|
|
|
301
290
|
nonce: await getNextNonce(buyerWallet),
|
|
302
291
|
gasLimit: gasLimit,
|
|
303
292
|
gasPrice: gasPrice,
|
|
304
|
-
chainId:
|
|
305
|
-
type: 0 // Legacy transaction
|
|
293
|
+
chainId: CHAINS.BSC.chainId, // BSC
|
|
294
|
+
type: 0, // Legacy transaction
|
|
306
295
|
};
|
|
307
296
|
const signedBuyTx = await buyerWallet.signTransaction(buyTxRequest);
|
|
308
297
|
signedTxs.push(signedBuyTx);
|
|
@@ -310,11 +299,11 @@ export async function batchBuyWithBundle(params) {
|
|
|
310
299
|
const bundleUuid = await club48.sendBundle({
|
|
311
300
|
txs: signedTxs,
|
|
312
301
|
maxBlockNumber: (await provider.getBlockNumber()) + blockOffset,
|
|
313
|
-
noMerge: config.noMerge
|
|
302
|
+
noMerge: config.noMerge,
|
|
314
303
|
}, {
|
|
315
304
|
spMode: params.config.spMode ?? 'timestampPersonalSign',
|
|
316
305
|
spPrivateKey: params.config.spPrivateKey || privateKeys[0],
|
|
317
|
-
spVMode: params.config.spVMode
|
|
306
|
+
spVMode: params.config.spVMode,
|
|
318
307
|
});
|
|
319
308
|
const status = await club48.waitForBundle(bundleUuid);
|
|
320
309
|
return { bundleUuid, status, buyTxs: signedTxs };
|
|
@@ -330,7 +319,7 @@ export async function batchSellWithBundle(params) {
|
|
|
330
319
|
const provider = new JsonRpcProvider(config.rpcUrl);
|
|
331
320
|
const club48 = new Club48Client({
|
|
332
321
|
endpoint: config.club48Endpoint,
|
|
333
|
-
explorerEndpoint: config.club48ExplorerEndpoint
|
|
322
|
+
explorerEndpoint: config.club48ExplorerEndpoint,
|
|
334
323
|
});
|
|
335
324
|
const blockOffset = config.bundleBlockOffset ?? 100;
|
|
336
325
|
const portalAddr = FLAP_PORTAL_ADDRESSES[chain];
|
|
@@ -357,9 +346,9 @@ export async function batchSellWithBundle(params) {
|
|
|
357
346
|
value: config.tipAmountWei,
|
|
358
347
|
gasPrice,
|
|
359
348
|
gasLimit: GAS_LIMITS.BRIBE,
|
|
360
|
-
chainId:
|
|
349
|
+
chainId: CHAINS.BSC.chainId,
|
|
361
350
|
type: 0, // Legacy transaction
|
|
362
|
-
nonce: await getNextNonce(tipWallet)
|
|
351
|
+
nonce: await getNextNonce(tipWallet),
|
|
363
352
|
});
|
|
364
353
|
signedTxs.unshift(tipTx);
|
|
365
354
|
}
|
|
@@ -370,7 +359,7 @@ export async function batchSellWithBundle(params) {
|
|
|
370
359
|
const portal = new ethers.Contract(portalAddr, PORTAL_ABI, sellerWallet);
|
|
371
360
|
const sellTxUnsigned = await portal.swapExactInputSell.populateTransaction({
|
|
372
361
|
inputToken: tokenAddress,
|
|
373
|
-
outputToken:
|
|
362
|
+
outputToken: ZERO_ADDRESS,
|
|
374
363
|
inputAmount: amountIn,
|
|
375
364
|
minOutputAmount: minAmountOut,
|
|
376
365
|
permitData: '0x',
|
|
@@ -378,7 +367,7 @@ export async function batchSellWithBundle(params) {
|
|
|
378
367
|
// 估算 gas 并添加 20% 安全余量
|
|
379
368
|
const estimatedGas = await provider.estimateGas({
|
|
380
369
|
...sellTxUnsigned,
|
|
381
|
-
from: sellerWallet.address
|
|
370
|
+
from: sellerWallet.address,
|
|
382
371
|
});
|
|
383
372
|
const gasLimit = (estimatedGas * 120n) / 100n;
|
|
384
373
|
const sellTxRequest = {
|
|
@@ -387,8 +376,8 @@ export async function batchSellWithBundle(params) {
|
|
|
387
376
|
nonce: await getNextNonce(sellerWallet),
|
|
388
377
|
gasLimit: gasLimit,
|
|
389
378
|
gasPrice: gasPrice,
|
|
390
|
-
chainId:
|
|
391
|
-
type: 0 // Legacy transaction
|
|
379
|
+
chainId: CHAINS.BSC.chainId, // BSC
|
|
380
|
+
type: 0, // Legacy transaction
|
|
392
381
|
};
|
|
393
382
|
const signedSellTx = await sellerWallet.signTransaction(sellTxRequest);
|
|
394
383
|
signedTxs.push(signedSellTx);
|
|
@@ -396,17 +385,17 @@ export async function batchSellWithBundle(params) {
|
|
|
396
385
|
const bundleUuid = await club48.sendBundle({
|
|
397
386
|
txs: signedTxs,
|
|
398
387
|
maxBlockNumber: (await provider.getBlockNumber()) + blockOffset,
|
|
399
|
-
noMerge: config.noMerge
|
|
388
|
+
noMerge: config.noMerge,
|
|
400
389
|
}, {
|
|
401
390
|
spMode: params.config.spMode ?? 'timestampPersonalSign',
|
|
402
391
|
spPrivateKey: params.config.spPrivateKey || privateKeys[0],
|
|
403
|
-
spVMode: params.config.spVMode
|
|
392
|
+
spVMode: params.config.spVMode,
|
|
404
393
|
});
|
|
405
394
|
const status = await club48.waitForBundle(bundleUuid);
|
|
406
395
|
return { bundleUuid, status, sellTxs: signedTxs };
|
|
407
396
|
}
|
|
408
397
|
export async function flapPrivateBuy(params) {
|
|
409
|
-
const { chain, privateKey, tokenAddress, amountIn,
|
|
398
|
+
const { chain, privateKey, tokenAddress, amountIn, config, spPrivateKey } = params;
|
|
410
399
|
const provider = new JsonRpcProvider(config.rpcUrl);
|
|
411
400
|
const wallet = new Wallet(privateKey, provider);
|
|
412
401
|
const club48 = new Club48Client({ endpoint: config.club48Endpoint, explorerEndpoint: config.club48ExplorerEndpoint });
|
|
@@ -416,7 +405,7 @@ export async function flapPrivateBuy(params) {
|
|
|
416
405
|
const minAmountOut = 0n; // 不加滑点
|
|
417
406
|
const portal = new ethers.Contract(portalAddr, PORTAL_ABI, wallet);
|
|
418
407
|
const unsigned = await portal.swapExactInputBuy.populateTransaction({
|
|
419
|
-
inputToken:
|
|
408
|
+
inputToken: ZERO_ADDRESS,
|
|
420
409
|
outputToken: tokenAddress,
|
|
421
410
|
inputAmount: 0n,
|
|
422
411
|
minOutputAmount: minAmountOut,
|
|
@@ -426,7 +415,7 @@ export async function flapPrivateBuy(params) {
|
|
|
426
415
|
const estimatedGas = await provider.estimateGas({
|
|
427
416
|
...unsigned,
|
|
428
417
|
from: wallet.address,
|
|
429
|
-
value: amountWei
|
|
418
|
+
value: amountWei,
|
|
430
419
|
});
|
|
431
420
|
const gasLimit = (estimatedGas * 120n) / 100n;
|
|
432
421
|
const req = {
|
|
@@ -435,8 +424,8 @@ export async function flapPrivateBuy(params) {
|
|
|
435
424
|
nonce: await wallet.getNonce(),
|
|
436
425
|
gasLimit: gasLimit,
|
|
437
426
|
gasPrice,
|
|
438
|
-
chainId:
|
|
439
|
-
type: 0 // Legacy transaction
|
|
427
|
+
chainId: CHAINS.BSC.chainId,
|
|
428
|
+
type: 0, // Legacy transaction
|
|
440
429
|
};
|
|
441
430
|
const signed = await wallet.signTransaction(req);
|
|
442
431
|
if (spPrivateKey)
|
|
@@ -455,7 +444,7 @@ export async function flapPrivateSell(params) {
|
|
|
455
444
|
const portal = new ethers.Contract(portalAddr, PORTAL_ABI, wallet);
|
|
456
445
|
const unsigned = await portal.swapExactInputSell.populateTransaction({
|
|
457
446
|
inputToken: tokenAddress,
|
|
458
|
-
outputToken:
|
|
447
|
+
outputToken: ZERO_ADDRESS,
|
|
459
448
|
inputAmount: amountWei,
|
|
460
449
|
minOutputAmount: minOut,
|
|
461
450
|
permitData: '0x',
|
|
@@ -463,7 +452,7 @@ export async function flapPrivateSell(params) {
|
|
|
463
452
|
// 估算 gas 并添加 20% 安全余量
|
|
464
453
|
const estimatedGas = await provider.estimateGas({
|
|
465
454
|
...unsigned,
|
|
466
|
-
from: wallet.address
|
|
455
|
+
from: wallet.address,
|
|
467
456
|
});
|
|
468
457
|
const gasLimit = (estimatedGas * 120n) / 100n;
|
|
469
458
|
const req = {
|
|
@@ -472,8 +461,8 @@ export async function flapPrivateSell(params) {
|
|
|
472
461
|
nonce: await wallet.getNonce(),
|
|
473
462
|
gasLimit: gasLimit,
|
|
474
463
|
gasPrice,
|
|
475
|
-
chainId:
|
|
476
|
-
type: 0 // Legacy transaction
|
|
464
|
+
chainId: CHAINS.BSC.chainId,
|
|
465
|
+
type: 0, // Legacy transaction
|
|
477
466
|
};
|
|
478
467
|
const signed = await wallet.signTransaction(req);
|
|
479
468
|
if (spPrivateKey)
|
|
@@ -507,7 +496,7 @@ export async function flapBatchPrivateBuy(params) {
|
|
|
507
496
|
const amountWei = ethers.parseEther(amountsIn[i]);
|
|
508
497
|
const portal = new ethers.Contract(portalAddr, PORTAL_ABI, w);
|
|
509
498
|
const unsigned = await portal.swapExactInputBuy.populateTransaction({
|
|
510
|
-
inputToken:
|
|
499
|
+
inputToken: ZERO_ADDRESS,
|
|
511
500
|
outputToken: tokenAddress,
|
|
512
501
|
inputAmount: 0n,
|
|
513
502
|
minOutputAmount: 0n,
|
|
@@ -516,13 +505,21 @@ export async function flapBatchPrivateBuy(params) {
|
|
|
516
505
|
// 估算 gas 并添加 20% 安全余量
|
|
517
506
|
const estimatedGas = await provider.estimateGas({ ...unsigned, from: w.address, value: amountWei });
|
|
518
507
|
const gasLimit = (estimatedGas * 120n) / 100n;
|
|
519
|
-
const req = {
|
|
508
|
+
const req = {
|
|
509
|
+
...unsigned,
|
|
510
|
+
from: w.address,
|
|
511
|
+
nonce: await getNextNonce(w),
|
|
512
|
+
gasLimit,
|
|
513
|
+
gasPrice,
|
|
514
|
+
chainId: CHAINS.BSC.chainId,
|
|
515
|
+
type: 0,
|
|
516
|
+
};
|
|
520
517
|
signedTxs.push(await w.signTransaction(req));
|
|
521
518
|
}
|
|
522
519
|
return await sendBatchPrivateTransactions(signedTxs, spPrivateKey, config.club48Endpoint || 'https://puissant-bsc.48.club');
|
|
523
520
|
}
|
|
524
521
|
export async function flapBatchPrivateSell(params) {
|
|
525
|
-
const { chain, privateKeys, amounts, tokenAddress, config,
|
|
522
|
+
const { chain, privateKeys, amounts, tokenAddress, config, minEthEach } = params;
|
|
526
523
|
if (privateKeys.length !== amounts.length)
|
|
527
524
|
throw new Error('privateKeys and amounts length mismatch');
|
|
528
525
|
const provider = new JsonRpcProvider(config.rpcUrl);
|
|
@@ -550,7 +547,7 @@ export async function flapBatchPrivateSell(params) {
|
|
|
550
547
|
const portal = new ethers.Contract(portalAddr, PORTAL_ABI, w);
|
|
551
548
|
const unsigned = await portal.swapExactInputSell.populateTransaction({
|
|
552
549
|
inputToken: tokenAddress,
|
|
553
|
-
outputToken:
|
|
550
|
+
outputToken: ZERO_ADDRESS,
|
|
554
551
|
inputAmount: amountWei,
|
|
555
552
|
minOutputAmount: minOut,
|
|
556
553
|
permitData: '0x',
|
|
@@ -558,7 +555,15 @@ export async function flapBatchPrivateSell(params) {
|
|
|
558
555
|
// 估算 gas 并添加 20% 安全余量
|
|
559
556
|
const estimatedGas = await provider.estimateGas({ ...unsigned, from: w.address });
|
|
560
557
|
const gasLimit = (estimatedGas * 120n) / 100n;
|
|
561
|
-
const req = {
|
|
558
|
+
const req = {
|
|
559
|
+
...unsigned,
|
|
560
|
+
from: w.address,
|
|
561
|
+
nonce: await getNextNonce(w),
|
|
562
|
+
gasLimit,
|
|
563
|
+
gasPrice,
|
|
564
|
+
chainId: CHAINS.BSC.chainId,
|
|
565
|
+
type: 0,
|
|
566
|
+
};
|
|
562
567
|
signedTxs.push(await w.signTransaction(req));
|
|
563
568
|
}
|
|
564
569
|
// 使用 bundle 通道提交(统一与捆绑买保持一致)
|
|
@@ -566,12 +571,12 @@ export async function flapBatchPrivateSell(params) {
|
|
|
566
571
|
const bundleUuid = await club48.sendBundle({
|
|
567
572
|
txs: signedTxs,
|
|
568
573
|
maxBlockNumber: (await provider.getBlockNumber()) + blockOffset,
|
|
569
|
-
noMerge: config.noMerge
|
|
574
|
+
noMerge: config.noMerge,
|
|
570
575
|
}, {
|
|
571
576
|
// 若传入 sp 配置,则用于生成 48SP 签名提升打包优先级(与批量买一致)
|
|
572
577
|
spMode: params.config.spMode ?? 'timestampPersonalSign',
|
|
573
578
|
spPrivateKey: params.config.spPrivateKey || 'https://puissant-bsc.48.club',
|
|
574
|
-
spVMode: params.config.spVMode
|
|
579
|
+
spVMode: params.config.spVMode,
|
|
575
580
|
});
|
|
576
581
|
try {
|
|
577
582
|
const status = await club48.waitForBundle(bundleUuid);
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Portal 发币交易构建(newTokenV6 / newTokenV7 / VaultPortal)
|
|
3
|
-
*
|
|
3
|
+
*
|
|
4
|
+
* 对齐 Flap 官方文档:
|
|
5
|
+
* - newTokenV6:TOKEN_V2_PERMIT / TOKEN_TAXED_V3
|
|
6
|
+
* - newTokenV7:TOKEN_V3_PERMIT(BSC 标准 V3 / PCS Infinity CL,与 Flap 官网一致)
|
|
7
|
+
* - newTokenV4:已弃用(Portal 侧 FeatureDisabled,勿再使用)
|
|
8
|
+
* - VaultPortal.newTaxTokenWithVault:带金库的税币(legacy 参数结构)
|
|
4
9
|
*/
|
|
5
|
-
import { Contract, type Wallet } from 'ethers';
|
|
10
|
+
import { Contract, type TransactionRequest, type Wallet } from 'ethers';
|
|
6
11
|
import { type TaxVaultConfig } from './vault.js';
|
|
7
|
-
|
|
12
|
+
/** 分红代币:将 launching token 本身作为分红代币 */
|
|
8
13
|
export declare const MAGIC_DIVIDEND_SELF = "0xfEEDFEEDfeEDFEedFEEdFEEDFeEdfEEdFeEdFEEd";
|
|
9
14
|
export type NormalizedTaxLaunchConfig = {
|
|
10
15
|
taxDuration: number;
|
|
@@ -34,30 +39,43 @@ export type PopulateCreateTokenParams = {
|
|
|
34
39
|
dexThresh?: number;
|
|
35
40
|
salt?: string;
|
|
36
41
|
migratorType?: number;
|
|
42
|
+
/** legacy 单税率(bps),无 buy/sell 时作为对称税率 */
|
|
37
43
|
taxRate?: number;
|
|
38
|
-
buyTaxRate?: number;
|
|
39
|
-
sellTaxRate?: number;
|
|
40
44
|
dexId?: number;
|
|
41
45
|
lpFeeProfile?: number;
|
|
42
46
|
extensionID?: string;
|
|
43
47
|
extensionData?: string;
|
|
44
|
-
/** 标准 V3
|
|
48
|
+
/** 标准 V3 / TOKEN_V3_PERMIT(newTokenV7 + PCS_INFINITY_CL_MIGRATOR,对齐 Flap Portal v5.8.6+) */
|
|
45
49
|
useV7Portal?: boolean;
|
|
50
|
+
/** @deprecated 使用 useV7Portal */
|
|
51
|
+
useV4Portal?: boolean;
|
|
52
|
+
/** @deprecated 已合并到 useV7Portal */
|
|
53
|
+
useClInfinityLaunch?: boolean;
|
|
54
|
+
/** 高级税币 / 税币 V3 配置 */
|
|
46
55
|
taxConfig?: NormalizedTaxLaunchConfig;
|
|
56
|
+
/** 创建时内嵌买入(Flap 文档方式 A:quoteAmt + msg.value) */
|
|
47
57
|
initialQuoteAmt?: bigint;
|
|
48
58
|
};
|
|
49
|
-
/**
|
|
50
|
-
export declare function
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
59
|
+
/** 将 TaxV2Config(含 distribution 嵌套)或 flat 结构归一化 */
|
|
60
|
+
export declare function normalizeTaxLaunchConfig(input?: {
|
|
61
|
+
taxDuration: number;
|
|
62
|
+
antiFarmerDuration: number;
|
|
63
|
+
mktBps?: number;
|
|
64
|
+
deflationBps?: number;
|
|
65
|
+
dividendBps?: number;
|
|
66
|
+
lpBps?: number;
|
|
67
|
+
minimumShareBalance?: number;
|
|
68
|
+
buyTaxRate?: number;
|
|
69
|
+
sellTaxRate?: number;
|
|
70
|
+
dividendToken?: string;
|
|
71
|
+
commissionReceiver?: string;
|
|
72
|
+
vaultConfig?: TaxVaultConfig;
|
|
73
|
+
distribution?: {
|
|
74
|
+
mktBps: number;
|
|
75
|
+
deflationBps: number;
|
|
76
|
+
dividendBps: number;
|
|
77
|
+
lpBps: number;
|
|
78
|
+
minimumShareBalance?: number;
|
|
79
|
+
};
|
|
80
|
+
}, fallbackTaxRate?: number): NormalizedTaxLaunchConfig | undefined;
|
|
81
|
+
export declare function populateCreateTokenTransaction(params: PopulateCreateTokenParams): Promise<TransactionRequest>;
|