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
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { ethers } from 'ethers';
|
|
2
|
+
import { getCachedProvider, createWallet, generateRandomWallets, getProfitRecipient } from './utils.js';
|
|
3
|
+
import { UNIFIED_DELEGATE_ADDRESS, UNIFIED_DELEGATE_ABI } from './constants.js';
|
|
4
|
+
export function createEip7702DelegateContext(config) {
|
|
5
|
+
const provider = getCachedProvider(config?.rpcUrl);
|
|
6
|
+
const delegateAddress = (config?.delegateAddress && config.delegateAddress.trim()) || UNIFIED_DELEGATE_ADDRESS;
|
|
7
|
+
const delegateInterface = new ethers.Interface(UNIFIED_DELEGATE_ABI);
|
|
8
|
+
const profitRecipient = getProfitRecipient(config);
|
|
9
|
+
return { provider, delegateAddress, delegateInterface, profitRecipient };
|
|
10
|
+
}
|
|
11
|
+
export function isNativeTransferToken(tokenAddress) {
|
|
12
|
+
return !tokenAddress;
|
|
13
|
+
}
|
|
14
|
+
export function generateHopWalletMatrix(rowCount, hopCount, provider) {
|
|
15
|
+
const allHopWalletInfos = [];
|
|
16
|
+
const allHopWallets = [];
|
|
17
|
+
for (let i = 0; i < rowCount; i++) {
|
|
18
|
+
if (hopCount > 0) {
|
|
19
|
+
const hopInfos = generateRandomWallets(hopCount);
|
|
20
|
+
allHopWalletInfos.push(hopInfos);
|
|
21
|
+
allHopWallets.push(hopInfos.map((info) => createWallet(info.privateKey, provider)));
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
allHopWalletInfos.push([]);
|
|
25
|
+
allHopWallets.push([]);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return { allHopWalletInfos, allHopWallets };
|
|
29
|
+
}
|
|
30
|
+
export function resolveDispersePayerWallets(mainPrivateKey, payerPrivateKey, provider) {
|
|
31
|
+
const mainWallet = createWallet(mainPrivateKey, provider);
|
|
32
|
+
const hasSeparatePayer = Boolean(payerPrivateKey && payerPrivateKey !== mainPrivateKey);
|
|
33
|
+
const payerWallet = hasSeparatePayer ? createWallet(payerPrivateKey, provider) : null;
|
|
34
|
+
const txSender = payerWallet ?? mainWallet;
|
|
35
|
+
return { mainWallet, payerWallet, txSender, hasSeparatePayer };
|
|
36
|
+
}
|
|
37
|
+
export function resolveListPayerWallet(ownerPrivateKeys, payerPrivateKey, provider, fallbackToFirst = true) {
|
|
38
|
+
const hasSeparatePayer = Boolean(payerPrivateKey && !ownerPrivateKeys.includes(payerPrivateKey));
|
|
39
|
+
const payerWallet = hasSeparatePayer ? createWallet(payerPrivateKey, provider) : null;
|
|
40
|
+
const mainWallet = payerWallet ?? (fallbackToFirst ? createWallet(ownerPrivateKeys[0], provider) : null);
|
|
41
|
+
return { payerWallet, hasSeparatePayer, mainWallet };
|
|
42
|
+
}
|
|
43
|
+
export function parseTransferAmountsWei(amounts, isNative, tokenDecimals) {
|
|
44
|
+
return amounts.map((amt) => (isNative ? ethers.parseEther(amt) : ethers.parseUnits(amt, tokenDecimals)));
|
|
45
|
+
}
|
|
46
|
+
export function normalizePairwiseAmounts(pairCount, amount, amounts) {
|
|
47
|
+
if (amounts && amounts.length > 0) {
|
|
48
|
+
if (amounts.length !== pairCount) {
|
|
49
|
+
throw new Error(`amounts 长度 (${amounts.length}) 必须与对数 (${pairCount}) 相同`);
|
|
50
|
+
}
|
|
51
|
+
return amounts;
|
|
52
|
+
}
|
|
53
|
+
if (amount !== undefined && amount.trim().length > 0) {
|
|
54
|
+
return new Array(pairCount).fill(amount);
|
|
55
|
+
}
|
|
56
|
+
throw new Error('必须提供 amount 或 amounts');
|
|
57
|
+
}
|
|
@@ -53,6 +53,8 @@ export interface BundleBuyParams {
|
|
|
53
53
|
routerAddress?: string;
|
|
54
54
|
/** V3 费率(可选,默认 2500,仅 V3 使用) */
|
|
55
55
|
fee?: number;
|
|
56
|
+
/** 用户类型(影响利润率) */
|
|
57
|
+
userType?: UserType;
|
|
56
58
|
/** 配置 */
|
|
57
59
|
config?: EIP7702Config;
|
|
58
60
|
}
|
|
@@ -87,6 +89,8 @@ export interface BundleSellParams {
|
|
|
87
89
|
routerAddress?: string;
|
|
88
90
|
/** V3 费率(可选,默认 2500,仅 V3 使用) */
|
|
89
91
|
fee?: number;
|
|
92
|
+
/** 用户类型(影响利润率) */
|
|
93
|
+
userType?: UserType;
|
|
90
94
|
/** 配置 */
|
|
91
95
|
config?: EIP7702Config;
|
|
92
96
|
}
|
|
@@ -156,6 +160,14 @@ export interface BundleSwapParams {
|
|
|
156
160
|
routerAddress?: string;
|
|
157
161
|
/** V3 费率(可选,默认 2500,仅 V3 使用) */
|
|
158
162
|
fee?: number;
|
|
163
|
+
/** 用户类型(影响利润率) */
|
|
164
|
+
userType?: UserType;
|
|
165
|
+
/**
|
|
166
|
+
* 是否使用资金利用率模式(默认 false)
|
|
167
|
+
* - false(普通模式): 卖家卖出 OKB 留在卖家账户,买家用自己预存的 OKB 买入
|
|
168
|
+
* - true(资金利用率模式): 卖家卖出的 OKB 通过多跳转账给买家,买家用收到的 OKB 买入
|
|
169
|
+
*/
|
|
170
|
+
useFundUtilization?: boolean;
|
|
159
171
|
/** 配置 */
|
|
160
172
|
config?: EIP7702Config;
|
|
161
173
|
}
|
|
@@ -180,6 +192,14 @@ export interface BundleBatchSwapParams {
|
|
|
180
192
|
routerAddress?: string;
|
|
181
193
|
/** V3 费率(可选,默认 2500,仅 V3 使用) */
|
|
182
194
|
fee?: number;
|
|
195
|
+
/** 用户类型(影响利润率) */
|
|
196
|
+
userType?: UserType;
|
|
197
|
+
/**
|
|
198
|
+
* 是否使用资金利用率模式(默认 false)
|
|
199
|
+
* - false(普通模式): 卖家卖出 OKB 留在卖家账户,买家用自己预存的 OKB 买入
|
|
200
|
+
* - true(资金利用率模式): 卖家卖出的 OKB 通过多跳转账给买家,买家用收到的 OKB 买入
|
|
201
|
+
*/
|
|
202
|
+
useFundUtilization?: boolean;
|
|
183
203
|
/** 配置 */
|
|
184
204
|
config?: EIP7702Config;
|
|
185
205
|
}
|
|
@@ -442,6 +462,74 @@ export interface BundleCreateToDexResult {
|
|
|
442
462
|
profitAmount: string;
|
|
443
463
|
};
|
|
444
464
|
}
|
|
465
|
+
export interface BundleMultiSwapParams {
|
|
466
|
+
/** Payer 钱包私钥(支付 Gas 费) */
|
|
467
|
+
mainPrivateKey: string;
|
|
468
|
+
/** 卖出钱包私钥列表 */
|
|
469
|
+
sellerPrivateKeys: string[];
|
|
470
|
+
/** 买入钱包私钥列表 */
|
|
471
|
+
buyerPrivateKeys: string[];
|
|
472
|
+
/** 买入总金额 (OKB) */
|
|
473
|
+
totalBuyAmount: string;
|
|
474
|
+
/** 代币地址 */
|
|
475
|
+
tokenAddress: string;
|
|
476
|
+
/** 代币精度 */
|
|
477
|
+
tokenDecimals?: number;
|
|
478
|
+
/** 卖出百分比(1-100,默认 100) */
|
|
479
|
+
sellPercent?: number;
|
|
480
|
+
/** 交易类型:FLAP 内盘 / V2 / V3(默认 V3) */
|
|
481
|
+
tradeType?: TradeType;
|
|
482
|
+
/** 路由地址(可选,根据 tradeType 自动选择) */
|
|
483
|
+
routerAddress?: string;
|
|
484
|
+
/** V3 费率(可选,默认 2500,仅 V3 使用) */
|
|
485
|
+
fee?: number;
|
|
486
|
+
/** 用户类型(影响利润率) */
|
|
487
|
+
userType?: UserType;
|
|
488
|
+
/** 配置 */
|
|
489
|
+
config?: EIP7702Config;
|
|
490
|
+
}
|
|
491
|
+
export interface BundleMultiSwapResult {
|
|
492
|
+
/** 签名后的交易 */
|
|
493
|
+
signedTransaction: string;
|
|
494
|
+
/** 元数据 */
|
|
495
|
+
metadata: {
|
|
496
|
+
payerAddress: string;
|
|
497
|
+
sellerAddresses: string[];
|
|
498
|
+
buyerAddresses: string[];
|
|
499
|
+
sellerCount: number;
|
|
500
|
+
buyerCount: number;
|
|
501
|
+
totalBuyAmount: string;
|
|
502
|
+
totalSellAmount: string;
|
|
503
|
+
profitAmount: string;
|
|
504
|
+
profitRecipient: string;
|
|
505
|
+
userType: string;
|
|
506
|
+
};
|
|
507
|
+
}
|
|
508
|
+
export interface BundleApproveMultiSpendersParams {
|
|
509
|
+
/** 主钱包(发起交易,支付 gas) */
|
|
510
|
+
mainPrivateKey: string;
|
|
511
|
+
/** 需要授权的钱包私钥列表 */
|
|
512
|
+
privateKeys: string[];
|
|
513
|
+
/** 代币地址 */
|
|
514
|
+
tokenAddress: string;
|
|
515
|
+
/** 授权给的地址列表(多个 spender) */
|
|
516
|
+
spenderAddresses: string[];
|
|
517
|
+
/** 授权金额(可选,默认 MaxUint256) */
|
|
518
|
+
amount?: bigint;
|
|
519
|
+
/** 配置 */
|
|
520
|
+
config?: EIP7702Config;
|
|
521
|
+
}
|
|
522
|
+
export interface BundleApproveMultiSpendersResult {
|
|
523
|
+
/** 签名后的交易 */
|
|
524
|
+
signedTransaction: string;
|
|
525
|
+
/** 元数据 */
|
|
526
|
+
metadata: {
|
|
527
|
+
walletCount: number;
|
|
528
|
+
tokenAddress: string;
|
|
529
|
+
spenderAddresses: string[];
|
|
530
|
+
totalApproveCalls: number;
|
|
531
|
+
};
|
|
532
|
+
}
|
|
445
533
|
export type AmountMode = 'average' | 'random' | 'custom';
|
|
446
534
|
export interface BundleGraduateBuyParams {
|
|
447
535
|
/** 代币地址 */
|
|
@@ -62,9 +62,6 @@ export type UserType = 'v0' | 'v1' | 'default';
|
|
|
62
62
|
export declare function getProfitRateBps(userType?: UserType): number;
|
|
63
63
|
/**
|
|
64
64
|
* 根据用户类型获取利润率(双边/换手模式)
|
|
65
|
-
* - v0: 4 bps = 0.04%
|
|
66
|
-
* - v1: 5 bps = 0.05%
|
|
67
|
-
* - default: 4 bps = 0.04%
|
|
68
65
|
*/
|
|
69
66
|
export declare function getProfitRateBpsDouble(userType?: UserType): number;
|
|
70
67
|
/**
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* EIP-7702 XLayer 工具函数
|
|
3
3
|
*/
|
|
4
|
-
import { ethers, Wallet
|
|
4
|
+
import { ethers, Wallet } from 'ethers';
|
|
5
|
+
import { createXLayerProvider } from '../../../utils/provider-factory.js';
|
|
5
6
|
import * as rlp from '@ethereumjs/rlp';
|
|
6
|
-
import { XLAYER_CHAIN_ID, XLAYER_RPC_URL, MULTICALL3_ADDRESS, GAS_ESTIMATE, EIP7702_TX_TYPE, EIP7702_AUTH_PREFIX, MULTICALL3_ABI,
|
|
7
|
+
import { XLAYER_CHAIN_ID, XLAYER_RPC_URL, MULTICALL3_ADDRESS, GAS_ESTIMATE, EIP7702_TX_TYPE, EIP7702_AUTH_PREFIX, MULTICALL3_ABI, DEFAULT_DEADLINE_MINUTES, } from './constants.js';
|
|
8
|
+
import { getProfitRateBps as getSharedProfitRateBps, getProfitRecipient as pickRandomProfitRecipient, } from '../../../shared/constants/index.js';
|
|
7
9
|
// ========================================
|
|
8
10
|
// 字节转换工具
|
|
9
11
|
// ========================================
|
|
@@ -41,7 +43,7 @@ const providerCache = new Map();
|
|
|
41
43
|
export function getCachedProvider(rpcUrl = XLAYER_RPC_URL) {
|
|
42
44
|
let provider = providerCache.get(rpcUrl);
|
|
43
45
|
if (!provider) {
|
|
44
|
-
provider =
|
|
46
|
+
provider = createXLayerProvider(rpcUrl);
|
|
45
47
|
providerCache.set(rpcUrl, provider);
|
|
46
48
|
}
|
|
47
49
|
return provider;
|
|
@@ -220,11 +222,7 @@ export function generateRandomWallets(count) {
|
|
|
220
222
|
// EIP-7702 授权签名
|
|
221
223
|
// ========================================
|
|
222
224
|
export async function signAuthorization(wallet, delegateAddress, nonce, chainId = XLAYER_CHAIN_ID) {
|
|
223
|
-
const authData = [
|
|
224
|
-
bigintToBytes(BigInt(chainId)),
|
|
225
|
-
addressToBytes(delegateAddress),
|
|
226
|
-
bigintToBytes(nonce),
|
|
227
|
-
];
|
|
225
|
+
const authData = [bigintToBytes(BigInt(chainId)), addressToBytes(delegateAddress), bigintToBytes(nonce)];
|
|
228
226
|
const rlpEncoded = rlp.encode(authData);
|
|
229
227
|
const toSign = new Uint8Array(1 + rlpEncoded.length);
|
|
230
228
|
toSign[0] = EIP7702_AUTH_PREFIX;
|
|
@@ -253,7 +251,7 @@ export async function signAuthorizationWithNonce(wallet, delegateAddress, provid
|
|
|
253
251
|
*/
|
|
254
252
|
export async function signAuthorizationsBatch(wallets, delegateAddress, provider, mainWalletIndex) {
|
|
255
253
|
// 并行获取所有钱包的 nonce
|
|
256
|
-
const nonces = await Promise.all(wallets.map(w => provider.getTransactionCount(w.address, 'pending')));
|
|
254
|
+
const nonces = await Promise.all(wallets.map((w) => provider.getTransactionCount(w.address, 'pending')));
|
|
257
255
|
// 并行签署所有授权(签名是同步 CPU 操作,但包装成 Promise 以保持一致性)
|
|
258
256
|
return Promise.all(wallets.map((wallet, i) => {
|
|
259
257
|
const isMainWallet = mainWalletIndex !== undefined && i === mainWalletIndex;
|
|
@@ -295,7 +293,7 @@ export function signAuthorizationsWithNonces(wallets, nonces, delegateAddress, m
|
|
|
295
293
|
* 批量获取多个地址的 nonce - 并行
|
|
296
294
|
*/
|
|
297
295
|
export async function batchGetNonces(addresses, provider) {
|
|
298
|
-
return Promise.all(addresses.map(addr => provider.getTransactionCount(addr, 'pending')));
|
|
296
|
+
return Promise.all(addresses.map((addr) => provider.getTransactionCount(addr, 'pending')));
|
|
299
297
|
}
|
|
300
298
|
// ========================================
|
|
301
299
|
// EIP-7702 交易构建
|
|
@@ -314,14 +312,14 @@ export async function buildEIP7702Transaction(mainWallet, authorizations, calls,
|
|
|
314
312
|
const maxFeePerGas = feeData.maxFeePerGas || ethers.parseUnits('50', 'gwei');
|
|
315
313
|
const multicall3 = new ethers.Interface(MULTICALL3_ABI);
|
|
316
314
|
const callData = multicall3.encodeFunctionData('aggregate3Value', [
|
|
317
|
-
calls.map(c => ({
|
|
315
|
+
calls.map((c) => ({
|
|
318
316
|
target: c.target,
|
|
319
317
|
allowFailure: c.allowFailure,
|
|
320
318
|
value: c.value,
|
|
321
319
|
callData: c.callData,
|
|
322
|
-
}))
|
|
320
|
+
})),
|
|
323
321
|
]);
|
|
324
|
-
const authList = authorizations.map(auth => [
|
|
322
|
+
const authList = authorizations.map((auth) => [
|
|
325
323
|
bigintToBytes(auth.chainId),
|
|
326
324
|
addressToBytes(auth.address),
|
|
327
325
|
bigintToBytes(auth.nonce),
|
|
@@ -372,14 +370,14 @@ export function buildEIP7702TransactionSync(mainWallet, authorizations, calls, t
|
|
|
372
370
|
const maxFeePerGas = feeData.maxFeePerGas || ethers.parseUnits('50', 'gwei');
|
|
373
371
|
const multicall3 = new ethers.Interface(MULTICALL3_ABI);
|
|
374
372
|
const callData = multicall3.encodeFunctionData('aggregate3Value', [
|
|
375
|
-
calls.map(c => ({
|
|
373
|
+
calls.map((c) => ({
|
|
376
374
|
target: c.target,
|
|
377
375
|
allowFailure: c.allowFailure,
|
|
378
376
|
value: c.value,
|
|
379
377
|
callData: c.callData,
|
|
380
|
-
}))
|
|
378
|
+
})),
|
|
381
379
|
]);
|
|
382
|
-
const authList = authorizations.map(auth => [
|
|
380
|
+
const authList = authorizations.map((auth) => [
|
|
383
381
|
bigintToBytes(auth.chainId),
|
|
384
382
|
addressToBytes(auth.address),
|
|
385
383
|
bigintToBytes(auth.nonce),
|
|
@@ -427,29 +425,26 @@ export function buildEIP7702TransactionSync(mainWallet, authorizations, calls, t
|
|
|
427
425
|
*/
|
|
428
426
|
export function getProfitRateBps(userType) {
|
|
429
427
|
if (userType === 'v0')
|
|
430
|
-
return
|
|
428
|
+
return getSharedProfitRateBps('v0Single');
|
|
431
429
|
if (userType === 'v1')
|
|
432
|
-
return
|
|
433
|
-
return
|
|
430
|
+
return getSharedProfitRateBps('v1Single');
|
|
431
|
+
return getSharedProfitRateBps('v0Single');
|
|
434
432
|
}
|
|
435
433
|
/**
|
|
436
434
|
* 根据用户类型获取利润率(双边/换手模式)
|
|
437
|
-
* - v0: 4 bps = 0.04%
|
|
438
|
-
* - v1: 5 bps = 0.05%
|
|
439
|
-
* - default: 4 bps = 0.04%
|
|
440
435
|
*/
|
|
441
436
|
export function getProfitRateBpsDouble(userType) {
|
|
442
437
|
if (userType === 'v0')
|
|
443
|
-
return
|
|
438
|
+
return getSharedProfitRateBps('v0Double');
|
|
444
439
|
if (userType === 'v1')
|
|
445
|
-
return
|
|
446
|
-
return
|
|
440
|
+
return getSharedProfitRateBps('v1Double');
|
|
441
|
+
return getSharedProfitRateBps('v0Double');
|
|
447
442
|
}
|
|
448
443
|
/**
|
|
449
444
|
* 计算利润金额(旧版兼容)
|
|
450
445
|
*/
|
|
451
446
|
export function calculateProfitAmount(totalFlowWei, isSwapMode = false) {
|
|
452
|
-
const rateBps = isSwapMode ?
|
|
447
|
+
const rateBps = getSharedProfitRateBps(isSwapMode ? 'bundleSwap' : 'normal');
|
|
453
448
|
return (totalFlowWei * BigInt(rateBps)) / 10000n;
|
|
454
449
|
}
|
|
455
450
|
/**
|
|
@@ -478,7 +473,7 @@ export function calculateProfitAmountByTxCount(totalFlowWei, txCount, userType)
|
|
|
478
473
|
return (totalFlowWei * BigInt(totalRateBps)) / 10000n;
|
|
479
474
|
}
|
|
480
475
|
export function getProfitRecipient(config) {
|
|
481
|
-
return config?.profitRecipient ??
|
|
476
|
+
return config?.profitRecipient ?? pickRandomProfitRecipient();
|
|
482
477
|
}
|
|
483
478
|
// ========================================
|
|
484
479
|
// 时间工具
|
|
@@ -487,5 +482,5 @@ export function getDeadline(minutes = DEFAULT_DEADLINE_MINUTES) {
|
|
|
487
482
|
return Math.floor(Date.now() / 1000) + minutes * 60;
|
|
488
483
|
}
|
|
489
484
|
export function delay(ms) {
|
|
490
|
-
return new Promise(resolve => setTimeout(resolve, ms));
|
|
485
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
491
486
|
}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EIP-7702 XLayer 刷量功能
|
|
3
|
+
*
|
|
4
|
+
* 支持两种模式:
|
|
5
|
+
* 1. 无币模式 (Wash): 单钱包买入+卖出,不需要预先持有代币
|
|
6
|
+
* 2. 捆绑模式 (Bundle): 多钱包批量买入 + 批量卖出
|
|
7
|
+
*
|
|
8
|
+
* 支持池子类型:
|
|
9
|
+
* - FLAP: 内盘 (Flap Portal)
|
|
10
|
+
* - V2: PotatoSwap V2 外盘
|
|
11
|
+
* - V3: PotatoSwap V3 外盘
|
|
12
|
+
*
|
|
13
|
+
* 只生成签名,由调用方决定如何提交
|
|
14
|
+
*/
|
|
15
|
+
import type { EIP7702Config, TradeType, GeneratedWallet } from './types.js';
|
|
16
|
+
import type { UserType } from './utils.js';
|
|
17
|
+
export type VolumeMode = 'wash' | 'bundle';
|
|
18
|
+
export type PoolType = 'FLAP' | 'V2' | 'V3';
|
|
19
|
+
/**
|
|
20
|
+
* 截断小数位数,避免 parseEther/parseUnits 报错
|
|
21
|
+
* @param value 数值字符串
|
|
22
|
+
* @param decimals 保留的小数位数(默认 18)
|
|
23
|
+
*/
|
|
24
|
+
export declare function truncateDecimals(value: string, decimals?: number): string;
|
|
25
|
+
export interface VolumeProgress {
|
|
26
|
+
currentRound: number;
|
|
27
|
+
totalRounds: number;
|
|
28
|
+
status: 'pending' | 'running' | 'completed' | 'failed';
|
|
29
|
+
message?: string;
|
|
30
|
+
}
|
|
31
|
+
export interface WashVolumeParams {
|
|
32
|
+
/** Payer 钱包私钥(支付 Gas 费) */
|
|
33
|
+
mainPrivateKey: string;
|
|
34
|
+
/** 钱包私钥列表(每个钱包独立执行买入+卖出) */
|
|
35
|
+
privateKeys: string[];
|
|
36
|
+
/** 代币地址 */
|
|
37
|
+
tokenAddress: string;
|
|
38
|
+
/** 代币精度 */
|
|
39
|
+
tokenDecimals?: number;
|
|
40
|
+
/** 每个钱包的买入金额 (OKB) */
|
|
41
|
+
buyAmountPerWallet: string;
|
|
42
|
+
/** 卖出百分比(1-100) */
|
|
43
|
+
sellPercent?: number;
|
|
44
|
+
/** 池子类型 */
|
|
45
|
+
poolType?: PoolType;
|
|
46
|
+
/** 路由地址(V2/V3 模式) */
|
|
47
|
+
routerAddress?: string;
|
|
48
|
+
/** V3 费率 */
|
|
49
|
+
fee?: number;
|
|
50
|
+
/** 用户类型(影响利润率) */
|
|
51
|
+
userType?: UserType;
|
|
52
|
+
/** EIP-7702 配置 */
|
|
53
|
+
config?: EIP7702Config;
|
|
54
|
+
}
|
|
55
|
+
export interface WashVolumeResult {
|
|
56
|
+
signedTransaction: string;
|
|
57
|
+
metadata: {
|
|
58
|
+
walletCount: number;
|
|
59
|
+
buyAmountPerWallet: string;
|
|
60
|
+
totalBuyAmount: string;
|
|
61
|
+
sellPercent: number;
|
|
62
|
+
poolType: PoolType;
|
|
63
|
+
profitAmount: string;
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
export interface BundleVolumeParams {
|
|
67
|
+
mainPrivateKey: string;
|
|
68
|
+
buyerPrivateKeys: string[];
|
|
69
|
+
buyAmounts: string[];
|
|
70
|
+
sellerPrivateKeys: string[];
|
|
71
|
+
sellAmounts?: string[];
|
|
72
|
+
sellPercent?: number;
|
|
73
|
+
tokenAddress: string;
|
|
74
|
+
tokenDecimals?: number;
|
|
75
|
+
poolType?: PoolType;
|
|
76
|
+
routerAddress?: string;
|
|
77
|
+
fee?: number;
|
|
78
|
+
userType?: UserType;
|
|
79
|
+
config?: EIP7702Config;
|
|
80
|
+
}
|
|
81
|
+
export interface BundleVolumeResult {
|
|
82
|
+
signedTransaction: string;
|
|
83
|
+
metadata: {
|
|
84
|
+
buyerCount: number;
|
|
85
|
+
sellerCount: number;
|
|
86
|
+
totalBuyAmount: string;
|
|
87
|
+
totalSellAmount: string;
|
|
88
|
+
poolType: PoolType;
|
|
89
|
+
profitAmount: string;
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
export interface SingleRoundVolumeResult {
|
|
93
|
+
buySignedTransaction: string;
|
|
94
|
+
sellSignedTransaction: string;
|
|
95
|
+
metadata: {
|
|
96
|
+
buyAmount: string;
|
|
97
|
+
sellPercent: number;
|
|
98
|
+
walletCount: number;
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
export interface MakeVolumeParams {
|
|
102
|
+
privateKeys: string[];
|
|
103
|
+
tokenAddress: string;
|
|
104
|
+
tokenDecimals?: number;
|
|
105
|
+
buyAmountPerRound: string;
|
|
106
|
+
rounds: number;
|
|
107
|
+
tradeType?: TradeType;
|
|
108
|
+
routerAddress?: string;
|
|
109
|
+
fee?: number;
|
|
110
|
+
onProgress?: (progress: VolumeProgress) => void;
|
|
111
|
+
config?: EIP7702Config;
|
|
112
|
+
}
|
|
113
|
+
export interface MakeVolumeSignResult {
|
|
114
|
+
rounds: SingleRoundVolumeResult[];
|
|
115
|
+
metadata: {
|
|
116
|
+
totalRounds: number;
|
|
117
|
+
totalBuyAmount: string;
|
|
118
|
+
walletCount: number;
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
export interface SwapVolumeSignResult {
|
|
122
|
+
signedTransaction: string;
|
|
123
|
+
hopWallets: GeneratedWallet[];
|
|
124
|
+
metadata: {
|
|
125
|
+
sellerAddress: string;
|
|
126
|
+
buyerAddress: string;
|
|
127
|
+
sellAmount: string;
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* 无币刷量 - 每个钱包执行买入+卖出
|
|
132
|
+
*
|
|
133
|
+
* 核心逻辑:[利润刮取] + [钱包1买入] + [钱包1卖出] + [钱包2买入] + [钱包2卖出] + ...
|
|
134
|
+
*
|
|
135
|
+
* 特点:
|
|
136
|
+
* - 钱包不需要预先持有代币
|
|
137
|
+
* - 每个钱包在同一笔交易中完成买入和卖出
|
|
138
|
+
* - 利润从主钱包统一支付
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* const result = await washVolume({
|
|
142
|
+
* privateKeys: ['0x...', '0x...'],
|
|
143
|
+
* tokenAddress: '0x...',
|
|
144
|
+
* buyAmountPerWallet: '0.01',
|
|
145
|
+
* sellPercent: 100,
|
|
146
|
+
* poolType: 'V3',
|
|
147
|
+
* });
|
|
148
|
+
*/
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EIP-7702 XLayer 刷量功能
|
|
3
|
+
*
|
|
4
|
+
* 支持两种模式:
|
|
5
|
+
* 1. 无币模式 (Wash): 单钱包买入+卖出,不需要预先持有代币
|
|
6
|
+
* 2. 捆绑模式 (Bundle): 多钱包批量买入 + 批量卖出
|
|
7
|
+
*
|
|
8
|
+
* 支持池子类型:
|
|
9
|
+
* - FLAP: 内盘 (Flap Portal)
|
|
10
|
+
* - V2: PotatoSwap V2 外盘
|
|
11
|
+
* - V3: PotatoSwap V3 外盘
|
|
12
|
+
*
|
|
13
|
+
* 只生成签名,由调用方决定如何提交
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* 截断小数位数,避免 parseEther/parseUnits 报错
|
|
17
|
+
* @param value 数值字符串
|
|
18
|
+
* @param decimals 保留的小数位数(默认 18)
|
|
19
|
+
*/
|
|
20
|
+
export function truncateDecimals(value, decimals = 18) {
|
|
21
|
+
if (!value || value === '0')
|
|
22
|
+
return value;
|
|
23
|
+
const parts = String(value).split('.');
|
|
24
|
+
if (parts.length === 1)
|
|
25
|
+
return value;
|
|
26
|
+
const intPart = parts[0] || '0';
|
|
27
|
+
const decPart = (parts[1] || '').slice(0, decimals);
|
|
28
|
+
return decPart ? `${intPart}.${decPart}` : intPart;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* 无币刷量 - 每个钱包执行买入+卖出
|
|
32
|
+
*
|
|
33
|
+
* 核心逻辑:[利润刮取] + [钱包1买入] + [钱包1卖出] + [钱包2买入] + [钱包2卖出] + ...
|
|
34
|
+
*
|
|
35
|
+
* 特点:
|
|
36
|
+
* - 钱包不需要预先持有代币
|
|
37
|
+
* - 每个钱包在同一笔交易中完成买入和卖出
|
|
38
|
+
* - 利润从主钱包统一支付
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* const result = await washVolume({
|
|
42
|
+
* privateKeys: ['0x...', '0x...'],
|
|
43
|
+
* tokenAddress: '0x...',
|
|
44
|
+
* buyAmountPerWallet: '0.01',
|
|
45
|
+
* sellPercent: 100,
|
|
46
|
+
* poolType: 'V3',
|
|
47
|
+
* });
|
|
48
|
+
*/
|