four-flap-meme-sdk 2.2.2 → 2.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +41 -6
- package/README.md +31 -0
- package/README.zh-CN.md +41 -6
- 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 +264 -0
- package/dist/abis/contracts/TaxToken.json +969 -0
- package/dist/abis/contracts/TokenManager2.json +136 -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 +3 -0
- package/dist/abis/flap/index.js +3 -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.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 +36 -0
- package/dist/bundle-core/config-helpers.js +57 -0
- package/dist/bundle-core/errors.d.ts +50 -0
- package/dist/bundle-core/errors.js +35 -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 +40 -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 +493 -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 +27 -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 +21 -0
- package/dist/bundle-core/internal.js +182 -0
- package/dist/bundle-core/sign-context-helpers.d.ts +25 -0
- package/dist/bundle-core/sign-context-helpers.js +67 -0
- package/dist/bundle-core/submit.d.ts +293 -0
- package/dist/bundle-core/submit.js +727 -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 +159 -0
- package/dist/chains/bsc/pancake/bundle-buy-first-helpers.js +117 -0
- package/dist/chains/bsc/pancake/bundle-buy-first.d.ts +1 -91
- package/dist/chains/bsc/pancake/bundle-buy-first.js +97 -212
- 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 +286 -0
- package/dist/chains/index.d.ts +13 -0
- package/dist/chains/index.js +13 -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 +93 -59
- 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 +1 -16
- package/dist/chains/xlayer/eip7702/constants.js +3 -21
- 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 +57 -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.js +1 -1
- package/dist/chains/xlayer/eoa/dex-helpers.js +5 -5
- 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 +3 -3
- 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 +72 -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 +108 -177
- package/dist/contracts/tm.d.ts +3 -2
- package/dist/contracts/tm.js +37 -32
- package/dist/contracts/tm1.js +9 -4
- package/dist/contracts/tm2.js +9 -4
- package/dist/dex/direct-router-helpers.d.ts +264 -0
- package/dist/dex/direct-router-helpers.js +539 -0
- package/dist/dex/direct-router.d.ts +3 -125
- package/dist/dex/direct-router.js +237 -666
- 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 +10 -0
- package/dist/flap/index.js +8 -0
- package/dist/flows/create.d.ts +2 -1
- package/dist/flows/create.js +6 -6
- package/dist/flows/index.d.ts +1 -0
- package/dist/flows/index.js +1 -0
- package/dist/index.d.ts +20 -85
- package/dist/index.js +20 -215
- 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 -252
- package/dist/shared/abis/index.d.ts +5 -6
- package/dist/shared/abis/index.js +5 -7
- package/dist/shared/clients/blockrazor.js +39 -25
- package/dist/shared/clients/club48.d.ts +2 -2
- package/dist/shared/clients/club48.js +34 -29
- 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.js +27 -34
- package/dist/shared/constants/addresses.d.ts +1 -1
- package/dist/shared/constants/addresses.js +11 -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 +3 -0
- package/dist/shared/constants/index.js +1 -0
- 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 +2 -3
- 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 +5 -4
- package/dist/shared/flap/index.js +5 -4
- package/dist/shared/flap/meta.d.ts +22 -18
- package/dist/shared/flap/meta.js +12 -17
- package/dist/shared/flap/permit.js +5 -2
- 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 +96 -277
- package/dist/shared/flap/portal-bundle-merkle/create-to-dex.d.ts +7 -2
- package/dist/shared/flap/portal-bundle-merkle/create-to-dex.js +107 -206
- package/dist/shared/flap/portal-bundle-merkle/curve-to-dex.js +100 -92
- 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-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 +66 -247
- 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.d.ts +2 -71
- package/dist/shared/flap/portal-bundle-merkle/swap.js +103 -410
- package/dist/shared/flap/portal-bundle-merkle/types.d.ts +88 -9
- 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 +55 -56
- package/dist/shared/flap/portal-create-token.d.ts +80 -0
- package/dist/shared/flap/portal-create-token.js +257 -0
- package/dist/shared/flap/portal.d.ts +14 -3
- package/dist/shared/flap/portal.js +50 -25
- package/dist/shared/flap/vanity.d.ts +1 -5
- package/dist/shared/flap/vanity.js +6 -17
- package/dist/shared/flap/vault.d.ts +17 -124
- package/dist/shared/flap/vault.js +67 -148
- 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/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 +13 -0
- package/dist/shared/foundation/index.js +12 -0
- package/dist/shared/foundation/nonce/nonce-manager.d.ts +17 -0
- package/dist/shared/foundation/nonce/nonce-manager.js +183 -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/four/tax-token.d.ts +1 -1
- package/dist/shared/four/tax-token.js +27 -7
- 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 +94 -125
- 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 +26 -661
- 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 +73 -223
- package/dist/utils/mpcExclusive.d.ts +2 -5
- package/dist/utils/mpcExclusive.js +4 -3
- 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 +31 -15
- 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 +2 -25
- package/dist/utils/wallet.js +13 -10
- package/dist/vanity/index.d.ts +5 -0
- package/dist/vanity/index.js +5 -0
- package/package.json +160 -4
- package/src/abis/contracts/TaxToken.json +969 -0
- package/src/abis/contracts/TokenManager.json +836 -0
- package/src/abis/contracts/TokenManager2.json +136 -0
- package/src/abis/contracts/TokenManagerHelper3.json +993 -0
- package/dist/shared/abis/TaxToken.json +0 -105
- package/dist/shared/abis/TokenManager2.json +0 -60
- /package/dist/{shared/abis → abis/contracts}/TokenManager.json +0 -0
- /package/dist/{shared/abis → abis/contracts}/TokenManagerHelper3.json +0 -0
|
@@ -24,10 +24,14 @@ const ZERO_HASH = '0x00000000000000000000000000000000000000000000000000000000000
|
|
|
24
24
|
*/
|
|
25
25
|
function lpFeeProfileToV3Fee(lpFeeProfile) {
|
|
26
26
|
switch (lpFeeProfile) {
|
|
27
|
-
case 0:
|
|
28
|
-
|
|
29
|
-
case
|
|
30
|
-
|
|
27
|
+
case 0:
|
|
28
|
+
return V3_FEE_TIERS.MEDIUM; // 0.25%
|
|
29
|
+
case 1:
|
|
30
|
+
return V3_FEE_TIERS.LOWEST; // 0.01%
|
|
31
|
+
case 2:
|
|
32
|
+
return V3_FEE_TIERS.HIGH; // 1%
|
|
33
|
+
default:
|
|
34
|
+
return V3_FEE_TIERS.MEDIUM;
|
|
31
35
|
}
|
|
32
36
|
}
|
|
33
37
|
/**
|
|
@@ -69,24 +73,28 @@ function encodeFlapBuyCall(tokenAddress, inputAmount, useV3OrV4 = false, extensi
|
|
|
69
73
|
const portalIface = new Interface(FLAP_PORTAL_ABI);
|
|
70
74
|
if (useV3OrV4) {
|
|
71
75
|
// V3/V4 代币使用 swapExactInputV3(支持 extensionData)
|
|
72
|
-
return portalIface.encodeFunctionData('swapExactInputV3', [
|
|
76
|
+
return portalIface.encodeFunctionData('swapExactInputV3', [
|
|
77
|
+
{
|
|
73
78
|
inputToken: ZERO_ADDRESS,
|
|
74
79
|
outputToken: tokenAddress,
|
|
75
80
|
inputAmount,
|
|
76
81
|
minOutputAmount: 0n,
|
|
77
82
|
permitData: '0x',
|
|
78
83
|
extensionData,
|
|
79
|
-
}
|
|
84
|
+
},
|
|
85
|
+
]);
|
|
80
86
|
}
|
|
81
87
|
else {
|
|
82
88
|
// V2 代币使用 swapExactInput
|
|
83
|
-
return portalIface.encodeFunctionData('swapExactInput', [
|
|
89
|
+
return portalIface.encodeFunctionData('swapExactInput', [
|
|
90
|
+
{
|
|
84
91
|
inputToken: ZERO_ADDRESS,
|
|
85
92
|
outputToken: tokenAddress,
|
|
86
93
|
inputAmount,
|
|
87
94
|
minOutputAmount: 0n,
|
|
88
95
|
permitData: '0x',
|
|
89
|
-
}
|
|
96
|
+
},
|
|
97
|
+
]);
|
|
90
98
|
}
|
|
91
99
|
}
|
|
92
100
|
/**
|
|
@@ -98,7 +106,8 @@ function encodeV3BuyCall(tokenAddress, fee, recipient, deadline, amountIn) {
|
|
|
98
106
|
'function multicall(uint256 deadline, bytes[] data) external payable returns (bytes[])',
|
|
99
107
|
'function refundETH() external payable',
|
|
100
108
|
]);
|
|
101
|
-
const exactInputData = routerIface.encodeFunctionData('exactInputSingle', [
|
|
109
|
+
const exactInputData = routerIface.encodeFunctionData('exactInputSingle', [
|
|
110
|
+
{
|
|
102
111
|
tokenIn: WOKB_ADDRESS,
|
|
103
112
|
tokenOut: tokenAddress,
|
|
104
113
|
fee,
|
|
@@ -106,7 +115,8 @@ function encodeV3BuyCall(tokenAddress, fee, recipient, deadline, amountIn) {
|
|
|
106
115
|
amountIn,
|
|
107
116
|
amountOutMinimum: 0n,
|
|
108
117
|
sqrtPriceLimitX96: 0n,
|
|
109
|
-
}
|
|
118
|
+
},
|
|
119
|
+
]);
|
|
110
120
|
const refundEthData = routerIface.encodeFunctionData('refundETH', []);
|
|
111
121
|
return routerIface.encodeFunctionData('multicall', [deadline, [exactInputData, refundEthData]]);
|
|
112
122
|
}
|
|
@@ -160,22 +170,21 @@ export async function bundleCreateBuy(params) {
|
|
|
160
170
|
const delegateInterface = new Interface(UNIFIED_DELEGATE_ABI);
|
|
161
171
|
// 创建钱包
|
|
162
172
|
const devWallet = createWallet(devPrivateKey, provider);
|
|
163
|
-
const buyerWallets = buyerPrivateKeys.map(pk => createWallet(pk, provider));
|
|
173
|
+
const buyerWallets = buyerPrivateKeys.map((pk) => createWallet(pk, provider));
|
|
164
174
|
const allWallets = [devWallet, ...buyerWallets];
|
|
165
175
|
const mainWallet = devWallet;
|
|
166
176
|
// 计算买入金额和利润(单边模式:只有买入)
|
|
167
|
-
const buyAmountsWei = buyAmounts.map(amt => ethers.parseEther(amt));
|
|
177
|
+
const buyAmountsWei = buyAmounts.map((amt) => ethers.parseEther(amt));
|
|
168
178
|
const totalBuyAmount = buyAmountsWei.reduce((sum, amt) => sum + amt, 0n);
|
|
169
179
|
const profitAmount = calculateProfitAmountByUserType(totalBuyAmount, userType, false); // ✅ 支持 userType
|
|
170
180
|
const profitRecipient = getProfitRecipient(config);
|
|
171
181
|
// 并行获取 nonce 和 fee data
|
|
172
182
|
const [nonces, feeData] = await Promise.all([
|
|
173
|
-
batchGetNonces(allWallets.map(w => w.address), provider),
|
|
183
|
+
batchGetNonces(allWallets.map((w) => w.address), provider),
|
|
174
184
|
provider.getFeeData(),
|
|
175
185
|
]);
|
|
176
186
|
// 签名授权
|
|
177
|
-
const authorizations = signAuthorizationsWithNonces(allWallets, nonces, delegateAddress, 0
|
|
178
|
-
);
|
|
187
|
+
const authorizations = signAuthorizationsWithNonces(allWallets, nonces, delegateAddress, 0);
|
|
179
188
|
// 构建调用
|
|
180
189
|
const calls = [];
|
|
181
190
|
// 1. 利润转账(从开发者钱包)
|
|
@@ -216,7 +225,7 @@ export async function bundleCreateBuy(params) {
|
|
|
216
225
|
deflationBps: tv2.deflationBps,
|
|
217
226
|
dividendBps: tv2.dividendBps,
|
|
218
227
|
lpBps: tv2.lpBps,
|
|
219
|
-
minimumShareBalance: BigInt(tv2.minimumShareBalance ?? 10000) *
|
|
228
|
+
minimumShareBalance: BigInt(tv2.minimumShareBalance ?? 10000) * 10n ** 18n,
|
|
220
229
|
});
|
|
221
230
|
}
|
|
222
231
|
else if (useV4) {
|
|
@@ -271,11 +280,15 @@ export async function bundleCreateBuy(params) {
|
|
|
271
280
|
});
|
|
272
281
|
}
|
|
273
282
|
// 使用 executeBatch 从 devWallet 调用 Portal.newToken
|
|
274
|
-
const createBatchCall = delegateInterface.encodeFunctionData('executeBatch', [
|
|
283
|
+
const createBatchCall = delegateInterface.encodeFunctionData('executeBatch', [
|
|
284
|
+
[
|
|
285
|
+
{
|
|
275
286
|
target: FLAP_PORTAL_ADDRESS,
|
|
276
287
|
value: params.quoteAmt ?? 0n,
|
|
277
288
|
data: createData,
|
|
278
|
-
}
|
|
289
|
+
},
|
|
290
|
+
],
|
|
291
|
+
]);
|
|
279
292
|
calls.push({
|
|
280
293
|
target: devWallet.address,
|
|
281
294
|
allowFailure: false,
|
|
@@ -290,11 +303,15 @@ export async function bundleCreateBuy(params) {
|
|
|
290
303
|
const buyAmount = buyAmountsWei[i];
|
|
291
304
|
// 使用 executeBatch 从 buyerWallet 调用 Portal
|
|
292
305
|
const buyData = encodeFlapBuyCall(tokenAddress, buyAmount, useV3OrV4, extensionData);
|
|
293
|
-
const buyBatchCall = delegateInterface.encodeFunctionData('executeBatch', [
|
|
306
|
+
const buyBatchCall = delegateInterface.encodeFunctionData('executeBatch', [
|
|
307
|
+
[
|
|
308
|
+
{
|
|
294
309
|
target: FLAP_PORTAL_ADDRESS,
|
|
295
310
|
value: buyAmount,
|
|
296
311
|
data: buyData,
|
|
297
|
-
}
|
|
312
|
+
},
|
|
313
|
+
],
|
|
314
|
+
]);
|
|
298
315
|
// ✅ 修复:value 设为 0n,让钱包使用自己余额买入
|
|
299
316
|
calls.push({
|
|
300
317
|
target: buyerWallet.address,
|
|
@@ -346,19 +363,19 @@ export async function bundleCreateToDex(params) {
|
|
|
346
363
|
const delegateInterface = new Interface(UNIFIED_DELEGATE_ABI);
|
|
347
364
|
// 创建钱包
|
|
348
365
|
const payerWallet = createWallet(payerPrivateKey, provider);
|
|
349
|
-
const curveBuyerWallets = curveBuyerPrivateKeys.map(pk => createWallet(pk, provider));
|
|
350
|
-
const dexBuyerWallets = dexBuyerPrivateKeys.map(pk => createWallet(pk, provider));
|
|
366
|
+
const curveBuyerWallets = curveBuyerPrivateKeys.map((pk) => createWallet(pk, provider));
|
|
367
|
+
const dexBuyerWallets = dexBuyerPrivateKeys.map((pk) => createWallet(pk, provider));
|
|
351
368
|
// 合并所有钱包(去重)
|
|
352
369
|
const allWalletsMap = new Map();
|
|
353
370
|
allWalletsMap.set(payerWallet.address.toLowerCase(), payerWallet);
|
|
354
|
-
curveBuyerWallets.forEach(w => allWalletsMap.set(w.address.toLowerCase(), w));
|
|
355
|
-
dexBuyerWallets.forEach(w => allWalletsMap.set(w.address.toLowerCase(), w));
|
|
371
|
+
curveBuyerWallets.forEach((w) => allWalletsMap.set(w.address.toLowerCase(), w));
|
|
372
|
+
dexBuyerWallets.forEach((w) => allWalletsMap.set(w.address.toLowerCase(), w));
|
|
356
373
|
const allWallets = Array.from(allWalletsMap.values());
|
|
357
374
|
const mainWallet = payerWallet;
|
|
358
|
-
const mainWalletIndex = allWallets.findIndex(w => w.address.toLowerCase() === mainWallet.address.toLowerCase());
|
|
375
|
+
const mainWalletIndex = allWallets.findIndex((w) => w.address.toLowerCase() === mainWallet.address.toLowerCase());
|
|
359
376
|
// 计算金额和利润(单边模式:只有买入)
|
|
360
|
-
const curveBuyAmountsWei = curveBuyAmounts.map(amt => ethers.parseEther(amt));
|
|
361
|
-
const dexBuyAmountsWei = dexBuyAmounts.map(amt => ethers.parseEther(amt));
|
|
377
|
+
const curveBuyAmountsWei = curveBuyAmounts.map((amt) => ethers.parseEther(amt));
|
|
378
|
+
const dexBuyAmountsWei = dexBuyAmounts.map((amt) => ethers.parseEther(amt));
|
|
362
379
|
const totalCurveBuyAmount = curveBuyAmountsWei.reduce((sum, amt) => sum + amt, 0n);
|
|
363
380
|
const totalDexBuyAmount = dexBuyAmountsWei.reduce((sum, amt) => sum + amt, 0n);
|
|
364
381
|
const totalBuyAmount = totalCurveBuyAmount + totalDexBuyAmount;
|
|
@@ -366,7 +383,7 @@ export async function bundleCreateToDex(params) {
|
|
|
366
383
|
const profitRecipient = getProfitRecipient(config);
|
|
367
384
|
// 并行获取 nonce 和 fee data
|
|
368
385
|
const [nonces, feeData] = await Promise.all([
|
|
369
|
-
batchGetNonces(allWallets.map(w => w.address), provider),
|
|
386
|
+
batchGetNonces(allWallets.map((w) => w.address), provider),
|
|
370
387
|
provider.getFeeData(),
|
|
371
388
|
]);
|
|
372
389
|
// 签名授权
|
|
@@ -410,7 +427,7 @@ export async function bundleCreateToDex(params) {
|
|
|
410
427
|
deflationBps: tv2.deflationBps,
|
|
411
428
|
dividendBps: tv2.dividendBps,
|
|
412
429
|
lpBps: tv2.lpBps,
|
|
413
|
-
minimumShareBalance: BigInt(tv2.minimumShareBalance ?? 10000) *
|
|
430
|
+
minimumShareBalance: BigInt(tv2.minimumShareBalance ?? 10000) * 10n ** 18n,
|
|
414
431
|
});
|
|
415
432
|
}
|
|
416
433
|
else {
|
|
@@ -432,11 +449,15 @@ export async function bundleCreateToDex(params) {
|
|
|
432
449
|
lpFeeProfile: params.lpFeeProfile ?? 0,
|
|
433
450
|
});
|
|
434
451
|
}
|
|
435
|
-
const createBatchCall = delegateInterface.encodeFunctionData('executeBatch', [
|
|
452
|
+
const createBatchCall = delegateInterface.encodeFunctionData('executeBatch', [
|
|
453
|
+
[
|
|
454
|
+
{
|
|
436
455
|
target: FLAP_PORTAL_ADDRESS,
|
|
437
456
|
value: params.quoteAmt ?? 0n,
|
|
438
457
|
data: createData,
|
|
439
|
-
}
|
|
458
|
+
},
|
|
459
|
+
],
|
|
460
|
+
]);
|
|
440
461
|
calls.push({
|
|
441
462
|
target: payerWallet.address,
|
|
442
463
|
allowFailure: false,
|
|
@@ -449,11 +470,15 @@ export async function bundleCreateToDex(params) {
|
|
|
449
470
|
const buyerWallet = curveBuyerWallets[i];
|
|
450
471
|
const buyAmount = curveBuyAmountsWei[i];
|
|
451
472
|
const buyData = encodeFlapBuyCall(tokenAddress, buyAmount, true, extensionData);
|
|
452
|
-
const buyBatchCall = delegateInterface.encodeFunctionData('executeBatch', [
|
|
473
|
+
const buyBatchCall = delegateInterface.encodeFunctionData('executeBatch', [
|
|
474
|
+
[
|
|
475
|
+
{
|
|
453
476
|
target: FLAP_PORTAL_ADDRESS,
|
|
454
477
|
value: buyAmount,
|
|
455
478
|
data: buyData,
|
|
456
|
-
}
|
|
479
|
+
},
|
|
480
|
+
],
|
|
481
|
+
]);
|
|
457
482
|
// ✅ 修复:value 设为 0n,让钱包使用自己余额买入
|
|
458
483
|
calls.push({
|
|
459
484
|
target: buyerWallet.address,
|
|
@@ -464,7 +489,7 @@ export async function bundleCreateToDex(params) {
|
|
|
464
489
|
}
|
|
465
490
|
// 4. 外盘买入(如果启用)
|
|
466
491
|
if (enableDexBuy && dexBuyerWallets.length > 0) {
|
|
467
|
-
const dexType =
|
|
492
|
+
const dexType = params.lpFeeProfile !== undefined && params.lpFeeProfile >= 0 ? 'V3' : 'V2';
|
|
468
493
|
const v3Fee = lpFeeProfileToV3Fee(params.lpFeeProfile);
|
|
469
494
|
for (let i = 0; i < dexBuyerWallets.length; i++) {
|
|
470
495
|
const buyerWallet = dexBuyerWallets[i];
|
|
@@ -480,11 +505,15 @@ export async function bundleCreateToDex(params) {
|
|
|
480
505
|
swapData = encodeV2BuyCall(tokenAddress, buyerWallet.address, deadline);
|
|
481
506
|
}
|
|
482
507
|
// 使用 executeBatch 调用 DEX Router
|
|
483
|
-
const dexBatchCall = delegateInterface.encodeFunctionData('executeBatch', [
|
|
508
|
+
const dexBatchCall = delegateInterface.encodeFunctionData('executeBatch', [
|
|
509
|
+
[
|
|
510
|
+
{
|
|
484
511
|
target: routerAddress,
|
|
485
512
|
value: buyAmount,
|
|
486
513
|
data: swapData,
|
|
487
|
-
}
|
|
514
|
+
},
|
|
515
|
+
],
|
|
516
|
+
]);
|
|
488
517
|
// ✅ 修复:value 设为 0n,让钱包使用自己余额买入
|
|
489
518
|
calls.push({
|
|
490
519
|
target: buyerWallet.address,
|
|
@@ -498,16 +527,15 @@ export async function bundleCreateToDex(params) {
|
|
|
498
527
|
const totalValue = params.quoteAmt ?? 0n;
|
|
499
528
|
// ✅ 动态计算 Gas Limit:基础操作 + 毕业额外 gas
|
|
500
529
|
// 毕业操作需要约 800 万 gas,加上其他操作的 gas
|
|
501
|
-
const baseGas = GAS_ESTIMATE.BASE
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
530
|
+
const baseGas = GAS_ESTIMATE.BASE +
|
|
531
|
+
BigInt(allWallets.length) * GAS_ESTIMATE.PER_AUTHORIZATION +
|
|
532
|
+
BigInt(calls.length) * GAS_ESTIMATE.PER_CALL_BASE +
|
|
533
|
+
BigInt(curveBuyerWallets.length) * GAS_ESTIMATE.BUY_EXTRA + // 内盘买入
|
|
534
|
+
BigInt(dexBuyerWallets.length) * GAS_ESTIMATE.BUY_EXTRA + // 外盘买入
|
|
535
|
+
GAS_ESTIMATE.CREATE_TOKEN + // 创建代币
|
|
536
|
+
GAS_ESTIMATE.GRADUATE; // 毕业操作 (800万)
|
|
508
537
|
const dynamicGasLimit = BigInt(Math.ceil(Number(baseGas) * GAS_ESTIMATE.SAFETY_MULTIPLIER));
|
|
509
538
|
const finalGasLimit = dynamicGasLimit > GAS_ESTIMATE.MAX ? GAS_ESTIMATE.MAX : dynamicGasLimit;
|
|
510
|
-
console.log(`[bundleCreateToDex] 动态 Gas 计算: 授权=${allWallets.length}, 调用=${calls.length}, 内盘=${curveBuyerWallets.length}, 外盘=${dexBuyerWallets.length}, Gas=${finalGasLimit.toString()}`);
|
|
511
539
|
const toDexConfig = {
|
|
512
540
|
...config,
|
|
513
541
|
gasLimit: finalGasLimit, // ✅ 动态计算的 Gas Limit
|
|
@@ -548,7 +576,7 @@ export async function bundleGraduateBuy(params) {
|
|
|
548
576
|
const delegateInterface = new Interface(UNIFIED_DELEGATE_ABI);
|
|
549
577
|
// 创建钱包
|
|
550
578
|
const payerWallet = createWallet(payerPrivateKey, provider);
|
|
551
|
-
const wallets = privateKeys.map(pk => createWallet(pk, provider));
|
|
579
|
+
const wallets = privateKeys.map((pk) => createWallet(pk, provider));
|
|
552
580
|
// 获取代币状态
|
|
553
581
|
const portalContract = new Contract(FLAP_PORTAL_ADDRESS, FLAP_PORTAL_ABI, provider);
|
|
554
582
|
const tokenState = await portalContract.getTokenV7(tokenAddress);
|
|
@@ -557,12 +585,11 @@ export async function bundleGraduateBuy(params) {
|
|
|
557
585
|
const k = tokenState[6];
|
|
558
586
|
const lpFeeProfile = Number(tokenState[15]);
|
|
559
587
|
// 计算毕业容量
|
|
560
|
-
const graduationReserveWei = (h * k) /
|
|
588
|
+
const graduationReserveWei = (h * k) / 10n ** 18n;
|
|
561
589
|
const poolReserveOkb = Number(ethers.formatEther(reserve));
|
|
562
590
|
const graduateCapacity = graduationAmount ?? Number(ethers.formatEther(graduationReserveWei));
|
|
563
591
|
const remainingToGraduate = Math.max(0, graduateCapacity - poolReserveOkb);
|
|
564
592
|
const remainingToGraduateWei = ethers.parseEther(remainingToGraduate.toFixed(18));
|
|
565
|
-
console.log(`[GraduateBuy] Pool Reserve: ${poolReserveOkb.toFixed(4)} OKB, Graduation: ${graduateCapacity.toFixed(4)} OKB, Remaining: ${remainingToGraduate.toFixed(4)} OKB`);
|
|
566
593
|
// 计算每个钱包的金额
|
|
567
594
|
const normalizedWalletAmounts = {};
|
|
568
595
|
if (walletAmounts) {
|
|
@@ -590,8 +617,8 @@ export async function bundleGraduateBuy(params) {
|
|
|
590
617
|
const dexBuyers = [];
|
|
591
618
|
const hasFrontendGrouping = curveAddresses && curveAddresses.length > 0;
|
|
592
619
|
if (hasFrontendGrouping) {
|
|
593
|
-
const curveSet = new Set(curveAddresses.map(a => a.toLowerCase()));
|
|
594
|
-
const dexSet = dexAddresses ? new Set(dexAddresses.map(a => a.toLowerCase())) : new Set();
|
|
620
|
+
const curveSet = new Set(curveAddresses.map((a) => a.toLowerCase()));
|
|
621
|
+
const dexSet = dexAddresses ? new Set(dexAddresses.map((a) => a.toLowerCase())) : new Set();
|
|
595
622
|
for (let i = 0; i < wallets.length; i++) {
|
|
596
623
|
const wallet = wallets[i];
|
|
597
624
|
const ownerAddr = wallet.address.toLowerCase();
|
|
@@ -626,15 +653,14 @@ export async function bundleGraduateBuy(params) {
|
|
|
626
653
|
}
|
|
627
654
|
}
|
|
628
655
|
}
|
|
629
|
-
console.log(`[GraduateBuy] Curve buyers: ${curveBuyers.length}, DEX buyers: ${dexBuyers.length}`);
|
|
630
656
|
// 合并所有参与的钱包
|
|
631
657
|
const allWalletsMap = new Map();
|
|
632
658
|
allWalletsMap.set(payerWallet.address.toLowerCase(), payerWallet);
|
|
633
|
-
curveBuyers.forEach(b => allWalletsMap.set(b.wallet.address.toLowerCase(), b.wallet));
|
|
634
|
-
dexBuyers.forEach(b => allWalletsMap.set(b.wallet.address.toLowerCase(), b.wallet));
|
|
659
|
+
curveBuyers.forEach((b) => allWalletsMap.set(b.wallet.address.toLowerCase(), b.wallet));
|
|
660
|
+
dexBuyers.forEach((b) => allWalletsMap.set(b.wallet.address.toLowerCase(), b.wallet));
|
|
635
661
|
const allWallets = Array.from(allWalletsMap.values());
|
|
636
662
|
const mainWallet = payerWallet;
|
|
637
|
-
const mainWalletIndex = allWallets.findIndex(w => w.address.toLowerCase() === mainWallet.address.toLowerCase());
|
|
663
|
+
const mainWalletIndex = allWallets.findIndex((w) => w.address.toLowerCase() === mainWallet.address.toLowerCase());
|
|
638
664
|
// 计算金额和利润(单边模式:只有买入)
|
|
639
665
|
const curveTotalWei = curveBuyers.reduce((sum, b) => sum + b.amount, 0n);
|
|
640
666
|
const dexTotalWei = dexBuyers.reduce((sum, b) => sum + b.amount, 0n);
|
|
@@ -643,7 +669,7 @@ export async function bundleGraduateBuy(params) {
|
|
|
643
669
|
const profitRecipient = getProfitRecipient(config);
|
|
644
670
|
// 并行获取 nonce 和 fee data
|
|
645
671
|
const [nonces, feeData] = await Promise.all([
|
|
646
|
-
batchGetNonces(allWallets.map(w => w.address), provider),
|
|
672
|
+
batchGetNonces(allWallets.map((w) => w.address), provider),
|
|
647
673
|
provider.getFeeData(),
|
|
648
674
|
]);
|
|
649
675
|
// 签名授权
|
|
@@ -661,11 +687,15 @@ export async function bundleGraduateBuy(params) {
|
|
|
661
687
|
for (let i = 0; i < curveBuyers.length; i++) {
|
|
662
688
|
const { wallet, amount } = curveBuyers[i];
|
|
663
689
|
const buyData = encodeFlapBuyCall(tokenAddress, amount, useV3OrV4, extensionData);
|
|
664
|
-
const buyBatchCall = delegateInterface.encodeFunctionData('executeBatch', [
|
|
690
|
+
const buyBatchCall = delegateInterface.encodeFunctionData('executeBatch', [
|
|
691
|
+
[
|
|
692
|
+
{
|
|
665
693
|
target: FLAP_PORTAL_ADDRESS,
|
|
666
694
|
value: amount,
|
|
667
695
|
data: buyData,
|
|
668
|
-
}
|
|
696
|
+
},
|
|
697
|
+
],
|
|
698
|
+
]);
|
|
669
699
|
// ✅ 修复:value 设为 0n,让钱包使用自己余额买入
|
|
670
700
|
calls.push({
|
|
671
701
|
target: wallet.address,
|
|
@@ -676,7 +706,7 @@ export async function bundleGraduateBuy(params) {
|
|
|
676
706
|
}
|
|
677
707
|
// 3. 外盘买入
|
|
678
708
|
if (enableDexBuy && dexBuyers.length > 0) {
|
|
679
|
-
const dexType =
|
|
709
|
+
const dexType = lpFeeProfile >= 0 ? 'V3' : 'V2';
|
|
680
710
|
const v3Fee = lpFeeProfileToV3Fee(lpFeeProfile);
|
|
681
711
|
for (let i = 0; i < dexBuyers.length; i++) {
|
|
682
712
|
const { wallet, amount } = dexBuyers[i];
|
|
@@ -690,11 +720,15 @@ export async function bundleGraduateBuy(params) {
|
|
|
690
720
|
routerAddress = POTATOSWAP_V2_ROUTER;
|
|
691
721
|
swapData = encodeV2BuyCall(tokenAddress, wallet.address, deadline);
|
|
692
722
|
}
|
|
693
|
-
const dexBatchCall = delegateInterface.encodeFunctionData('executeBatch', [
|
|
723
|
+
const dexBatchCall = delegateInterface.encodeFunctionData('executeBatch', [
|
|
724
|
+
[
|
|
725
|
+
{
|
|
694
726
|
target: routerAddress,
|
|
695
727
|
value: amount,
|
|
696
728
|
data: swapData,
|
|
697
|
-
}
|
|
729
|
+
},
|
|
730
|
+
],
|
|
731
|
+
]);
|
|
698
732
|
// ✅ 修复:value 设为 0n,让钱包使用自己余额买入
|
|
699
733
|
calls.push({
|
|
700
734
|
target: wallet.address,
|
|
@@ -6,12 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* 只生成签名,由调用方决定如何提交
|
|
8
8
|
*/
|
|
9
|
-
import type { BundleSellParams
|
|
10
|
-
import { type UserType } from './utils.js';
|
|
11
|
-
export interface BundleSellParams extends BaseBundleSellParams {
|
|
12
|
-
/** 用户类型(影响利润率) */
|
|
13
|
-
userType?: UserType;
|
|
14
|
-
}
|
|
9
|
+
import type { BundleSellParams, BundleSellResult } from './types.js';
|
|
15
10
|
/**
|
|
16
11
|
* 批量卖出 - 生成签名后的交易
|
|
17
12
|
*
|
|
@@ -49,4 +44,5 @@ export interface BundleSellParams extends BaseBundleSellParams {
|
|
|
49
44
|
* fee: 2500,
|
|
50
45
|
* });
|
|
51
46
|
*/
|
|
47
|
+
export type { BundleSellParams } from './types.js';
|
|
52
48
|
export declare function bundleSell(params: BundleSellParams): Promise<BundleSellResult>;
|