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
|
@@ -11,8 +11,9 @@
|
|
|
11
11
|
* 支持池子类型:V2, V3
|
|
12
12
|
*/
|
|
13
13
|
import { ethers, Wallet, Contract } from 'ethers';
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
14
|
+
import { createXLayerProvider } from '../../../utils/provider-factory.js';
|
|
15
|
+
import { directV2BatchBuy, directV2BatchSell, directV3BatchBuy, directV3BatchSell, } from '../../../dex/direct-router.js';
|
|
16
|
+
import { getProfitRecipient } from '../../../shared/constants/index.js';
|
|
16
17
|
// ============================================================================
|
|
17
18
|
// 辅助函数
|
|
18
19
|
// ============================================================================
|
|
@@ -54,8 +55,8 @@ export async function signEoaWashBuyTransactions(params) {
|
|
|
54
55
|
throw new Error('[signEoaWashBuyTransactions] 私钥数量与买入金额数量不一致');
|
|
55
56
|
}
|
|
56
57
|
// 创建钱包
|
|
57
|
-
const provider =
|
|
58
|
-
const wallets = privateKeys.map(pk => new Wallet(pk, provider));
|
|
58
|
+
const provider = createXLayerProvider(config.rpcUrl);
|
|
59
|
+
const wallets = privateKeys.map((pk) => new Wallet(pk, provider));
|
|
59
60
|
let result;
|
|
60
61
|
if (poolType === 'V2') {
|
|
61
62
|
result = await directV2BatchBuy({
|
|
@@ -69,7 +70,7 @@ export async function signEoaWashBuyTransactions(params) {
|
|
|
69
70
|
config: {
|
|
70
71
|
...config,
|
|
71
72
|
skipProfit: true, // 买入时不刮取利润(卖出时刮取)
|
|
72
|
-
}
|
|
73
|
+
},
|
|
73
74
|
});
|
|
74
75
|
}
|
|
75
76
|
else {
|
|
@@ -86,10 +87,9 @@ export async function signEoaWashBuyTransactions(params) {
|
|
|
86
87
|
config: {
|
|
87
88
|
...config,
|
|
88
89
|
skipProfit: true, // 买入时不刮取利润(卖出时刮取)
|
|
89
|
-
}
|
|
90
|
+
},
|
|
90
91
|
});
|
|
91
92
|
}
|
|
92
|
-
console.log(`[signEoaWashBuyTransactions] 签名 ${result.signedTransactions.length} 笔买入交易`);
|
|
93
93
|
return {
|
|
94
94
|
signedTransactions: result.signedTransactions,
|
|
95
95
|
wallets,
|
|
@@ -107,35 +107,32 @@ export async function signEoaWashBuyTransactions(params) {
|
|
|
107
107
|
*/
|
|
108
108
|
export async function signEoaWashSellTransactions(params, wallets, tokenDecimals) {
|
|
109
109
|
const { tokenAddress, poolType, routerAddress, quoteToken, config } = params;
|
|
110
|
-
const provider =
|
|
110
|
+
const provider = createXLayerProvider(config.rpcUrl);
|
|
111
111
|
// 获取代币精度
|
|
112
|
-
const decimals = tokenDecimals ?? await getTokenDecimals(provider, tokenAddress);
|
|
113
|
-
console.log(`[signEoaWashSellTransactions] 代币精度: ${decimals}`);
|
|
112
|
+
const decimals = tokenDecimals ?? (await getTokenDecimals(provider, tokenAddress));
|
|
114
113
|
// 查询所有钱包的代币余额
|
|
115
|
-
const balancesWei = await Promise.all(wallets.map(w => getTokenBalance(provider, tokenAddress, w.address)));
|
|
114
|
+
const balancesWei = await Promise.all(wallets.map((w) => getTokenBalance(provider, tokenAddress, w.address)));
|
|
116
115
|
// 转换为格式化金额
|
|
117
|
-
const sellAmounts = balancesWei.map(balance => {
|
|
116
|
+
const sellAmounts = balancesWei.map((balance) => {
|
|
118
117
|
if (balance <= 0n)
|
|
119
118
|
return '0';
|
|
120
119
|
return ethers.formatUnits(balance, decimals);
|
|
121
120
|
});
|
|
122
|
-
console.log(`[signEoaWashSellTransactions] 钱包余额:`, sellAmounts);
|
|
123
121
|
// 过滤出有余额的钱包
|
|
124
122
|
const validIndices = sellAmounts
|
|
125
123
|
.map((amt, i) => ({ amt, i }))
|
|
126
124
|
.filter(({ amt }) => parseFloat(amt) > 0)
|
|
127
125
|
.map(({ i }) => i);
|
|
128
126
|
if (validIndices.length === 0) {
|
|
129
|
-
console.warn('[signEoaWashSellTransactions] 所有钱包余额为 0,无法卖出');
|
|
130
127
|
return {
|
|
131
128
|
signedTransactions: [],
|
|
132
129
|
profitHopWallets: [],
|
|
133
130
|
profitAmount: '0',
|
|
134
|
-
profitRecipient:
|
|
131
|
+
profitRecipient: getProfitRecipient(),
|
|
135
132
|
};
|
|
136
133
|
}
|
|
137
|
-
const validPrivateKeys = validIndices.map(i => wallets[i].privateKey);
|
|
138
|
-
const validSellAmounts = validIndices.map(i => sellAmounts[i]);
|
|
134
|
+
const validPrivateKeys = validIndices.map((i) => wallets[i].privateKey);
|
|
135
|
+
const validSellAmounts = validIndices.map((i) => sellAmounts[i]);
|
|
139
136
|
let result;
|
|
140
137
|
if (poolType === 'V2') {
|
|
141
138
|
result = await directV2BatchSell({
|
|
@@ -148,7 +145,7 @@ export async function signEoaWashSellTransactions(params, wallets, tokenDecimals
|
|
|
148
145
|
config: {
|
|
149
146
|
...config,
|
|
150
147
|
// ✅ 卖出时正常刮取利润(XLayer 不使用多跳,直接转账)
|
|
151
|
-
}
|
|
148
|
+
},
|
|
152
149
|
});
|
|
153
150
|
}
|
|
154
151
|
else {
|
|
@@ -164,15 +161,14 @@ export async function signEoaWashSellTransactions(params, wallets, tokenDecimals
|
|
|
164
161
|
config: {
|
|
165
162
|
...config,
|
|
166
163
|
// ✅ 卖出时正常刮取利润(XLayer 不使用多跳,直接转账)
|
|
167
|
-
}
|
|
164
|
+
},
|
|
168
165
|
});
|
|
169
166
|
}
|
|
170
|
-
console.log(`[signEoaWashSellTransactions] 签名 ${result.signedTransactions.length} 笔卖出交易(含利润)`);
|
|
171
167
|
return {
|
|
172
168
|
signedTransactions: result.signedTransactions,
|
|
173
169
|
profitHopWallets: result.profitHopWallets ?? [],
|
|
174
170
|
profitAmount: result.metadata?.profitAmount ?? '0',
|
|
175
|
-
profitRecipient: result.metadata?.profitRecipient ??
|
|
171
|
+
profitRecipient: result.metadata?.profitRecipient ?? getProfitRecipient(),
|
|
176
172
|
};
|
|
177
173
|
}
|
|
178
174
|
/**
|
|
@@ -190,13 +186,12 @@ export async function signEoaWashVolumeTransactions(params) {
|
|
|
190
186
|
// 第一步:签名买入交易
|
|
191
187
|
const buyResult = await signEoaWashBuyTransactions(params);
|
|
192
188
|
// 注意:这里的卖出签名是基于预估的,实际使用时应该在买入确认后重新签名
|
|
193
|
-
console.log(`[signEoaWashVolumeTransactions] ⚠️ 注意:卖出签名应在买入确认后根据实际余额重新生成`);
|
|
194
189
|
// 暂时返回空的卖出签名(实际使用时应该在买入确认后调用 signEoaWashSellTransactions)
|
|
195
190
|
return {
|
|
196
191
|
buySignedTransactions: buyResult.signedTransactions,
|
|
197
192
|
sellSignedTransactions: [], // 需要在买入确认后重新签名
|
|
198
193
|
profitHopWallets: [],
|
|
199
194
|
profitAmount: '0',
|
|
200
|
-
profitRecipient:
|
|
195
|
+
profitRecipient: getProfitRecipient(),
|
|
201
196
|
};
|
|
202
197
|
}
|
|
@@ -11,14 +11,18 @@
|
|
|
11
11
|
*/
|
|
12
12
|
export * from './constants.js';
|
|
13
13
|
export * from './types.js';
|
|
14
|
+
import { createPortalQuery } from './portal-ops.js';
|
|
15
|
+
import { xlayerQuickBatchSwapMerkle, xlayerCrossSwapMerkle, xlayerPureCrossSwapMerkle } from './eoa-bundle-swap.js';
|
|
16
|
+
import { signEoaWashVolumeTransactions } from './eoa-wash-volume.js';
|
|
14
17
|
export { encodeBuyCall, encodeBuyCallV3, encodeSellCall, encodeApproveCall, encodeTransferCall, PortalQuery, createPortalQuery, applySlippage, formatOkb, parseOkb, formatTokenAmount, parseTokenAmount, type PortalQueryConfig, } from './portal-ops.js';
|
|
15
18
|
export { signEoaWashBuyTransactions, signEoaWashSellTransactions, signEoaWashVolumeTransactions, type EoaWashPoolType, type EoaWashVolumeParams, type EoaWashVolumeResult, } from './eoa-wash-volume.js';
|
|
16
|
-
export { xlayerQuickBatchSwapMerkle, xlayerCrossSwapMerkle, xlayerPureCrossSwapMerkle, type
|
|
19
|
+
export { xlayerQuickBatchSwapMerkle, xlayerCrossSwapMerkle, xlayerPureCrossSwapMerkle, type XLayerPureCrossSwapParams, type XLayerPureCrossSwapResult, } from './eoa-bundle-swap.js';
|
|
20
|
+
export type { XLayerEoaSwapConfig, XLayerQuickBatchSwapParams, XLayerQuickBatchSwapResult, XLayerCrossSwapParams, XLayerCrossSwapResult, UserType as XLayerUserType, RouteParams as XLayerRouteParams, V2RouteParams as XLayerV2RouteParams, V3SingleRouteParams as XLayerV3SingleRouteParams, V3MultiRouteParams as XLayerV3MultiRouteParams, } from './eoa-bundle-swap-helpers.js';
|
|
17
21
|
export declare const xlayer: {
|
|
18
|
-
createPortalQuery:
|
|
19
|
-
xlayerQuickBatchSwapMerkle:
|
|
20
|
-
xlayerCrossSwapMerkle:
|
|
21
|
-
xlayerPureCrossSwapMerkle:
|
|
22
|
-
signEoaWashVolumeTransactions:
|
|
22
|
+
createPortalQuery: typeof createPortalQuery;
|
|
23
|
+
xlayerQuickBatchSwapMerkle: typeof xlayerQuickBatchSwapMerkle;
|
|
24
|
+
xlayerCrossSwapMerkle: typeof xlayerCrossSwapMerkle;
|
|
25
|
+
xlayerPureCrossSwapMerkle: typeof xlayerPureCrossSwapMerkle;
|
|
26
|
+
signEoaWashVolumeTransactions: typeof signEoaWashVolumeTransactions;
|
|
23
27
|
};
|
|
24
28
|
export default xlayer;
|
|
@@ -17,6 +17,9 @@ export * from './constants.js';
|
|
|
17
17
|
// 类型
|
|
18
18
|
// ============================================================================
|
|
19
19
|
export * from './types.js';
|
|
20
|
+
import { createPortalQuery } from './portal-ops.js';
|
|
21
|
+
import { xlayerQuickBatchSwapMerkle, xlayerCrossSwapMerkle, xlayerPureCrossSwapMerkle } from './eoa-bundle-swap.js';
|
|
22
|
+
import { signEoaWashVolumeTransactions } from './eoa-wash-volume.js';
|
|
20
23
|
// ============================================================================
|
|
21
24
|
// Portal 操作
|
|
22
25
|
// ============================================================================
|
|
@@ -33,28 +36,10 @@ export { xlayerQuickBatchSwapMerkle, xlayerCrossSwapMerkle, xlayerPureCrossSwapM
|
|
|
33
36
|
// 便捷重导出
|
|
34
37
|
// ============================================================================
|
|
35
38
|
export const xlayer = {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
// EOA 换手
|
|
42
|
-
xlayerQuickBatchSwapMerkle: async (...args) => {
|
|
43
|
-
const { xlayerQuickBatchSwapMerkle } = await import('./eoa-bundle-swap.js');
|
|
44
|
-
return xlayerQuickBatchSwapMerkle(...args);
|
|
45
|
-
},
|
|
46
|
-
xlayerCrossSwapMerkle: async (...args) => {
|
|
47
|
-
const { xlayerCrossSwapMerkle } = await import('./eoa-bundle-swap.js');
|
|
48
|
-
return xlayerCrossSwapMerkle(...args);
|
|
49
|
-
},
|
|
50
|
-
xlayerPureCrossSwapMerkle: async (...args) => {
|
|
51
|
-
const { xlayerPureCrossSwapMerkle } = await import('./eoa-bundle-swap.js');
|
|
52
|
-
return xlayerPureCrossSwapMerkle(...args);
|
|
53
|
-
},
|
|
54
|
-
// EOA 刷量
|
|
55
|
-
signEoaWashVolumeTransactions: async (...args) => {
|
|
56
|
-
const { signEoaWashVolumeTransactions } = await import('./eoa-wash-volume.js');
|
|
57
|
-
return signEoaWashVolumeTransactions(...args);
|
|
58
|
-
},
|
|
39
|
+
createPortalQuery,
|
|
40
|
+
xlayerQuickBatchSwapMerkle,
|
|
41
|
+
xlayerCrossSwapMerkle,
|
|
42
|
+
xlayerPureCrossSwapMerkle,
|
|
43
|
+
signEoaWashVolumeTransactions,
|
|
59
44
|
};
|
|
60
45
|
export default xlayer;
|
|
@@ -165,6 +165,9 @@ export function encodeCreateCallV5(params) {
|
|
|
165
165
|
* - 代币状态
|
|
166
166
|
*/
|
|
167
167
|
export class PortalQuery {
|
|
168
|
+
provider;
|
|
169
|
+
portal;
|
|
170
|
+
portalAddress;
|
|
168
171
|
constructor(config = {}) {
|
|
169
172
|
const rpcUrl = config.rpcUrl ?? DEFAULT_RPC_URL;
|
|
170
173
|
const chainId = config.chainId ?? XLAYER_CHAIN_ID;
|
|
@@ -446,8 +449,10 @@ export function applySlippage(expectedOutput, slippageBps) {
|
|
|
446
449
|
*/
|
|
447
450
|
export function lpFeeProfileToV3Fee(profile) {
|
|
448
451
|
switch (profile) {
|
|
449
|
-
case 1:
|
|
450
|
-
|
|
452
|
+
case 1:
|
|
453
|
+
return 100; // 0.01%
|
|
454
|
+
case 2:
|
|
455
|
+
return 10000; // 1%
|
|
451
456
|
case 0:
|
|
452
457
|
default:
|
|
453
458
|
return 2500; // 0.25%
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* XLayer Router 管理器
|
|
3
3
|
* 统一管理 V2/V3 Router 地址和授权目标选择逻辑
|
|
4
4
|
*/
|
|
5
|
-
import { POTATOSWAP_V2_ROUTER, POTATOSWAP_V3_ROUTER, FLAP_PORTAL
|
|
5
|
+
import { POTATOSWAP_V2_ROUTER, POTATOSWAP_V3_ROUTER, FLAP_PORTAL } from './constants.js';
|
|
6
6
|
/**
|
|
7
7
|
* ✅ 获取 Router 地址
|
|
8
8
|
* @param params.routerVersion - Router 版本(V2 或 V3)
|
|
@@ -49,9 +49,9 @@ export function getApprovalTargetAddress(target) {
|
|
|
49
49
|
* @returns 目标信息数组
|
|
50
50
|
*/
|
|
51
51
|
export function getAllApprovalTargets(targets) {
|
|
52
|
-
return targets.map(target => ({
|
|
52
|
+
return targets.map((target) => ({
|
|
53
53
|
target,
|
|
54
|
-
address: getApprovalTargetAddress(target)
|
|
54
|
+
address: getApprovalTargetAddress(target),
|
|
55
55
|
}));
|
|
56
56
|
}
|
|
57
57
|
/**
|
|
@@ -100,12 +100,12 @@ export interface XLayerConfig {
|
|
|
100
100
|
extractProfit?: boolean;
|
|
101
101
|
/**
|
|
102
102
|
* 利润比例(基点 bps,1 bps = 0.01%)
|
|
103
|
-
* -
|
|
103
|
+
* - 默认使用 `getProfitRateBps('normal')`
|
|
104
104
|
*/
|
|
105
105
|
profitBps?: number;
|
|
106
106
|
/**
|
|
107
107
|
* 利润接收地址
|
|
108
|
-
* -
|
|
108
|
+
* - 默认使用 `getProfitRecipient()`
|
|
109
109
|
*/
|
|
110
110
|
profitRecipient?: string;
|
|
111
111
|
/**
|
|
@@ -15,9 +15,7 @@
|
|
|
15
15
|
* - 对“可能不生成 op”的分支(例如 withdraw 返回 null),使用 peek + commit,避免提前消耗 nonce。
|
|
16
16
|
*/
|
|
17
17
|
export class AANonceMap {
|
|
18
|
-
|
|
19
|
-
this.nextBySenderLower = new Map();
|
|
20
|
-
}
|
|
18
|
+
nextBySenderLower = new Map();
|
|
21
19
|
init(sender, startNonce) {
|
|
22
20
|
const k = sender.toLowerCase();
|
|
23
21
|
const cur = this.nextBySenderLower.get(k);
|
|
@@ -10,5 +10,6 @@ export * as eoa from './eoa/index.js';
|
|
|
10
10
|
export * as eip7702 from './eip7702/index.js';
|
|
11
11
|
export { PortalQuery, createPortalQuery, xlayerQuickBatchSwapMerkle, xlayerCrossSwapMerkle, xlayerPureCrossSwapMerkle, signEoaWashBuyTransactions, signEoaWashSellTransactions, signEoaWashVolumeTransactions, } from './eoa/index.js';
|
|
12
12
|
export type { BundleSwapParams, BundleSwapSignParams, BundleSwapResult, BundleSwapSignResult, BundleBatchSwapParams, BundleBatchSwapSignParams, BundleBatchSwapResult, BundleBatchSwapSignResult, BuyFirstParams, BuyFirstResult, BuyParams, SellParams, } from './eoa/types.js';
|
|
13
|
-
export
|
|
14
|
-
export { default as xlayer } from './eoa/index.js';
|
|
13
|
+
export * from './eip7702/flat-aliases.js';
|
|
14
|
+
export { default as xlayer, default as XLayer } from './eoa/index.js';
|
|
15
|
+
export { lpFeeProfileToV3Fee } from './eoa/portal-ops.js';
|
|
@@ -22,12 +22,9 @@ xlayerQuickBatchSwapMerkle, xlayerCrossSwapMerkle, xlayerPureCrossSwapMerkle,
|
|
|
22
22
|
// EOA 刷量
|
|
23
23
|
signEoaWashBuyTransactions, signEoaWashSellTransactions, signEoaWashVolumeTransactions, } from './eoa/index.js';
|
|
24
24
|
// ============================================================================
|
|
25
|
-
// 快捷导出 - EIP-7702
|
|
25
|
+
// 快捷导出 - EIP-7702 模式(与包根 `xlayerEip7702*` 别名一致,见 flat-aliases)
|
|
26
26
|
// ============================================================================
|
|
27
|
-
export
|
|
28
|
-
// Bundle 操作
|
|
29
|
-
bundleBuy as xlayerEip7702BundleBuy, bundleSell as xlayerEip7702BundleSell, bundleSwap as xlayerEip7702BundleSwap, bundleApprove as xlayerEip7702BundleApprove, bundleCreateBuy as xlayerEip7702BundleCreate,
|
|
30
|
-
// 刷量
|
|
31
|
-
washVolume as xlayerEip7702WashVolume, bundleVolume as xlayerEip7702BundleVolume, } from './eip7702/index.js';
|
|
27
|
+
export * from './eip7702/flat-aliases.js';
|
|
32
28
|
// 导出旧模块的默认对象(向后兼容)
|
|
33
|
-
export { default as xlayer } from './eoa/index.js';
|
|
29
|
+
export { default as xlayer, default as XLayer } from './eoa/index.js';
|
|
30
|
+
export { lpFeeProfileToV3Fee } from './eoa/portal-ops.js';
|
|
@@ -1,4 +1,19 @@
|
|
|
1
1
|
import { JsonRpcProvider, Wallet } from 'ethers';
|
|
2
|
+
/** 与 Helper3 `getTokenInfo` 返回值一致(作 `calcBuyAmount` 等函数的 `ti` 入参) */
|
|
3
|
+
export type TokenManagerHelper3TokenInfo = {
|
|
4
|
+
version: bigint;
|
|
5
|
+
tokenManager: string;
|
|
6
|
+
quote: string;
|
|
7
|
+
lastPrice: bigint;
|
|
8
|
+
tradingFeeRate: bigint;
|
|
9
|
+
minTradingFee: bigint;
|
|
10
|
+
launchTime: bigint;
|
|
11
|
+
offers: bigint;
|
|
12
|
+
maxOffers: bigint;
|
|
13
|
+
funds: bigint;
|
|
14
|
+
maxFunds: bigint;
|
|
15
|
+
liquidityAdded: boolean;
|
|
16
|
+
};
|
|
2
17
|
type Providerish = JsonRpcProvider;
|
|
3
18
|
type Signerish = Wallet;
|
|
4
19
|
export declare class Helper3 {
|
|
@@ -7,14 +22,14 @@ export declare class Helper3 {
|
|
|
7
22
|
protected constructor(address: string, provider: Providerish);
|
|
8
23
|
static connectByChain(chain: 'BSC' | 'BASE' | 'ARBITRUM_ONE', rpcUrl: string): Helper3;
|
|
9
24
|
private get contract();
|
|
10
|
-
getTokenInfo(token: string): Promise<
|
|
25
|
+
getTokenInfo(token: string): Promise<TokenManagerHelper3TokenInfo>;
|
|
11
26
|
tryBuy(token: string, amount: bigint, funds: bigint): Promise<any>;
|
|
12
27
|
trySell(token: string, amount: bigint): Promise<any>;
|
|
13
28
|
calcInitialPrice(maxRaising: bigint, totalSupply: bigint, offers: bigint, reserves: bigint): Promise<any>;
|
|
14
|
-
calcBuyAmount(ti:
|
|
15
|
-
calcBuyCost(ti:
|
|
16
|
-
calcSellCost(ti:
|
|
17
|
-
calcTradingFee(ti:
|
|
29
|
+
calcBuyAmount(ti: TokenManagerHelper3TokenInfo, funds: bigint): Promise<any>;
|
|
30
|
+
calcBuyCost(ti: TokenManagerHelper3TokenInfo, amount: bigint): Promise<any>;
|
|
31
|
+
calcSellCost(ti: TokenManagerHelper3TokenInfo, amount: bigint): Promise<any>;
|
|
32
|
+
calcTradingFee(ti: TokenManagerHelper3TokenInfo, funds: bigint): Promise<any>;
|
|
18
33
|
getPancakePair(token: string): Promise<any>;
|
|
19
34
|
WETH(): Promise<any>;
|
|
20
35
|
WHITE_LIST(): Promise<any>;
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { Contract, JsonRpcProvider, Wallet } from 'ethers';
|
|
2
|
-
import Helper3Abi from '../
|
|
3
|
-
import { ADDRESSES } from '../
|
|
2
|
+
import Helper3Abi from '../abis/contracts/TokenManagerHelper3.json' with { type: 'json' };
|
|
3
|
+
import { ADDRESSES } from '../shared/constants/index.js';
|
|
4
|
+
const HELPER3_ABI = Helper3Abi;
|
|
4
5
|
export class Helper3 {
|
|
6
|
+
address;
|
|
7
|
+
provider;
|
|
5
8
|
constructor(address, provider) {
|
|
6
9
|
this.address = address;
|
|
7
10
|
this.provider = provider;
|
|
@@ -15,25 +18,56 @@ export class Helper3 {
|
|
|
15
18
|
return new Helper3(addresses[chain], new JsonRpcProvider(rpcUrl));
|
|
16
19
|
}
|
|
17
20
|
get contract() {
|
|
18
|
-
return new Contract(this.address,
|
|
19
|
-
}
|
|
20
|
-
async getTokenInfo(token) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
async
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
async
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
async
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
async
|
|
33
|
-
|
|
34
|
-
|
|
21
|
+
return new Contract(this.address, HELPER3_ABI, this.provider);
|
|
22
|
+
}
|
|
23
|
+
async getTokenInfo(token) {
|
|
24
|
+
return await this.contract.getTokenInfo(token);
|
|
25
|
+
}
|
|
26
|
+
async tryBuy(token, amount, funds) {
|
|
27
|
+
return await this.contract.tryBuy(token, amount, funds);
|
|
28
|
+
}
|
|
29
|
+
async trySell(token, amount) {
|
|
30
|
+
return await this.contract.trySell(token, amount);
|
|
31
|
+
}
|
|
32
|
+
async calcInitialPrice(maxRaising, totalSupply, offers, reserves) {
|
|
33
|
+
return await this.contract.calcInitialPrice(maxRaising, totalSupply, offers, reserves);
|
|
34
|
+
}
|
|
35
|
+
async calcBuyAmount(ti, funds) {
|
|
36
|
+
return await this.contract.calcBuyAmount(ti, funds);
|
|
37
|
+
}
|
|
38
|
+
async calcBuyCost(ti, amount) {
|
|
39
|
+
return await this.contract.calcBuyCost(ti, amount);
|
|
40
|
+
}
|
|
41
|
+
async calcSellCost(ti, amount) {
|
|
42
|
+
return await this.contract.calcSellCost(ti, amount);
|
|
43
|
+
}
|
|
44
|
+
async calcTradingFee(ti, funds) {
|
|
45
|
+
return await this.contract.calcTradingFee(ti, funds);
|
|
46
|
+
}
|
|
47
|
+
async getPancakePair(token) {
|
|
48
|
+
return await this.contract.getPancakePair(token);
|
|
49
|
+
}
|
|
50
|
+
async WETH() {
|
|
51
|
+
return await this.contract.WETH();
|
|
52
|
+
}
|
|
53
|
+
async WHITE_LIST() {
|
|
54
|
+
return await this.contract.WHITE_LIST();
|
|
55
|
+
}
|
|
56
|
+
async calcEthIn(token, amount) {
|
|
57
|
+
return await this.contract.calcEthIn(token, amount);
|
|
58
|
+
}
|
|
59
|
+
async calcEthOut(token, amount) {
|
|
60
|
+
return await this.contract.calcEthOut(token, amount);
|
|
61
|
+
}
|
|
62
|
+
async calcTokenIn(token, amountEth) {
|
|
63
|
+
return await this.contract.calcTokenIn(token, amountEth);
|
|
64
|
+
}
|
|
65
|
+
async calcTokenOut(token, amountEth) {
|
|
66
|
+
return await this.contract.calcTokenOut(token, amountEth);
|
|
67
|
+
}
|
|
35
68
|
}
|
|
36
69
|
export class Helper3Writer extends Helper3 {
|
|
70
|
+
signer;
|
|
37
71
|
constructor(address, signer) {
|
|
38
72
|
super(address, signer.provider);
|
|
39
73
|
this.signer = signer;
|
|
@@ -48,7 +82,9 @@ export class Helper3Writer extends Helper3 {
|
|
|
48
82
|
const signer = new Wallet(privateKey, provider);
|
|
49
83
|
return new Helper3Writer(addresses[chain], signer);
|
|
50
84
|
}
|
|
51
|
-
get writeContract() {
|
|
85
|
+
get writeContract() {
|
|
86
|
+
return new Contract(this.address, HELPER3_ABI, this.signer);
|
|
87
|
+
}
|
|
52
88
|
async buyWithEth(origin, token, to, funds, minAmount) {
|
|
53
89
|
const tx = await this.writeContract.buyWithEth(origin, token, to, funds, minAmount, { value: funds });
|
|
54
90
|
return await tx.wait();
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { JsonRpcProvider } from 'ethers';
|
|
2
|
+
import type { TransactionRequest } from 'ethers';
|
|
3
|
+
import type { SoulPointSignatureMode, VNormalizationMode } from '../shared/clients/club48.js';
|
|
4
|
+
import { BundleStatus } from '../shared/clients/club48.js';
|
|
5
|
+
import type { GeneratedWallet } from '../utils/wallet.js';
|
|
6
|
+
/**
|
|
7
|
+
* four.meme Bundle 交易方法
|
|
8
|
+
* 使用 48.club Bundle 服务实现原子化交易
|
|
9
|
+
*/
|
|
10
|
+
export { BUNDLE_ERRORS as ERRORS, getBundleErrorMessage as getErrorMessage } from '../bundle-core/errors.js';
|
|
11
|
+
export type FourBundleConfig = {
|
|
12
|
+
rpcUrl: string;
|
|
13
|
+
fourApiUrl?: string;
|
|
14
|
+
club48Endpoint?: string;
|
|
15
|
+
club48ExplorerEndpoint?: string;
|
|
16
|
+
spMode?: SoulPointSignatureMode;
|
|
17
|
+
spVMode?: VNormalizationMode;
|
|
18
|
+
spPrivateKey?: string;
|
|
19
|
+
bundleBlockOffset?: number;
|
|
20
|
+
noMerge?: boolean;
|
|
21
|
+
tipAmountWei?: bigint;
|
|
22
|
+
txType?: 0 | 2;
|
|
23
|
+
gasLimitMultiplier?: number;
|
|
24
|
+
customSubmitFn?: (signedTxs: string[]) => Promise<string>;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* 等待交易上链(不使用 club48 客户端)
|
|
28
|
+
*/
|
|
29
|
+
export type FourProviderBundleWaitStatus = {
|
|
30
|
+
status: 'INCLUDED';
|
|
31
|
+
includedBlock?: number;
|
|
32
|
+
} | {
|
|
33
|
+
status: 'FAILED';
|
|
34
|
+
} | {
|
|
35
|
+
status: 'PENDING';
|
|
36
|
+
};
|
|
37
|
+
export declare function waitForBundleWithProvider(provider: JsonRpcProvider, firstTxSigned: string, _bundleUuid: string): Promise<FourProviderBundleWaitStatus>;
|
|
38
|
+
/**
|
|
39
|
+
* 估算 gas 并应用用户配置的倍数
|
|
40
|
+
*/
|
|
41
|
+
export declare function estimateGasWithMultiplier(provider: JsonRpcProvider, txRequest: TransactionRequest, multiplier?: number): Promise<bigint>;
|
|
42
|
+
/**
|
|
43
|
+
* 获取交易类型(用户可配置)
|
|
44
|
+
*/
|
|
45
|
+
export declare function getTxType(config: FourBundleConfig): 0 | 2;
|
|
46
|
+
/**
|
|
47
|
+
* 构建完整的交易请求(包含 gas 估算和交易类型)
|
|
48
|
+
*/
|
|
49
|
+
export declare function buildTxRequest(provider: JsonRpcProvider, unsigned: TransactionRequest, from: string, nonce: number, gasPrice: bigint, config: FourBundleConfig, value?: bigint): Promise<TransactionRequest & {
|
|
50
|
+
gasLimit: bigint;
|
|
51
|
+
chainId: number;
|
|
52
|
+
type: 0 | 2;
|
|
53
|
+
}>;
|
|
54
|
+
export type FourCreateWithBundleBuyParams = {
|
|
55
|
+
privateKeys: string[];
|
|
56
|
+
buyAmounts: string[];
|
|
57
|
+
b0Amount?: string;
|
|
58
|
+
tokenInfo: {
|
|
59
|
+
name: string;
|
|
60
|
+
symbol: string;
|
|
61
|
+
description: string;
|
|
62
|
+
imageUrl?: string;
|
|
63
|
+
imageFile?: Blob;
|
|
64
|
+
label?: 'Meme' | 'AI' | 'Defi' | 'Games' | 'Infra' | 'De-Sci' | 'Social' | 'Depin' | 'Charity' | 'Others';
|
|
65
|
+
preSale?: string;
|
|
66
|
+
webUrl?: string;
|
|
67
|
+
twitterUrl?: string;
|
|
68
|
+
telegramUrl?: string;
|
|
69
|
+
};
|
|
70
|
+
config: FourBundleConfig;
|
|
71
|
+
};
|
|
72
|
+
export type FourCreateWithBundleBuyResult = {
|
|
73
|
+
bundleUuid: string;
|
|
74
|
+
tokenAddress?: string;
|
|
75
|
+
status: BundleStatus | FourProviderBundleWaitStatus;
|
|
76
|
+
createTx: string;
|
|
77
|
+
buyTxs: string[];
|
|
78
|
+
profitTxs: string[];
|
|
79
|
+
profitHopWallets?: GeneratedWallet[];
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* four.meme: 创建代币 + 捆绑购买
|
|
83
|
+
*
|
|
84
|
+
* 用户只需传入:
|
|
85
|
+
* - dev 私钥 + N 个买家私钥
|
|
86
|
+
* - 对应的购买金额
|
|
87
|
+
* - 代币基本信息
|
|
88
|
+
*/
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { ethers } from 'ethers';
|
|
2
|
+
/**
|
|
3
|
+
* four.meme Bundle 交易方法
|
|
4
|
+
* 使用 48.club Bundle 服务实现原子化交易
|
|
5
|
+
*/
|
|
6
|
+
// 错误信息国际化(实现见 bundle-core/errors)
|
|
7
|
+
export { BUNDLE_ERRORS as ERRORS, getBundleErrorMessage as getErrorMessage } from '../bundle-core/errors.js';
|
|
8
|
+
export async function waitForBundleWithProvider(provider, firstTxSigned, _bundleUuid) {
|
|
9
|
+
const maxAttempts = 60; // 最多等待 60 秒
|
|
10
|
+
for (let i = 0; i < maxAttempts; i++) {
|
|
11
|
+
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
12
|
+
try {
|
|
13
|
+
const txHash = ethers.Transaction.from(firstTxSigned).hash;
|
|
14
|
+
if (!txHash)
|
|
15
|
+
continue;
|
|
16
|
+
const receipt = await provider.getTransactionReceipt(txHash);
|
|
17
|
+
if (receipt) {
|
|
18
|
+
if (receipt.status === 1) {
|
|
19
|
+
return { status: 'INCLUDED', includedBlock: receipt.blockNumber };
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
return { status: 'FAILED' };
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
catch (_error) {
|
|
27
|
+
// 继续等待
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return { status: 'PENDING' };
|
|
31
|
+
}
|
|
32
|
+
// ========================================
|
|
33
|
+
// 辅助函数:估算 gas 并应用配置
|
|
34
|
+
// ========================================
|
|
35
|
+
/**
|
|
36
|
+
* 估算 gas 并应用用户配置的倍数
|
|
37
|
+
*/
|
|
38
|
+
export async function estimateGasWithMultiplier(provider, txRequest, multiplier) {
|
|
39
|
+
const estimated = await provider.estimateGas(txRequest);
|
|
40
|
+
const mult = multiplier ?? 1.2; // 默认 20% 安全余量
|
|
41
|
+
return BigInt(Math.ceil(Number(estimated) * mult));
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* 获取交易类型(用户可配置)
|
|
45
|
+
*/
|
|
46
|
+
export function getTxType(config) {
|
|
47
|
+
return config.txType ?? 0; // 默认 Legacy (type 0),适用于 48.club/BSC
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* 构建完整的交易请求(包含 gas 估算和交易类型)
|
|
51
|
+
*/
|
|
52
|
+
export async function buildTxRequest(provider, unsigned, from, nonce, gasPrice, config, value) {
|
|
53
|
+
const gasLimit = await estimateGasWithMultiplier(provider, { ...unsigned, from, value }, config.gasLimitMultiplier);
|
|
54
|
+
const txType = getTxType(config);
|
|
55
|
+
return {
|
|
56
|
+
...unsigned,
|
|
57
|
+
from,
|
|
58
|
+
nonce,
|
|
59
|
+
gasLimit,
|
|
60
|
+
gasPrice,
|
|
61
|
+
chainId: 56,
|
|
62
|
+
type: txType,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* four.meme: 创建代币 + 捆绑购买
|
|
67
|
+
*
|
|
68
|
+
* 用户只需传入:
|
|
69
|
+
* - dev 私钥 + N 个买家私钥
|
|
70
|
+
* - 对应的购买金额
|
|
71
|
+
* - 代币基本信息
|
|
72
|
+
*/
|
|
@@ -1,26 +1 @@
|
|
|
1
|
-
|
|
2
|
-
/** ✅ 批量授权参数(直接提交到链上) */
|
|
3
|
-
export type ApproveFourTokenManagerBatchParams = {
|
|
4
|
-
privateKeys: string[];
|
|
5
|
-
tokenAddress: string;
|
|
6
|
-
amounts: string[];
|
|
7
|
-
config: FourSignConfig;
|
|
8
|
-
};
|
|
9
|
-
/** ✅ 批量授权结果(包含提交状态) */
|
|
10
|
-
export type ApproveFourTokenManagerBatchResult = {
|
|
11
|
-
success: boolean;
|
|
12
|
-
signedTransactions: string[];
|
|
13
|
-
approvedCount: number;
|
|
14
|
-
skippedCount: number;
|
|
15
|
-
txHashes?: string[];
|
|
16
|
-
message: string;
|
|
17
|
-
};
|
|
18
|
-
/**
|
|
19
|
-
* 批量授权代币给 TokenManager(用于 Private Buy/Sell)
|
|
20
|
-
* ✅ 直接通过 RPC 提交到链上并等待确认
|
|
21
|
-
* ✅ 不需要 Merkle API Key,使用普通 RPC 即可
|
|
22
|
-
* ✅ 专门用于授权给 TokenManagerOriginal 合约
|
|
23
|
-
* ✅ 用于 fourBatchPrivateSell 和 fourBatchSellWithBundleMerkle
|
|
24
|
-
* ✅ 优化:并行获取 gasPrice、decimals、allowances
|
|
25
|
-
*/
|
|
26
|
-
export declare function approveFourTokenManagerBatch(params: ApproveFourTokenManagerBatchParams): Promise<ApproveFourTokenManagerBatchResult>;
|
|
1
|
+
export { approveFourTokenManagerBatch, type ApproveFourTokenManagerBatchParams, type ApproveFourTokenManagerBatchResult, } from '../../bundle-core/four-meme/approve-tokenmanager.js';
|