four-flap-meme-sdk 1.9.49 → 2.1.0
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.js +34 -0
- package/dist/abis/common.js +74 -68
- package/dist/abis/flap/vault.js +9 -7
- package/dist/abis/index.d.ts +3 -4
- package/dist/abis/index.js +3 -4
- package/dist/bundle-core/__tests__/config-helpers.test.js +28 -0
- package/dist/bundle-core/__tests__/facade-parity.test.js +33 -0
- package/dist/bundle-core/__tests__/sign-context-helpers.test.js +60 -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 +34 -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/{shared 2/flap/portal-bundle-merkle/pancake-proxy.js → bundle-core/four-meme/pancake-proxy.js} +277 -299
- 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/{chains/bsc/four/swap/index.js → bundle-core/four-meme/swap.js} +84 -408
- package/dist/bundle-core/four-meme/types/buy-first.d.ts +50 -0
- package/dist/bundle-core/four-meme/types/core-flow.d.ts +63 -0
- package/dist/bundle-core/four-meme/types/index.d.ts +600 -0
- package/dist/bundle-core/four-meme/types/swap-internal.d.ts +19 -0
- package/dist/bundle-core/four-meme/types.d.ts +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.d.ts +1 -0
- package/dist/chains/bsc/four/approve-tokenmanager.d.ts +1 -26
- package/dist/chains/bsc/four/approve-tokenmanager.js +1 -116
- package/dist/chains/bsc/four/config.d.ts +5 -70
- package/dist/chains/bsc/four/config.js +2 -115
- package/dist/chains/bsc/four/core.d.ts +1 -4
- package/dist/chains/bsc/four/core.js +1 -589
- 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 -50
- package/dist/chains/bsc/four/internal.js +2 -237
- package/dist/chains/bsc/four/pancake-proxy.d.ts +1 -28
- package/dist/chains/bsc/four/pancake-proxy.js +1 -688
- 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 -746
- package/dist/chains/bsc/four/swap-buy-first.d.ts +2 -55
- package/dist/chains/bsc/four/swap-buy-first.js +2 -506
- 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 -760
- 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 -1534
- 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 -207
- package/dist/chains/bsc/pancake/bundle-swap-helpers.d.ts +241 -0
- package/dist/chains/bsc/pancake/{bundle-swap/helpers.js → bundle-swap-helpers.js} +63 -70
- package/dist/chains/bsc/pancake/bundle-swap.d.ts +1 -79
- package/dist/chains/bsc/pancake/bundle-swap.js +111 -686
- 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.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 +54 -23
- package/dist/chains/eni/batch-router/utils.js +32 -6
- package/dist/chains/eni/bundler/sign.js +4 -4
- package/dist/chains/eni/bundler/submit.js +1 -4
- package/dist/chains/eni/constants.js +1 -1
- package/dist/chains/eni/index.d.ts +1 -1
- 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 +8 -4
- package/dist/chains/eni/platforms/daoaas/portal-direct.js +28 -43
- 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 -47
- 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.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.js +5 -13
- 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 -20
- 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 -56
- package/dist/chains/xlayer/eip7702/bundle-sell.d.ts +2 -6
- package/dist/chains/xlayer/eip7702/bundle-sell.js +26 -74
- package/dist/chains/xlayer/eip7702/bundle-swap.d.ts +3 -65
- package/dist/chains/xlayer/eip7702/bundle-swap.js +51 -68
- package/dist/chains/xlayer/eip7702/constants.d.ts +1 -16
- package/dist/chains/xlayer/eip7702/constants.js +3 -21
- package/dist/chains/xlayer/eip7702/index.d.ts +29 -46
- package/dist/chains/xlayer/eip7702/index.js +27 -81
- package/dist/chains/xlayer/eip7702/{multi-hop-transfer/types.d.ts → multi-hop-transfer-helpers.d.ts} +17 -23
- package/dist/chains/xlayer/eip7702/multi-hop-transfer.d.ts +2 -203
- package/dist/chains/xlayer/eip7702/multi-hop-transfer.js +58 -291
- 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/types.d.ts → volume-helpers.d.ts} +41 -17
- 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 +83 -158
- 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 +64 -276
- package/dist/chains/xlayer/eoa/eoa-wash-volume.d.ts +1 -1
- package/dist/chains/xlayer/eoa/eoa-wash-volume.js +14 -14
- 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/contracts/helper3.d.ts +20 -17
- 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 -117
- package/dist/contracts/tm-bundle-merkle/config.d.ts +5 -70
- package/dist/contracts/tm-bundle-merkle/config.js +2 -115
- package/dist/contracts/tm-bundle-merkle/core.d.ts +1 -4
- package/dist/contracts/tm-bundle-merkle/core.js +1 -588
- 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 -50
- package/dist/contracts/tm-bundle-merkle/internal.js +2 -236
- package/dist/contracts/tm-bundle-merkle/pancake-proxy.d.ts +1 -28
- package/dist/contracts/tm-bundle-merkle/pancake-proxy.js +1 -687
- 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 -919
- package/dist/contracts/tm-bundle-merkle/swap-buy-first.d.ts +2 -55
- package/dist/contracts/tm-bundle-merkle/swap-buy-first.js +2 -505
- 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 -757
- 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 +5 -6
- package/dist/contracts/tm-bundle-merkle/utils.js +5 -6
- package/dist/contracts/tm-bundle.d.ts +3 -51
- package/dist/contracts/tm-bundle.js +102 -142
- package/dist/contracts/tm.d.ts +3 -2
- package/dist/contracts/tm.js +36 -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 -652
- package/dist/dex/{direct-router/types.d.ts → types.d.ts} +1 -1
- 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 -2
- 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 -91
- package/dist/index.js +20 -215
- 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 +41 -24
- package/dist/shared/clients/club48.js +30 -26
- package/dist/shared/clients/emitservice.js +2 -0
- package/dist/shared/clients/four.js +23 -18
- package/dist/shared/clients/index.d.ts +8 -0
- package/dist/shared/clients/index.js +8 -0
- package/dist/shared/clients/merkle.js +26 -30
- 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 -1
- package/dist/shared/flap/constants.js +2 -2
- package/dist/shared/flap/curve.js +3 -0
- package/dist/shared/flap/errors.d.ts +1 -4
- package/dist/shared/flap/errors.js +21 -3
- package/dist/shared/flap/index.d.ts +2 -2
- package/dist/shared/flap/index.js +2 -2
- package/dist/shared/flap/meta.d.ts +16 -18
- package/dist/shared/flap/meta.js +14 -26
- package/dist/shared/flap/permit.js +6 -5
- package/dist/shared/flap/pinata.d.ts +9 -2
- package/dist/shared/flap/pinata.js +20 -18
- 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 +66 -156
- package/dist/shared/flap/portal-bundle-merkle/create-to-dex.js +81 -86
- 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 +73 -3
- 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 +54 -42
- package/dist/shared/flap/portal.js +32 -10
- package/dist/shared/flap/vanity.js +4 -7
- package/dist/shared/flap/vault.d.ts +1 -1
- package/dist/shared/flap/vault.js +54 -48
- 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 +39 -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 +180 -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.js +18 -0
- package/dist/shared/foundation/types/airdrop-sweep.d.ts +79 -0
- package/dist/{utils/erc20/types.d.ts → shared/foundation/types/erc20.d.ts} +7 -19
- package/dist/{utils/holders-maker/types.d.ts → shared/foundation/types/holders-maker.d.ts} +4 -12
- package/dist/shared/foundation/types/index.d.ts +7 -0
- package/dist/{utils/lp-inspect/types.d.ts → shared/foundation/types/lp-inspect.d.ts} +4 -2
- 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/{utils/quote-helpers/types.d.ts → shared/foundation/types/quote-helpers.d.ts} +1 -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/utils/airdrop-sweep.d.ts +4 -76
- package/dist/utils/airdrop-sweep.js +38 -52
- 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 +8 -90
- package/dist/utils/erc20.js +94 -153
- package/dist/utils/errors.d.ts +10 -22
- package/dist/utils/errors.js +61 -79
- 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 +23 -651
- 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 +63 -195
- 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 +2 -7
- 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 +15 -65
- package/dist/utils/stealth-transfer.d.ts +2 -28
- package/dist/utils/stealth-transfer.js +30 -14
- package/dist/utils/swap-helpers.d.ts +0 -3
- package/dist/utils/swap-helpers.js +6 -9
- 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 +9 -10
- package/package.json +120 -2
- 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/chains/bsc/four/submit/blockrazor.d.ts +0 -18
- package/dist/chains/bsc/four/submit/blockrazor.js +0 -86
- package/dist/chains/bsc/four/submit/direct.d.ts +0 -66
- package/dist/chains/bsc/four/submit/direct.js +0 -452
- package/dist/chains/bsc/four/submit/helpers.d.ts +0 -18
- package/dist/chains/bsc/four/submit/helpers.js +0 -57
- package/dist/chains/bsc/four/submit/index.d.ts +0 -12
- package/dist/chains/bsc/four/submit/index.js +0 -11
- package/dist/chains/bsc/four/submit/merkle.d.ts +0 -18
- package/dist/chains/bsc/four/submit/merkle.js +0 -74
- package/dist/chains/bsc/four/submit/types.d.ts +0 -143
- package/dist/chains/bsc/four/swap/index.d.ts +0 -32
- package/dist/chains/bsc/four/swap/types.d.ts +0 -70
- package/dist/chains/bsc/four/utils/index.d.ts +0 -20
- package/dist/chains/bsc/four/utils/index.js +0 -1558
- package/dist/chains/bsc/pancake/bundle-buy-first/index.d.ts +0 -8
- package/dist/chains/bsc/pancake/bundle-buy-first/index.js +0 -907
- package/dist/chains/bsc/pancake/bundle-buy-first/types.d.ts +0 -73
- package/dist/chains/bsc/pancake/bundle-swap/helpers.d.ts +0 -102
- package/dist/chains/bsc/pancake/bundle-swap/index.d.ts +0 -50
- package/dist/chains/bsc/pancake/bundle-swap/index.js +0 -1066
- package/dist/chains/bsc/pancake/bundle-swap/types.d.ts +0 -202
- package/dist/chains/bsc/pancake/bundle-swap/types.js +0 -3
- package/dist/chains/xlayer/eip7702/bundle-swap/index.d.ts +0 -72
- package/dist/chains/xlayer/eip7702/bundle-swap/index.js +0 -921
- package/dist/chains/xlayer/eip7702/bundle-swap/types.d.ts +0 -65
- package/dist/chains/xlayer/eip7702/multi-hop-transfer/index.d.ts +0 -128
- package/dist/chains/xlayer/eip7702/multi-hop-transfer/index.js +0 -857
- package/dist/chains/xlayer/eip7702/volume/index.d.ts +0 -96
- package/dist/chains/xlayer/eip7702/volume/index.js +0 -793
- package/dist/dex/direct-router/index.d.ts +0 -70
- package/dist/dex/direct-router/index.js +0 -1410
- package/dist/shared/abis/TaxToken.json +0 -969
- package/dist/shared/abis/TokenManager.json +0 -836
- package/dist/shared/abis/TokenManager2.json +0 -136
- package/dist/shared/abis/TokenManagerHelper3.json +0 -993
- package/dist/shared/flap/__tests__/curve.test.js +0 -85
- package/dist/shared/flap/portal/index.d.ts +0 -12
- package/dist/shared/flap/portal/index.js +0 -11
- package/dist/shared/flap/portal/portal.d.ts +0 -47
- package/dist/shared/flap/portal/portal.js +0 -218
- package/dist/shared/flap/portal/types.d.ts +0 -227
- package/dist/shared/flap/portal/types.js +0 -80
- package/dist/shared/flap/portal/writer.d.ts +0 -121
- package/dist/shared/flap/portal/writer.js +0 -265
- package/dist/shared/flap/portal-bundle-merkle/core/index.d.ts +0 -18
- package/dist/shared/flap/portal-bundle-merkle/core/index.js +0 -938
- package/dist/shared/flap/portal-bundle-merkle/swap/index.d.ts +0 -42
- package/dist/shared/flap/portal-bundle-merkle/swap/index.js +0 -1448
- package/dist/shared/flap/portal-bundle-merkle/swap/types.d.ts +0 -84
- package/dist/shared/flap/portal-bundle-merkle/utils/index.d.ts +0 -17
- package/dist/shared/flap/portal-bundle-merkle/utils/index.js +0 -1024
- package/dist/shared/flap/portal-bundle-merkle/utils/types.d.ts +0 -16
- package/dist/shared 2/abis/TaxToken.json +0 -105
- package/dist/shared 2/abis/TokenManager.json +0 -836
- package/dist/shared 2/abis/TokenManager2.json +0 -60
- package/dist/shared 2/abis/TokenManagerHelper3.json +0 -993
- package/dist/shared 2/abis/common.d.ts +0 -85
- package/dist/shared 2/abis/common.js +0 -254
- package/dist/shared 2/abis/index.d.ts +0 -8
- package/dist/shared 2/abis/index.js +0 -8
- package/dist/shared 2/clients/blockrazor.d.ts +0 -314
- package/dist/shared 2/clients/blockrazor.js +0 -596
- package/dist/shared 2/clients/club48.d.ts +0 -154
- package/dist/shared 2/clients/club48.js +0 -331
- package/dist/shared 2/clients/emitservice.d.ts +0 -47
- package/dist/shared 2/clients/emitservice.js +0 -44
- package/dist/shared 2/clients/four.d.ts +0 -132
- package/dist/shared 2/clients/four.js +0 -281
- package/dist/shared 2/clients/merkle.d.ts +0 -210
- package/dist/shared 2/clients/merkle.js +0 -400
- package/dist/shared 2/flap/__tests__/curve.test.js +0 -85
- package/dist/shared 2/flap/abi.d.ts +0 -4
- package/dist/shared 2/flap/abi.js +0 -4
- package/dist/shared 2/flap/constants.d.ts +0 -128
- package/dist/shared 2/flap/constants.js +0 -143
- package/dist/shared 2/flap/curve.d.ts +0 -33
- package/dist/shared 2/flap/curve.js +0 -84
- package/dist/shared 2/flap/errors.d.ts +0 -37
- package/dist/shared 2/flap/errors.js +0 -114
- package/dist/shared 2/flap/index.d.ts +0 -22
- package/dist/shared 2/flap/index.js +0 -33
- package/dist/shared 2/flap/ipfs.d.ts +0 -21
- package/dist/shared 2/flap/ipfs.js +0 -38
- package/dist/shared 2/flap/meta.d.ts +0 -30
- package/dist/shared 2/flap/meta.js +0 -195
- package/dist/shared 2/flap/permit.d.ts +0 -16
- package/dist/shared 2/flap/permit.js +0 -67
- package/dist/shared 2/flap/pinata.d.ts +0 -40
- package/dist/shared 2/flap/pinata.js +0 -106
- package/dist/shared 2/flap/portal-bundle-merkle/config.d.ts +0 -79
- package/dist/shared 2/flap/portal-bundle-merkle/config.js +0 -133
- package/dist/shared 2/flap/portal-bundle-merkle/core.d.ts +0 -18
- package/dist/shared 2/flap/portal-bundle-merkle/core.js +0 -938
- package/dist/shared 2/flap/portal-bundle-merkle/create-to-dex.d.ts +0 -125
- package/dist/shared 2/flap/portal-bundle-merkle/create-to-dex.js +0 -665
- package/dist/shared 2/flap/portal-bundle-merkle/curve-to-dex.d.ts +0 -88
- package/dist/shared 2/flap/portal-bundle-merkle/curve-to-dex.js +0 -446
- package/dist/shared 2/flap/portal-bundle-merkle/index.d.ts +0 -14
- package/dist/shared 2/flap/portal-bundle-merkle/index.js +0 -26
- package/dist/shared 2/flap/portal-bundle-merkle/pancake-proxy.d.ts +0 -28
- package/dist/shared 2/flap/portal-bundle-merkle/private.d.ts +0 -17
- package/dist/shared 2/flap/portal-bundle-merkle/private.js +0 -549
- package/dist/shared 2/flap/portal-bundle-merkle/swap-buy-first.d.ts +0 -65
- package/dist/shared 2/flap/portal-bundle-merkle/swap-buy-first.js +0 -831
- package/dist/shared 2/flap/portal-bundle-merkle/swap.d.ts +0 -201
- package/dist/shared 2/flap/portal-bundle-merkle/swap.js +0 -1359
- package/dist/shared 2/flap/portal-bundle-merkle/types.d.ts +0 -358
- package/dist/shared 2/flap/portal-bundle-merkle/utils.d.ts +0 -89
- package/dist/shared 2/flap/portal-bundle-merkle/utils.js +0 -963
- package/dist/shared 2/flap/portal-bundle.d.ts +0 -119
- package/dist/shared 2/flap/portal-bundle.js +0 -584
- package/dist/shared 2/flap/portal.d.ts +0 -392
- package/dist/shared 2/flap/portal.js +0 -559
- package/dist/shared 2/flap/vanity.d.ts +0 -48
- package/dist/shared 2/flap/vanity.js +0 -110
- package/dist/shared 2/flap/vault.d.ts +0 -240
- package/dist/shared 2/flap/vault.js +0 -366
- package/dist/shared 2/four/index.d.ts +0 -7
- package/dist/shared 2/four/index.js +0 -22
- package/dist/shared 2/four/tax-token.d.ts +0 -176
- package/dist/shared 2/four/tax-token.js +0 -302
- package/dist/shared 2/index.d.ts +0 -10
- package/dist/shared 2/index.js +0 -10
- package/dist/utils/__tests__/errors.test.js +0 -76
- package/dist/utils/erc20/index.d.ts +0 -242
- package/dist/utils/erc20/index.js +0 -645
- package/dist/utils/holders-maker/helpers.d.ts +0 -43
- package/dist/utils/holders-maker/helpers.js +0 -371
- package/dist/utils/holders-maker/index.d.ts +0 -26
- package/dist/utils/holders-maker/index.js +0 -218
- package/dist/utils/holders-maker/types.js +0 -4
- package/dist/utils/lp-inspect/index.d.ts +0 -44
- package/dist/utils/lp-inspect/index.js +0 -937
- package/dist/utils/quote-helpers/index.d.ts +0 -107
- package/dist/utils/quote-helpers/index.js +0 -346
- /package/dist/{chains/bsc/four/submit/types.js → __tests__/subpath-exports.test.d.ts} +0 -0
- /package/dist/{chains/bsc/four/swap/types.js → bundle-core/__tests__/config-helpers.test.d.ts} +0 -0
- /package/dist/{chains/bsc/four/utils/types.d.ts → bundle-core/__tests__/facade-parity.test.d.ts} +0 -0
- /package/dist/{chains/bsc/four/utils/types.js → bundle-core/__tests__/sign-context-helpers.test.d.ts} +0 -0
- /package/dist/{chains/bsc/pancake/bundle-buy-first/types.js → bundle-core/__tests__/sign-fixture.test.d.ts} +0 -0
- /package/dist/{chains/xlayer/eip7702/multi-hop-transfer/types.js → bundle-core/four-meme/types/buy-first.js} +0 -0
- /package/dist/{chains/xlayer/eip7702/volume/types.js → bundle-core/four-meme/types/core-flow.js} +0 -0
- /package/dist/{dex/direct-router/types.js → bundle-core/four-meme/types/index.js} +0 -0
- /package/dist/{shared 2/flap/__tests__/curve.test.d.ts → bundle-core/four-meme/types/swap-internal.js} +0 -0
- /package/dist/{chains/xlayer/eip7702/bundle-swap → bundle-core/four-meme}/types.js +0 -0
- /package/dist/{shared/flap/__tests__/curve.test.d.ts → bundle-core/types/index.js} +0 -0
- /package/dist/{shared 2/flap/portal-bundle-merkle → bundle-core}/types.js +0 -0
- /package/dist/{shared/flap/portal-bundle-merkle/core/types.d.ts → chains/xlayer/eip7702/multi-hop-transfer-helpers.js} +0 -0
- /package/dist/{shared/flap/portal-bundle-merkle/core → dex}/types.js +0 -0
- /package/dist/shared/{flap/portal-bundle-merkle/swap/types.js → foundation/tx/wallet-sign-patch.d.ts} +0 -0
- /package/dist/shared/{flap/portal-bundle-merkle/utils/types.js → foundation/types/airdrop-sweep.js} +0 -0
- /package/dist/{utils/__tests__/errors.test.d.ts → shared/foundation/types/erc20.js} +0 -0
- /package/dist/{utils/erc20/types.js → shared/foundation/types/holders-maker.js} +0 -0
- /package/dist/{utils/lp-inspect/types.js → shared/foundation/types/index.js} +0 -0
- /package/dist/{utils/quote-helpers/types.js → shared/foundation/types/lp-inspect.js} +0 -0
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
export type NetworkCode = 'BSC';
|
|
2
|
-
export type FourConfig = {
|
|
3
|
-
/**
|
|
4
|
-
* Four.meme API 基础 URL
|
|
5
|
-
*
|
|
6
|
-
* 默认使用 Cloudflare Workers 代理(已配置 CORS,可在浏览器中直接使用)
|
|
7
|
-
* 如需自定义,可传入自己的代理地址
|
|
8
|
-
*/
|
|
9
|
-
baseUrl?: string;
|
|
10
|
-
/**
|
|
11
|
-
* 图片上传备用代理 URL 列表
|
|
12
|
-
*
|
|
13
|
-
* 当主 baseUrl 触发 IP 限流(code -1038)时,自动依次尝试备用端点。
|
|
14
|
-
* 每个 URL 格式同 baseUrl,例如 'https://bscfourapi2.emit.tools'
|
|
15
|
-
*/
|
|
16
|
-
uploadFallbackUrls?: string[];
|
|
17
|
-
};
|
|
18
|
-
export type GenerateNonceReq = {
|
|
19
|
-
accountAddress: string;
|
|
20
|
-
verifyType: 'LOGIN';
|
|
21
|
-
networkCode: NetworkCode;
|
|
22
|
-
};
|
|
23
|
-
export type LoginReq = {
|
|
24
|
-
region: 'WEB';
|
|
25
|
-
langType: 'EN' | 'ZH';
|
|
26
|
-
loginIp?: string;
|
|
27
|
-
inviteCode?: string;
|
|
28
|
-
verifyInfo: {
|
|
29
|
-
address: string;
|
|
30
|
-
networkCode: NetworkCode;
|
|
31
|
-
signature: string;
|
|
32
|
-
verifyType: 'LOGIN';
|
|
33
|
-
};
|
|
34
|
-
walletName: 'MetaMask' | string;
|
|
35
|
-
};
|
|
36
|
-
/**
|
|
37
|
-
* Four.meme 税币配置参数
|
|
38
|
-
* - feeRate: 交易费率(固定选项:1, 3, 5, 10,代表 1%, 3%, 5%, 10%)
|
|
39
|
-
* - burnRate: 销毁比例(百分比,如 20 = 20%)
|
|
40
|
-
* - divideRate: 分红比例(百分比,如 30 = 30%)
|
|
41
|
-
* - liquidityRate: 流动性池比例(百分比,如 40 = 40%)
|
|
42
|
-
* - recipientRate: 创始人/接收者比例(百分比,如 10 = 10%)
|
|
43
|
-
* - recipientAddress: 接收者地址(不使用时传空字符串 "")
|
|
44
|
-
* - minSharing: 最低持仓分红门槛(ether 单位,须满足 d × 10^n, n≥5, 1≤d≤9)
|
|
45
|
-
*
|
|
46
|
-
* 约束:burnRate + divideRate + liquidityRate + recipientRate = 100
|
|
47
|
-
*/
|
|
48
|
-
export type FourTokenTaxInfo = {
|
|
49
|
-
feeRate: 1 | 3 | 5 | 10;
|
|
50
|
-
burnRate: number;
|
|
51
|
-
divideRate: number;
|
|
52
|
-
liquidityRate: number;
|
|
53
|
-
recipientRate: number;
|
|
54
|
-
recipientAddress: string;
|
|
55
|
-
minSharing: number;
|
|
56
|
-
};
|
|
57
|
-
export type CreateTokenReq = {
|
|
58
|
-
name: string;
|
|
59
|
-
shortName: string;
|
|
60
|
-
desc: string;
|
|
61
|
-
imgUrl: string;
|
|
62
|
-
launchTime: number;
|
|
63
|
-
label: 'Meme' | 'AI' | 'Defi' | 'Games' | 'Infra' | 'De-Sci' | 'Social' | 'Depin' | 'Charity' | 'Others';
|
|
64
|
-
webUrl?: string;
|
|
65
|
-
twitterUrl?: string;
|
|
66
|
-
telegramUrl?: string;
|
|
67
|
-
preSale: string;
|
|
68
|
-
onlyMPC?: boolean;
|
|
69
|
-
/**
|
|
70
|
-
* AntiSniperFeeMode(开盘高税模式)
|
|
71
|
-
* - true: 启用动态手续费系统(开盘时高税,逐区块自动降低)
|
|
72
|
-
* - false: 不启用(默认)
|
|
73
|
-
*/
|
|
74
|
-
feePlan?: boolean;
|
|
75
|
-
/**
|
|
76
|
-
* 税币配置(Tax Token)
|
|
77
|
-
* - 提供此字段时创建税币(creatorType = 5)
|
|
78
|
-
* - 不提供或为 undefined 时创建普通代币
|
|
79
|
-
*/
|
|
80
|
-
tokenTaxInfo?: FourTokenTaxInfo;
|
|
81
|
-
lpTradingFee: 0.0025;
|
|
82
|
-
symbol: 'BNB';
|
|
83
|
-
totalSupply: 1000000000;
|
|
84
|
-
raisedAmount: 24;
|
|
85
|
-
saleRate: 0.8;
|
|
86
|
-
reserveRate: 0;
|
|
87
|
-
funGroup: false;
|
|
88
|
-
clickFun: false;
|
|
89
|
-
};
|
|
90
|
-
export type CreateTokenResp = {
|
|
91
|
-
createArg: string;
|
|
92
|
-
signature: string;
|
|
93
|
-
tokenAddr?: string;
|
|
94
|
-
address?: string;
|
|
95
|
-
token?: string;
|
|
96
|
-
[key: string]: any;
|
|
97
|
-
};
|
|
98
|
-
export declare class FourClient {
|
|
99
|
-
private baseUrl;
|
|
100
|
-
private uploadUrls;
|
|
101
|
-
constructor(cfg?: FourConfig);
|
|
102
|
-
generateNonce(req: GenerateNonceReq): Promise<string>;
|
|
103
|
-
loginDex(body: LoginReq): Promise<string>;
|
|
104
|
-
/**
|
|
105
|
-
* 上传图片到 Four.meme
|
|
106
|
-
*
|
|
107
|
-
* 优化策略:
|
|
108
|
-
* 1. 图片内容哈希缓存 —— 相同图片不重复上传,直接返回缓存 URL
|
|
109
|
-
* 2. 多端点轮换 —— 当某个代理 IP 触发限流(-1038)时自动切到下一个端点
|
|
110
|
-
*/
|
|
111
|
-
uploadImage(accessToken: string, file: Blob, filename?: string): Promise<string>;
|
|
112
|
-
/**
|
|
113
|
-
* 执行单次上传请求
|
|
114
|
-
*/
|
|
115
|
-
private doUpload;
|
|
116
|
-
/**
|
|
117
|
-
* 判断是否为 IP 限流错误(code: -1038)
|
|
118
|
-
*/
|
|
119
|
-
private isRateLimitError;
|
|
120
|
-
/**
|
|
121
|
-
* 判断是否为 CORS 或网络错误
|
|
122
|
-
* 浏览器直连官方 API 时常见(fetch 会抛出 TypeError: Failed to fetch)
|
|
123
|
-
*/
|
|
124
|
-
private isCorsOrNetworkError;
|
|
125
|
-
private getFilenameFromBlob;
|
|
126
|
-
createToken(accessToken: string, req: CreateTokenReq): Promise<CreateTokenResp>;
|
|
127
|
-
getPublicConfig(): Promise<any>;
|
|
128
|
-
getTokenByAddress(address: string, accessToken?: string): Promise<any>;
|
|
129
|
-
getTokensByAddresses(addresses: string[], accessToken?: string): Promise<any[]>;
|
|
130
|
-
getTokenById(id: string | number, accessToken?: string): Promise<any>;
|
|
131
|
-
}
|
|
132
|
-
export declare function buildLoginMessage(nonce: string): string;
|
|
@@ -1,281 +0,0 @@
|
|
|
1
|
-
// ============================================================================
|
|
2
|
-
// 图片上传缓存(按内容哈希去重,同一张图片只上传一次)
|
|
3
|
-
// ✅ 使用 localStorage 持久化,刷新页面 / 重启浏览器后缓存仍然有效
|
|
4
|
-
// ============================================================================
|
|
5
|
-
const UPLOAD_CACHE_KEY = '__four_upload_cache__';
|
|
6
|
-
const UPLOAD_CACHE_MAX_AGE_MS = 7 * 24 * 60 * 60 * 1000; // 7 天过期
|
|
7
|
-
/** 内存缓存(从 localStorage 懒加载) */
|
|
8
|
-
let _memCache = null;
|
|
9
|
-
/** 加载持久化缓存到内存 */
|
|
10
|
-
function loadCache() {
|
|
11
|
-
if (_memCache)
|
|
12
|
-
return _memCache;
|
|
13
|
-
_memCache = new Map();
|
|
14
|
-
try {
|
|
15
|
-
if (typeof localStorage === 'undefined')
|
|
16
|
-
return _memCache;
|
|
17
|
-
const raw = localStorage.getItem(UPLOAD_CACHE_KEY);
|
|
18
|
-
if (raw) {
|
|
19
|
-
const entries = JSON.parse(raw);
|
|
20
|
-
const now = Date.now();
|
|
21
|
-
for (const [hash, entry] of Object.entries(entries)) {
|
|
22
|
-
// 跳过过期条目
|
|
23
|
-
if (now - entry.ts < UPLOAD_CACHE_MAX_AGE_MS) {
|
|
24
|
-
_memCache.set(hash, entry);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
catch {
|
|
30
|
-
// localStorage 不可用或数据损坏,忽略
|
|
31
|
-
}
|
|
32
|
-
return _memCache;
|
|
33
|
-
}
|
|
34
|
-
/** 保存内存缓存到 localStorage */
|
|
35
|
-
function saveCache() {
|
|
36
|
-
try {
|
|
37
|
-
if (typeof localStorage === 'undefined')
|
|
38
|
-
return;
|
|
39
|
-
const cache = loadCache();
|
|
40
|
-
const obj = {};
|
|
41
|
-
cache.forEach((v, k) => { obj[k] = v; });
|
|
42
|
-
localStorage.setItem(UPLOAD_CACHE_KEY, JSON.stringify(obj));
|
|
43
|
-
}
|
|
44
|
-
catch {
|
|
45
|
-
// localStorage 写满或不可用,忽略
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
/** 从缓存获取 URL */
|
|
49
|
-
function getCachedUrl(hash) {
|
|
50
|
-
const cache = loadCache();
|
|
51
|
-
const entry = cache.get(hash);
|
|
52
|
-
if (!entry)
|
|
53
|
-
return null;
|
|
54
|
-
if (Date.now() - entry.ts > UPLOAD_CACHE_MAX_AGE_MS) {
|
|
55
|
-
cache.delete(hash);
|
|
56
|
-
saveCache();
|
|
57
|
-
return null;
|
|
58
|
-
}
|
|
59
|
-
return entry.url;
|
|
60
|
-
}
|
|
61
|
-
/** 写入缓存 */
|
|
62
|
-
function setCachedUrl(hash, url) {
|
|
63
|
-
const cache = loadCache();
|
|
64
|
-
cache.set(hash, { url, ts: Date.now() });
|
|
65
|
-
saveCache();
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* 计算 Blob 的 SHA-256 哈希(十六进制)
|
|
69
|
-
* 用于图片去重,避免重复上传消耗 IP 配额
|
|
70
|
-
*/
|
|
71
|
-
async function hashBlob(blob) {
|
|
72
|
-
const buffer = await blob.arrayBuffer();
|
|
73
|
-
const hashBuffer = await crypto.subtle.digest('SHA-256', buffer);
|
|
74
|
-
const hashArray = Array.from(new Uint8Array(hashBuffer));
|
|
75
|
-
return hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
|
|
76
|
-
}
|
|
77
|
-
/** IP 限流错误码 */
|
|
78
|
-
const RATE_LIMIT_CODE = -1038;
|
|
79
|
-
/**
|
|
80
|
-
* Four.meme 官方 API 地址(作为内置备用端点)
|
|
81
|
-
*
|
|
82
|
-
* - 在 Node.js/服务端环境中:无 CORS 限制,直连走用户自己的 IP,不消耗 Worker 配额
|
|
83
|
-
* - 在浏览器环境中:可能被 CORS 拦截,但作为最后的 fallback 仍值得尝试
|
|
84
|
-
*/
|
|
85
|
-
const FOUR_MEME_OFFICIAL_API = 'https://four.meme/meme-api';
|
|
86
|
-
export class FourClient {
|
|
87
|
-
constructor(cfg) {
|
|
88
|
-
// 默认使用 Cloudflare Workers 代理,已配置 CORS,浏览器可直接使用
|
|
89
|
-
this.baseUrl = cfg?.baseUrl || 'https://bscfourapi.emit.tools';
|
|
90
|
-
// 上传端点列表:主 URL + 用户自定义备用 URL + 官方 API(兜底)
|
|
91
|
-
const fallbacks = cfg?.uploadFallbackUrls || [];
|
|
92
|
-
this.uploadUrls = [
|
|
93
|
-
this.baseUrl,
|
|
94
|
-
...fallbacks,
|
|
95
|
-
// ✅ 官方 API 始终作为最后兜底(Node.js 环境无 CORS 限制,走用户自己 IP)
|
|
96
|
-
FOUR_MEME_OFFICIAL_API,
|
|
97
|
-
];
|
|
98
|
-
// 去重(如果用户 baseUrl 就是官方地址,避免重复请求)
|
|
99
|
-
this.uploadUrls = [...new Set(this.uploadUrls)];
|
|
100
|
-
}
|
|
101
|
-
async generateNonce(req) {
|
|
102
|
-
const r = await fetch(`${this.baseUrl}/v1/private/user/nonce/generate`, {
|
|
103
|
-
method: 'POST',
|
|
104
|
-
headers: { 'Content-Type': 'application/json' },
|
|
105
|
-
body: JSON.stringify(req),
|
|
106
|
-
});
|
|
107
|
-
const j = await r.json();
|
|
108
|
-
// code 可能是字符串 '0' 或数字 0
|
|
109
|
-
if (j.code !== '0' && j.code !== 0) {
|
|
110
|
-
throw new Error(`generateNonce failed: ${JSON.stringify(j)}`);
|
|
111
|
-
}
|
|
112
|
-
return j.data;
|
|
113
|
-
}
|
|
114
|
-
async loginDex(body) {
|
|
115
|
-
const r = await fetch(`${this.baseUrl}/v1/private/user/login/dex`, {
|
|
116
|
-
method: 'POST',
|
|
117
|
-
headers: { 'Content-Type': 'application/json' },
|
|
118
|
-
body: JSON.stringify(body),
|
|
119
|
-
});
|
|
120
|
-
const j = await r.json();
|
|
121
|
-
if (j.code !== '0' && j.code !== 0) {
|
|
122
|
-
throw new Error(`login failed: ${JSON.stringify(j)}`);
|
|
123
|
-
}
|
|
124
|
-
return j.data; // access_token
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* 上传图片到 Four.meme
|
|
128
|
-
*
|
|
129
|
-
* 优化策略:
|
|
130
|
-
* 1. 图片内容哈希缓存 —— 相同图片不重复上传,直接返回缓存 URL
|
|
131
|
-
* 2. 多端点轮换 —— 当某个代理 IP 触发限流(-1038)时自动切到下一个端点
|
|
132
|
-
*/
|
|
133
|
-
async uploadImage(accessToken, file, filename) {
|
|
134
|
-
// ✅ 先查缓存(localStorage 持久化):相同图片直接返回,不消耗上传配额
|
|
135
|
-
const hash = await hashBlob(file);
|
|
136
|
-
const cached = getCachedUrl(hash);
|
|
137
|
-
if (cached) {
|
|
138
|
-
console.log(`[FourClient] 图片命中缓存,跳过上传 (hash: ${hash.slice(0, 12)}...)`);
|
|
139
|
-
return cached;
|
|
140
|
-
}
|
|
141
|
-
const finalFilename = filename || this.getFilenameFromBlob(file);
|
|
142
|
-
let lastError = null;
|
|
143
|
-
// ✅ 依次尝试所有上传端点(代理 → 自定义备用 → 官方直连兜底)
|
|
144
|
-
for (let i = 0; i < this.uploadUrls.length; i++) {
|
|
145
|
-
const baseUrl = this.uploadUrls[i];
|
|
146
|
-
const isOfficial = baseUrl === FOUR_MEME_OFFICIAL_API;
|
|
147
|
-
try {
|
|
148
|
-
const imgUrl = await this.doUpload(baseUrl, accessToken, file, finalFilename);
|
|
149
|
-
// 上传成功,写入持久化缓存(localStorage)
|
|
150
|
-
setCachedUrl(hash, imgUrl);
|
|
151
|
-
if (i > 0) {
|
|
152
|
-
console.log(`[FourClient] 使用${isOfficial ? '官方直连' : '备用'}端点上传成功: ${baseUrl}`);
|
|
153
|
-
}
|
|
154
|
-
return imgUrl;
|
|
155
|
-
}
|
|
156
|
-
catch (e) {
|
|
157
|
-
lastError = e;
|
|
158
|
-
const canRetry = i < this.uploadUrls.length - 1;
|
|
159
|
-
if (this.isRateLimitError(e) && canRetry) {
|
|
160
|
-
// IP 限流 → 切下一个端点
|
|
161
|
-
const nextUrl = this.uploadUrls[i + 1];
|
|
162
|
-
const nextLabel = nextUrl === FOUR_MEME_OFFICIAL_API ? '官方直连' : `备用端点 #${i + 2}`;
|
|
163
|
-
console.warn(`[FourClient] 端点 ${baseUrl} 触发 IP 限流(100次/天),切换到${nextLabel}...`);
|
|
164
|
-
continue;
|
|
165
|
-
}
|
|
166
|
-
if (this.isCorsOrNetworkError(e) && canRetry) {
|
|
167
|
-
// CORS/网络错误(常见于浏览器直连官方 API)→ 跳过,继续尝试下一个
|
|
168
|
-
console.warn(`[FourClient] 端点 ${baseUrl} 请求失败(${isOfficial ? 'CORS限制' : '网络错误'}),跳过`);
|
|
169
|
-
continue;
|
|
170
|
-
}
|
|
171
|
-
// 无法重试,跳出
|
|
172
|
-
break;
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
// 所有端点都失败
|
|
176
|
-
const isRateLimit = lastError && this.isRateLimitError(lastError);
|
|
177
|
-
if (isRateLimit) {
|
|
178
|
-
throw new Error(`图片上传失败:所有端点均触发 IP 限流(每IP每天100次)。` +
|
|
179
|
-
`请等待次日重置,或在 FourConfig.uploadFallbackUrls 中添加不同 IP 的备用代理。` +
|
|
180
|
-
`\n原始错误: ${lastError.message}`);
|
|
181
|
-
}
|
|
182
|
-
throw lastError || new Error('upload failed: all endpoints exhausted');
|
|
183
|
-
}
|
|
184
|
-
/**
|
|
185
|
-
* 执行单次上传请求
|
|
186
|
-
*/
|
|
187
|
-
async doUpload(baseUrl, accessToken, file, filename) {
|
|
188
|
-
const form = new FormData();
|
|
189
|
-
form.append('file', file, filename);
|
|
190
|
-
const r = await fetch(`${baseUrl}/v1/private/token/upload`, {
|
|
191
|
-
method: 'POST',
|
|
192
|
-
headers: { 'meme-web-access': accessToken },
|
|
193
|
-
body: form,
|
|
194
|
-
});
|
|
195
|
-
const j = await r.json();
|
|
196
|
-
if (j.code !== '0' && j.code !== 0) {
|
|
197
|
-
const err = new Error(`upload failed: ${JSON.stringify(j)}`);
|
|
198
|
-
err.apiCode = typeof j.code === 'string' ? parseInt(j.code, 10) : j.code;
|
|
199
|
-
throw err;
|
|
200
|
-
}
|
|
201
|
-
return j.data; // imgUrl
|
|
202
|
-
}
|
|
203
|
-
/**
|
|
204
|
-
* 判断是否为 IP 限流错误(code: -1038)
|
|
205
|
-
*/
|
|
206
|
-
isRateLimitError(e) {
|
|
207
|
-
if (e?.apiCode === RATE_LIMIT_CODE)
|
|
208
|
-
return true;
|
|
209
|
-
// 兼容:从 message 中检测
|
|
210
|
-
if (typeof e?.message === 'string' && e.message.includes('-1038'))
|
|
211
|
-
return true;
|
|
212
|
-
return false;
|
|
213
|
-
}
|
|
214
|
-
/**
|
|
215
|
-
* 判断是否为 CORS 或网络错误
|
|
216
|
-
* 浏览器直连官方 API 时常见(fetch 会抛出 TypeError: Failed to fetch)
|
|
217
|
-
*/
|
|
218
|
-
isCorsOrNetworkError(e) {
|
|
219
|
-
if (e instanceof TypeError)
|
|
220
|
-
return true; // fetch CORS / network failure
|
|
221
|
-
const msg = e?.message?.toLowerCase?.() || '';
|
|
222
|
-
return msg.includes('failed to fetch') || msg.includes('network') || msg.includes('cors');
|
|
223
|
-
}
|
|
224
|
-
getFilenameFromBlob(blob) {
|
|
225
|
-
const mimeToExt = {
|
|
226
|
-
'image/jpeg': 'jpg',
|
|
227
|
-
'image/jpg': 'jpg',
|
|
228
|
-
'image/png': 'png',
|
|
229
|
-
'image/gif': 'gif',
|
|
230
|
-
'image/bmp': 'bmp',
|
|
231
|
-
'image/webp': 'webp',
|
|
232
|
-
};
|
|
233
|
-
const ext = mimeToExt[blob.type] || 'png';
|
|
234
|
-
return `image-${Date.now()}.${ext}`;
|
|
235
|
-
}
|
|
236
|
-
async createToken(accessToken, req) {
|
|
237
|
-
const r = await fetch(`${this.baseUrl}/v1/private/token/create`, {
|
|
238
|
-
method: 'POST',
|
|
239
|
-
headers: { 'Content-Type': 'application/json', 'meme-web-access': accessToken },
|
|
240
|
-
body: JSON.stringify(req),
|
|
241
|
-
});
|
|
242
|
-
const j = await r.json();
|
|
243
|
-
if (j.code !== '0' && j.code !== 0) {
|
|
244
|
-
throw new Error(`createToken failed: ${JSON.stringify(j)}`);
|
|
245
|
-
}
|
|
246
|
-
return j.data;
|
|
247
|
-
}
|
|
248
|
-
async getPublicConfig() {
|
|
249
|
-
const r = await fetch(`${this.baseUrl}/v1/public/config`);
|
|
250
|
-
return await r.json();
|
|
251
|
-
}
|
|
252
|
-
async getTokenByAddress(address, accessToken) {
|
|
253
|
-
const r = await fetch(`${this.baseUrl}/v1/private/token/get?address=${address}`, {
|
|
254
|
-
headers: accessToken ? { 'meme-web-access': accessToken } : undefined,
|
|
255
|
-
});
|
|
256
|
-
const j = await r.json();
|
|
257
|
-
if (j.code && j.code !== '0' && j.code !== 0) {
|
|
258
|
-
throw new Error(`getTokenByAddress failed: ${JSON.stringify(j)}`);
|
|
259
|
-
}
|
|
260
|
-
return j.data ?? j;
|
|
261
|
-
}
|
|
262
|
-
async getTokensByAddresses(addresses, accessToken) {
|
|
263
|
-
if (!Array.isArray(addresses) || addresses.length === 0)
|
|
264
|
-
return [];
|
|
265
|
-
const tasks = addresses.map((addr) => this.getTokenByAddress(addr, accessToken).catch((e) => ({ address: addr, error: String(e) })));
|
|
266
|
-
return await Promise.all(tasks);
|
|
267
|
-
}
|
|
268
|
-
async getTokenById(id, accessToken) {
|
|
269
|
-
const r = await fetch(`${this.baseUrl}/v1/private/token/getById?id=${id}`, {
|
|
270
|
-
headers: accessToken ? { 'meme-web-access': accessToken } : undefined,
|
|
271
|
-
});
|
|
272
|
-
const j = await r.json();
|
|
273
|
-
if (j.code && j.code !== '0' && j.code !== 0) {
|
|
274
|
-
throw new Error(`getTokenById failed: ${JSON.stringify(j)}`);
|
|
275
|
-
}
|
|
276
|
-
return j.data ?? j;
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
export function buildLoginMessage(nonce) {
|
|
280
|
-
return `You are sign in Meme ${nonce}`;
|
|
281
|
-
}
|
|
@@ -1,210 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Merkle.io Bundle Service 客户端
|
|
3
|
-
*
|
|
4
|
-
* 提供基于 Merkle 的 MEV 保护和捆绑交易服务
|
|
5
|
-
*
|
|
6
|
-
* 官方文档: https://docs.merkle.io/
|
|
7
|
-
*
|
|
8
|
-
* 使用示例:
|
|
9
|
-
* ```typescript
|
|
10
|
-
* import { MerkleClient } from 'four-flap-meme-sdk';
|
|
11
|
-
*
|
|
12
|
-
* const merkle = new MerkleClient({
|
|
13
|
-
* apiKey: 'pk_mbs_...',
|
|
14
|
-
* chainId: 56
|
|
15
|
-
* });
|
|
16
|
-
*
|
|
17
|
-
* const bundleHash = await merkle.sendBundle({
|
|
18
|
-
* transactions: [tx1, tx2, tx3],
|
|
19
|
-
* targetBlock: currentBlock + 2
|
|
20
|
-
* });
|
|
21
|
-
* ```
|
|
22
|
-
*/
|
|
23
|
-
import { JsonRpcProvider, Wallet, TransactionLike } from 'ethers';
|
|
24
|
-
/**
|
|
25
|
-
* Merkle 客户端配置
|
|
26
|
-
*/
|
|
27
|
-
export interface MerkleConfig {
|
|
28
|
-
/** Merkle API Key (例如: pk_mbs_...) */
|
|
29
|
-
apiKey: string;
|
|
30
|
-
/** 链 ID: 56=BSC, 1=Ethereum */
|
|
31
|
-
chainId: 56 | 1;
|
|
32
|
-
/** 自定义 RPC URL(可选,默认使用 Merkle 官方 RPC) */
|
|
33
|
-
customRpcUrl?: string;
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Bundle 参数
|
|
37
|
-
*/
|
|
38
|
-
export interface BundleParams {
|
|
39
|
-
/** 已签名的交易数组(原始交易字符串) */
|
|
40
|
-
txs: string[];
|
|
41
|
-
/** 目标区块号(十六进制字符串,例如: "0x123abc") */
|
|
42
|
-
blockNumber: string;
|
|
43
|
-
/** 最小时间戳(可选,0 表示不限制) */
|
|
44
|
-
minTimestamp?: number;
|
|
45
|
-
/** 最大时间戳(可选,0 表示不限制) */
|
|
46
|
-
maxTimestamp?: number;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* 网络状态信息
|
|
50
|
-
*/
|
|
51
|
-
export interface NetworkStatus {
|
|
52
|
-
/** 当前区块号 */
|
|
53
|
-
currentBlock: number;
|
|
54
|
-
/** 当前 Gas Price (wei) */
|
|
55
|
-
gasPrice: bigint;
|
|
56
|
-
/** 建议的最小 Gas Price (wei) */
|
|
57
|
-
suggestedMinGasPrice: bigint;
|
|
58
|
-
/** 平均出块时间(秒) */
|
|
59
|
-
avgBlockTime: number;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* 发送 Bundle 的选项
|
|
63
|
-
*/
|
|
64
|
-
export interface SendBundleOptions {
|
|
65
|
-
/** 已签名的交易数组 */
|
|
66
|
-
transactions: string[];
|
|
67
|
-
/** 目标区块号(十进制数字,会自动转换为十六进制) */
|
|
68
|
-
targetBlock?: number;
|
|
69
|
-
/** 最小时间戳 */
|
|
70
|
-
minTimestamp?: number;
|
|
71
|
-
/** 最大时间戳 */
|
|
72
|
-
maxTimestamp?: number;
|
|
73
|
-
/** 如果不指定 targetBlock,则使用当前区块 + offset(默认3) */
|
|
74
|
-
blockOffset?: number;
|
|
75
|
-
/** 最小区块偏移量,用于确保足够的提交时间窗口(默认3) */
|
|
76
|
-
minBlockOffset?: number;
|
|
77
|
-
/** 是否启用自动重试(默认false) */
|
|
78
|
-
autoRetry?: boolean;
|
|
79
|
-
/** 最大重试次数(默认2) */
|
|
80
|
-
maxRetries?: number;
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Bundle 发送结果
|
|
84
|
-
*/
|
|
85
|
-
export interface BundleResult {
|
|
86
|
-
/** Bundle Hash */
|
|
87
|
-
bundleHash: string;
|
|
88
|
-
/** 交易哈希列表 */
|
|
89
|
-
txHashes: string[];
|
|
90
|
-
/** 目标区块号 */
|
|
91
|
-
targetBlock: number;
|
|
92
|
-
/** 交易数量 */
|
|
93
|
-
txCount: number;
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* 交易确认结果
|
|
97
|
-
*/
|
|
98
|
-
export interface TransactionResult {
|
|
99
|
-
/** 交易索引 */
|
|
100
|
-
index: number;
|
|
101
|
-
/** 交易哈希 */
|
|
102
|
-
hash: string;
|
|
103
|
-
/** 是否成功 */
|
|
104
|
-
success: boolean;
|
|
105
|
-
/** 区块号 */
|
|
106
|
-
blockNumber?: number;
|
|
107
|
-
/** Gas 使用量 */
|
|
108
|
-
gasUsed?: string;
|
|
109
|
-
/** 有效 Gas Price */
|
|
110
|
-
effectiveGasPrice?: string;
|
|
111
|
-
/** Gas 费用(BNB/ETH) */
|
|
112
|
-
gasCost?: string;
|
|
113
|
-
/** 错误信息 */
|
|
114
|
-
error?: string;
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Merkle 客户端
|
|
118
|
-
*/
|
|
119
|
-
export declare class MerkleClient {
|
|
120
|
-
private provider;
|
|
121
|
-
private chainId;
|
|
122
|
-
private chainName;
|
|
123
|
-
private blockNumberCache;
|
|
124
|
-
private static BLOCK_CACHE_TTL_MS;
|
|
125
|
-
constructor(config: MerkleConfig);
|
|
126
|
-
/**
|
|
127
|
-
* 获取 Provider
|
|
128
|
-
*/
|
|
129
|
-
getProvider(): JsonRpcProvider;
|
|
130
|
-
/**
|
|
131
|
-
* 获取当前区块号(带缓存,减少 RPC 调用)
|
|
132
|
-
* @param forceRefresh 是否强制刷新缓存
|
|
133
|
-
*/
|
|
134
|
-
getBlockNumber(forceRefresh?: boolean): Promise<number>;
|
|
135
|
-
/**
|
|
136
|
-
* 获取 Gas 价格信息
|
|
137
|
-
*/
|
|
138
|
-
getFeeData(): Promise<import("ethers").FeeData>;
|
|
139
|
-
/**
|
|
140
|
-
* 获取网络状态(用于 Bundle 参数优化)
|
|
141
|
-
*/
|
|
142
|
-
getNetworkStatus(): Promise<NetworkStatus>;
|
|
143
|
-
/**
|
|
144
|
-
* 发送捆绑交易(底层方法)
|
|
145
|
-
*
|
|
146
|
-
* @param params Bundle 参数
|
|
147
|
-
* @returns Bundle Hash
|
|
148
|
-
*/
|
|
149
|
-
sendBundleRaw(params: BundleParams): Promise<string>;
|
|
150
|
-
/**
|
|
151
|
-
* 发送捆绑交易(高级方法,带智能优化和重试)
|
|
152
|
-
*
|
|
153
|
-
* @param options 发送选项
|
|
154
|
-
* @returns Bundle 结果
|
|
155
|
-
*/
|
|
156
|
-
sendBundle(options: SendBundleOptions): Promise<BundleResult>;
|
|
157
|
-
/**
|
|
158
|
-
* 等待 Bundle 中的交易确认
|
|
159
|
-
*
|
|
160
|
-
* @param txHashes 交易哈希列表
|
|
161
|
-
* @param confirmations 确认数(默认 1)
|
|
162
|
-
* @param timeout 超时时间(毫秒,默认 120000)
|
|
163
|
-
* @returns 交易结果列表
|
|
164
|
-
*/
|
|
165
|
-
waitForBundleConfirmation(txHashes: string[], confirmations?: number, timeout?: number): Promise<TransactionResult[]>;
|
|
166
|
-
/**
|
|
167
|
-
* 准备并签名交易(辅助方法)
|
|
168
|
-
*
|
|
169
|
-
* @param wallet 钱包
|
|
170
|
-
* @param transactions 交易列表
|
|
171
|
-
* @param options 可选参数
|
|
172
|
-
* @returns 已签名的交易数组
|
|
173
|
-
*/
|
|
174
|
-
signTransactions(wallet: Wallet, transactions: TransactionLike[], options?: {
|
|
175
|
-
/** 起始 Nonce(可选,默认从链上获取) */
|
|
176
|
-
startNonce?: number;
|
|
177
|
-
/** Gas Price(可选,默认从链上获取并提高 50%) */
|
|
178
|
-
gasPrice?: bigint;
|
|
179
|
-
/** Gas Price 增幅百分比(默认 50,即提高 50%) */
|
|
180
|
-
gasPriceMultiplier?: number;
|
|
181
|
-
}): Promise<string[]>;
|
|
182
|
-
/**
|
|
183
|
-
* 检查交易是否已包含在区块中
|
|
184
|
-
*
|
|
185
|
-
* @param txHash 交易哈希
|
|
186
|
-
* @returns 是否已包含
|
|
187
|
-
*/
|
|
188
|
-
isTransactionIncluded(txHash: string): Promise<boolean>;
|
|
189
|
-
/**
|
|
190
|
-
* 等待达到目标区块
|
|
191
|
-
*
|
|
192
|
-
* @param targetBlock 目标区块号
|
|
193
|
-
* @param maxAttempts 最大尝试次数(默认 10)
|
|
194
|
-
* @param intervalMs 检查间隔(毫秒,默认 1000)
|
|
195
|
-
* @returns 是否达到目标区块
|
|
196
|
-
*/
|
|
197
|
-
waitForBlock(targetBlock: number, maxAttempts?: number, intervalMs?: number): Promise<boolean>;
|
|
198
|
-
/**
|
|
199
|
-
* 获取当前 Provider 的统计信息(用于调试)
|
|
200
|
-
*/
|
|
201
|
-
getProviderInfo(): {
|
|
202
|
-
chainId: number;
|
|
203
|
-
chainName: string;
|
|
204
|
-
rpcUrl: string;
|
|
205
|
-
};
|
|
206
|
-
}
|
|
207
|
-
/**
|
|
208
|
-
* 创建 Merkle 客户端的便捷函数
|
|
209
|
-
*/
|
|
210
|
-
export declare function createMerkleClient(apiKey: string, chainId?: 56 | 1): MerkleClient;
|