four-flap-meme-sdk 1.9.49 → 2.0.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/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.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 +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/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 -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/disperse.d.ts +12 -0
- package/dist/chains/bsc/four/disperse.js +470 -0
- 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/pairwise.d.ts +7 -0
- package/dist/chains/bsc/four/pairwise.js +308 -0
- 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/sweep.d.ts +13 -0
- package/dist/chains/bsc/four/sweep.js +788 -0
- 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 +565 -0
- 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/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 +27 -46
- package/dist/chains/xlayer/eip7702/index.js +27 -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 +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-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 +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-core.d.ts +363 -0
- package/dist/chains/xlayer/eoa/types-core.js +53 -0
- package/dist/chains/xlayer/eoa/types-create.d.ts +413 -0
- package/dist/chains/xlayer/eoa/types-create.js +9 -0
- package/dist/chains/xlayer/eoa/types-volume.d.ts +209 -0
- package/dist/chains/xlayer/eoa/types-volume.js +13 -0
- 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/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/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 +1 -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/__tests__/curve.test.js +3 -3
- 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-helpers.d.ts +100 -0
- package/dist/shared/flap/portal-bundle-merkle/utils-helpers.js +133 -0
- 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/flap 2/__tests__/curve.test.d.ts +1 -0
- package/dist/shared/flap 2/portal-bundle-merkle/types.js +1 -0
- 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.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 +4 -0
- package/dist/shared/index.js +4 -0
- package/dist/types/distribute.d.ts +72 -0
- package/dist/types/distribute.js +1 -0
- package/dist/types 2/errors.d.ts +27 -0
- package/dist/types 2/errors.js +34 -0
- package/dist/utils/airdrop-sweep-types.d.ts +1 -0
- package/dist/utils/airdrop-sweep-types.js +1 -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-types.d.ts +1 -0
- package/dist/utils/erc20-types.js +1 -0
- 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-types.d.ts +1 -0
- package/dist/utils/holders-maker-types.js +1 -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-types.d.ts +1 -0
- package/dist/utils/lp-inspect-types.js +1 -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-types.d.ts +1 -0
- package/dist/utils/private-sale-types.js +1 -0
- 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-types.d.ts +1 -0
- package/dist/utils/quote-helpers-types.js +1 -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 +55 -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/{shared 2/flap/__tests__/curve.test.d.ts → bundle-core/__tests__/config-helpers.test.d.ts} +0 -0
- /package/dist/{shared 2/flap/portal-bundle-merkle/types.js → bundle-core/__tests__/facade-parity.test.d.ts} +0 -0
- /package/dist/{shared 2/abis → shared/abis 2}/TaxToken.json +0 -0
- /package/dist/{shared 2/abis → shared/abis 2}/TokenManager.json +0 -0
- /package/dist/{shared 2/abis → shared/abis 2}/TokenManager2.json +0 -0
- /package/dist/{shared 2/abis → shared/abis 2}/TokenManagerHelper3.json +0 -0
- /package/dist/{shared 2/abis → shared/abis 2}/common.d.ts +0 -0
- /package/dist/{shared 2/abis → shared/abis 2}/common.js +0 -0
- /package/dist/{shared 2/abis → shared/abis 2}/index.d.ts +0 -0
- /package/dist/{shared 2/abis → shared/abis 2}/index.js +0 -0
- /package/dist/{shared 2/clients → shared/clients 2}/blockrazor.d.ts +0 -0
- /package/dist/{shared 2/clients → shared/clients 2}/blockrazor.js +0 -0
- /package/dist/{shared 2/clients → shared/clients 2}/club48.d.ts +0 -0
- /package/dist/{shared 2/clients → shared/clients 2}/club48.js +0 -0
- /package/dist/{shared 2/clients → shared/clients 2}/emitservice.d.ts +0 -0
- /package/dist/{shared 2/clients → shared/clients 2}/emitservice.js +0 -0
- /package/dist/{shared 2/clients → shared/clients 2}/four.d.ts +0 -0
- /package/dist/{shared 2/clients → shared/clients 2}/four.js +0 -0
- /package/dist/{shared 2/clients → shared/clients 2}/merkle.d.ts +0 -0
- /package/dist/{shared 2/clients → shared/clients 2}/merkle.js +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/__tests__/curve.test.js +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/abi.d.ts +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/abi.js +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/constants.d.ts +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/constants.js +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/curve.d.ts +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/curve.js +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/errors.d.ts +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/errors.js +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/index.d.ts +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/index.js +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/ipfs.d.ts +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/ipfs.js +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/meta.d.ts +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/meta.js +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/permit.d.ts +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/permit.js +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/pinata.d.ts +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/pinata.js +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/config.d.ts +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/config.js +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/core.d.ts +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/core.js +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/create-to-dex.d.ts +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/create-to-dex.js +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/curve-to-dex.d.ts +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/curve-to-dex.js +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/index.d.ts +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/index.js +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/pancake-proxy.d.ts +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/pancake-proxy.js +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/private.d.ts +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/private.js +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/swap-buy-first.d.ts +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/swap-buy-first.js +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/swap.d.ts +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/swap.js +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/types.d.ts +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/utils.d.ts +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/utils.js +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle.d.ts +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle.js +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/portal.d.ts +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/portal.js +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/vanity.d.ts +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/vanity.js +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/vault.d.ts +0 -0
- /package/dist/{shared 2/flap → shared/flap 2}/vault.js +0 -0
- /package/dist/{shared 2/four → shared/four 2}/index.d.ts +0 -0
- /package/dist/{shared 2/four → shared/four 2}/index.js +0 -0
- /package/dist/{shared 2/four → shared/four 2}/tax-token.d.ts +0 -0
- /package/dist/{shared 2/four → shared/four 2}/tax-token.js +0 -0
- /package/dist/{shared 2/index.d.ts → shared/index 2.js} +0 -0
- /package/dist/{shared 2/index.js → shared/index.d 2.ts} +0 -0
package/README.en.md
CHANGED
|
@@ -29,6 +29,41 @@ Optional (use Pinata for IPFS uploads)
|
|
|
29
29
|
npm i pinata
|
|
30
30
|
```
|
|
31
31
|
|
|
32
|
+
## Package entry points (subpath imports)
|
|
33
|
+
|
|
34
|
+
The library is published as **ESM** (`dist` is produced by `npm run build`). The root import remains the default for full API access. For smaller dependency graphs, Node and bundlers that honor `package.json` **`exports`** may import:
|
|
35
|
+
|
|
36
|
+
**When to use which**
|
|
37
|
+
|
|
38
|
+
- **Root**: default for apps and examples that touch more than one SDK area.
|
|
39
|
+
- **Subpaths**: for scripts or libraries that intentionally depend on only one slice (constants, ABIs, error utilities, Merkle clients, etc.).
|
|
40
|
+
|
|
41
|
+
| Subpath | Purpose |
|
|
42
|
+
|---------|---------|
|
|
43
|
+
| `four-flap-meme-sdk` | Main entry — full surface |
|
|
44
|
+
| `four-flap-meme-sdk/chains` | Chain namespaces and helpers |
|
|
45
|
+
| `four-flap-meme-sdk/shared` | Cross-cutting modules: constants, `foundation`, `clients`, `FourUtils` |
|
|
46
|
+
| `four-flap-meme-sdk/clients` | HTTP / Merkle-related clients |
|
|
47
|
+
| `four-flap-meme-sdk/dex` | DEX helpers |
|
|
48
|
+
| `four-flap-meme-sdk/constants` | Chain config, gas, addresses, profit settings |
|
|
49
|
+
| `four-flap-meme-sdk/abis` | TokenManager JSON ABIs, common fragments, Flap ABIs (same as `src/abis` barrel) |
|
|
50
|
+
| `four-flap-meme-sdk/foundation` | Unknown-error normalization and optional loggers |
|
|
51
|
+
| `four-flap-meme-sdk/bundle-core` | Shared bundle core: `internal`, `submit`, `config-helpers` |
|
|
52
|
+
| `four-flap-meme-sdk/flows` | High-level flows (e.g. `createTokenFlow`) |
|
|
53
|
+
|
|
54
|
+
> **v2.0.0**: ambiguous root exports removed — see [docs/MIGRATION_EXPORTS.zh-CN.md](./docs/MIGRATION_EXPORTS.zh-CN.md).
|
|
55
|
+
|
|
56
|
+
```typescript
|
|
57
|
+
import { CHAINS, GAS_LIMITS } from 'four-flap-meme-sdk/constants';
|
|
58
|
+
import { TokenManager } from 'four-flap-meme-sdk/abis';
|
|
59
|
+
import { normalizeUnknownError } from 'four-flap-meme-sdk/foundation';
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Documentation: alignment & backends
|
|
63
|
+
|
|
64
|
+
- **[docs/ALIGNMENT_STATUS.zh-CN.md](./docs/ALIGNMENT_STATUS.zh-CN.md)** — audit-style checklist (language: Chinese).
|
|
65
|
+
- **[docs/SUBMIT_BACKENDS.zh-CN.md](./docs/SUBMIT_BACKENDS.zh-CN.md)** — choosing Merkle, BlockRazor, direct RPC, ENI, 48.club, etc.
|
|
66
|
+
|
|
32
67
|
---
|
|
33
68
|
|
|
34
69
|
## Table of Contents
|
|
@@ -3503,7 +3538,7 @@ const permitData = await buildPermitPiggybackAuto(
|
|
|
3503
3538
|
The SDK provides pre-configured addresses for all supported networks:
|
|
3504
3539
|
|
|
3505
3540
|
```typescript
|
|
3506
|
-
import {
|
|
3541
|
+
import { CHAINS } from 'four-flap-meme-sdk';
|
|
3507
3542
|
|
|
3508
3543
|
// Use chain enum when calling SDK methods (addresses are handled internally)
|
|
3509
3544
|
// Example:
|
|
@@ -3512,11 +3547,11 @@ import { CHAIN } from 'four-flap-meme-sdk';
|
|
|
3512
3547
|
// await tryBuy('BSC', rpcUrl, token, amount, funds);
|
|
3513
3548
|
|
|
3514
3549
|
// Chain information
|
|
3515
|
-
console.log(
|
|
3516
|
-
console.log(
|
|
3517
|
-
console.log(
|
|
3518
|
-
console.log(
|
|
3519
|
-
console.log(
|
|
3550
|
+
console.log(CHAINS.BSC.chainId); // 56
|
|
3551
|
+
console.log(CHAINS.BASE.chainId); // 8453
|
|
3552
|
+
console.log(CHAINS.XLAYER.chainId); // 196
|
|
3553
|
+
console.log(CHAINS.MORPH.chainId); // 2818
|
|
3554
|
+
console.log(CHAINS.ARBITRUM_ONE.chainId); // 42161
|
|
3520
3555
|
```
|
|
3521
3556
|
|
|
3522
3557
|
---
|
package/README.md
CHANGED
|
@@ -20,6 +20,37 @@ npm i four-flap-meme-sdk ethers
|
|
|
20
20
|
|
|
21
21
|
**要求**:Node.js >= 18, ESM, ethers v6
|
|
22
22
|
|
|
23
|
+
### Package entry points (subpath imports)
|
|
24
|
+
|
|
25
|
+
The package ships **ESM** with `exports` in `package.json`. Use the default root import for full API coverage; use subpaths to narrow what your resolver loads (requires tooling that respects `exports`).
|
|
26
|
+
|
|
27
|
+
**When to use which**
|
|
28
|
+
|
|
29
|
+
- **Root import**: matches the docs; use when you need multiple surfaces (four.meme, Flap, bundles, several chains).
|
|
30
|
+
- **Subpaths**: use in scripts, internal packages, or constrained runtimes when you only need one vertical slice (constants, ABIs, error helpers, HTTP clients, etc.).
|
|
31
|
+
|
|
32
|
+
| Subpath | Purpose |
|
|
33
|
+
|---------|---------|
|
|
34
|
+
| `four-flap-meme-sdk` | Main entry — full surface (recommended default) |
|
|
35
|
+
| `four-flap-meme-sdk/chains` | Per-chain namespaces and chain helpers |
|
|
36
|
+
| `four-flap-meme-sdk/shared` | Shared layer: constants, `foundation`, `clients`, `FourUtils`, etc. |
|
|
37
|
+
| `four-flap-meme-sdk/clients` | HTTP / bundle / infra clients |
|
|
38
|
+
| `four-flap-meme-sdk/dex` | DEX helpers and types |
|
|
39
|
+
| `four-flap-meme-sdk/constants` | Chain IDs, gas limits, addresses, profit helpers — smallest config-only slice |
|
|
40
|
+
| `four-flap-meme-sdk/abis` | Compiled contract JSON ABIs, shared fragment ABIs, Flap-specific ABIs (`src/abis` entry) |
|
|
41
|
+
| `four-flap-meme-sdk/foundation` | `normalizeUnknownError`, `getErrorMessageFromUnknown`, injectable `SdkLogger` — no domain logic |
|
|
42
|
+
|
|
43
|
+
```typescript
|
|
44
|
+
import { CHAINS, ADDRESSES } from 'four-flap-meme-sdk/constants';
|
|
45
|
+
import { TokenManager } from 'four-flap-meme-sdk/abis';
|
|
46
|
+
import { normalizeUnknownError } from 'four-flap-meme-sdk/foundation';
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Docs: architecture & submission paths
|
|
50
|
+
|
|
51
|
+
- **[docs/ALIGNMENT_STATUS.zh-CN.md](./docs/ALIGNMENT_STATUS.zh-CN.md)** — audit-style checklist (what is done vs backlog).
|
|
52
|
+
- **[docs/SUBMIT_BACKENDS.zh-CN.md](./docs/SUBMIT_BACKENDS.zh-CN.md)** — when to use Merkle vs BlockRazor vs direct RPC vs ENI / 48.club, etc.
|
|
53
|
+
|
|
23
54
|
## 获取 Merkle API Key
|
|
24
55
|
|
|
25
56
|
从 [Merkle.io](https://merkle.io) 获取免费 API Key,用于 Bundle 服务。
|
package/README.zh-CN.md
CHANGED
|
@@ -29,6 +29,41 @@ npm i four-flap-meme-sdk ethers
|
|
|
29
29
|
npm i pinata
|
|
30
30
|
```
|
|
31
31
|
|
|
32
|
+
## 包入口与子路径(按需引用)
|
|
33
|
+
|
|
34
|
+
发布后包内为 **ESM**,`dist` 由 `npm run build` 生成。多数场景继续使用主入口即可;若希望缩小解析范围或只做配置层依赖,可选用 `package.json` 的 **`exports`** 子路径(需 Node/打包工具识别 `exports`)。
|
|
35
|
+
|
|
36
|
+
**如何选择**
|
|
37
|
+
|
|
38
|
+
- **主入口**:与文档示例一致;需要 four / Flap、Bundle、多链等组合能力时优先用它。
|
|
39
|
+
- **子路径**:在脚本、内部库或边缘运行时**只要某一竖切**(仅常量、仅 ABI、仅错误与日志、仅 HTTP 客户端等)时使用,以收敛依赖与解析面。
|
|
40
|
+
|
|
41
|
+
| 子路径 | 说明 |
|
|
42
|
+
|--------|------|
|
|
43
|
+
| `four-flap-meme-sdk` | 主入口,全量导出(默认推荐) |
|
|
44
|
+
| `four-flap-meme-sdk/chains` | 各链命名空间与链相关工具 |
|
|
45
|
+
| `four-flap-meme-sdk/shared` | 横向能力:常量、`foundation`、`clients`、`FourUtils` 等 |
|
|
46
|
+
| `four-flap-meme-sdk/clients` | Merkle / HTTP 等与 I/O 相关的客户端封装 |
|
|
47
|
+
| `four-flap-meme-sdk/dex` | DEX 路由与相关类型/辅助函数 |
|
|
48
|
+
| `four-flap-meme-sdk/constants` | 链 ID、Gas、常用地址、利润配置等常量(等价于深入 `shared` 中的常量模块,但更轻依赖面) |
|
|
49
|
+
| `four-flap-meme-sdk/abis` | 合约 JSON ABI(TokenManager 等)、公共片段 ABI、Flap 相关 ABI(与 `src/abis` 入口一致) |
|
|
50
|
+
| `four-flap-meme-sdk/foundation` | 错误规范化(`normalizeUnknownError` 等)与可选 `SdkLogger`,无业务逻辑 |
|
|
51
|
+
| `four-flap-meme-sdk/bundle-core` | Bundle 共享核心:`internal`、`submit`、`config-helpers` |
|
|
52
|
+
| `four-flap-meme-sdk/flows` | 高层流程(如 `createTokenFlow`) |
|
|
53
|
+
|
|
54
|
+
> **v2.0.0**:包根已移除 `TradeType` / `PROFIT_CONFIG` / `CHAIN` 等歧义导出,见 [docs/MIGRATION_EXPORTS.zh-CN.md](./docs/MIGRATION_EXPORTS.zh-CN.md)。
|
|
55
|
+
|
|
56
|
+
```typescript
|
|
57
|
+
import { CHAINS, GAS_LIMITS } from 'four-flap-meme-sdk/constants';
|
|
58
|
+
import { TokenManager } from 'four-flap-meme-sdk/abis';
|
|
59
|
+
import { normalizeUnknownError } from 'four-flap-meme-sdk/foundation';
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### 文档:架构对齐与提交路径
|
|
63
|
+
|
|
64
|
+
- **[docs/ALIGNMENT_STATUS.zh-CN.md](./docs/ALIGNMENT_STATUS.zh-CN.md)** — 与审计文档对照的总表(已完成 / 待办)。
|
|
65
|
+
- **[docs/SUBMIT_BACKENDS.zh-CN.md](./docs/SUBMIT_BACKENDS.zh-CN.md)** — 何时用 Merkle / BlockRazor / 直连 RPC / ENI / 48.club 等。
|
|
66
|
+
|
|
32
67
|
## 浏览器环境支持
|
|
33
68
|
|
|
34
69
|
SDK 已内置 Cloudflare Workers 代理,**浏览器环境可直接使用,无需额外配置 CORS**:
|
|
@@ -4587,7 +4622,7 @@ const permitData = await buildPermitPiggybackAuto(
|
|
|
4587
4622
|
SDK 提供所有支持网络的预配置地址:
|
|
4588
4623
|
|
|
4589
4624
|
```typescript
|
|
4590
|
-
import {
|
|
4625
|
+
import { CHAINS } from 'four-flap-meme-sdk';
|
|
4591
4626
|
|
|
4592
4627
|
// 使用链枚举调用 SDK 方法(地址由 SDK 内部处理)
|
|
4593
4628
|
// 示例:
|
|
@@ -4596,11 +4631,11 @@ import { CHAIN } from 'four-flap-meme-sdk';
|
|
|
4596
4631
|
// await tryBuy('BSC', rpcUrl, token, amount, funds);
|
|
4597
4632
|
|
|
4598
4633
|
// 链信息
|
|
4599
|
-
console.log(
|
|
4600
|
-
console.log(
|
|
4601
|
-
console.log(
|
|
4602
|
-
console.log(
|
|
4603
|
-
console.log(
|
|
4634
|
+
console.log(CHAINS.BSC.chainId); // 56
|
|
4635
|
+
console.log(CHAINS.BASE.chainId); // 8453
|
|
4636
|
+
console.log(CHAINS.XLAYER.chainId); // 196
|
|
4637
|
+
console.log(CHAINS.MORPH.chainId); // 2818
|
|
4638
|
+
console.log(CHAINS.ARBITRUM_ONE.chainId); // 42161
|
|
4604
4639
|
```
|
|
4605
4640
|
|
|
4606
4641
|
---
|
package/dist/abis/common.js
CHANGED
|
@@ -69,40 +69,44 @@ export const V2_ROUTER_QUOTE_ABI = [
|
|
|
69
69
|
export const V3_ROUTER02_ABI = [
|
|
70
70
|
// exactInputSingle - 单跳,不含 deadline
|
|
71
71
|
{
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
{
|
|
76
|
-
{
|
|
77
|
-
{
|
|
78
|
-
{
|
|
79
|
-
{
|
|
80
|
-
{
|
|
72
|
+
inputs: [
|
|
73
|
+
{
|
|
74
|
+
components: [
|
|
75
|
+
{ name: 'tokenIn', type: 'address' },
|
|
76
|
+
{ name: 'tokenOut', type: 'address' },
|
|
77
|
+
{ name: 'fee', type: 'uint24' },
|
|
78
|
+
{ name: 'recipient', type: 'address' },
|
|
79
|
+
{ name: 'amountIn', type: 'uint256' },
|
|
80
|
+
{ name: 'amountOutMinimum', type: 'uint256' },
|
|
81
|
+
{ name: 'sqrtPriceLimitX96', type: 'uint160' },
|
|
81
82
|
],
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
83
|
+
name: 'params',
|
|
84
|
+
type: 'tuple',
|
|
85
|
+
},
|
|
86
|
+
],
|
|
87
|
+
name: 'exactInputSingle',
|
|
88
|
+
outputs: [{ name: 'amountOut', type: 'uint256' }],
|
|
89
|
+
stateMutability: 'payable',
|
|
90
|
+
type: 'function',
|
|
89
91
|
},
|
|
90
92
|
// exactInput - 多跳,不含 deadline
|
|
91
93
|
{
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
{
|
|
96
|
-
{
|
|
97
|
-
{
|
|
94
|
+
inputs: [
|
|
95
|
+
{
|
|
96
|
+
components: [
|
|
97
|
+
{ name: 'path', type: 'bytes' },
|
|
98
|
+
{ name: 'recipient', type: 'address' },
|
|
99
|
+
{ name: 'amountIn', type: 'uint256' },
|
|
100
|
+
{ name: 'amountOutMinimum', type: 'uint256' },
|
|
98
101
|
],
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
102
|
+
name: 'params',
|
|
103
|
+
type: 'tuple',
|
|
104
|
+
},
|
|
105
|
+
],
|
|
106
|
+
name: 'exactInput',
|
|
107
|
+
outputs: [{ name: 'amountOut', type: 'uint256' }],
|
|
108
|
+
stateMutability: 'payable',
|
|
109
|
+
type: 'function',
|
|
106
110
|
},
|
|
107
111
|
// multicall - 带 deadline 版本
|
|
108
112
|
'function multicall(uint256 deadline, bytes[] calldata data) external payable returns (bytes[] memory results)',
|
|
@@ -113,24 +117,26 @@ export const V3_ROUTER02_ABI = [
|
|
|
113
117
|
export const V3_ROUTER_LEGACY_ABI = [
|
|
114
118
|
// exactInputSingle - 包含 deadline
|
|
115
119
|
{
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
{
|
|
120
|
-
{
|
|
121
|
-
{
|
|
122
|
-
{
|
|
123
|
-
{
|
|
124
|
-
{
|
|
125
|
-
{
|
|
120
|
+
inputs: [
|
|
121
|
+
{
|
|
122
|
+
components: [
|
|
123
|
+
{ name: 'tokenIn', type: 'address' },
|
|
124
|
+
{ name: 'tokenOut', type: 'address' },
|
|
125
|
+
{ name: 'fee', type: 'uint24' },
|
|
126
|
+
{ name: 'recipient', type: 'address' },
|
|
127
|
+
{ name: 'deadline', type: 'uint256' },
|
|
128
|
+
{ name: 'amountIn', type: 'uint256' },
|
|
129
|
+
{ name: 'amountOutMinimum', type: 'uint256' },
|
|
130
|
+
{ name: 'sqrtPriceLimitX96', type: 'uint160' },
|
|
126
131
|
],
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
132
|
+
name: 'params',
|
|
133
|
+
type: 'tuple',
|
|
134
|
+
},
|
|
135
|
+
],
|
|
136
|
+
name: 'exactInputSingle',
|
|
137
|
+
outputs: [{ name: 'amountOut', type: 'uint256' }],
|
|
138
|
+
stateMutability: 'payable',
|
|
139
|
+
type: 'function',
|
|
134
140
|
},
|
|
135
141
|
// multicall - 不带 deadline 版本
|
|
136
142
|
'function multicall(bytes[] calldata data) external payable returns (bytes[] memory results)',
|
|
@@ -171,34 +177,34 @@ export const SWAP_ROUTER02_V2_ABI = [
|
|
|
171
177
|
/** V3 QuoterV2 ABI */
|
|
172
178
|
export const V3_QUOTER_ABI = [
|
|
173
179
|
{
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
{
|
|
178
|
-
{
|
|
179
|
-
{
|
|
180
|
-
{
|
|
180
|
+
inputs: [
|
|
181
|
+
{
|
|
182
|
+
components: [
|
|
183
|
+
{ name: 'tokenIn', type: 'address' },
|
|
184
|
+
{ name: 'tokenOut', type: 'address' },
|
|
185
|
+
{ name: 'amountIn', type: 'uint256' },
|
|
186
|
+
{ name: 'fee', type: 'uint24' },
|
|
187
|
+
{ name: 'sqrtPriceLimitX96', type: 'uint160' },
|
|
181
188
|
],
|
|
182
|
-
|
|
183
|
-
|
|
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" }
|
|
189
|
+
name: 'params',
|
|
190
|
+
type: 'tuple',
|
|
191
|
+
},
|
|
191
192
|
],
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
193
|
+
name: 'quoteExactInputSingle',
|
|
194
|
+
outputs: [
|
|
195
|
+
{ name: 'amountOut', type: 'uint256' },
|
|
196
|
+
{ name: 'sqrtPriceX96After', type: 'uint160' },
|
|
197
|
+
{ name: 'initializedTicksCrossed', type: 'uint32' },
|
|
198
|
+
{ name: 'gasEstimate', type: 'uint256' },
|
|
199
|
+
],
|
|
200
|
+
stateMutability: 'nonpayable',
|
|
201
|
+
type: 'function',
|
|
202
|
+
},
|
|
195
203
|
];
|
|
196
204
|
// ============================================================================
|
|
197
205
|
// Uniswap V2 Factory & Pair ABI
|
|
198
206
|
// ============================================================================
|
|
199
|
-
export const V2_FACTORY_ABI = [
|
|
200
|
-
'function getPair(address tokenA, address tokenB) external view returns (address pair)',
|
|
201
|
-
];
|
|
207
|
+
export const V2_FACTORY_ABI = ['function getPair(address tokenA, address tokenB) external view returns (address pair)'];
|
|
202
208
|
export const V2_PAIR_ABI = [
|
|
203
209
|
'function token0() external view returns (address)',
|
|
204
210
|
'function token1() external view returns (address)',
|
package/dist/abis/flap/vault.js
CHANGED
|
@@ -8,7 +8,8 @@ export const VAULT_PORTAL_ABI = [
|
|
|
8
8
|
{
|
|
9
9
|
type: 'function',
|
|
10
10
|
name: 'newTaxTokenWithVault',
|
|
11
|
-
inputs: [
|
|
11
|
+
inputs: [
|
|
12
|
+
{
|
|
12
13
|
name: 'params',
|
|
13
14
|
type: 'tuple',
|
|
14
15
|
internalType: 'struct IVaultPortalTypes.NewTaxTokenWithVaultParams',
|
|
@@ -37,7 +38,8 @@ export const VAULT_PORTAL_ABI = [
|
|
|
37
38
|
{ name: 'vaultFactory', type: 'address', internalType: 'address' },
|
|
38
39
|
{ name: 'vaultData', type: 'bytes', internalType: 'bytes' },
|
|
39
40
|
],
|
|
40
|
-
}
|
|
41
|
+
},
|
|
42
|
+
],
|
|
41
43
|
outputs: [{ name: 'token', type: 'address', internalType: 'address' }],
|
|
42
44
|
stateMutability: 'payable',
|
|
43
45
|
},
|
|
@@ -45,7 +47,8 @@ export const VAULT_PORTAL_ABI = [
|
|
|
45
47
|
type: 'function',
|
|
46
48
|
name: 'getVault',
|
|
47
49
|
inputs: [{ name: 'taxToken', type: 'address', internalType: 'address' }],
|
|
48
|
-
outputs: [
|
|
50
|
+
outputs: [
|
|
51
|
+
{
|
|
49
52
|
name: 'info',
|
|
50
53
|
type: 'tuple',
|
|
51
54
|
internalType: 'struct IVaultPortalTypes.VaultInfo',
|
|
@@ -56,7 +59,8 @@ export const VAULT_PORTAL_ABI = [
|
|
|
56
59
|
{ name: 'isOfficial', type: 'bool', internalType: 'bool' },
|
|
57
60
|
{ name: 'riskLevel', type: 'uint8', internalType: 'enum IVaultPortalTypes.RiskLevel' },
|
|
58
61
|
],
|
|
59
|
-
}
|
|
62
|
+
},
|
|
63
|
+
],
|
|
60
64
|
stateMutability: 'view',
|
|
61
65
|
},
|
|
62
66
|
{
|
|
@@ -77,9 +81,7 @@ export const VAULT_FACTORY_V2_ABI = [
|
|
|
77
81
|
'function vaultDataSchema() public pure returns (tuple(string description, tuple(string name, string fieldType, string description, uint8 decimals)[] fields, bool isArray))',
|
|
78
82
|
];
|
|
79
83
|
/** VaultBase V1 ABI */
|
|
80
|
-
export const VAULT_BASE_ABI = [
|
|
81
|
-
'function description() public view returns (string)',
|
|
82
|
-
];
|
|
84
|
+
export const VAULT_BASE_ABI = ['function description() public view returns (string)'];
|
|
83
85
|
/** VaultBaseV2 ABI */
|
|
84
86
|
export const VAULT_BASE_V2_ABI = [
|
|
85
87
|
...VAULT_BASE_ABI,
|
package/dist/abis/index.d.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* 统一 ABI
|
|
2
|
+
* 统一 ABI 管理入口(唯一数据源)
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* 旧有文件(src/shared/abis/)保留为重新导出的兼容层。
|
|
4
|
+
* `src/shared/abis/` 保留为兼容 re-export facade。
|
|
6
5
|
*/
|
|
7
|
-
export { TokenManager, TokenManager2, TokenManagerHelper3, TaxToken
|
|
6
|
+
export { TokenManager, TokenManager2, TokenManagerHelper3, TaxToken } from './contracts/index.js';
|
|
8
7
|
export * from './common.js';
|
|
9
8
|
export * from './flap/index.js';
|
package/dist/abis/index.js
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* 统一 ABI
|
|
2
|
+
* 统一 ABI 管理入口(唯一数据源)
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* 旧有文件(src/shared/abis/)保留为重新导出的兼容层。
|
|
4
|
+
* `src/shared/abis/` 保留为兼容 re-export facade。
|
|
6
5
|
*/
|
|
7
6
|
// JSON ABI(编译后的合约接口)
|
|
8
|
-
export { TokenManager, TokenManager2, TokenManagerHelper3, TaxToken
|
|
7
|
+
export { TokenManager, TokenManager2, TokenManagerHelper3, TaxToken } from './contracts/index.js';
|
|
9
8
|
// 字符串格式公共 ABI
|
|
10
9
|
export * from './common.js';
|
|
11
10
|
// Flap 协议特定 ABI
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { calculateBatchProfit, calculateProfit, getGasPriceMultiplier, getProfitRateBps, getTxType, } from '../config-helpers.js';
|
|
3
|
+
describe('bundle-core/config-helpers', () => {
|
|
4
|
+
it('getTxType defaults to legacy type-0', () => {
|
|
5
|
+
expect(getTxType({})).toBe(0);
|
|
6
|
+
expect(getTxType({ txType: 2 })).toBe(2);
|
|
7
|
+
});
|
|
8
|
+
it('getGasPriceMultiplier defaults to 50%', () => {
|
|
9
|
+
expect(getGasPriceMultiplier({})).toBe(50);
|
|
10
|
+
expect(getGasPriceMultiplier({ gasPriceMultiplierPercent: 120 })).toBe(120);
|
|
11
|
+
});
|
|
12
|
+
it('getProfitRateBps uses shared normal rate (40 bps)', () => {
|
|
13
|
+
expect(getProfitRateBps()).toBe(40);
|
|
14
|
+
});
|
|
15
|
+
it('calculateProfit splits amount by bps', () => {
|
|
16
|
+
const amount = 10000n;
|
|
17
|
+
const { profit, remaining } = calculateProfit(amount);
|
|
18
|
+
expect(profit).toBe(40n);
|
|
19
|
+
expect(remaining).toBe(9960n);
|
|
20
|
+
expect(profit + remaining).toBe(amount);
|
|
21
|
+
});
|
|
22
|
+
it('calculateBatchProfit aggregates per-item profit', () => {
|
|
23
|
+
const amounts = [10000n, 20000n];
|
|
24
|
+
const { totalProfit, remainingAmounts } = calculateBatchProfit(amounts);
|
|
25
|
+
expect(totalProfit).toBe(120n);
|
|
26
|
+
expect(remainingAmounts).toEqual([9960n, 19920n]);
|
|
27
|
+
});
|
|
28
|
+
});
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import * as bundleCoreConfig from '../config-helpers.js';
|
|
3
|
+
import * as bundleCoreErrors from '../errors.js';
|
|
4
|
+
import * as bscFourConfig from '../../chains/bsc/four/config.js';
|
|
5
|
+
import * as tmMerkleConfig from '../../contracts/tm-bundle-merkle/config.js';
|
|
6
|
+
const sharedHelpers = [
|
|
7
|
+
'getTxType',
|
|
8
|
+
'getGasPriceMultiplier',
|
|
9
|
+
'getBundleOptions',
|
|
10
|
+
'getGasPriceConfig',
|
|
11
|
+
'shouldExtractProfit',
|
|
12
|
+
'getProfitRateBps',
|
|
13
|
+
'getProfitRecipient',
|
|
14
|
+
'calculateProfit',
|
|
15
|
+
'calculateBatchProfit',
|
|
16
|
+
'getBribeAmount',
|
|
17
|
+
];
|
|
18
|
+
describe('bundle-core facade parity', () => {
|
|
19
|
+
it('bsc/four/config re-exports same config-helpers implementations', () => {
|
|
20
|
+
for (const name of sharedHelpers) {
|
|
21
|
+
expect(bscFourConfig[name]).toBe(bundleCoreConfig[name]);
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
it('tm-bundle-merkle/config re-exports same config-helpers implementations', () => {
|
|
25
|
+
for (const name of sharedHelpers) {
|
|
26
|
+
expect(tmMerkleConfig[name]).toBe(bundleCoreConfig[name]);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
it('bsc/four and tm-bundle-merkle share bundle-core error helpers', () => {
|
|
30
|
+
expect(bscFourConfig.getErrorMessage).toBe(bundleCoreErrors.getBundleErrorMessage);
|
|
31
|
+
expect(tmMerkleConfig.getErrorMessage).toBe(bundleCoreErrors.getBundleErrorMessage);
|
|
32
|
+
});
|
|
33
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { ethers } from 'ethers';
|
|
3
|
+
import { SIGN_FIXTURE_CHAIN_ID, SIGN_FIXTURE_RPC } from './sign-fixtures.js';
|
|
4
|
+
import { countSellerNonceSlots, getFourSwapProfitRateBps, planSellerNonces, toCommonBundleConfig, } from '../four-meme/swap-sign-helpers.js';
|
|
5
|
+
import { generateDisperseHopPaths } from '../four-meme/swap-hop-helpers.js';
|
|
6
|
+
import { normalizeItemsOrRecipientsAmounts, resolveHopCountInput, resolveProvidedHops, } from '../sign-context-helpers.js';
|
|
7
|
+
import { normalizeAmounts } from '../internal.js';
|
|
8
|
+
describe('swap-sign-helpers', () => {
|
|
9
|
+
it('toCommonBundleConfig coerces bigint gasLimit', () => {
|
|
10
|
+
const cfg = toCommonBundleConfig({
|
|
11
|
+
rpcUrl: 'http://127.0.0.1:8545',
|
|
12
|
+
gasLimit: 500000n,
|
|
13
|
+
minGasPriceGwei: 3,
|
|
14
|
+
chainId: 56,
|
|
15
|
+
});
|
|
16
|
+
expect(cfg.gasLimit).toBe(500000);
|
|
17
|
+
expect(cfg.chainId).toBe(56);
|
|
18
|
+
});
|
|
19
|
+
it('countSellerNonceSlots counts optional slots', () => {
|
|
20
|
+
expect(countSellerNonceSlots(false, false, false)).toBe(1);
|
|
21
|
+
expect(countSellerNonceSlots(true, true, true)).toBe(4);
|
|
22
|
+
});
|
|
23
|
+
it('planSellerNonces assigns sequential seller slots', () => {
|
|
24
|
+
const plan = planSellerNonces([10, 11, 12, 13], true, true, true);
|
|
25
|
+
expect(plan).toEqual({
|
|
26
|
+
bribeNonce: 10,
|
|
27
|
+
approvalNonce: 11,
|
|
28
|
+
sellerNonce: 12,
|
|
29
|
+
profitNonce: 13,
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
it('getFourSwapProfitRateBps respects userType', () => {
|
|
33
|
+
expect(getFourSwapProfitRateBps('v0')).toBeGreaterThan(0);
|
|
34
|
+
expect(getFourSwapProfitRateBps('v1')).toBeGreaterThan(0);
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
describe('swap-hop-helpers', () => {
|
|
38
|
+
it('generateDisperseHopPaths returns empty hops when hopCount=0', () => {
|
|
39
|
+
const provider = new ethers.JsonRpcProvider(SIGN_FIXTURE_RPC, SIGN_FIXTURE_CHAIN_ID);
|
|
40
|
+
const paths = generateDisperseHopPaths(['0xabc'], 0, provider);
|
|
41
|
+
expect(paths[0]?.hopWallets).toEqual([]);
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
describe('sign-context-helpers', () => {
|
|
45
|
+
it('resolveProvidedHops returns null when all hop chains empty', () => {
|
|
46
|
+
expect(resolveProvidedHops(2, [[], []])).toBeNull();
|
|
47
|
+
expect(resolveProvidedHops(2, undefined, [{ hopPrivateKeys: [] }, { hopPrivateKeys: [] }])).toBeNull();
|
|
48
|
+
});
|
|
49
|
+
it('resolveProvidedHops returns hops when any chain non-empty', () => {
|
|
50
|
+
const hops = resolveProvidedHops(2, [['0xabc'], []]);
|
|
51
|
+
expect(hops).toEqual([['0xabc'], []]);
|
|
52
|
+
});
|
|
53
|
+
it('resolveHopCountInput merges per-item hopCount', () => {
|
|
54
|
+
expect(resolveHopCountInput(2, 1, [{ hopCount: 3 }, {}])).toEqual([3, 1]);
|
|
55
|
+
});
|
|
56
|
+
it('normalizeItemsOrRecipientsAmounts prefers items', () => {
|
|
57
|
+
const out = normalizeItemsOrRecipientsAmounts(['0xa', '0xb'], [{ amount: 100n }, { amount: '200' }], '999', undefined, normalizeAmounts);
|
|
58
|
+
expect(out).toEqual(['100', '200']);
|
|
59
|
+
});
|
|
60
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|