four-flap-meme-sdk 2.2.7 → 2.2.10
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 +6 -41
- package/README.md +0 -31
- package/README.zh-CN.md +6 -41
- package/dist/chains/bsc/four/approve-tokenmanager.d.ts +26 -1
- package/dist/chains/bsc/four/approve-tokenmanager.js +113 -1
- package/dist/chains/bsc/four/config.d.ts +67 -5
- package/dist/chains/bsc/four/config.js +114 -2
- package/dist/chains/bsc/four/core.d.ts +4 -1
- package/dist/chains/bsc/four/core.js +592 -1
- 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 +46 -2
- package/dist/chains/bsc/four/internal.js +239 -2
- package/dist/chains/bsc/four/pancake-proxy.d.ts +28 -1
- package/dist/chains/bsc/four/pancake-proxy.js +687 -1
- package/dist/chains/bsc/four/private.d.ts +27 -1
- package/dist/chains/bsc/four/private.js +477 -1
- package/dist/chains/bsc/four/submit.d.ts +315 -2
- package/dist/chains/bsc/four/submit.js +752 -2
- package/dist/chains/bsc/four/swap-buy-first.d.ts +55 -2
- package/dist/chains/bsc/four/swap-buy-first.js +507 -2
- package/dist/chains/bsc/four/swap-internal.d.ts +3 -1
- package/dist/chains/bsc/four/swap-internal.js +18 -1
- package/dist/chains/bsc/four/swap.d.ts +144 -2
- package/dist/chains/bsc/four/swap.js +766 -2
- package/dist/chains/bsc/four/types.d.ts +476 -1
- package/dist/chains/bsc/four/utils.d.ts +18 -5
- package/dist/chains/bsc/four/utils.js +1552 -5
- package/dist/chains/bsc/pancake/bundle-buy-first.d.ts +91 -1
- package/dist/chains/bsc/pancake/bundle-buy-first.js +212 -97
- package/dist/chains/bsc/pancake/bundle-swap.d.ts +79 -1
- package/dist/chains/bsc/pancake/bundle-swap.js +726 -114
- package/dist/chains/bsc/pancake/index.d.ts +2 -4
- package/dist/chains/bsc/pancake/index.js +3 -1
- package/dist/chains/bsc/platforms/iro/factory.d.ts +2 -2
- package/dist/chains/bsc/platforms/iro/factory.js +1 -3
- 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 +10 -31
- package/dist/chains/bsc/platforms/iro/token.js +1 -4
- package/dist/chains/eni/batch-router/bundle-approve.js +3 -4
- package/dist/chains/eni/batch-router/transfer.js +25 -55
- package/dist/chains/eni/batch-router/utils.js +6 -32
- package/dist/chains/eni/bundler/sign.js +6 -5
- package/dist/chains/eni/bundler/submit.js +4 -1
- package/dist/chains/eni/constants.js +1 -1
- package/dist/chains/eni/index.d.ts +1 -2
- package/dist/chains/eni/index.js +0 -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 +6 -9
- package/dist/chains/eni/platforms/daoaas/portal-direct.js +44 -28
- package/dist/chains/eni/platforms/daoaas/portal.js +6 -10
- package/dist/chains/eni/platforms/dswap/liquidity.js +26 -58
- 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 +46 -87
- package/dist/chains/eni/platforms/fair-launch/pool.js +1 -4
- package/dist/chains/eni/platforms/fair-launch/presets.js +2 -2
- package/dist/chains/eni/platforms/iro/factory.d.ts +2 -2
- package/dist/chains/eni/platforms/iro/factory.js +1 -3
- 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 +26 -90
- package/dist/chains/eni/platforms/iro/token.js +31 -107
- package/dist/chains/eni/platforms/iro/whitelist.js +18 -6
- package/dist/chains/index.d.ts +0 -13
- package/dist/chains/index.js +0 -13
- package/dist/chains/xlayer/eip7702/bundle-approve.d.ts +26 -2
- package/dist/chains/xlayer/eip7702/bundle-approve.js +21 -11
- package/dist/chains/xlayer/eip7702/bundle-buy.d.ts +6 -2
- package/dist/chains/xlayer/eip7702/bundle-buy.js +51 -13
- package/dist/chains/xlayer/eip7702/bundle-create.js +59 -93
- package/dist/chains/xlayer/eip7702/bundle-sell.d.ts +6 -2
- package/dist/chains/xlayer/eip7702/bundle-sell.js +111 -29
- package/dist/chains/xlayer/eip7702/bundle-swap.d.ts +65 -3
- package/dist/chains/xlayer/eip7702/bundle-swap.js +245 -51
- package/dist/chains/xlayer/eip7702/constants.d.ts +16 -1
- package/dist/chains/xlayer/eip7702/constants.js +21 -3
- package/dist/chains/xlayer/eip7702/index.d.ts +46 -28
- package/dist/chains/xlayer/eip7702/index.js +81 -28
- package/dist/chains/xlayer/eip7702/multi-hop-transfer.d.ts +203 -2
- package/dist/chains/xlayer/eip7702/multi-hop-transfer.js +307 -63
- package/dist/chains/xlayer/eip7702/types.d.ts +0 -88
- package/dist/chains/xlayer/eip7702/utils.d.ts +3 -0
- package/dist/chains/xlayer/eip7702/utils.js +28 -23
- package/dist/chains/xlayer/eip7702/volume.d.ts +184 -6
- package/dist/chains/xlayer/eip7702/volume.js +164 -89
- 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.d.ts +95 -1
- package/dist/chains/xlayer/eoa/eoa-bundle-swap.js +299 -66
- package/dist/chains/xlayer/eoa/eoa-wash-volume.d.ts +1 -1
- package/dist/chains/xlayer/eoa/eoa-wash-volume.js +23 -18
- package/dist/chains/xlayer/eoa/index.d.ts +6 -10
- package/dist/chains/xlayer/eoa/index.js +23 -8
- package/dist/chains/xlayer/eoa/portal-ops.js +2 -7
- 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 +3 -1
- package/dist/chains/xlayer/index.d.ts +2 -3
- package/dist/chains/xlayer/index.js +7 -4
- package/dist/contracts/helper3.d.ts +5 -20
- package/dist/contracts/helper3.js +20 -56
- package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.d.ts +26 -1
- package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.js +113 -1
- package/dist/contracts/tm-bundle-merkle/config.d.ts +67 -5
- package/dist/contracts/tm-bundle-merkle/config.js +114 -2
- package/dist/contracts/tm-bundle-merkle/core.d.ts +4 -1
- package/dist/contracts/tm-bundle-merkle/core.js +591 -1
- 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 +46 -2
- package/dist/contracts/tm-bundle-merkle/internal.js +238 -2
- package/dist/contracts/tm-bundle-merkle/pancake-proxy.d.ts +28 -1
- package/dist/contracts/tm-bundle-merkle/pancake-proxy.js +686 -1
- package/dist/contracts/tm-bundle-merkle/private.d.ts +27 -1
- package/dist/contracts/tm-bundle-merkle/private.js +476 -1
- package/dist/contracts/tm-bundle-merkle/submit.d.ts +314 -3
- package/dist/contracts/tm-bundle-merkle/submit.js +928 -3
- package/dist/contracts/tm-bundle-merkle/swap-buy-first.d.ts +55 -2
- package/dist/contracts/tm-bundle-merkle/swap-buy-first.js +506 -2
- package/dist/contracts/tm-bundle-merkle/swap-internal.d.ts +3 -1
- package/dist/contracts/tm-bundle-merkle/swap-internal.js +18 -1
- package/dist/contracts/tm-bundle-merkle/swap.d.ts +144 -2
- package/dist/contracts/tm-bundle-merkle/swap.js +764 -2
- package/dist/contracts/tm-bundle-merkle/types.d.ts +476 -1
- package/dist/contracts/tm-bundle-merkle/utils.d.ts +18 -6
- package/dist/contracts/tm-bundle-merkle/utils.js +1501 -6
- package/dist/contracts/tm-bundle.d.ts +51 -3
- package/dist/contracts/tm-bundle.js +177 -108
- package/dist/contracts/tm.d.ts +2 -3
- package/dist/contracts/tm.js +32 -37
- package/dist/contracts/tm1.js +4 -9
- package/dist/contracts/tm2.js +4 -9
- package/dist/dex/direct-router.d.ts +125 -3
- package/dist/dex/direct-router.js +666 -237
- package/dist/flows/create.d.ts +1 -2
- package/dist/flows/create.js +6 -6
- package/dist/index.d.ts +86 -20
- package/dist/index.js +216 -20
- package/dist/shared/abis/TaxToken.json +105 -0
- package/dist/shared/abis/TokenManager2.json +60 -0
- package/dist/shared/abis/common.d.ts +83 -2
- package/dist/shared/abis/common.js +253 -2
- package/dist/shared/abis/index.d.ts +6 -5
- package/dist/shared/abis/index.js +7 -5
- package/dist/shared/clients/blockrazor.js +25 -39
- package/dist/shared/clients/club48.d.ts +2 -2
- package/dist/shared/clients/club48.js +29 -34
- package/dist/shared/clients/emitservice.js +0 -2
- package/dist/shared/clients/four.d.ts +6 -21
- package/dist/shared/clients/four.js +24 -29
- package/dist/shared/clients/merkle.js +34 -27
- package/dist/shared/constants/addresses.d.ts +1 -1
- package/dist/shared/constants/addresses.js +2 -11
- 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 +6 -2
- package/dist/shared/constants/index.d.ts +0 -3
- package/dist/shared/constants/index.js +0 -1
- package/dist/shared/flap/abi.js +1 -1
- package/dist/shared/flap/constants.d.ts +2 -1
- package/dist/shared/flap/constants.js +4 -3
- package/dist/shared/flap/curve.js +0 -3
- package/dist/shared/flap/errors.d.ts +4 -1
- package/dist/shared/flap/errors.js +1 -20
- package/dist/shared/flap/index.d.ts +5 -5
- package/dist/shared/flap/index.js +5 -5
- package/dist/shared/flap/launch-v6.d.ts +117 -0
- package/dist/shared/flap/launch-v6.js +111 -0
- package/dist/shared/flap/meta.d.ts +18 -22
- package/dist/shared/flap/meta.js +17 -12
- package/dist/shared/flap/permit.js +2 -5
- package/dist/shared/flap/pinata.d.ts +6 -22
- package/dist/shared/flap/pinata.js +26 -21
- package/dist/shared/flap/portal-bundle-merkle/config.d.ts +72 -3
- package/dist/shared/flap/portal-bundle-merkle/config.js +124 -4
- package/dist/shared/flap/portal-bundle-merkle/core.d.ts +4 -0
- package/dist/shared/flap/portal-bundle-merkle/core.js +267 -164
- package/dist/shared/flap/portal-bundle-merkle/create-to-dex.d.ts +4 -17
- package/dist/shared/flap/portal-bundle-merkle/create-to-dex.js +195 -107
- package/dist/shared/flap/portal-bundle-merkle/curve-to-dex.js +92 -100
- package/dist/shared/flap/portal-bundle-merkle/index.d.ts +7 -11
- package/dist/shared/flap/portal-bundle-merkle/index.js +7 -4
- package/dist/shared/flap/portal-bundle-merkle/pancake-proxy.js +68 -71
- package/dist/shared/flap/portal-bundle-merkle/private.js +114 -61
- package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.d.ts +64 -1
- package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.js +247 -66
- package/dist/shared/flap/portal-bundle-merkle/swap.d.ts +71 -2
- package/dist/shared/flap/portal-bundle-merkle/swap.js +410 -103
- package/dist/shared/flap/portal-bundle-merkle/types.d.ts +12 -88
- package/dist/shared/flap/portal-bundle-merkle/utils.d.ts +80 -1
- package/dist/shared/flap/portal-bundle-merkle/utils.js +265 -145
- package/dist/shared/flap/portal-bundle.js +56 -55
- package/dist/shared/flap/portal.d.ts +3 -14
- package/dist/shared/flap/portal.js +26 -49
- package/dist/shared/flap/vanity.d.ts +5 -4
- package/dist/shared/flap/vanity.js +20 -13
- package/dist/shared/flap/vault.d.ts +93 -25
- package/dist/shared/flap/vault.js +126 -75
- package/dist/shared/four/tax-token.d.ts +1 -1
- package/dist/shared/four/tax-token.js +7 -27
- package/dist/shared/index.d.ts +0 -6
- package/dist/shared/index.js +0 -4
- package/dist/utils/airdrop-sweep.d.ts +76 -4
- package/dist/utils/airdrop-sweep.js +55 -42
- package/dist/utils/bundle-helpers.d.ts +243 -9
- package/dist/utils/bundle-helpers.js +584 -10
- package/dist/utils/constants.d.ts +61 -5
- package/dist/utils/constants.js +80 -5
- package/dist/utils/contract-factory.d.ts +4 -2
- package/dist/utils/contract-factory.js +18 -25
- package/dist/utils/erc20.d.ts +89 -7
- package/dist/utils/erc20.js +125 -94
- package/dist/utils/errors.d.ts +1 -12
- package/dist/utils/errors.js +1 -60
- package/dist/utils/holders-maker.d.ts +138 -2
- package/dist/utils/holders-maker.js +661 -26
- package/dist/utils/lp-inspect.d.ts +112 -2
- package/dist/utils/lp-inspect.js +223 -73
- package/dist/utils/mpcExclusive.d.ts +5 -2
- package/dist/utils/mpcExclusive.js +3 -4
- package/dist/utils/private-sale.d.ts +58 -2
- package/dist/utils/private-sale.js +15 -4
- package/dist/utils/provider-factory.d.ts +0 -4
- package/dist/utils/provider-factory.js +0 -10
- package/dist/utils/quote-helpers.d.ts +45 -4
- package/dist/utils/quote-helpers.js +74 -17
- package/dist/utils/stealth-transfer.d.ts +28 -2
- package/dist/utils/stealth-transfer.js +15 -31
- package/dist/utils/swap-helpers.d.ts +15 -2
- package/dist/utils/swap-helpers.js +11 -6
- package/dist/utils/wallet.d.ts +25 -2
- package/dist/utils/wallet.js +10 -13
- package/package.json +4 -160
- package/dist/__tests__/subpath-exports.test.d.ts +0 -1
- package/dist/__tests__/subpath-exports.test.js +0 -64
- package/dist/abis/common.d.ts +0 -85
- package/dist/abis/common.js +0 -264
- package/dist/abis/contracts/TaxToken.json +0 -969
- package/dist/abis/contracts/TokenManager2.json +0 -136
- package/dist/abis/contracts/index.d.ts +0 -5
- package/dist/abis/contracts/index.js +0 -5
- package/dist/abis/flap/index.d.ts +0 -3
- package/dist/abis/flap/index.js +0 -3
- package/dist/abis/flap/portal-events.d.ts +0 -6
- package/dist/abis/flap/portal-events.js +0 -17
- package/dist/abis/flap/portal.d.ts +0 -6
- package/dist/abis/flap/portal.js +0 -37
- package/dist/abis/flap/vault.d.ts +0 -171
- package/dist/abis/flap/vault.js +0 -91
- package/dist/abis/index.d.ts +0 -8
- package/dist/abis/index.js +0 -11
- package/dist/bundle-core/__tests__/config-helpers.test.d.ts +0 -1
- package/dist/bundle-core/__tests__/config-helpers.test.js +0 -28
- package/dist/bundle-core/__tests__/facade-parity.test.d.ts +0 -1
- package/dist/bundle-core/__tests__/facade-parity.test.js +0 -33
- package/dist/bundle-core/__tests__/sign-context-helpers.test.d.ts +0 -1
- package/dist/bundle-core/__tests__/sign-context-helpers.test.js +0 -60
- package/dist/bundle-core/__tests__/sign-fixture.test.d.ts +0 -1
- package/dist/bundle-core/__tests__/sign-fixture.test.js +0 -220
- package/dist/bundle-core/__tests__/sign-fixtures.d.ts +0 -10
- package/dist/bundle-core/__tests__/sign-fixtures.js +0 -16
- package/dist/bundle-core/config-helpers.d.ts +0 -36
- package/dist/bundle-core/config-helpers.js +0 -57
- package/dist/bundle-core/errors.d.ts +0 -50
- package/dist/bundle-core/errors.js +0 -35
- package/dist/bundle-core/four-meme/approve-tokenmanager.d.ts +0 -7
- package/dist/bundle-core/four-meme/approve-tokenmanager.js +0 -99
- package/dist/bundle-core/four-meme/core-helpers.d.ts +0 -8
- package/dist/bundle-core/four-meme/core-helpers.js +0 -40
- package/dist/bundle-core/four-meme/core.d.ts +0 -4
- package/dist/bundle-core/four-meme/core.js +0 -515
- package/dist/bundle-core/four-meme/pancake-proxy.d.ts +0 -28
- package/dist/bundle-core/four-meme/pancake-proxy.js +0 -679
- package/dist/bundle-core/four-meme/private.d.ts +0 -27
- package/dist/bundle-core/four-meme/private.js +0 -465
- package/dist/bundle-core/four-meme/sign-context-helpers.d.ts +0 -2
- package/dist/bundle-core/four-meme/sign-context-helpers.js +0 -2
- package/dist/bundle-core/four-meme/swap-buy-first.d.ts +0 -8
- package/dist/bundle-core/four-meme/swap-buy-first.js +0 -493
- package/dist/bundle-core/four-meme/swap-hop-helpers.d.ts +0 -6
- package/dist/bundle-core/four-meme/swap-hop-helpers.js +0 -63
- package/dist/bundle-core/four-meme/swap-internal.d.ts +0 -3
- package/dist/bundle-core/four-meme/swap-internal.js +0 -18
- package/dist/bundle-core/four-meme/swap-sign-helpers.d.ts +0 -27
- package/dist/bundle-core/four-meme/swap-sign-helpers.js +0 -105
- package/dist/bundle-core/four-meme/swap.d.ts +0 -17
- package/dist/bundle-core/four-meme/swap.js +0 -505
- package/dist/bundle-core/four-meme/types/buy-first.d.ts +0 -50
- package/dist/bundle-core/four-meme/types/buy-first.js +0 -1
- package/dist/bundle-core/four-meme/types/core-flow.d.ts +0 -63
- package/dist/bundle-core/four-meme/types/core-flow.js +0 -1
- package/dist/bundle-core/four-meme/types/index.d.ts +0 -600
- package/dist/bundle-core/four-meme/types/index.js +0 -1
- package/dist/bundle-core/four-meme/types/swap-internal.d.ts +0 -19
- package/dist/bundle-core/four-meme/types/swap-internal.js +0 -1
- package/dist/bundle-core/four-meme/types.d.ts +0 -1
- package/dist/bundle-core/four-meme/types.js +0 -1
- package/dist/bundle-core/four-meme/utils-disperse.d.ts +0 -7
- package/dist/bundle-core/four-meme/utils-disperse.js +0 -396
- package/dist/bundle-core/four-meme/utils-pairwise.d.ts +0 -8
- package/dist/bundle-core/four-meme/utils-pairwise.js +0 -328
- package/dist/bundle-core/four-meme/utils-sweep.d.ts +0 -8
- package/dist/bundle-core/four-meme/utils-sweep.js +0 -744
- package/dist/bundle-core/index.d.ts +0 -8
- package/dist/bundle-core/index.js +0 -8
- package/dist/bundle-core/internal.d.ts +0 -21
- package/dist/bundle-core/internal.js +0 -182
- package/dist/bundle-core/sign-context-helpers.d.ts +0 -25
- package/dist/bundle-core/sign-context-helpers.js +0 -67
- package/dist/bundle-core/submit.d.ts +0 -293
- package/dist/bundle-core/submit.js +0 -727
- package/dist/bundle-core/types/index.d.ts +0 -8
- package/dist/bundle-core/types/index.js +0 -1
- package/dist/bundle-core/types.d.ts +0 -1
- package/dist/bundle-core/types.js +0 -1
- package/dist/chains/bsc/four/utils-disperse.d.ts +0 -1
- package/dist/chains/bsc/four/utils-disperse.js +0 -1
- package/dist/chains/bsc/four/utils-pairwise.d.ts +0 -1
- package/dist/chains/bsc/four/utils-pairwise.js +0 -1
- package/dist/chains/bsc/four/utils-sweep.d.ts +0 -1
- package/dist/chains/bsc/four/utils-sweep.js +0 -1
- package/dist/chains/bsc/iro.d.ts +0 -5
- package/dist/chains/bsc/iro.js +0 -4
- package/dist/chains/bsc/pancake/bundle-buy-first-helpers.d.ts +0 -159
- package/dist/chains/bsc/pancake/bundle-buy-first-helpers.js +0 -117
- package/dist/chains/bsc/pancake/bundle-swap-helpers.d.ts +0 -241
- package/dist/chains/bsc/pancake/bundle-swap-helpers.js +0 -565
- package/dist/chains/eni/flat-aliases.d.ts +0 -10
- package/dist/chains/eni/flat-aliases.js +0 -8
- package/dist/chains/eni/submit.d.ts +0 -43
- package/dist/chains/eni/submit.js +0 -286
- package/dist/chains/xlayer/eip7702/flat-aliases.d.ts +0 -13
- package/dist/chains/xlayer/eip7702/flat-aliases.js +0 -10
- package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.d.ts +0 -79
- package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.js +0 -1
- package/dist/chains/xlayer/eip7702/transfer-context-helpers.d.ts +0 -26
- package/dist/chains/xlayer/eip7702/transfer-context-helpers.js +0 -57
- package/dist/chains/xlayer/eip7702/volume-helpers.d.ts +0 -148
- package/dist/chains/xlayer/eip7702/volume-helpers.js +0 -48
- package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.d.ts +0 -126
- package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.js +0 -228
- package/dist/contracts/tm-bundle-helpers.d.ts +0 -88
- package/dist/contracts/tm-bundle-helpers.js +0 -72
- package/dist/contracts/tm-bundle-merkle/utils-disperse.d.ts +0 -1
- package/dist/contracts/tm-bundle-merkle/utils-disperse.js +0 -1
- package/dist/contracts/tm-bundle-merkle/utils-pairwise.d.ts +0 -1
- package/dist/contracts/tm-bundle-merkle/utils-pairwise.js +0 -1
- package/dist/contracts/tm-bundle-merkle/utils-sweep.d.ts +0 -1
- package/dist/contracts/tm-bundle-merkle/utils-sweep.js +0 -1
- package/dist/dex/direct-router-helpers.d.ts +0 -264
- package/dist/dex/direct-router-helpers.js +0 -539
- package/dist/dex/types.d.ts +0 -81
- package/dist/dex/types.js +0 -1
- package/dist/exports/root-bundle-and-tooling.d.ts +0 -27
- package/dist/exports/root-bundle-and-tooling.js +0 -30
- package/dist/exports/root-eni-and-bsc-iro.d.ts +0 -26
- package/dist/exports/root-eni-and-bsc-iro.js +0 -66
- package/dist/exports/root-foundations.d.ts +0 -35
- package/dist/exports/root-foundations.js +0 -70
- package/dist/exports/root-swap-dex-and-xlayer.d.ts +0 -30
- package/dist/exports/root-swap-dex-and-xlayer.js +0 -78
- package/dist/flap/index.d.ts +0 -10
- package/dist/flap/index.js +0 -8
- package/dist/flows/index.d.ts +0 -1
- package/dist/flows/index.js +0 -1
- package/dist/merkle/index.d.ts +0 -12
- package/dist/merkle/index.js +0 -11
- package/dist/shared/clients/index.d.ts +0 -8
- package/dist/shared/clients/index.js +0 -8
- package/dist/shared/constants/quote.d.ts +0 -30
- package/dist/shared/constants/quote.js +0 -37
- package/dist/shared/flap/portal-bundle-merkle/core-helpers.d.ts +0 -32
- package/dist/shared/flap/portal-bundle-merkle/core-helpers.js +0 -83
- package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.d.ts +0 -125
- package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.js +0 -113
- package/dist/shared/flap/portal-bundle-merkle/swap-helpers.d.ts +0 -149
- package/dist/shared/flap/portal-bundle-merkle/swap-helpers.js +0 -259
- package/dist/shared/flap/portal-create-token.d.ts +0 -79
- package/dist/shared/flap/portal-create-token.js +0 -261
- package/dist/shared/foundation/dex/v3-path.d.ts +0 -6
- package/dist/shared/foundation/dex/v3-path.js +0 -35
- package/dist/shared/foundation/gas/bundle-gas.d.ts +0 -49
- package/dist/shared/foundation/gas/bundle-gas.js +0 -93
- package/dist/shared/foundation/gas/profit-hop.d.ts +0 -20
- package/dist/shared/foundation/gas/profit-hop.js +0 -72
- package/dist/shared/foundation/index.d.ts +0 -13
- package/dist/shared/foundation/index.js +0 -12
- package/dist/shared/foundation/nonce/nonce-manager.d.ts +0 -17
- package/dist/shared/foundation/nonce/nonce-manager.js +0 -183
- package/dist/shared/foundation/normalize-unknown.d.ts +0 -9
- package/dist/shared/foundation/normalize-unknown.js +0 -29
- package/dist/shared/foundation/sdk-logger.d.ts +0 -13
- package/dist/shared/foundation/sdk-logger.js +0 -12
- package/dist/shared/foundation/tx/build-request.d.ts +0 -17
- package/dist/shared/foundation/tx/build-request.js +0 -25
- package/dist/shared/foundation/tx/sign-batch.d.ts +0 -5
- package/dist/shared/foundation/tx/sign-batch.js +0 -26
- package/dist/shared/foundation/tx/wallet-sign-patch.d.ts +0 -1
- package/dist/shared/foundation/tx/wallet-sign-patch.js +0 -18
- package/dist/shared/foundation/types/airdrop-sweep.d.ts +0 -79
- package/dist/shared/foundation/types/airdrop-sweep.js +0 -1
- package/dist/shared/foundation/types/erc20.d.ts +0 -65
- package/dist/shared/foundation/types/erc20.js +0 -1
- package/dist/shared/foundation/types/holders-maker.d.ts +0 -64
- package/dist/shared/foundation/types/holders-maker.js +0 -1
- package/dist/shared/foundation/types/index.d.ts +0 -7
- package/dist/shared/foundation/types/index.js +0 -1
- package/dist/shared/foundation/types/lp-inspect.d.ts +0 -102
- package/dist/shared/foundation/types/lp-inspect.js +0 -1
- package/dist/shared/foundation/types/multicall.d.ts +0 -5
- package/dist/shared/foundation/types/multicall.js +0 -1
- package/dist/shared/foundation/types/private-sale.d.ts +0 -35
- package/dist/shared/foundation/types/private-sale.js +0 -1
- package/dist/shared/foundation/types/quote-helpers.d.ts +0 -17
- package/dist/shared/foundation/types/quote-helpers.js +0 -1
- package/dist/types/errors.d.ts +0 -27
- package/dist/types/errors.js +0 -34
- package/dist/utils/holders-maker/addresses.d.ts +0 -12
- package/dist/utils/holders-maker/addresses.js +0 -15
- package/dist/utils/holders-maker/buy-tx.d.ts +0 -44
- package/dist/utils/holders-maker/buy-tx.js +0 -278
- package/dist/utils/holders-maker/constants.d.ts +0 -6
- package/dist/utils/holders-maker/constants.js +0 -7
- package/dist/utils/holders-maker/disperse.d.ts +0 -18
- package/dist/utils/holders-maker/disperse.js +0 -90
- package/dist/utils/holders-maker/routing.d.ts +0 -4
- package/dist/utils/holders-maker/routing.js +0 -45
- package/dist/utils/holders-maker/transfer-tx.d.ts +0 -4
- package/dist/utils/holders-maker/transfer-tx.js +0 -67
- package/dist/utils/holders-maker-helpers.d.ts +0 -9
- package/dist/utils/holders-maker-helpers.js +0 -9
- package/dist/utils/hop-chains.d.ts +0 -35
- package/dist/utils/hop-chains.js +0 -215
- package/dist/utils/lp-inspect-helpers.d.ts +0 -9
- package/dist/utils/lp-inspect-helpers.js +0 -109
- package/dist/utils/types/airdrop-sweep.d.ts +0 -1
- package/dist/utils/types/airdrop-sweep.js +0 -1
- package/dist/utils/types/contract-factory.d.ts +0 -1
- package/dist/utils/types/contract-factory.js +0 -1
- package/dist/utils/types/erc20.d.ts +0 -1
- package/dist/utils/types/erc20.js +0 -1
- package/dist/utils/types/errors.d.ts +0 -1
- package/dist/utils/types/errors.js +0 -1
- package/dist/utils/types/holders-maker.d.ts +0 -1
- package/dist/utils/types/holders-maker.js +0 -1
- package/dist/utils/types/hop-chains.d.ts +0 -8
- package/dist/utils/types/hop-chains.js +0 -1
- package/dist/utils/types/index.d.ts +0 -13
- package/dist/utils/types/index.js +0 -1
- package/dist/utils/types/lp-inspect.d.ts +0 -1
- package/dist/utils/types/lp-inspect.js +0 -1
- package/dist/utils/types/mpc-exclusive.d.ts +0 -5
- package/dist/utils/types/mpc-exclusive.js +0 -1
- package/dist/utils/types/private-sale.d.ts +0 -1
- package/dist/utils/types/private-sale.js +0 -1
- package/dist/utils/types/quote-helpers.d.ts +0 -1
- package/dist/utils/types/quote-helpers.js +0 -1
- package/dist/utils/types/stealth-transfer.d.ts +0 -44
- package/dist/utils/types/stealth-transfer.js +0 -1
- package/dist/utils/types/wallet.d.ts +0 -25
- package/dist/utils/types/wallet.js +0 -1
- package/dist/vanity/index.d.ts +0 -5
- package/dist/vanity/index.js +0 -5
- package/src/abis/contracts/TaxToken.json +0 -969
- package/src/abis/contracts/TokenManager.json +0 -836
- package/src/abis/contracts/TokenManager2.json +0 -136
- package/src/abis/contracts/TokenManagerHelper3.json +0 -993
- /package/dist/{abis/contracts → shared/abis}/TokenManager.json +0 -0
- /package/dist/{abis/contracts → shared/abis}/TokenManagerHelper3.json +0 -0
|
@@ -1,220 +0,0 @@
|
|
|
1
|
-
import { ethers } from 'ethers';
|
|
2
|
-
import { afterEach, describe, expect, it, vi } from 'vitest';
|
|
3
|
-
import { FourClient } from '../../shared/clients/four.js';
|
|
4
|
-
import { disperseWithBundleMerkle } from '../four-meme/utils-disperse.js';
|
|
5
|
-
import { sweepWithBundleMerkle } from '../four-meme/utils-sweep.js';
|
|
6
|
-
import { pairwiseTransferWithBundleMerkle } from '../four-meme/utils-pairwise.js';
|
|
7
|
-
import { fourBundleSwapMerkle } from '../four-meme/swap.js';
|
|
8
|
-
import { createTokenWithBundleBuyMerkle } from '../four-meme/core.js';
|
|
9
|
-
import { disperseWithBundleMerkle as facadeDisperse } from '../../chains/bsc/four/utils-disperse.js';
|
|
10
|
-
import { sweepWithBundleMerkle as facadeSweep } from '../../chains/bsc/four/utils-sweep.js';
|
|
11
|
-
import * as bundleInternal from '../internal.js';
|
|
12
|
-
import * as swapHelpers from '../../utils/swap-helpers.js';
|
|
13
|
-
import { TM_ADDRESS } from '../four-meme/swap-internal.js';
|
|
14
|
-
import { SIGN_FIXTURE_CHAIN_ID, SIGN_FIXTURE_PRIVATE_KEY, SIGN_FIXTURE_RECIPIENT, SIGN_FIXTURE_RPC, mockJsonRpcFeeData, parseSignedTx, } from './sign-fixtures.js';
|
|
15
|
-
const MNEMONIC = 'test test test test test test test test test test test junk';
|
|
16
|
-
describe('bundle-core sign-only fixtures', () => {
|
|
17
|
-
afterEach(() => {
|
|
18
|
-
vi.restoreAllMocks();
|
|
19
|
-
});
|
|
20
|
-
it('bsc/four utils re-export bundle-core implementations', () => {
|
|
21
|
-
expect(facadeDisperse).toBe(disperseWithBundleMerkle);
|
|
22
|
-
expect(facadeSweep).toBe(sweepWithBundleMerkle);
|
|
23
|
-
});
|
|
24
|
-
it('disperseWithBundleMerkle returns empty when no recipients', async () => {
|
|
25
|
-
const result = await disperseWithBundleMerkle({
|
|
26
|
-
fromPrivateKey: SIGN_FIXTURE_PRIVATE_KEY,
|
|
27
|
-
recipients: [],
|
|
28
|
-
amount: '0.01',
|
|
29
|
-
config: { rpcUrl: SIGN_FIXTURE_RPC, chainId: SIGN_FIXTURE_CHAIN_ID },
|
|
30
|
-
});
|
|
31
|
-
expect(result.signedTransactions).toEqual([]);
|
|
32
|
-
});
|
|
33
|
-
it('disperseWithBundleMerkle signs native BNB transfer + profit hop (offline)', async () => {
|
|
34
|
-
mockJsonRpcFeeData('5');
|
|
35
|
-
const startNonce = 12;
|
|
36
|
-
const result = await disperseWithBundleMerkle({
|
|
37
|
-
fromPrivateKey: SIGN_FIXTURE_PRIVATE_KEY,
|
|
38
|
-
recipients: [SIGN_FIXTURE_RECIPIENT],
|
|
39
|
-
amount: '0.01',
|
|
40
|
-
config: {
|
|
41
|
-
rpcUrl: SIGN_FIXTURE_RPC,
|
|
42
|
-
chainId: SIGN_FIXTURE_CHAIN_ID,
|
|
43
|
-
minGasPriceGwei: 5,
|
|
44
|
-
bribeAmount: 0,
|
|
45
|
-
prefer21000ForNative: true,
|
|
46
|
-
},
|
|
47
|
-
startNonce,
|
|
48
|
-
});
|
|
49
|
-
expect(result.signedTransactions.length).toBe(4);
|
|
50
|
-
const transferTx = parseSignedTx(result.signedTransactions[0]);
|
|
51
|
-
expect(transferTx.chainId).toBe(BigInt(SIGN_FIXTURE_CHAIN_ID));
|
|
52
|
-
expect(transferTx.type).toBe(0);
|
|
53
|
-
expect(transferTx.nonce).toBe(startNonce);
|
|
54
|
-
expect(transferTx.to?.toLowerCase()).toBe(SIGN_FIXTURE_RECIPIENT.toLowerCase());
|
|
55
|
-
expect(transferTx.value).toBe(ethers.parseEther('0.01'));
|
|
56
|
-
for (const signed of result.signedTransactions) {
|
|
57
|
-
expect(signed.startsWith('0x')).toBe(true);
|
|
58
|
-
expect(parseSignedTx(signed).chainId).toBe(BigInt(SIGN_FIXTURE_CHAIN_ID));
|
|
59
|
-
}
|
|
60
|
-
expect(result.profitHopWallets?.length).toBe(2);
|
|
61
|
-
expect(result.metadata?.recipientCount).toBe(1);
|
|
62
|
-
expect(result.metadata?.isNative).toBe(true);
|
|
63
|
-
});
|
|
64
|
-
it('sweepWithBundleMerkle signs native sweep with target paying profit (offline)', async () => {
|
|
65
|
-
mockJsonRpcFeeData('5');
|
|
66
|
-
vi.spyOn(bundleInternal, 'batchGetBalances').mockResolvedValue([ethers.parseEther('1')]);
|
|
67
|
-
vi.spyOn(ethers.JsonRpcProvider.prototype, 'getTransactionCount').mockResolvedValue(3);
|
|
68
|
-
const source = ethers.HDNodeWallet.fromPhrase(MNEMONIC, undefined, "m/44'/60'/0'/0/1");
|
|
69
|
-
const target = ethers.HDNodeWallet.fromPhrase(MNEMONIC, undefined, "m/44'/60'/0'/0/2");
|
|
70
|
-
const result = await sweepWithBundleMerkle({
|
|
71
|
-
sourcePrivateKeys: [source.privateKey],
|
|
72
|
-
target: target.address,
|
|
73
|
-
targetPrivateKey: target.privateKey,
|
|
74
|
-
amount: '0.05',
|
|
75
|
-
config: {
|
|
76
|
-
rpcUrl: SIGN_FIXTURE_RPC,
|
|
77
|
-
chainId: SIGN_FIXTURE_CHAIN_ID,
|
|
78
|
-
minGasPriceGwei: 5,
|
|
79
|
-
bribeAmount: 0,
|
|
80
|
-
prefer21000ForNative: true,
|
|
81
|
-
},
|
|
82
|
-
});
|
|
83
|
-
expect(result.signedTransactions.length).toBeGreaterThanOrEqual(2);
|
|
84
|
-
const sweepTx = result.signedTransactions.find((raw) => {
|
|
85
|
-
const tx = parseSignedTx(raw);
|
|
86
|
-
return tx.to?.toLowerCase() === target.address.toLowerCase() && tx.value === ethers.parseEther('0.05');
|
|
87
|
-
});
|
|
88
|
-
expect(sweepTx).toBeDefined();
|
|
89
|
-
expect(result.metadata?.isNative).toBe(true);
|
|
90
|
-
});
|
|
91
|
-
it('pairwiseTransferWithBundleMerkle signs native pairwise transfer (offline)', async () => {
|
|
92
|
-
mockJsonRpcFeeData('5');
|
|
93
|
-
const sender = ethers.HDNodeWallet.fromPhrase(MNEMONIC, undefined, "m/44'/60'/0'/0/3");
|
|
94
|
-
const receiver = ethers.HDNodeWallet.fromPhrase(MNEMONIC, undefined, "m/44'/60'/0'/0/4");
|
|
95
|
-
const result = await pairwiseTransferWithBundleMerkle({
|
|
96
|
-
senderPrivateKeys: [sender.privateKey],
|
|
97
|
-
receiverAddresses: [receiver.address],
|
|
98
|
-
amount: '0.02',
|
|
99
|
-
config: {
|
|
100
|
-
rpcUrl: SIGN_FIXTURE_RPC,
|
|
101
|
-
chainId: SIGN_FIXTURE_CHAIN_ID,
|
|
102
|
-
minGasPriceGwei: 5,
|
|
103
|
-
bribeAmount: 0,
|
|
104
|
-
prefer21000ForNative: true,
|
|
105
|
-
},
|
|
106
|
-
startNonce: 7,
|
|
107
|
-
});
|
|
108
|
-
expect(result.signedTransactions.length).toBeGreaterThanOrEqual(1);
|
|
109
|
-
const transferTx = result.signedTransactions.find((raw) => {
|
|
110
|
-
const tx = parseSignedTx(raw);
|
|
111
|
-
return tx.to?.toLowerCase() === receiver.address.toLowerCase() && tx.value === ethers.parseEther('0.02');
|
|
112
|
-
});
|
|
113
|
-
expect(transferTx).toBeDefined();
|
|
114
|
-
expect(result.metadata?.pairCount).toBe(1);
|
|
115
|
-
expect(result.metadata?.isNative).toBe(true);
|
|
116
|
-
});
|
|
117
|
-
it('fourBundleSwapMerkle signs sell+buy bundle (offline)', async () => {
|
|
118
|
-
mockJsonRpcFeeData('5');
|
|
119
|
-
vi.spyOn(swapHelpers, 'calculateSellAmount').mockResolvedValue({
|
|
120
|
-
amount: ethers.parseUnits('1000', 18),
|
|
121
|
-
decimals: 18,
|
|
122
|
-
});
|
|
123
|
-
const sellQuoteFunds = ethers.parseEther('0.5');
|
|
124
|
-
vi.spyOn(ethers.JsonRpcProvider.prototype, 'getBalance').mockResolvedValue(ethers.parseEther('10'));
|
|
125
|
-
vi.spyOn(ethers.Contract.prototype, 'getFunction').mockImplementation(((name) => {
|
|
126
|
-
if (name === 'trySell') {
|
|
127
|
-
return async () => ({ funds: sellQuoteFunds });
|
|
128
|
-
}
|
|
129
|
-
if (name === 'allowance') {
|
|
130
|
-
return async () => ethers.MaxUint256;
|
|
131
|
-
}
|
|
132
|
-
if (name === 'sellToken') {
|
|
133
|
-
return {
|
|
134
|
-
populateTransaction: async () => ({
|
|
135
|
-
to: TM_ADDRESS,
|
|
136
|
-
data: '0xdeadbeef',
|
|
137
|
-
}),
|
|
138
|
-
};
|
|
139
|
-
}
|
|
140
|
-
if (name === 'buyTokenAMAP') {
|
|
141
|
-
return {
|
|
142
|
-
populateTransaction: async () => ({
|
|
143
|
-
to: TM_ADDRESS,
|
|
144
|
-
data: '0xcafebabe',
|
|
145
|
-
}),
|
|
146
|
-
};
|
|
147
|
-
}
|
|
148
|
-
return async () => {
|
|
149
|
-
throw new Error(`unexpected getFunction ${name}`);
|
|
150
|
-
};
|
|
151
|
-
}));
|
|
152
|
-
const seller = ethers.HDNodeWallet.fromPhrase(MNEMONIC, undefined, "m/44'/60'/0'/0/5");
|
|
153
|
-
const buyer = ethers.HDNodeWallet.fromPhrase(MNEMONIC, undefined, "m/44'/60'/0'/0/6");
|
|
154
|
-
const tokenAddress = '0x1111111111111111111111111111111111111111';
|
|
155
|
-
const result = await fourBundleSwapMerkle({
|
|
156
|
-
sellerPrivateKey: seller.privateKey,
|
|
157
|
-
buyerPrivateKey: buyer.privateKey,
|
|
158
|
-
sellAmount: '1000',
|
|
159
|
-
tokenAddress,
|
|
160
|
-
config: {
|
|
161
|
-
rpcUrl: SIGN_FIXTURE_RPC,
|
|
162
|
-
chainId: SIGN_FIXTURE_CHAIN_ID,
|
|
163
|
-
minGasPriceGwei: 5,
|
|
164
|
-
bribeAmount: 0,
|
|
165
|
-
},
|
|
166
|
-
startNonces: [3, 1],
|
|
167
|
-
});
|
|
168
|
-
expect(result.signedTransactions.length).toBeGreaterThanOrEqual(2);
|
|
169
|
-
for (const signed of result.signedTransactions) {
|
|
170
|
-
expect(parseSignedTx(signed).chainId).toBe(BigInt(SIGN_FIXTURE_CHAIN_ID));
|
|
171
|
-
}
|
|
172
|
-
expect(result.metadata?.sellerAddress.toLowerCase()).toBe(seller.address.toLowerCase());
|
|
173
|
-
expect(result.metadata?.buyerAddress.toLowerCase()).toBe(buyer.address.toLowerCase());
|
|
174
|
-
});
|
|
175
|
-
it('createTokenWithBundleBuyMerkle signs create bundle with mocked Four API (offline)', async () => {
|
|
176
|
-
mockJsonRpcFeeData('5');
|
|
177
|
-
vi.spyOn(ethers.JsonRpcProvider.prototype, 'getTransactionCount').mockResolvedValue(7);
|
|
178
|
-
vi.spyOn(FourClient.prototype, 'generateNonce').mockResolvedValue('fixture-nonce');
|
|
179
|
-
vi.spyOn(FourClient.prototype, 'loginDex').mockResolvedValue('fixture-token');
|
|
180
|
-
vi.spyOn(FourClient.prototype, 'createToken').mockResolvedValue({
|
|
181
|
-
createArg: '0xabcd',
|
|
182
|
-
signature: '0x1234',
|
|
183
|
-
});
|
|
184
|
-
const originalGetFunction = ethers.Contract.prototype.getFunction;
|
|
185
|
-
vi.spyOn(ethers.Contract.prototype, 'getFunction').mockImplementation(function (key) {
|
|
186
|
-
const name = typeof key === 'string' ? key : key.name;
|
|
187
|
-
if (name === 'createToken') {
|
|
188
|
-
return Object.assign(async () => ({}), {
|
|
189
|
-
populateTransaction: async () => ({
|
|
190
|
-
to: '0x5c952063c7fc8610FFDB798152D69F0B9550762b',
|
|
191
|
-
data: '0xdeadbeef',
|
|
192
|
-
}),
|
|
193
|
-
});
|
|
194
|
-
}
|
|
195
|
-
return originalGetFunction.call(this, key);
|
|
196
|
-
});
|
|
197
|
-
const result = await createTokenWithBundleBuyMerkle({
|
|
198
|
-
privateKeys: [SIGN_FIXTURE_PRIVATE_KEY],
|
|
199
|
-
buyAmounts: ['0.01'],
|
|
200
|
-
tokenInfo: {
|
|
201
|
-
name: 'Fixture',
|
|
202
|
-
symbol: 'FIX',
|
|
203
|
-
description: 'fixture',
|
|
204
|
-
imageUrl: 'https://example.com/fix.png',
|
|
205
|
-
preSale: '0.01',
|
|
206
|
-
},
|
|
207
|
-
config: {
|
|
208
|
-
rpcUrl: SIGN_FIXTURE_RPC,
|
|
209
|
-
chainId: SIGN_FIXTURE_CHAIN_ID,
|
|
210
|
-
minGasPriceGwei: 5,
|
|
211
|
-
bribeAmount: 0,
|
|
212
|
-
},
|
|
213
|
-
});
|
|
214
|
-
expect(result.signedTransactions.length).toBeGreaterThanOrEqual(1);
|
|
215
|
-
for (const signed of result.signedTransactions) {
|
|
216
|
-
expect(parseSignedTx(signed).chainId).toBe(BigInt(SIGN_FIXTURE_CHAIN_ID));
|
|
217
|
-
}
|
|
218
|
-
expect(result.tokenAddress).toBe('0x0000000000000000000000000000000000000000');
|
|
219
|
-
});
|
|
220
|
-
});
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { ethers } from 'ethers';
|
|
2
|
-
/** Hardhat / Anvil mnemonic #0 — 仅用于离线 sign fixture */
|
|
3
|
-
export declare const SIGN_FIXTURE_WALLET: ethers.HDNodeWallet;
|
|
4
|
-
export declare const SIGN_FIXTURE_PRIVATE_KEY: string;
|
|
5
|
-
/** Hardhat / Anvil mnemonic #1 */
|
|
6
|
-
export declare const SIGN_FIXTURE_RECIPIENT = "0x70997970C51812dc3A010C7d01b50e0d17dc79C8";
|
|
7
|
-
export declare const SIGN_FIXTURE_RPC = "http://127.0.0.1:8545";
|
|
8
|
-
export declare const SIGN_FIXTURE_CHAIN_ID = 56;
|
|
9
|
-
export declare function mockJsonRpcFeeData(gasPriceGwei?: string): import("vitest").Mock<() => Promise<ethers.FeeData>>;
|
|
10
|
-
export declare function parseSignedTx(signed: string): ethers.Transaction;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { ethers } from 'ethers';
|
|
2
|
-
import { vi } from 'vitest';
|
|
3
|
-
/** Hardhat / Anvil mnemonic #0 — 仅用于离线 sign fixture */
|
|
4
|
-
export const SIGN_FIXTURE_WALLET = ethers.Wallet.fromPhrase('test test test test test test test test test test test junk');
|
|
5
|
-
export const SIGN_FIXTURE_PRIVATE_KEY = SIGN_FIXTURE_WALLET.privateKey;
|
|
6
|
-
/** Hardhat / Anvil mnemonic #1 */
|
|
7
|
-
export const SIGN_FIXTURE_RECIPIENT = '0x70997970C51812dc3A010C7d01b50e0d17dc79C8';
|
|
8
|
-
export const SIGN_FIXTURE_RPC = 'http://127.0.0.1:8545';
|
|
9
|
-
export const SIGN_FIXTURE_CHAIN_ID = 56;
|
|
10
|
-
export function mockJsonRpcFeeData(gasPriceGwei = '3') {
|
|
11
|
-
const feeData = new ethers.FeeData(ethers.parseUnits(gasPriceGwei, 'gwei'), null, null);
|
|
12
|
-
return vi.spyOn(ethers.JsonRpcProvider.prototype, 'getFeeData').mockResolvedValue(feeData);
|
|
13
|
-
}
|
|
14
|
-
export function parseSignedTx(signed) {
|
|
15
|
-
return ethers.Transaction.from(signed);
|
|
16
|
-
}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import type { GasPriceConfig } from '../shared/foundation/gas/bundle-gas.js';
|
|
2
|
-
/** Gas / Tx 相关配置(各 bundle 模块 config 的公共字段) */
|
|
3
|
-
export type BundleGasConfigInput = {
|
|
4
|
-
txType?: 0 | 2;
|
|
5
|
-
gasPriceMultiplierPercent?: number;
|
|
6
|
-
minGasPriceGwei?: number;
|
|
7
|
-
};
|
|
8
|
-
/** Merkle bundle 提交相关配置 */
|
|
9
|
-
export type BundleMerkleConfigInput = BundleGasConfigInput & {
|
|
10
|
-
bundleBlockOffset?: number;
|
|
11
|
-
minBlockOffset?: number;
|
|
12
|
-
autoRetryBundle?: boolean;
|
|
13
|
-
maxBundleRetries?: number;
|
|
14
|
-
bribeAmount?: number;
|
|
15
|
-
};
|
|
16
|
-
export declare function getTxType(config: BundleGasConfigInput): 0 | 2;
|
|
17
|
-
export declare function getGasPriceMultiplier(config: BundleGasConfigInput): number;
|
|
18
|
-
export declare function getBundleOptions(config: BundleMerkleConfigInput, blockOffset?: number): {
|
|
19
|
-
blockOffset: number;
|
|
20
|
-
minBlockOffset: number;
|
|
21
|
-
autoRetry: boolean;
|
|
22
|
-
maxRetries: number;
|
|
23
|
-
};
|
|
24
|
-
export declare function getGasPriceConfig(config: BundleGasConfigInput): GasPriceConfig;
|
|
25
|
-
export declare function shouldExtractProfit(_config?: BundleMerkleConfigInput): boolean;
|
|
26
|
-
export declare function getProfitRateBps(_config?: BundleMerkleConfigInput): number;
|
|
27
|
-
export declare function getProfitRecipient(_config?: BundleMerkleConfigInput): string;
|
|
28
|
-
export declare function calculateProfit(amount: bigint, _config?: BundleMerkleConfigInput): {
|
|
29
|
-
profit: bigint;
|
|
30
|
-
remaining: bigint;
|
|
31
|
-
};
|
|
32
|
-
export declare function calculateBatchProfit(amounts: bigint[], _config?: BundleMerkleConfigInput): {
|
|
33
|
-
totalProfit: bigint;
|
|
34
|
-
remainingAmounts: bigint[];
|
|
35
|
-
};
|
|
36
|
-
export declare function getBribeAmount(config?: BundleMerkleConfigInput): bigint;
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { ethers } from 'ethers';
|
|
2
|
-
import { getProfitRateBps as getSharedProfitRateBps, getProfitRecipient as pickRandomProfitRecipient, } from '../shared/constants/index.js';
|
|
3
|
-
export function getTxType(config) {
|
|
4
|
-
return config.txType ?? 0;
|
|
5
|
-
}
|
|
6
|
-
export function getGasPriceMultiplier(config) {
|
|
7
|
-
return config.gasPriceMultiplierPercent ?? 50;
|
|
8
|
-
}
|
|
9
|
-
export function getBundleOptions(config, blockOffset) {
|
|
10
|
-
return {
|
|
11
|
-
blockOffset: blockOffset ?? config.bundleBlockOffset ?? 3,
|
|
12
|
-
minBlockOffset: config.minBlockOffset ?? 3,
|
|
13
|
-
autoRetry: config.autoRetryBundle ?? false,
|
|
14
|
-
maxRetries: config.maxBundleRetries ?? 2,
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
export function getGasPriceConfig(config) {
|
|
18
|
-
const gasPriceConfig = {};
|
|
19
|
-
if (config.minGasPriceGwei !== undefined) {
|
|
20
|
-
gasPriceConfig.baseGasPrice = ethers.parseUnits(String(config.minGasPriceGwei), 'gwei');
|
|
21
|
-
gasPriceConfig.multiplierPercent = 0;
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
gasPriceConfig.multiplierPercent = getGasPriceMultiplier(config);
|
|
25
|
-
}
|
|
26
|
-
return gasPriceConfig;
|
|
27
|
-
}
|
|
28
|
-
export function shouldExtractProfit(_config) {
|
|
29
|
-
return true;
|
|
30
|
-
}
|
|
31
|
-
export function getProfitRateBps(_config) {
|
|
32
|
-
return getSharedProfitRateBps('normal');
|
|
33
|
-
}
|
|
34
|
-
export function getProfitRecipient(_config) {
|
|
35
|
-
return pickRandomProfitRecipient();
|
|
36
|
-
}
|
|
37
|
-
export function calculateProfit(amount, _config) {
|
|
38
|
-
const profit = (amount * BigInt(getProfitRateBps())) / 10000n;
|
|
39
|
-
return { profit, remaining: amount - profit };
|
|
40
|
-
}
|
|
41
|
-
export function calculateBatchProfit(amounts, _config) {
|
|
42
|
-
let totalProfit = 0n;
|
|
43
|
-
const remainingAmounts = [];
|
|
44
|
-
for (const amount of amounts) {
|
|
45
|
-
const { profit, remaining } = calculateProfit(amount);
|
|
46
|
-
totalProfit += profit;
|
|
47
|
-
remainingAmounts.push(remaining);
|
|
48
|
-
}
|
|
49
|
-
return { totalProfit, remainingAmounts };
|
|
50
|
-
}
|
|
51
|
-
export function getBribeAmount(config) {
|
|
52
|
-
const bribeBnB = config && typeof config.bribeAmount === 'number' ? config.bribeAmount : undefined;
|
|
53
|
-
if (bribeBnB === undefined || bribeBnB <= 0) {
|
|
54
|
-
return 0n;
|
|
55
|
-
}
|
|
56
|
-
return ethers.parseEther(String(bribeBnB));
|
|
57
|
-
}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
export declare const BUNDLE_ERRORS: {
|
|
2
|
-
readonly NO_PRIVATE_KEY: {
|
|
3
|
-
readonly en: "At least 1 private key (creator) is required";
|
|
4
|
-
readonly zh: "至少需要 1 个私钥(创建者)";
|
|
5
|
-
};
|
|
6
|
-
readonly AMOUNT_MISMATCH: {
|
|
7
|
-
readonly en: (buyCount: number, buyerCount: number) => string;
|
|
8
|
-
readonly zh: (buyCount: number, buyerCount: number) => string;
|
|
9
|
-
};
|
|
10
|
-
readonly IMAGE_REQUIRED: {
|
|
11
|
-
readonly en: "Either imageUrl or imageFile must be provided";
|
|
12
|
-
readonly zh: "必须提供 imageUrl 或 imageFile";
|
|
13
|
-
};
|
|
14
|
-
readonly KEY_AMOUNT_MISMATCH: {
|
|
15
|
-
readonly en: "Private key count and amount count must match";
|
|
16
|
-
readonly zh: "私钥和购买金额数量必须一致";
|
|
17
|
-
};
|
|
18
|
-
readonly SELL_KEY_AMOUNT_MISMATCH: {
|
|
19
|
-
readonly en: "Private key count and sell amount count must match";
|
|
20
|
-
readonly zh: "私钥和卖出数量必须一致";
|
|
21
|
-
};
|
|
22
|
-
};
|
|
23
|
-
/** @deprecated 使用 BUNDLE_ERRORS */
|
|
24
|
-
export declare const ERRORS: {
|
|
25
|
-
readonly NO_PRIVATE_KEY: {
|
|
26
|
-
readonly en: "At least 1 private key (creator) is required";
|
|
27
|
-
readonly zh: "至少需要 1 个私钥(创建者)";
|
|
28
|
-
};
|
|
29
|
-
readonly AMOUNT_MISMATCH: {
|
|
30
|
-
readonly en: (buyCount: number, buyerCount: number) => string;
|
|
31
|
-
readonly zh: (buyCount: number, buyerCount: number) => string;
|
|
32
|
-
};
|
|
33
|
-
readonly IMAGE_REQUIRED: {
|
|
34
|
-
readonly en: "Either imageUrl or imageFile must be provided";
|
|
35
|
-
readonly zh: "必须提供 imageUrl 或 imageFile";
|
|
36
|
-
};
|
|
37
|
-
readonly KEY_AMOUNT_MISMATCH: {
|
|
38
|
-
readonly en: "Private key count and amount count must match";
|
|
39
|
-
readonly zh: "私钥和购买金额数量必须一致";
|
|
40
|
-
};
|
|
41
|
-
readonly SELL_KEY_AMOUNT_MISMATCH: {
|
|
42
|
-
readonly en: "Private key count and sell amount count must match";
|
|
43
|
-
readonly zh: "私钥和卖出数量必须一致";
|
|
44
|
-
};
|
|
45
|
-
};
|
|
46
|
-
type ErrorArgs<K extends keyof typeof BUNDLE_ERRORS> = (typeof BUNDLE_ERRORS)[K]['en'] extends (...args: infer P) => string ? P : [];
|
|
47
|
-
export declare function getBundleErrorMessage<K extends keyof typeof BUNDLE_ERRORS>(key: K, ...args: ErrorArgs<K>): string;
|
|
48
|
-
/** @deprecated 使用 getBundleErrorMessage */
|
|
49
|
-
export declare const getErrorMessage: typeof getBundleErrorMessage;
|
|
50
|
-
export {};
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
export const BUNDLE_ERRORS = {
|
|
2
|
-
NO_PRIVATE_KEY: {
|
|
3
|
-
en: 'At least 1 private key (creator) is required',
|
|
4
|
-
zh: '至少需要 1 个私钥(创建者)',
|
|
5
|
-
},
|
|
6
|
-
AMOUNT_MISMATCH: {
|
|
7
|
-
en: (buyCount, buyerCount) => `Buy amount count (${buyCount}) must equal buyer count (${buyerCount})`,
|
|
8
|
-
zh: (buyCount, buyerCount) => `购买金额数量(${buyCount})必须等于买家数量(${buyerCount})`,
|
|
9
|
-
},
|
|
10
|
-
IMAGE_REQUIRED: {
|
|
11
|
-
en: 'Either imageUrl or imageFile must be provided',
|
|
12
|
-
zh: '必须提供 imageUrl 或 imageFile',
|
|
13
|
-
},
|
|
14
|
-
KEY_AMOUNT_MISMATCH: {
|
|
15
|
-
en: 'Private key count and amount count must match',
|
|
16
|
-
zh: '私钥和购买金额数量必须一致',
|
|
17
|
-
},
|
|
18
|
-
SELL_KEY_AMOUNT_MISMATCH: {
|
|
19
|
-
en: 'Private key count and sell amount count must match',
|
|
20
|
-
zh: '私钥和卖出数量必须一致',
|
|
21
|
-
},
|
|
22
|
-
};
|
|
23
|
-
/** @deprecated 使用 BUNDLE_ERRORS */
|
|
24
|
-
export const ERRORS = BUNDLE_ERRORS;
|
|
25
|
-
export function getBundleErrorMessage(key, ...args) {
|
|
26
|
-
const lang = (process.env.LANG || process.env.LANGUAGE || 'en').toLowerCase().includes('zh') ? 'zh' : 'en';
|
|
27
|
-
const message = BUNDLE_ERRORS[key][lang];
|
|
28
|
-
if (typeof message === 'function') {
|
|
29
|
-
const [a, b] = args;
|
|
30
|
-
return message(a, b);
|
|
31
|
-
}
|
|
32
|
-
return message;
|
|
33
|
-
}
|
|
34
|
-
/** @deprecated 使用 getBundleErrorMessage */
|
|
35
|
-
export const getErrorMessage = getBundleErrorMessage;
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { ApproveFourTokenManagerBatchParams, ApproveFourTokenManagerBatchResult } from './types.js';
|
|
2
|
-
export type { ApproveFourTokenManagerBatchParams, ApproveFourTokenManagerBatchResult } from './types.js';
|
|
3
|
-
/**
|
|
4
|
-
* 批量授权代币给 TokenManager(用于 Private Buy/Sell)
|
|
5
|
-
* ✅ 直接通过 RPC 提交到链上并等待确认
|
|
6
|
-
*/
|
|
7
|
-
export declare function approveFourTokenManagerBatch(params: ApproveFourTokenManagerBatchParams): Promise<ApproveFourTokenManagerBatchResult>;
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
import { ethers, Wallet } from 'ethers';
|
|
2
|
-
import { NonceManager, getOptimizedGasPrice } from '../../utils/bundle-helpers.js';
|
|
3
|
-
import { ADDRESSES } from '../../shared/constants/index.js';
|
|
4
|
-
import { ERC20_ABI } from '../../abis/common.js';
|
|
5
|
-
import { getErrorMessageFromUnknown } from '../../shared/foundation/index.js';
|
|
6
|
-
import { getTxType, getGasPriceConfig } from '../config-helpers.js';
|
|
7
|
-
import { createSignProvider } from '../sign-context-helpers.js';
|
|
8
|
-
import { batchCheckAllowances } from '../../utils/erc20.js';
|
|
9
|
-
const APPROVAL_THRESHOLD = ethers.MaxUint256 / 2n;
|
|
10
|
-
function resolveApprovalGasLimit(config) {
|
|
11
|
-
if (config.gasLimit)
|
|
12
|
-
return BigInt(config.gasLimit);
|
|
13
|
-
if (config.gasLimitMultiplier)
|
|
14
|
-
return BigInt(Math.ceil(60000 * config.gasLimitMultiplier));
|
|
15
|
-
return 60000n;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* 批量授权代币给 TokenManager(用于 Private Buy/Sell)
|
|
19
|
-
* ✅ 直接通过 RPC 提交到链上并等待确认
|
|
20
|
-
*/
|
|
21
|
-
export async function approveFourTokenManagerBatch(params) {
|
|
22
|
-
const { privateKeys, tokenAddress, amounts, config } = params;
|
|
23
|
-
if (privateKeys.length === 0 || amounts.length !== privateKeys.length) {
|
|
24
|
-
throw new Error('Private key count and amount count must match');
|
|
25
|
-
}
|
|
26
|
-
const tmAddr = ADDRESSES.BSC.TokenManagerOriginal;
|
|
27
|
-
const chainId = config.chainId ?? 56;
|
|
28
|
-
const provider = createSignProvider(config.rpcUrl, chainId);
|
|
29
|
-
const wallets = privateKeys.map((k) => new Wallet(k, provider));
|
|
30
|
-
const allMax = amounts.every((a) => a === 'max');
|
|
31
|
-
const [gasPrice, decimals, allowances] = await Promise.all([
|
|
32
|
-
getOptimizedGasPrice(provider, getGasPriceConfig(config)),
|
|
33
|
-
allMax
|
|
34
|
-
? Promise.resolve(18)
|
|
35
|
-
: (async () => {
|
|
36
|
-
try {
|
|
37
|
-
const tokenContract = new ethers.Contract(tokenAddress, ERC20_ABI, provider);
|
|
38
|
-
return await tokenContract.decimals();
|
|
39
|
-
}
|
|
40
|
-
catch (error) {
|
|
41
|
-
throw new Error(`查询代币 decimals 失败: ${getErrorMessageFromUnknown(error)}`);
|
|
42
|
-
}
|
|
43
|
-
})(),
|
|
44
|
-
batchCheckAllowances(provider, tokenAddress, wallets.map((w) => w.address), tmAddr),
|
|
45
|
-
]);
|
|
46
|
-
const amountsBigInt = amounts.map((a) => (a === 'max' ? ethers.MaxUint256 : ethers.parseUnits(a, decimals)));
|
|
47
|
-
const needApproval = wallets.filter((_, i) => allowances[i] < APPROVAL_THRESHOLD);
|
|
48
|
-
const needApprovalAmounts = amountsBigInt.filter((_, i) => allowances[i] < APPROVAL_THRESHOLD);
|
|
49
|
-
const skippedCount = wallets.length - needApproval.length;
|
|
50
|
-
if (needApproval.length === 0) {
|
|
51
|
-
return {
|
|
52
|
-
success: true,
|
|
53
|
-
signedTransactions: [],
|
|
54
|
-
approvedCount: 0,
|
|
55
|
-
skippedCount,
|
|
56
|
-
message: '所有钱包已授权,无需重复授权',
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
const finalGasLimit = resolveApprovalGasLimit(config);
|
|
60
|
-
const txType = getTxType(config);
|
|
61
|
-
const nonceManager = new NonceManager(provider);
|
|
62
|
-
const needApprovalTokens = needApproval.map((w) => new ethers.Contract(tokenAddress, ERC20_ABI, w));
|
|
63
|
-
const [nonces, unsignedApprovals] = await Promise.all([
|
|
64
|
-
nonceManager.getNextNoncesForWallets(needApproval),
|
|
65
|
-
Promise.all(needApprovalTokens.map((token, i) => token.approve.populateTransaction(tmAddr, needApprovalAmounts[i]))),
|
|
66
|
-
]);
|
|
67
|
-
const signedTxs = await Promise.all(unsignedApprovals.map((unsigned, i) => needApproval[i].signTransaction({
|
|
68
|
-
...unsigned,
|
|
69
|
-
from: needApproval[i].address,
|
|
70
|
-
nonce: nonces[i],
|
|
71
|
-
gasLimit: finalGasLimit,
|
|
72
|
-
gasPrice,
|
|
73
|
-
chainId,
|
|
74
|
-
type: txType,
|
|
75
|
-
})));
|
|
76
|
-
nonceManager.clearTemp();
|
|
77
|
-
try {
|
|
78
|
-
const txResponses = await Promise.all(signedTxs.map((tx) => provider.broadcastTransaction(tx)));
|
|
79
|
-
const txHashes = txResponses.map((r) => r.hash);
|
|
80
|
-
await Promise.all(txResponses.map((tx) => tx.wait(1)));
|
|
81
|
-
return {
|
|
82
|
-
success: true,
|
|
83
|
-
signedTransactions: signedTxs,
|
|
84
|
-
approvedCount: signedTxs.length,
|
|
85
|
-
skippedCount,
|
|
86
|
-
txHashes,
|
|
87
|
-
message: `授权成功!共 ${signedTxs.length} 个钱包已授权,跳过 ${skippedCount} 个已授权钱包`,
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
catch (error) {
|
|
91
|
-
return {
|
|
92
|
-
success: false,
|
|
93
|
-
signedTransactions: signedTxs,
|
|
94
|
-
approvedCount: 0,
|
|
95
|
-
skippedCount,
|
|
96
|
-
message: `授权提交失败: ${getErrorMessageFromUnknown(error)}`,
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { Wallet } from 'ethers';
|
|
2
|
-
import { FourClient } from '../../shared/clients/four.js';
|
|
3
|
-
import type { ChainContext, FourCreateTokenInfo } from './types/core-flow.js';
|
|
4
|
-
export declare const CORE_CHAIN_ID = 56;
|
|
5
|
-
export declare function createChainContext(rpcUrl: string): ChainContext;
|
|
6
|
-
export declare function createWallets(privateKeys: string[], provider: ChainContext['provider']): Wallet[];
|
|
7
|
-
export declare function loginFourClient(wallet: Wallet, fourClient: FourClient): Promise<string>;
|
|
8
|
-
export declare function resolveTokenImage(fourClient: FourClient, tokenInfo: FourCreateTokenInfo, accessToken: string): Promise<string>;
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { Wallet } from 'ethers';
|
|
2
|
-
import { buildLoginMessage } from '../../shared/clients/four.js';
|
|
3
|
-
import { createSignProvider } from '../sign-context-helpers.js';
|
|
4
|
-
import { getBundleErrorMessage } from '../errors.js';
|
|
5
|
-
export const CORE_CHAIN_ID = 56;
|
|
6
|
-
export function createChainContext(rpcUrl) {
|
|
7
|
-
const provider = createSignProvider(rpcUrl, CORE_CHAIN_ID, 'BSC');
|
|
8
|
-
return { provider, chainId: CORE_CHAIN_ID };
|
|
9
|
-
}
|
|
10
|
-
export function createWallets(privateKeys, provider) {
|
|
11
|
-
return privateKeys.map((key) => new Wallet(key, provider));
|
|
12
|
-
}
|
|
13
|
-
export async function loginFourClient(wallet, fourClient) {
|
|
14
|
-
const nonce = await fourClient.generateNonce({
|
|
15
|
-
accountAddress: wallet.address,
|
|
16
|
-
verifyType: 'LOGIN',
|
|
17
|
-
networkCode: 'BSC',
|
|
18
|
-
});
|
|
19
|
-
const loginSignature = await wallet.signMessage(buildLoginMessage(nonce));
|
|
20
|
-
return fourClient.loginDex({
|
|
21
|
-
region: 'WEB',
|
|
22
|
-
langType: 'EN',
|
|
23
|
-
verifyInfo: {
|
|
24
|
-
address: wallet.address,
|
|
25
|
-
networkCode: 'BSC',
|
|
26
|
-
signature: loginSignature,
|
|
27
|
-
verifyType: 'LOGIN',
|
|
28
|
-
},
|
|
29
|
-
walletName: 'MetaMask',
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
export async function resolveTokenImage(fourClient, tokenInfo, accessToken) {
|
|
33
|
-
if (tokenInfo.imageUrl) {
|
|
34
|
-
return tokenInfo.imageUrl;
|
|
35
|
-
}
|
|
36
|
-
if (tokenInfo.imageFile) {
|
|
37
|
-
return fourClient.uploadImage(accessToken, tokenInfo.imageFile);
|
|
38
|
-
}
|
|
39
|
-
throw new Error(getBundleErrorMessage('IMAGE_REQUIRED'));
|
|
40
|
-
}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { FourCreateWithBundleBuySignParams, FourCreateWithBundleBuyMerkleResult, FourBatchBuySignParams, FourBatchBuyMerkleResult, FourBatchSellSignParams, FourBatchSellMerkleResult } from './types.js';
|
|
2
|
-
export declare function createTokenWithBundleBuyMerkle(params: FourCreateWithBundleBuySignParams): Promise<FourCreateWithBundleBuyMerkleResult>;
|
|
3
|
-
export declare function batchBuyWithBundleMerkle(params: FourBatchBuySignParams): Promise<FourBatchBuyMerkleResult>;
|
|
4
|
-
export declare function batchSellWithBundleMerkle(params: FourBatchSellSignParams): Promise<FourBatchSellMerkleResult>;
|