four-flap-meme-sdk 2.2.2 → 2.2.3
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 +86 -278
- 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 +101 -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 +83 -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 +77 -0
- package/dist/shared/flap/portal-create-token.js +214 -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
|
@@ -1,254 +1,4 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* 将重复的 ABI 提取到这里,统一管理
|
|
2
|
+
* @deprecated 兼容路径 — 唯一数据源见 `src/abis/common.ts`
|
|
5
3
|
*/
|
|
6
|
-
|
|
7
|
-
// ERC20 ABI
|
|
8
|
-
// ============================================================================
|
|
9
|
-
/** 完整 ERC20 ABI */
|
|
10
|
-
export const ERC20_ABI = [
|
|
11
|
-
'function approve(address spender, uint256 amount) external returns (bool)',
|
|
12
|
-
'function allowance(address owner, address spender) external view returns (uint256)',
|
|
13
|
-
'function balanceOf(address account) external view returns (uint256)',
|
|
14
|
-
'function decimals() external view returns (uint8)',
|
|
15
|
-
'function name() external view returns (string)',
|
|
16
|
-
'function symbol() external view returns (string)',
|
|
17
|
-
'function totalSupply() external view returns (uint256)',
|
|
18
|
-
'function transfer(address to, uint256 amount) external returns (bool)',
|
|
19
|
-
'function transferFrom(address from, address to, uint256 amount) external returns (bool)',
|
|
20
|
-
];
|
|
21
|
-
/** 精简 ERC20 ABI(余额查询 + decimals) */
|
|
22
|
-
export const ERC20_BALANCE_ABI = [
|
|
23
|
-
'function balanceOf(address account) external view returns (uint256)',
|
|
24
|
-
'function decimals() external view returns (uint8)',
|
|
25
|
-
];
|
|
26
|
-
/** ERC20 授权相关 ABI */
|
|
27
|
-
export const ERC20_ALLOWANCE_ABI = [
|
|
28
|
-
'function allowance(address owner, address spender) external view returns (uint256)',
|
|
29
|
-
'function approve(address spender, uint256 amount) external returns (bool)',
|
|
30
|
-
'function decimals() external view returns (uint8)',
|
|
31
|
-
];
|
|
32
|
-
// ============================================================================
|
|
33
|
-
// Multicall3 ABI
|
|
34
|
-
// ============================================================================
|
|
35
|
-
export const MULTICALL3_ABI = [
|
|
36
|
-
// ✅ 标记为 view,确保 ethers.js v6 使用 call 而不是 sendTransaction
|
|
37
|
-
'function aggregate3(tuple(address target, bool allowFailure, bytes callData)[] calls) view returns (tuple(bool success, bytes returnData)[])',
|
|
38
|
-
'function aggregate(tuple(address target, bytes callData)[] calls) view returns (uint256 blockNumber, bytes[] returnData)',
|
|
39
|
-
'function getEthBalance(address addr) view returns (uint256 balance)',
|
|
40
|
-
];
|
|
41
|
-
// ============================================================================
|
|
42
|
-
// PancakeSwap / Uniswap V2 Router ABI
|
|
43
|
-
// ============================================================================
|
|
44
|
-
/** V2 Router 完整 ABI */
|
|
45
|
-
export const V2_ROUTER_ABI = [
|
|
46
|
-
// BNB/ETH → Token (买入)
|
|
47
|
-
'function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts)',
|
|
48
|
-
'function swapExactETHForTokensSupportingFeeOnTransferTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable',
|
|
49
|
-
// Token → BNB/ETH (卖出)
|
|
50
|
-
'function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts)',
|
|
51
|
-
'function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external',
|
|
52
|
-
// Token → Token
|
|
53
|
-
'function swapExactTokensForTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts)',
|
|
54
|
-
'function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external',
|
|
55
|
-
// 报价
|
|
56
|
-
'function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts)',
|
|
57
|
-
'function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts)',
|
|
58
|
-
// Factory
|
|
59
|
-
'function factory() external view returns (address)',
|
|
60
|
-
];
|
|
61
|
-
/** V2 Router 精简 ABI(只用于报价) */
|
|
62
|
-
export const V2_ROUTER_QUOTE_ABI = [
|
|
63
|
-
'function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts)',
|
|
64
|
-
];
|
|
65
|
-
// ============================================================================
|
|
66
|
-
// PancakeSwap / Uniswap V3 Router ABI (SwapRouter02)
|
|
67
|
-
// ============================================================================
|
|
68
|
-
/** V3 SwapRouter02 ABI(新版,deadline 在 multicall 中传递) */
|
|
69
|
-
export const V3_ROUTER02_ABI = [
|
|
70
|
-
// exactInputSingle - 单跳,不含 deadline
|
|
71
|
-
{
|
|
72
|
-
"inputs": [{
|
|
73
|
-
"components": [
|
|
74
|
-
{ "name": "tokenIn", "type": "address" },
|
|
75
|
-
{ "name": "tokenOut", "type": "address" },
|
|
76
|
-
{ "name": "fee", "type": "uint24" },
|
|
77
|
-
{ "name": "recipient", "type": "address" },
|
|
78
|
-
{ "name": "amountIn", "type": "uint256" },
|
|
79
|
-
{ "name": "amountOutMinimum", "type": "uint256" },
|
|
80
|
-
{ "name": "sqrtPriceLimitX96", "type": "uint160" }
|
|
81
|
-
],
|
|
82
|
-
"name": "params",
|
|
83
|
-
"type": "tuple"
|
|
84
|
-
}],
|
|
85
|
-
"name": "exactInputSingle",
|
|
86
|
-
"outputs": [{ "name": "amountOut", "type": "uint256" }],
|
|
87
|
-
"stateMutability": "payable",
|
|
88
|
-
"type": "function"
|
|
89
|
-
},
|
|
90
|
-
// exactInput - 多跳,不含 deadline
|
|
91
|
-
{
|
|
92
|
-
"inputs": [{
|
|
93
|
-
"components": [
|
|
94
|
-
{ "name": "path", "type": "bytes" },
|
|
95
|
-
{ "name": "recipient", "type": "address" },
|
|
96
|
-
{ "name": "amountIn", "type": "uint256" },
|
|
97
|
-
{ "name": "amountOutMinimum", "type": "uint256" }
|
|
98
|
-
],
|
|
99
|
-
"name": "params",
|
|
100
|
-
"type": "tuple"
|
|
101
|
-
}],
|
|
102
|
-
"name": "exactInput",
|
|
103
|
-
"outputs": [{ "name": "amountOut", "type": "uint256" }],
|
|
104
|
-
"stateMutability": "payable",
|
|
105
|
-
"type": "function"
|
|
106
|
-
},
|
|
107
|
-
// multicall - 带 deadline 版本
|
|
108
|
-
'function multicall(uint256 deadline, bytes[] calldata data) external payable returns (bytes[] memory results)',
|
|
109
|
-
'function refundETH() external payable',
|
|
110
|
-
'function unwrapWETH9(uint256 amountMinimum, address recipient) external payable',
|
|
111
|
-
];
|
|
112
|
-
/** V3 SwapRouter 旧版 ABI(deadline 在 struct 内部) */
|
|
113
|
-
export const V3_ROUTER_LEGACY_ABI = [
|
|
114
|
-
// exactInputSingle - 包含 deadline
|
|
115
|
-
{
|
|
116
|
-
"inputs": [{
|
|
117
|
-
"components": [
|
|
118
|
-
{ "name": "tokenIn", "type": "address" },
|
|
119
|
-
{ "name": "tokenOut", "type": "address" },
|
|
120
|
-
{ "name": "fee", "type": "uint24" },
|
|
121
|
-
{ "name": "recipient", "type": "address" },
|
|
122
|
-
{ "name": "deadline", "type": "uint256" },
|
|
123
|
-
{ "name": "amountIn", "type": "uint256" },
|
|
124
|
-
{ "name": "amountOutMinimum", "type": "uint256" },
|
|
125
|
-
{ "name": "sqrtPriceLimitX96", "type": "uint160" }
|
|
126
|
-
],
|
|
127
|
-
"name": "params",
|
|
128
|
-
"type": "tuple"
|
|
129
|
-
}],
|
|
130
|
-
"name": "exactInputSingle",
|
|
131
|
-
"outputs": [{ "name": "amountOut", "type": "uint256" }],
|
|
132
|
-
"stateMutability": "payable",
|
|
133
|
-
"type": "function"
|
|
134
|
-
},
|
|
135
|
-
// multicall - 不带 deadline 版本
|
|
136
|
-
'function multicall(bytes[] calldata data) external payable returns (bytes[] memory results)',
|
|
137
|
-
'function refundETH() external payable',
|
|
138
|
-
'function unwrapWETH9(uint256 amountMinimum, address recipient) external payable',
|
|
139
|
-
];
|
|
140
|
-
// ============================================================================
|
|
141
|
-
// SwapRouter02 V2 方法 ABI (PotatoSwap/DYORSwap 等)
|
|
142
|
-
// ============================================================================
|
|
143
|
-
/**
|
|
144
|
-
* SwapRouter02 的 V2 方法 ABI
|
|
145
|
-
*
|
|
146
|
-
* 注意:SwapRouter02 的 V2 方法只有 token-to-token 交换
|
|
147
|
-
* 没有 swapExactETHForTokens / swapExactTokensForETH
|
|
148
|
-
* 必须通过 multicall 组合 wrapETH/unwrapWETH9 来处理原生代币
|
|
149
|
-
*/
|
|
150
|
-
export const SWAP_ROUTER02_V2_ABI = [
|
|
151
|
-
// V2 交换方法(只有 token-to-token)
|
|
152
|
-
'function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to) external payable returns (uint256 amountOut)',
|
|
153
|
-
'function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] calldata path, address to) external payable returns (uint256 amountIn)',
|
|
154
|
-
// Multicall - 多种重载
|
|
155
|
-
'function multicall(uint256 deadline, bytes[] calldata data) external payable returns (bytes[] memory results)',
|
|
156
|
-
'function multicall(bytes32 previousBlockhash, bytes[] calldata data) external payable returns (bytes[] memory results)',
|
|
157
|
-
'function multicall(bytes[] calldata data) external payable returns (bytes[] memory results)',
|
|
158
|
-
// 辅助方法 - ETH/WETH 转换
|
|
159
|
-
'function wrapETH(uint256 value) external payable',
|
|
160
|
-
'function unwrapWETH9(uint256 amountMinimum, address recipient) external payable',
|
|
161
|
-
'function unwrapWETH9(uint256 amountMinimum) external payable',
|
|
162
|
-
'function refundETH() external payable',
|
|
163
|
-
// 代币操作
|
|
164
|
-
'function pull(address token, uint256 value) external payable',
|
|
165
|
-
'function sweepToken(address token, uint256 amountMinimum, address recipient) external payable',
|
|
166
|
-
'function sweepToken(address token, uint256 amountMinimum) external payable',
|
|
167
|
-
];
|
|
168
|
-
// ============================================================================
|
|
169
|
-
// V3 Quoter ABI
|
|
170
|
-
// ============================================================================
|
|
171
|
-
/** V3 QuoterV2 ABI */
|
|
172
|
-
export const V3_QUOTER_ABI = [
|
|
173
|
-
{
|
|
174
|
-
"inputs": [{
|
|
175
|
-
"components": [
|
|
176
|
-
{ "name": "tokenIn", "type": "address" },
|
|
177
|
-
{ "name": "tokenOut", "type": "address" },
|
|
178
|
-
{ "name": "amountIn", "type": "uint256" },
|
|
179
|
-
{ "name": "fee", "type": "uint24" },
|
|
180
|
-
{ "name": "sqrtPriceLimitX96", "type": "uint160" }
|
|
181
|
-
],
|
|
182
|
-
"name": "params",
|
|
183
|
-
"type": "tuple"
|
|
184
|
-
}],
|
|
185
|
-
"name": "quoteExactInputSingle",
|
|
186
|
-
"outputs": [
|
|
187
|
-
{ "name": "amountOut", "type": "uint256" },
|
|
188
|
-
{ "name": "sqrtPriceX96After", "type": "uint160" },
|
|
189
|
-
{ "name": "initializedTicksCrossed", "type": "uint32" },
|
|
190
|
-
{ "name": "gasEstimate", "type": "uint256" }
|
|
191
|
-
],
|
|
192
|
-
"stateMutability": "nonpayable",
|
|
193
|
-
"type": "function"
|
|
194
|
-
}
|
|
195
|
-
];
|
|
196
|
-
// ============================================================================
|
|
197
|
-
// Uniswap V2 Factory & Pair ABI
|
|
198
|
-
// ============================================================================
|
|
199
|
-
export const V2_FACTORY_ABI = [
|
|
200
|
-
'function getPair(address tokenA, address tokenB) external view returns (address pair)',
|
|
201
|
-
];
|
|
202
|
-
export const V2_PAIR_ABI = [
|
|
203
|
-
'function token0() external view returns (address)',
|
|
204
|
-
'function token1() external view returns (address)',
|
|
205
|
-
'function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast)',
|
|
206
|
-
];
|
|
207
|
-
// ============================================================================
|
|
208
|
-
// Uniswap V3 Factory & Pool ABI
|
|
209
|
-
// ============================================================================
|
|
210
|
-
export const V3_FACTORY_ABI = [
|
|
211
|
-
'function getPool(address tokenA, address tokenB, uint24 fee) external view returns (address pool)',
|
|
212
|
-
];
|
|
213
|
-
export const V3_POOL_ABI = [
|
|
214
|
-
'function token0() external view returns (address)',
|
|
215
|
-
'function token1() external view returns (address)',
|
|
216
|
-
'function fee() external view returns (uint24)',
|
|
217
|
-
'function slot0() external view returns (uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 feeProtocol, bool unlocked)',
|
|
218
|
-
];
|
|
219
|
-
// ============================================================================
|
|
220
|
-
// Flap Portal ABI
|
|
221
|
-
// ============================================================================
|
|
222
|
-
export const FLAP_PORTAL_ABI = [
|
|
223
|
-
// 创建代币
|
|
224
|
-
'function newToken(string name, string symbol, string meta) external payable returns (address)',
|
|
225
|
-
'function newTokenV2((string name,string symbol,string meta,uint8 dexThresh,bytes32 salt,uint16 taxRate,uint8 migratorType,address quoteToken,uint256 quoteAmt,address beneficiary,bytes permitData)) external payable returns (address)',
|
|
226
|
-
'function newTokenV3((string name,string symbol,string meta,uint8 dexThresh,bytes32 salt,uint16 taxRate,uint8 migratorType,address quoteToken,uint256 quoteAmt,address beneficiary,bytes permitData,bytes32 extensionID,bytes extensionData)) external payable returns (address)',
|
|
227
|
-
// ✅ V4:支持 dexId / lpFeeProfile(与 portal-bundle-merkle/core.ts 的 newTokenV4.populateTransaction 对齐)
|
|
228
|
-
'function newTokenV4((string name,string symbol,string meta,uint8 dexThresh,bytes32 salt,uint16 taxRate,uint8 migratorType,address quoteToken,uint256 quoteAmt,address beneficiary,bytes permitData,bytes32 extensionID,bytes extensionData,uint8 dexId,uint8 lpFeeProfile)) external payable returns (address)',
|
|
229
|
-
// ✅ V5:Tax Token V2 高级税收分配
|
|
230
|
-
'function newTokenV5((string name,string symbol,string meta,uint8 dexThresh,bytes32 salt,uint16 taxRate,uint8 migratorType,address quoteToken,uint256 quoteAmt,address beneficiary,bytes permitData,bytes32 extensionID,bytes extensionData,uint8 dexId,uint8 lpFeeProfile,uint64 taxDuration,uint64 antiFarmerDuration,uint16 mktBps,uint16 deflationBps,uint16 dividendBps,uint16 lpBps,uint256 minimumShareBalance)) external payable returns (address)',
|
|
231
|
-
// 交易
|
|
232
|
-
'function swapExactInput((address inputToken,address outputToken,uint256 inputAmount,uint256 minOutputAmount,bytes permitData)) external payable returns (uint256)',
|
|
233
|
-
// ✅ V3:支持 extensionData(注意:这里的 V3 指“扩展交易接口版本”,不是“外盘 V3 池子”)
|
|
234
|
-
'function swapExactInputV3((address inputToken,address outputToken,uint256 inputAmount,uint256 minOutputAmount,bytes permitData,bytes extensionData)) external payable returns (uint256)',
|
|
235
|
-
'function quoteExactInput((address inputToken,address outputToken,uint256 inputAmount)) external view returns (uint256)',
|
|
236
|
-
// 旧版兼容
|
|
237
|
-
'function buy(address token, uint256 minReceived) external payable returns (uint256)',
|
|
238
|
-
'function sell(address token, uint256 sellAmount, uint256 minReceived) external returns (uint256)',
|
|
239
|
-
];
|
|
240
|
-
// ============================================================================
|
|
241
|
-
// Four TokenManager ABI
|
|
242
|
-
// ============================================================================
|
|
243
|
-
export const TM2_ABI = [
|
|
244
|
-
// 新版方法(Four.meme TokenManager2)
|
|
245
|
-
'function buyTokenAMAP(uint256 origin, address token, address to, uint256 funds, uint256 minAmount) external payable',
|
|
246
|
-
'function sellToken(uint256 origin, address token, uint256 amount, uint256 minFunds) external',
|
|
247
|
-
// 旧版兼容方法
|
|
248
|
-
'function buy(address token, uint256 minReceived) external payable returns (uint256)',
|
|
249
|
-
'function sell(address token, uint256 sellAmount, uint256 minReceived) external returns (uint256)',
|
|
250
|
-
'function trySell(address token, uint256 sellAmount) external view returns (uint256)',
|
|
251
|
-
];
|
|
252
|
-
export const HELPER3_ABI = [
|
|
253
|
-
'function getTokenInfo(address token) external view returns (tuple(address addr, string name, string symbol, uint8 decimals, uint256 totalSupply, uint256 balance, uint256 price, uint256 marketCap))',
|
|
254
|
-
];
|
|
4
|
+
export * from '../../abis/common.js';
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export
|
|
6
|
-
export * from './common.js';
|
|
1
|
+
/**
|
|
2
|
+
* ABI 导出(兼容路径:历史代码多从此处 import)。
|
|
3
|
+
* 唯一数据源见 `src/abis/`。
|
|
4
|
+
*/
|
|
5
|
+
export * from '../../abis/index.js';
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export
|
|
6
|
-
// ✅ 公共 ABI 导出
|
|
7
|
-
export * from './common.js';
|
|
1
|
+
/**
|
|
2
|
+
* ABI 导出(兼容路径:历史代码多从此处 import)。
|
|
3
|
+
* 唯一数据源见 `src/abis/`。
|
|
4
|
+
*/
|
|
5
|
+
export * from '../../abis/index.js';
|
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
*/
|
|
28
28
|
import { JsonRpcProvider, Transaction, ethers } from 'ethers';
|
|
29
29
|
import { GAS_LIMITS } from '../constants/index.js';
|
|
30
|
+
import { getErrorMessageFromUnknown } from '../foundation/index.js';
|
|
30
31
|
// ============================================================================
|
|
31
32
|
// 常量
|
|
32
33
|
// ============================================================================
|
|
@@ -55,9 +56,14 @@ const MIN_GAS_PRICE_GWEI = 0.05;
|
|
|
55
56
|
* BlockRazor 客户端
|
|
56
57
|
*/
|
|
57
58
|
export class BlockRazorClient {
|
|
59
|
+
provider;
|
|
60
|
+
chainId;
|
|
61
|
+
apiKey;
|
|
62
|
+
builderUrl;
|
|
63
|
+
// 区块号缓存
|
|
64
|
+
blockNumberCache = null;
|
|
65
|
+
static BLOCK_CACHE_TTL_MS = 1000; // 1秒缓存
|
|
58
66
|
constructor(config) {
|
|
59
|
-
// 区块号缓存
|
|
60
|
-
this.blockNumberCache = null;
|
|
61
67
|
this.chainId = config.chainId;
|
|
62
68
|
this.apiKey = config.apiKey;
|
|
63
69
|
// 普通 RPC(用于查询)
|
|
@@ -114,7 +120,7 @@ export class BlockRazorClient {
|
|
|
114
120
|
async buildIncentiveTransaction(params) {
|
|
115
121
|
const { wallet, amount, nonce, gasPrice } = params;
|
|
116
122
|
// 获取 nonce(使用 pending 确保包含待处理交易)
|
|
117
|
-
const txNonce = nonce ?? await this.provider.getTransactionCount(wallet.address, 'pending');
|
|
123
|
+
const txNonce = nonce ?? (await this.provider.getTransactionCount(wallet.address, 'pending'));
|
|
118
124
|
// 获取 gas price
|
|
119
125
|
let txGasPrice = gasPrice;
|
|
120
126
|
if (!txGasPrice) {
|
|
@@ -152,6 +158,7 @@ export class BlockRazorClient {
|
|
|
152
158
|
const gasPrice = tx.gasPrice || 0n;
|
|
153
159
|
const minGasPrice = ethers.parseUnits(String(MIN_GAS_PRICE_GWEI), 'gwei');
|
|
154
160
|
if (gasPrice < minGasPrice) {
|
|
161
|
+
throw new Error(`Transaction gas price (${ethers.formatUnits(gasPrice, 'gwei')} gwei) is below minimum (${MIN_GAS_PRICE_GWEI} gwei)`);
|
|
155
162
|
}
|
|
156
163
|
}
|
|
157
164
|
catch {
|
|
@@ -183,7 +190,7 @@ export class BlockRazorClient {
|
|
|
183
190
|
jsonrpc: '2.0',
|
|
184
191
|
id: '1',
|
|
185
192
|
method: 'eth_sendBundle',
|
|
186
|
-
params: [bundleParams]
|
|
193
|
+
params: [bundleParams],
|
|
187
194
|
};
|
|
188
195
|
const headers = {
|
|
189
196
|
'Content-Type': 'application/json',
|
|
@@ -202,12 +209,23 @@ export class BlockRazorClient {
|
|
|
202
209
|
throw new Error(`HTTP ${response.status}: ${text}`);
|
|
203
210
|
}
|
|
204
211
|
const result = await response.json();
|
|
212
|
+
if (typeof result !== 'object' || result === null) {
|
|
213
|
+
throw new Error('Invalid JSON-RPC response');
|
|
214
|
+
}
|
|
215
|
+
const rpc = result;
|
|
205
216
|
// 检查 JSON-RPC 错误
|
|
206
|
-
if (
|
|
207
|
-
|
|
217
|
+
if (rpc.error != null) {
|
|
218
|
+
const er = rpc.error;
|
|
219
|
+
const rpcMsg = typeof er === 'object' &&
|
|
220
|
+
er !== null &&
|
|
221
|
+
'message' in er &&
|
|
222
|
+
typeof er.message === 'string'
|
|
223
|
+
? er.message
|
|
224
|
+
: JSON.stringify(er);
|
|
225
|
+
throw new Error(`RPC Error: ${rpcMsg}`);
|
|
208
226
|
}
|
|
209
227
|
// 提取 bundle hash
|
|
210
|
-
const bundleHash =
|
|
228
|
+
const bundleHash = rpc.result;
|
|
211
229
|
if (typeof bundleHash === 'string') {
|
|
212
230
|
return bundleHash;
|
|
213
231
|
}
|
|
@@ -216,10 +234,10 @@ export class BlockRazorClient {
|
|
|
216
234
|
return String(bundleHash.bundleHash);
|
|
217
235
|
}
|
|
218
236
|
}
|
|
219
|
-
return JSON.stringify(
|
|
237
|
+
return JSON.stringify(rpc.result ?? rpc);
|
|
220
238
|
}
|
|
221
239
|
catch (error) {
|
|
222
|
-
const errorMsg =
|
|
240
|
+
const errorMsg = getErrorMessageFromUnknown(error);
|
|
223
241
|
console.error(`❌ [BlockRazor] Bundle 发送失败: ${errorMsg}`);
|
|
224
242
|
throw new Error(`BlockRazor send bundle failed: ${errorMsg}`);
|
|
225
243
|
}
|
|
@@ -257,7 +275,7 @@ export class BlockRazorClient {
|
|
|
257
275
|
noMerge: options.noMerge,
|
|
258
276
|
});
|
|
259
277
|
// 提取交易哈希
|
|
260
|
-
const txHashes = options.transactions.map(rawTx => {
|
|
278
|
+
const txHashes = options.transactions.map((rawTx) => {
|
|
261
279
|
try {
|
|
262
280
|
return Transaction.from(rawTx).hash || '';
|
|
263
281
|
}
|
|
@@ -276,13 +294,16 @@ export class BlockRazorClient {
|
|
|
276
294
|
lastError = error;
|
|
277
295
|
if (autoRetry && attempt < maxRetries) {
|
|
278
296
|
attempt++;
|
|
279
|
-
await new Promise(resolve => setTimeout(resolve, 3000)); // 等待一个区块
|
|
297
|
+
await new Promise((resolve) => setTimeout(resolve, 3000)); // 等待一个区块
|
|
280
298
|
continue;
|
|
281
299
|
}
|
|
282
300
|
throw error;
|
|
283
301
|
}
|
|
284
302
|
}
|
|
285
|
-
|
|
303
|
+
if (lastError !== null && lastError !== undefined) {
|
|
304
|
+
throw lastError;
|
|
305
|
+
}
|
|
306
|
+
throw new Error('Bundle submission failed after all retries');
|
|
286
307
|
}
|
|
287
308
|
/**
|
|
288
309
|
* 发送带激励的 Bundle(自动添加激励交易)
|
|
@@ -348,7 +369,7 @@ export class BlockRazorClient {
|
|
|
348
369
|
index,
|
|
349
370
|
hash,
|
|
350
371
|
success: false,
|
|
351
|
-
error: error
|
|
372
|
+
error: getErrorMessageFromUnknown(error),
|
|
352
373
|
};
|
|
353
374
|
}
|
|
354
375
|
});
|
|
@@ -439,7 +460,7 @@ export class BlockRazorClient {
|
|
|
439
460
|
return { index: globalIndex, hash: txResponse.hash, error: null };
|
|
440
461
|
}
|
|
441
462
|
catch (err) {
|
|
442
|
-
const errorMsg =
|
|
463
|
+
const errorMsg = getErrorMessageFromUnknown(err);
|
|
443
464
|
console.warn(`[broadcastParallel] 交易 ${globalIndex} 广播失败:`, errorMsg);
|
|
444
465
|
return { index: globalIndex, hash: '', error: errorMsg };
|
|
445
466
|
}
|
|
@@ -488,33 +509,29 @@ export class BlockRazorClient {
|
|
|
488
509
|
// 广播交易
|
|
489
510
|
const txResponse = await provider.broadcastTransaction(rawTx);
|
|
490
511
|
txHashes.push(txResponse.hash);
|
|
491
|
-
console.log(`[broadcastSequential] 交易 ${i}/${signedTransactions.length} 广播成功: ${txResponse.hash.slice(0, 10)}...`);
|
|
492
512
|
// 如果需要等待确认
|
|
493
513
|
if (waitConfirmation) {
|
|
494
514
|
try {
|
|
495
515
|
const receipt = await provider.waitForTransaction(txResponse.hash, 1, confirmationTimeout);
|
|
496
|
-
if (receipt && receipt.status ===
|
|
497
|
-
console.log(`[broadcastSequential] 交易 ${i} 确认成功,区块: ${receipt.blockNumber}`);
|
|
498
|
-
}
|
|
499
|
-
else if (receipt && receipt.status === 0) {
|
|
516
|
+
if (receipt && receipt.status === 0) {
|
|
500
517
|
console.warn(`[broadcastSequential] 交易 ${i} 执行失败(revert)`);
|
|
501
518
|
errors.push({ index: i, error: 'Transaction reverted' });
|
|
502
519
|
}
|
|
503
520
|
}
|
|
504
521
|
catch (waitErr) {
|
|
505
|
-
console.warn(`[broadcastSequential] 交易 ${i} 等待确认超时:`, waitErr
|
|
522
|
+
console.warn(`[broadcastSequential] 交易 ${i} 等待确认超时:`, getErrorMessageFromUnknown(waitErr));
|
|
506
523
|
// 超时不算失败,交易可能还在 pending
|
|
507
524
|
}
|
|
508
525
|
}
|
|
509
526
|
else {
|
|
510
527
|
// 不等待确认,只加一个小延迟确保 RPC 处理完成
|
|
511
528
|
if (broadcastDelay > 0 && i < signedTransactions.length - 1) {
|
|
512
|
-
await new Promise(resolve => setTimeout(resolve, broadcastDelay));
|
|
529
|
+
await new Promise((resolve) => setTimeout(resolve, broadcastDelay));
|
|
513
530
|
}
|
|
514
531
|
}
|
|
515
532
|
}
|
|
516
533
|
catch (err) {
|
|
517
|
-
const errorMsg =
|
|
534
|
+
const errorMsg = getErrorMessageFromUnknown(err);
|
|
518
535
|
console.warn(`[broadcastSequential] 交易 ${i} 广播失败:`, errorMsg);
|
|
519
536
|
errors.push({ index: i, error: errorMsg });
|
|
520
537
|
// 如果是 nonce 问题,后续交易也会失败,提前终止
|
|
@@ -566,12 +583,10 @@ export class BlockRazorClient {
|
|
|
566
583
|
return false;
|
|
567
584
|
})();
|
|
568
585
|
if (hasMultipleFromSameWallet) {
|
|
569
|
-
console.log(`[broadcastSmart] 检测到同一钱包多笔交易,使用顺序广播`);
|
|
570
586
|
const result = await this.broadcastTransactionsSequential(signedTransactions, options);
|
|
571
587
|
return { ...result, mode: 'sequential' };
|
|
572
588
|
}
|
|
573
589
|
else {
|
|
574
|
-
console.log(`[broadcastSmart] 所有交易来自不同钱包,使用并行广播`);
|
|
575
590
|
const result = await this.broadcastTransactionsParallel(signedTransactions, { provider: options?.provider });
|
|
576
591
|
return { ...result, mode: 'parallel' };
|
|
577
592
|
}
|
|
@@ -587,7 +602,6 @@ export class BlockRazorClient {
|
|
|
587
602
|
};
|
|
588
603
|
}
|
|
589
604
|
}
|
|
590
|
-
BlockRazorClient.BLOCK_CACHE_TTL_MS = 1000; // 1秒缓存
|
|
591
605
|
/**
|
|
592
606
|
* 创建 BlockRazor 客户端的便捷函数
|
|
593
607
|
*/
|
|
@@ -127,8 +127,8 @@ export declare const BUILDER_CONTROL_EOA = "0x4848489f0b2BEdd788c696e2D79b6b69D7
|
|
|
127
127
|
*/
|
|
128
128
|
export type AuctionFeedCallbacks = {
|
|
129
129
|
onOpen?: () => void;
|
|
130
|
-
onMessage?: (data:
|
|
131
|
-
onError?: (err:
|
|
130
|
+
onMessage?: (data: unknown) => void;
|
|
131
|
+
onError?: (err: unknown) => void;
|
|
132
132
|
onClose?: () => void;
|
|
133
133
|
};
|
|
134
134
|
export declare function createAuctionFeedClient(wsUrl: string, callbacks: AuctionFeedCallbacks): {
|
|
@@ -4,6 +4,8 @@ import { ethers } from 'ethers';
|
|
|
4
4
|
* 48.club Bundle 客户端
|
|
5
5
|
*/
|
|
6
6
|
export class Club48Client {
|
|
7
|
+
endpoint;
|
|
8
|
+
explorerEndpoint;
|
|
7
9
|
constructor(config) {
|
|
8
10
|
this.endpoint = config?.endpoint || 'https://puissant-bsc.48.club';
|
|
9
11
|
this.explorerEndpoint = config?.explorerEndpoint || 'https://explore.48.club';
|
|
@@ -18,7 +20,7 @@ export class Club48Client {
|
|
|
18
20
|
*/
|
|
19
21
|
static sign48SoulPoint(privateKey, txs) {
|
|
20
22
|
// 1. 计算每笔交易的哈希
|
|
21
|
-
const txHashes = txs.map(tx => ethers.keccak256(tx));
|
|
23
|
+
const txHashes = txs.map((tx) => ethers.keccak256(tx));
|
|
22
24
|
// 2. 连接所有哈希
|
|
23
25
|
const concatenated = ethers.concat(txHashes);
|
|
24
26
|
// 3. 对连接后的数据进行哈希
|
|
@@ -103,7 +105,7 @@ export class Club48Client {
|
|
|
103
105
|
}
|
|
104
106
|
// 添加 Soul Point 签名(优先:调用方直接提供;否则按 opts 生成)
|
|
105
107
|
if (params.soulPointSignature) {
|
|
106
|
-
bundleParams[
|
|
108
|
+
bundleParams['48spSign'] = params.soulPointSignature;
|
|
107
109
|
}
|
|
108
110
|
else if (opts && opts.spMode && opts.spMode !== 'none') {
|
|
109
111
|
if (!opts.spPrivateKey) {
|
|
@@ -121,17 +123,17 @@ export class Club48Client {
|
|
|
121
123
|
}
|
|
122
124
|
if (opts.spVMode)
|
|
123
125
|
sig = Club48Client.normalizeSignatureV(sig, opts.spVMode);
|
|
124
|
-
bundleParams[
|
|
126
|
+
bundleParams['48spSign'] = sig;
|
|
125
127
|
}
|
|
126
128
|
// 添加 backrun 目标(如果提供)
|
|
127
129
|
if (params.backrunTarget) {
|
|
128
130
|
bundleParams.backrunTarget = params.backrunTarget;
|
|
129
131
|
}
|
|
130
132
|
const response = await axios.post(this.endpoint, {
|
|
131
|
-
jsonrpc:
|
|
133
|
+
jsonrpc: '2.0',
|
|
132
134
|
id: 1,
|
|
133
|
-
method:
|
|
134
|
-
params: [bundleParams]
|
|
135
|
+
method: 'eth_sendBundle',
|
|
136
|
+
params: [bundleParams],
|
|
135
137
|
});
|
|
136
138
|
if (response.data.error) {
|
|
137
139
|
throw new Error(`48.club bundle failed: ${response.data.error.message}`);
|
|
@@ -146,10 +148,10 @@ export class Club48Client {
|
|
|
146
148
|
*/
|
|
147
149
|
async sendPrivateTransaction(signedTx) {
|
|
148
150
|
const response = await axios.post(this.endpoint, {
|
|
149
|
-
jsonrpc:
|
|
151
|
+
jsonrpc: '2.0',
|
|
150
152
|
id: 1,
|
|
151
|
-
method:
|
|
152
|
-
params: [signedTx]
|
|
153
|
+
method: 'eth_sendPrivateRawTransaction',
|
|
154
|
+
params: [signedTx],
|
|
153
155
|
});
|
|
154
156
|
if (response.data.error) {
|
|
155
157
|
throw new Error(`48.club tx failed: ${response.data.error.message}`);
|
|
@@ -168,7 +170,7 @@ export class Club48Client {
|
|
|
168
170
|
async sendPrivateTransactionWith48SP(signedTx, spPrivateKey, opts) {
|
|
169
171
|
// 1) 生成 48SP 签名(默认使用 timestamp personal_sign)
|
|
170
172
|
const mode = opts?.spMode ?? 'timestampPersonalSign';
|
|
171
|
-
let signature
|
|
173
|
+
let signature;
|
|
172
174
|
if (mode === 'timestampPersonalSign') {
|
|
173
175
|
signature = await Club48Client.sign48SoulPointTimestamp(spPrivateKey, opts?.timestamp);
|
|
174
176
|
}
|
|
@@ -179,10 +181,10 @@ export class Club48Client {
|
|
|
179
181
|
signature = Club48Client.normalizeSignatureV(signature, opts.spVMode);
|
|
180
182
|
// 2) 调用 48.club RPC
|
|
181
183
|
const response = await axios.post(this.endpoint, {
|
|
182
|
-
jsonrpc:
|
|
184
|
+
jsonrpc: '2.0',
|
|
183
185
|
id: 1,
|
|
184
|
-
method:
|
|
185
|
-
params: [signedTx, signature]
|
|
186
|
+
method: 'eth_sendPrivateTransactionWith48SP',
|
|
187
|
+
params: [signedTx, signature],
|
|
186
188
|
});
|
|
187
189
|
if (response.data.error) {
|
|
188
190
|
throw new Error(`48.club tx failed: ${response.data.error.message}`);
|
|
@@ -196,9 +198,9 @@ export class Club48Client {
|
|
|
196
198
|
*/
|
|
197
199
|
async getMinGasPrice() {
|
|
198
200
|
const response = await axios.post(this.endpoint, {
|
|
199
|
-
jsonrpc:
|
|
201
|
+
jsonrpc: '2.0',
|
|
200
202
|
id: 1,
|
|
201
|
-
method:
|
|
203
|
+
method: 'eth_gasPrice',
|
|
202
204
|
});
|
|
203
205
|
if (response.data.error) {
|
|
204
206
|
throw new Error(`Get gas price failed: ${response.data.error.message}`);
|
|
@@ -237,12 +239,15 @@ export class Club48Client {
|
|
|
237
239
|
throw new Error(`Bundle failed to execute: ${JSON.stringify(status)}`);
|
|
238
240
|
}
|
|
239
241
|
// 等待 3 秒后重试
|
|
240
|
-
await new Promise(resolve => setTimeout(resolve, 3000));
|
|
242
|
+
await new Promise((resolve) => setTimeout(resolve, 3000));
|
|
241
243
|
}
|
|
242
244
|
catch (error) {
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
245
|
+
const status = axios.isAxiosError(error) ? error.response?.status : undefined;
|
|
246
|
+
const nodeCode = typeof error === 'object' && error !== null && 'code' in error
|
|
247
|
+
? String(error.code ?? '')
|
|
248
|
+
: '';
|
|
249
|
+
if (status === 404 || nodeCode === 'ECONNREFUSED' || nodeCode === 'ENOTFOUND') {
|
|
250
|
+
await new Promise((resolve) => setTimeout(resolve, 3000));
|
|
246
251
|
continue;
|
|
247
252
|
}
|
|
248
253
|
// 其他错误,如果有最后状态且为 INCLUDED,返回成功
|
|
@@ -268,8 +273,8 @@ export class Club48Client {
|
|
|
268
273
|
transaction: {
|
|
269
274
|
from: '0x0000000000000000000000000000000000000000',
|
|
270
275
|
gasPrice: '0',
|
|
271
|
-
nonce: 0
|
|
272
|
-
}
|
|
276
|
+
nonce: 0,
|
|
277
|
+
},
|
|
273
278
|
};
|
|
274
279
|
}
|
|
275
280
|
}
|
|
@@ -282,11 +287,11 @@ export function createAuctionFeedClient(wsUrl, callbacks) {
|
|
|
282
287
|
// 仅导出接口占位,避免引入 ws 依赖;用户可在应用层实现
|
|
283
288
|
return {
|
|
284
289
|
connect: () => {
|
|
285
|
-
callbacks.onOpen
|
|
290
|
+
callbacks.onOpen?.();
|
|
286
291
|
},
|
|
287
292
|
close: () => {
|
|
288
|
-
callbacks.onClose
|
|
289
|
-
}
|
|
293
|
+
callbacks.onClose?.();
|
|
294
|
+
},
|
|
290
295
|
};
|
|
291
296
|
}
|
|
292
297
|
/**
|
|
@@ -295,7 +300,7 @@ export function createAuctionFeedClient(wsUrl, callbacks) {
|
|
|
295
300
|
export async function sendBatchPrivateTransactions(signedTxs, spPrivateKey, endpoint = 'https://puissant-bsc.48.club', opts) {
|
|
296
301
|
// 1. 生成 48SP 签名
|
|
297
302
|
const mode = opts?.spMode ?? 'timestampPersonalSign';
|
|
298
|
-
let signature
|
|
303
|
+
let signature;
|
|
299
304
|
if (mode === 'timestampPersonalSign') {
|
|
300
305
|
signature = await Club48Client.sign48SoulPointTimestamp(spPrivateKey, opts?.timestamp);
|
|
301
306
|
}
|
|
@@ -306,13 +311,13 @@ export async function sendBatchPrivateTransactions(signedTxs, spPrivateKey, endp
|
|
|
306
311
|
signature = Club48Client.normalizeSignatureV(signature, opts.spVMode);
|
|
307
312
|
// 2. 批量提交
|
|
308
313
|
const response = await axios.post(endpoint, {
|
|
309
|
-
jsonrpc:
|
|
314
|
+
jsonrpc: '2.0',
|
|
310
315
|
id: 1,
|
|
311
|
-
method:
|
|
316
|
+
method: 'eth_sendBatchPrivateTransactionsWith48SP',
|
|
312
317
|
params: [
|
|
313
318
|
signedTxs, // 已签名的交易数组
|
|
314
|
-
signature // 48SP 签名
|
|
315
|
-
]
|
|
319
|
+
signature, // 48SP 签名
|
|
320
|
+
],
|
|
316
321
|
});
|
|
317
322
|
// 注意:批量方法不返回交易哈希,只确认接收
|
|
318
323
|
if (response.data.error) {
|