four-flap-meme-sdk 2.2.2 → 2.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +41 -6
- package/README.md +31 -0
- package/README.zh-CN.md +41 -6
- package/dist/__tests__/subpath-exports.test.d.ts +1 -0
- package/dist/__tests__/subpath-exports.test.js +64 -0
- package/dist/abis/common.d.ts +85 -0
- package/dist/abis/common.js +264 -0
- package/dist/abis/contracts/TaxToken.json +969 -0
- package/dist/abis/contracts/TokenManager2.json +136 -0
- package/dist/abis/contracts/index.d.ts +5 -0
- package/dist/abis/contracts/index.js +5 -0
- package/dist/abis/flap/index.d.ts +3 -0
- package/dist/abis/flap/index.js +3 -0
- package/dist/abis/flap/portal-events.d.ts +6 -0
- package/dist/abis/flap/portal-events.js +17 -0
- package/dist/abis/flap/portal.d.ts +6 -0
- package/dist/abis/flap/portal.js +37 -0
- package/dist/abis/flap/vault.d.ts +171 -0
- package/dist/abis/flap/vault.js +91 -0
- package/dist/abis/index.d.ts +8 -0
- package/dist/abis/index.js +11 -0
- package/dist/bundle-core/__tests__/config-helpers.test.d.ts +1 -0
- package/dist/bundle-core/__tests__/config-helpers.test.js +28 -0
- package/dist/bundle-core/__tests__/facade-parity.test.d.ts +1 -0
- package/dist/bundle-core/__tests__/facade-parity.test.js +33 -0
- package/dist/bundle-core/__tests__/sign-context-helpers.test.d.ts +1 -0
- package/dist/bundle-core/__tests__/sign-context-helpers.test.js +60 -0
- package/dist/bundle-core/__tests__/sign-fixture.test.d.ts +1 -0
- package/dist/bundle-core/__tests__/sign-fixture.test.js +220 -0
- package/dist/bundle-core/__tests__/sign-fixtures.d.ts +10 -0
- package/dist/bundle-core/__tests__/sign-fixtures.js +16 -0
- package/dist/bundle-core/config-helpers.d.ts +36 -0
- package/dist/bundle-core/config-helpers.js +57 -0
- package/dist/bundle-core/errors.d.ts +50 -0
- package/dist/bundle-core/errors.js +35 -0
- package/dist/bundle-core/four-meme/approve-tokenmanager.d.ts +7 -0
- package/dist/bundle-core/four-meme/approve-tokenmanager.js +99 -0
- package/dist/bundle-core/four-meme/core-helpers.d.ts +8 -0
- package/dist/bundle-core/four-meme/core-helpers.js +40 -0
- package/dist/bundle-core/four-meme/core.d.ts +4 -0
- package/dist/bundle-core/four-meme/core.js +515 -0
- package/dist/bundle-core/four-meme/pancake-proxy.d.ts +28 -0
- package/dist/bundle-core/four-meme/pancake-proxy.js +679 -0
- package/dist/bundle-core/four-meme/private.d.ts +27 -0
- package/dist/bundle-core/four-meme/private.js +465 -0
- package/dist/bundle-core/four-meme/sign-context-helpers.d.ts +2 -0
- package/dist/bundle-core/four-meme/sign-context-helpers.js +2 -0
- package/dist/bundle-core/four-meme/swap-buy-first.d.ts +8 -0
- package/dist/bundle-core/four-meme/swap-buy-first.js +493 -0
- package/dist/bundle-core/four-meme/swap-hop-helpers.d.ts +6 -0
- package/dist/bundle-core/four-meme/swap-hop-helpers.js +63 -0
- package/dist/bundle-core/four-meme/swap-internal.d.ts +3 -0
- package/dist/bundle-core/four-meme/swap-internal.js +18 -0
- package/dist/bundle-core/four-meme/swap-sign-helpers.d.ts +27 -0
- package/dist/bundle-core/four-meme/swap-sign-helpers.js +105 -0
- package/dist/bundle-core/four-meme/swap.d.ts +17 -0
- package/dist/bundle-core/four-meme/swap.js +505 -0
- package/dist/bundle-core/four-meme/types/buy-first.d.ts +50 -0
- package/dist/bundle-core/four-meme/types/buy-first.js +1 -0
- package/dist/bundle-core/four-meme/types/core-flow.d.ts +63 -0
- package/dist/bundle-core/four-meme/types/core-flow.js +1 -0
- package/dist/bundle-core/four-meme/types/index.d.ts +600 -0
- package/dist/bundle-core/four-meme/types/index.js +1 -0
- package/dist/bundle-core/four-meme/types/swap-internal.d.ts +19 -0
- package/dist/bundle-core/four-meme/types/swap-internal.js +1 -0
- package/dist/bundle-core/four-meme/types.d.ts +1 -0
- package/dist/bundle-core/four-meme/types.js +1 -0
- package/dist/bundle-core/four-meme/utils-disperse.d.ts +7 -0
- package/dist/bundle-core/four-meme/utils-disperse.js +396 -0
- package/dist/bundle-core/four-meme/utils-pairwise.d.ts +8 -0
- package/dist/bundle-core/four-meme/utils-pairwise.js +328 -0
- package/dist/bundle-core/four-meme/utils-sweep.d.ts +8 -0
- package/dist/bundle-core/four-meme/utils-sweep.js +744 -0
- package/dist/bundle-core/index.d.ts +8 -0
- package/dist/bundle-core/index.js +8 -0
- package/dist/bundle-core/internal.d.ts +21 -0
- package/dist/bundle-core/internal.js +182 -0
- package/dist/bundle-core/sign-context-helpers.d.ts +25 -0
- package/dist/bundle-core/sign-context-helpers.js +67 -0
- package/dist/bundle-core/submit.d.ts +293 -0
- package/dist/bundle-core/submit.js +727 -0
- package/dist/bundle-core/types/index.d.ts +8 -0
- package/dist/bundle-core/types/index.js +1 -0
- package/dist/bundle-core/types.d.ts +1 -0
- package/dist/bundle-core/types.js +1 -0
- package/dist/chains/bsc/four/approve-tokenmanager.d.ts +1 -26
- package/dist/chains/bsc/four/approve-tokenmanager.js +1 -113
- package/dist/chains/bsc/four/config.d.ts +5 -67
- package/dist/chains/bsc/four/config.js +2 -114
- package/dist/chains/bsc/four/core.d.ts +1 -4
- package/dist/chains/bsc/four/core.js +1 -592
- package/dist/chains/bsc/four/index.d.ts +6 -6
- package/dist/chains/bsc/four/index.js +6 -6
- package/dist/chains/bsc/four/internal.d.ts +2 -46
- package/dist/chains/bsc/four/internal.js +2 -239
- package/dist/chains/bsc/four/pancake-proxy.d.ts +1 -28
- package/dist/chains/bsc/four/pancake-proxy.js +1 -687
- package/dist/chains/bsc/four/private.d.ts +1 -27
- package/dist/chains/bsc/four/private.js +1 -477
- package/dist/chains/bsc/four/submit.d.ts +2 -315
- package/dist/chains/bsc/four/submit.js +2 -752
- package/dist/chains/bsc/four/swap-buy-first.d.ts +2 -55
- package/dist/chains/bsc/four/swap-buy-first.js +2 -507
- package/dist/chains/bsc/four/swap-internal.d.ts +1 -3
- package/dist/chains/bsc/four/swap-internal.js +1 -18
- package/dist/chains/bsc/four/swap.d.ts +2 -144
- package/dist/chains/bsc/four/swap.js +2 -766
- package/dist/chains/bsc/four/types.d.ts +1 -476
- package/dist/chains/bsc/four/utils-disperse.d.ts +1 -0
- package/dist/chains/bsc/four/utils-disperse.js +1 -0
- package/dist/chains/bsc/four/utils-pairwise.d.ts +1 -0
- package/dist/chains/bsc/four/utils-pairwise.js +1 -0
- package/dist/chains/bsc/four/utils-sweep.d.ts +1 -0
- package/dist/chains/bsc/four/utils-sweep.js +1 -0
- package/dist/chains/bsc/four/utils.d.ts +5 -18
- package/dist/chains/bsc/four/utils.js +5 -1552
- package/dist/chains/bsc/iro.d.ts +5 -0
- package/dist/chains/bsc/iro.js +4 -0
- package/dist/chains/bsc/pancake/bundle-buy-first-helpers.d.ts +159 -0
- package/dist/chains/bsc/pancake/bundle-buy-first-helpers.js +117 -0
- package/dist/chains/bsc/pancake/bundle-buy-first.d.ts +1 -91
- package/dist/chains/bsc/pancake/bundle-buy-first.js +97 -212
- package/dist/chains/bsc/pancake/bundle-swap-helpers.d.ts +241 -0
- package/dist/chains/bsc/pancake/bundle-swap-helpers.js +565 -0
- package/dist/chains/bsc/pancake/bundle-swap.d.ts +1 -79
- package/dist/chains/bsc/pancake/bundle-swap.js +114 -726
- package/dist/chains/bsc/pancake/index.d.ts +4 -2
- package/dist/chains/bsc/pancake/index.js +1 -3
- package/dist/chains/bsc/platforms/iro/factory.d.ts +2 -2
- package/dist/chains/bsc/platforms/iro/factory.js +3 -1
- package/dist/chains/bsc/platforms/iro/index.d.ts +5 -5
- package/dist/chains/bsc/platforms/iro/index.js +3 -3
- package/dist/chains/bsc/platforms/iro/pool.js +31 -10
- package/dist/chains/bsc/platforms/iro/token.js +4 -1
- package/dist/chains/eni/batch-router/bundle-approve.js +4 -3
- package/dist/chains/eni/batch-router/transfer.js +55 -25
- package/dist/chains/eni/batch-router/utils.js +32 -6
- package/dist/chains/eni/bundler/sign.js +5 -6
- package/dist/chains/eni/bundler/submit.js +1 -4
- package/dist/chains/eni/constants.js +1 -1
- package/dist/chains/eni/flat-aliases.d.ts +10 -0
- package/dist/chains/eni/flat-aliases.js +8 -0
- package/dist/chains/eni/index.d.ts +2 -1
- package/dist/chains/eni/index.js +1 -0
- package/dist/chains/eni/platforms/daoaas/create.js +2 -2
- package/dist/chains/eni/platforms/daoaas/index.d.ts +3 -3
- package/dist/chains/eni/platforms/daoaas/index.js +3 -3
- package/dist/chains/eni/platforms/daoaas/meta.js +9 -6
- package/dist/chains/eni/platforms/daoaas/portal-direct.js +28 -44
- package/dist/chains/eni/platforms/daoaas/portal.js +10 -6
- package/dist/chains/eni/platforms/dswap/liquidity.js +58 -26
- package/dist/chains/eni/platforms/fair-launch/index.d.ts +2 -2
- package/dist/chains/eni/platforms/fair-launch/index.js +1 -1
- package/dist/chains/eni/platforms/fair-launch/launcher.js +87 -46
- package/dist/chains/eni/platforms/fair-launch/pool.js +4 -1
- package/dist/chains/eni/platforms/fair-launch/presets.js +2 -2
- package/dist/chains/eni/platforms/iro/factory.d.ts +2 -2
- package/dist/chains/eni/platforms/iro/factory.js +3 -1
- package/dist/chains/eni/platforms/iro/index.d.ts +6 -6
- package/dist/chains/eni/platforms/iro/index.js +4 -4
- package/dist/chains/eni/platforms/iro/pool.js +90 -26
- package/dist/chains/eni/platforms/iro/token.js +107 -31
- package/dist/chains/eni/platforms/iro/whitelist.js +6 -18
- package/dist/chains/eni/submit.d.ts +43 -0
- package/dist/chains/eni/submit.js +286 -0
- package/dist/chains/index.d.ts +13 -0
- package/dist/chains/index.js +13 -0
- package/dist/chains/xlayer/eip7702/bundle-approve.d.ts +2 -26
- package/dist/chains/xlayer/eip7702/bundle-approve.js +11 -21
- package/dist/chains/xlayer/eip7702/bundle-buy.d.ts +2 -6
- package/dist/chains/xlayer/eip7702/bundle-buy.js +13 -51
- package/dist/chains/xlayer/eip7702/bundle-create.js +93 -59
- package/dist/chains/xlayer/eip7702/bundle-sell.d.ts +2 -6
- package/dist/chains/xlayer/eip7702/bundle-sell.js +29 -111
- package/dist/chains/xlayer/eip7702/bundle-swap.d.ts +3 -65
- package/dist/chains/xlayer/eip7702/bundle-swap.js +51 -245
- package/dist/chains/xlayer/eip7702/constants.d.ts +1 -16
- package/dist/chains/xlayer/eip7702/constants.js +3 -21
- package/dist/chains/xlayer/eip7702/flat-aliases.d.ts +13 -0
- package/dist/chains/xlayer/eip7702/flat-aliases.js +10 -0
- package/dist/chains/xlayer/eip7702/index.d.ts +28 -46
- package/dist/chains/xlayer/eip7702/index.js +28 -81
- package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.d.ts +79 -0
- package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.js +1 -0
- package/dist/chains/xlayer/eip7702/multi-hop-transfer.d.ts +2 -203
- package/dist/chains/xlayer/eip7702/multi-hop-transfer.js +63 -307
- package/dist/chains/xlayer/eip7702/transfer-context-helpers.d.ts +26 -0
- package/dist/chains/xlayer/eip7702/transfer-context-helpers.js +57 -0
- package/dist/chains/xlayer/eip7702/types.d.ts +88 -0
- package/dist/chains/xlayer/eip7702/utils.d.ts +0 -3
- package/dist/chains/xlayer/eip7702/utils.js +23 -28
- package/dist/chains/xlayer/eip7702/volume-helpers.d.ts +148 -0
- package/dist/chains/xlayer/eip7702/volume-helpers.js +48 -0
- package/dist/chains/xlayer/eip7702/volume.d.ts +6 -184
- package/dist/chains/xlayer/eip7702/volume.js +89 -164
- package/dist/chains/xlayer/eoa/constants.js +1 -1
- package/dist/chains/xlayer/eoa/dex-helpers.js +5 -5
- package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.d.ts +126 -0
- package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.js +228 -0
- package/dist/chains/xlayer/eoa/eoa-bundle-swap.d.ts +1 -95
- package/dist/chains/xlayer/eoa/eoa-bundle-swap.js +66 -299
- package/dist/chains/xlayer/eoa/eoa-wash-volume.d.ts +1 -1
- package/dist/chains/xlayer/eoa/eoa-wash-volume.js +18 -23
- package/dist/chains/xlayer/eoa/index.d.ts +10 -6
- package/dist/chains/xlayer/eoa/index.js +8 -23
- package/dist/chains/xlayer/eoa/portal-ops.js +7 -2
- package/dist/chains/xlayer/eoa/router-manager.js +3 -3
- package/dist/chains/xlayer/eoa/types.d.ts +2 -2
- package/dist/chains/xlayer/eoa/types.js +1 -3
- package/dist/chains/xlayer/index.d.ts +3 -2
- package/dist/chains/xlayer/index.js +4 -7
- package/dist/contracts/helper3.d.ts +20 -5
- package/dist/contracts/helper3.js +56 -20
- package/dist/contracts/tm-bundle-helpers.d.ts +88 -0
- package/dist/contracts/tm-bundle-helpers.js +72 -0
- package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.d.ts +1 -26
- package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.js +1 -113
- package/dist/contracts/tm-bundle-merkle/config.d.ts +5 -67
- package/dist/contracts/tm-bundle-merkle/config.js +2 -114
- package/dist/contracts/tm-bundle-merkle/core.d.ts +1 -4
- package/dist/contracts/tm-bundle-merkle/core.js +1 -591
- package/dist/contracts/tm-bundle-merkle/index.d.ts +5 -5
- package/dist/contracts/tm-bundle-merkle/index.js +5 -5
- package/dist/contracts/tm-bundle-merkle/internal.d.ts +2 -46
- package/dist/contracts/tm-bundle-merkle/internal.js +2 -238
- package/dist/contracts/tm-bundle-merkle/pancake-proxy.d.ts +1 -28
- package/dist/contracts/tm-bundle-merkle/pancake-proxy.js +1 -686
- package/dist/contracts/tm-bundle-merkle/private.d.ts +1 -27
- package/dist/contracts/tm-bundle-merkle/private.js +1 -476
- package/dist/contracts/tm-bundle-merkle/submit.d.ts +3 -314
- package/dist/contracts/tm-bundle-merkle/submit.js +3 -928
- package/dist/contracts/tm-bundle-merkle/swap-buy-first.d.ts +2 -55
- package/dist/contracts/tm-bundle-merkle/swap-buy-first.js +2 -506
- package/dist/contracts/tm-bundle-merkle/swap-internal.d.ts +1 -3
- package/dist/contracts/tm-bundle-merkle/swap-internal.js +1 -18
- package/dist/contracts/tm-bundle-merkle/swap.d.ts +2 -144
- package/dist/contracts/tm-bundle-merkle/swap.js +2 -764
- package/dist/contracts/tm-bundle-merkle/types.d.ts +1 -476
- package/dist/contracts/tm-bundle-merkle/utils-disperse.d.ts +1 -0
- package/dist/contracts/tm-bundle-merkle/utils-disperse.js +1 -0
- package/dist/contracts/tm-bundle-merkle/utils-pairwise.d.ts +1 -0
- package/dist/contracts/tm-bundle-merkle/utils-pairwise.js +1 -0
- package/dist/contracts/tm-bundle-merkle/utils-sweep.d.ts +1 -0
- package/dist/contracts/tm-bundle-merkle/utils-sweep.js +1 -0
- package/dist/contracts/tm-bundle-merkle/utils.d.ts +6 -18
- package/dist/contracts/tm-bundle-merkle/utils.js +6 -1501
- package/dist/contracts/tm-bundle.d.ts +3 -51
- package/dist/contracts/tm-bundle.js +108 -177
- package/dist/contracts/tm.d.ts +3 -2
- package/dist/contracts/tm.js +37 -32
- package/dist/contracts/tm1.js +9 -4
- package/dist/contracts/tm2.js +9 -4
- package/dist/dex/direct-router-helpers.d.ts +264 -0
- package/dist/dex/direct-router-helpers.js +539 -0
- package/dist/dex/direct-router.d.ts +3 -125
- package/dist/dex/direct-router.js +237 -666
- package/dist/dex/types.d.ts +81 -0
- package/dist/dex/types.js +1 -0
- package/dist/exports/root-bundle-and-tooling.d.ts +27 -0
- package/dist/exports/root-bundle-and-tooling.js +30 -0
- package/dist/exports/root-eni-and-bsc-iro.d.ts +26 -0
- package/dist/exports/root-eni-and-bsc-iro.js +66 -0
- package/dist/exports/root-foundations.d.ts +35 -0
- package/dist/exports/root-foundations.js +70 -0
- package/dist/exports/root-swap-dex-and-xlayer.d.ts +30 -0
- package/dist/exports/root-swap-dex-and-xlayer.js +78 -0
- package/dist/flap/index.d.ts +10 -0
- package/dist/flap/index.js +8 -0
- package/dist/flows/create.d.ts +2 -1
- package/dist/flows/create.js +6 -6
- package/dist/flows/index.d.ts +1 -0
- package/dist/flows/index.js +1 -0
- package/dist/index.d.ts +20 -85
- package/dist/index.js +20 -215
- package/dist/merkle/index.d.ts +12 -0
- package/dist/merkle/index.js +11 -0
- package/dist/shared/abis/common.d.ts +2 -83
- package/dist/shared/abis/common.js +2 -252
- package/dist/shared/abis/index.d.ts +5 -6
- package/dist/shared/abis/index.js +5 -7
- package/dist/shared/clients/blockrazor.js +39 -25
- package/dist/shared/clients/club48.d.ts +2 -2
- package/dist/shared/clients/club48.js +34 -29
- package/dist/shared/clients/emitservice.js +2 -0
- package/dist/shared/clients/four.d.ts +21 -6
- package/dist/shared/clients/four.js +29 -24
- package/dist/shared/clients/index.d.ts +8 -0
- package/dist/shared/clients/index.js +8 -0
- package/dist/shared/clients/merkle.js +27 -34
- package/dist/shared/constants/addresses.d.ts +1 -1
- package/dist/shared/constants/addresses.js +11 -2
- package/dist/shared/constants/chains.d.ts +1 -1
- package/dist/shared/constants/chains.js +1 -1
- package/dist/shared/constants/gas.d.ts +1 -1
- package/dist/shared/constants/gas.js +2 -6
- package/dist/shared/constants/index.d.ts +3 -0
- package/dist/shared/constants/index.js +1 -0
- package/dist/shared/constants/quote.d.ts +30 -0
- package/dist/shared/constants/quote.js +37 -0
- package/dist/shared/flap/abi.js +1 -1
- package/dist/shared/flap/constants.d.ts +1 -2
- package/dist/shared/flap/constants.js +2 -3
- package/dist/shared/flap/curve.js +3 -0
- package/dist/shared/flap/errors.d.ts +1 -4
- package/dist/shared/flap/errors.js +20 -1
- package/dist/shared/flap/index.d.ts +5 -4
- package/dist/shared/flap/index.js +5 -4
- package/dist/shared/flap/meta.d.ts +22 -18
- package/dist/shared/flap/meta.js +12 -17
- package/dist/shared/flap/permit.js +5 -2
- package/dist/shared/flap/pinata.d.ts +22 -6
- package/dist/shared/flap/pinata.js +21 -26
- package/dist/shared/flap/portal-bundle-merkle/config.d.ts +3 -72
- package/dist/shared/flap/portal-bundle-merkle/config.js +4 -124
- package/dist/shared/flap/portal-bundle-merkle/core-helpers.d.ts +32 -0
- package/dist/shared/flap/portal-bundle-merkle/core-helpers.js +83 -0
- package/dist/shared/flap/portal-bundle-merkle/core.d.ts +0 -4
- package/dist/shared/flap/portal-bundle-merkle/core.js +96 -277
- package/dist/shared/flap/portal-bundle-merkle/create-to-dex.d.ts +7 -2
- package/dist/shared/flap/portal-bundle-merkle/create-to-dex.js +107 -206
- package/dist/shared/flap/portal-bundle-merkle/curve-to-dex.js +100 -92
- package/dist/shared/flap/portal-bundle-merkle/index.d.ts +11 -7
- package/dist/shared/flap/portal-bundle-merkle/index.js +4 -7
- package/dist/shared/flap/portal-bundle-merkle/pancake-proxy.js +71 -68
- package/dist/shared/flap/portal-bundle-merkle/private.js +61 -114
- package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.d.ts +125 -0
- package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.js +113 -0
- package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.d.ts +1 -64
- package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.js +66 -247
- package/dist/shared/flap/portal-bundle-merkle/swap-helpers.d.ts +149 -0
- package/dist/shared/flap/portal-bundle-merkle/swap-helpers.js +259 -0
- package/dist/shared/flap/portal-bundle-merkle/swap.d.ts +2 -71
- package/dist/shared/flap/portal-bundle-merkle/swap.js +103 -410
- package/dist/shared/flap/portal-bundle-merkle/types.d.ts +88 -9
- package/dist/shared/flap/portal-bundle-merkle/utils.d.ts +1 -80
- package/dist/shared/flap/portal-bundle-merkle/utils.js +145 -265
- package/dist/shared/flap/portal-bundle.js +55 -56
- package/dist/shared/flap/portal-create-token.d.ts +80 -0
- package/dist/shared/flap/portal-create-token.js +257 -0
- package/dist/shared/flap/portal.d.ts +14 -3
- package/dist/shared/flap/portal.js +50 -25
- package/dist/shared/flap/vanity.d.ts +1 -5
- package/dist/shared/flap/vanity.js +6 -17
- package/dist/shared/flap/vault.d.ts +17 -124
- package/dist/shared/flap/vault.js +67 -148
- package/dist/shared/foundation/dex/v3-path.d.ts +6 -0
- package/dist/shared/foundation/dex/v3-path.js +35 -0
- package/dist/shared/foundation/gas/bundle-gas.d.ts +49 -0
- package/dist/shared/foundation/gas/bundle-gas.js +93 -0
- package/dist/shared/foundation/gas/profit-hop.d.ts +20 -0
- package/dist/shared/foundation/gas/profit-hop.js +72 -0
- package/dist/shared/foundation/index.d.ts +13 -0
- package/dist/shared/foundation/index.js +12 -0
- package/dist/shared/foundation/nonce/nonce-manager.d.ts +17 -0
- package/dist/shared/foundation/nonce/nonce-manager.js +183 -0
- package/dist/shared/foundation/normalize-unknown.d.ts +9 -0
- package/dist/shared/foundation/normalize-unknown.js +29 -0
- package/dist/shared/foundation/sdk-logger.d.ts +13 -0
- package/dist/shared/foundation/sdk-logger.js +12 -0
- package/dist/shared/foundation/tx/build-request.d.ts +17 -0
- package/dist/shared/foundation/tx/build-request.js +25 -0
- package/dist/shared/foundation/tx/sign-batch.d.ts +5 -0
- package/dist/shared/foundation/tx/sign-batch.js +26 -0
- package/dist/shared/foundation/tx/wallet-sign-patch.d.ts +1 -0
- package/dist/shared/foundation/tx/wallet-sign-patch.js +18 -0
- package/dist/shared/foundation/types/airdrop-sweep.d.ts +79 -0
- package/dist/shared/foundation/types/airdrop-sweep.js +1 -0
- package/dist/shared/foundation/types/erc20.d.ts +65 -0
- package/dist/shared/foundation/types/erc20.js +1 -0
- package/dist/shared/foundation/types/holders-maker.d.ts +64 -0
- package/dist/shared/foundation/types/holders-maker.js +1 -0
- package/dist/shared/foundation/types/index.d.ts +7 -0
- package/dist/shared/foundation/types/index.js +1 -0
- package/dist/shared/foundation/types/lp-inspect.d.ts +102 -0
- package/dist/shared/foundation/types/lp-inspect.js +1 -0
- package/dist/shared/foundation/types/multicall.d.ts +5 -0
- package/dist/shared/foundation/types/multicall.js +1 -0
- package/dist/shared/foundation/types/private-sale.d.ts +35 -0
- package/dist/shared/foundation/types/private-sale.js +1 -0
- package/dist/shared/foundation/types/quote-helpers.d.ts +17 -0
- package/dist/shared/foundation/types/quote-helpers.js +1 -0
- package/dist/shared/four/tax-token.d.ts +1 -1
- package/dist/shared/four/tax-token.js +27 -7
- package/dist/shared/index.d.ts +6 -0
- package/dist/shared/index.js +4 -0
- package/dist/types/errors.d.ts +27 -0
- package/dist/types/errors.js +34 -0
- package/dist/utils/airdrop-sweep.d.ts +4 -76
- package/dist/utils/airdrop-sweep.js +42 -55
- package/dist/utils/bundle-helpers.d.ts +9 -243
- package/dist/utils/bundle-helpers.js +10 -584
- package/dist/utils/constants.d.ts +5 -61
- package/dist/utils/constants.js +5 -80
- package/dist/utils/contract-factory.d.ts +2 -4
- package/dist/utils/contract-factory.js +25 -18
- package/dist/utils/erc20.d.ts +7 -89
- package/dist/utils/erc20.js +94 -125
- package/dist/utils/errors.d.ts +12 -1
- package/dist/utils/errors.js +60 -1
- package/dist/utils/holders-maker/addresses.d.ts +12 -0
- package/dist/utils/holders-maker/addresses.js +15 -0
- package/dist/utils/holders-maker/buy-tx.d.ts +44 -0
- package/dist/utils/holders-maker/buy-tx.js +278 -0
- package/dist/utils/holders-maker/constants.d.ts +6 -0
- package/dist/utils/holders-maker/constants.js +7 -0
- package/dist/utils/holders-maker/disperse.d.ts +18 -0
- package/dist/utils/holders-maker/disperse.js +90 -0
- package/dist/utils/holders-maker/routing.d.ts +4 -0
- package/dist/utils/holders-maker/routing.js +45 -0
- package/dist/utils/holders-maker/transfer-tx.d.ts +4 -0
- package/dist/utils/holders-maker/transfer-tx.js +67 -0
- package/dist/utils/holders-maker-helpers.d.ts +9 -0
- package/dist/utils/holders-maker-helpers.js +9 -0
- package/dist/utils/holders-maker.d.ts +2 -138
- package/dist/utils/holders-maker.js +26 -661
- package/dist/utils/hop-chains.d.ts +35 -0
- package/dist/utils/hop-chains.js +215 -0
- package/dist/utils/lp-inspect-helpers.d.ts +9 -0
- package/dist/utils/lp-inspect-helpers.js +109 -0
- package/dist/utils/lp-inspect.d.ts +2 -112
- package/dist/utils/lp-inspect.js +73 -223
- package/dist/utils/mpcExclusive.d.ts +2 -5
- package/dist/utils/mpcExclusive.js +4 -3
- package/dist/utils/private-sale.d.ts +2 -58
- package/dist/utils/private-sale.js +4 -15
- package/dist/utils/provider-factory.d.ts +4 -0
- package/dist/utils/provider-factory.js +10 -0
- package/dist/utils/quote-helpers.d.ts +4 -45
- package/dist/utils/quote-helpers.js +17 -74
- package/dist/utils/stealth-transfer.d.ts +2 -28
- package/dist/utils/stealth-transfer.js +31 -15
- package/dist/utils/swap-helpers.d.ts +2 -15
- package/dist/utils/swap-helpers.js +6 -11
- package/dist/utils/types/airdrop-sweep.d.ts +1 -0
- package/dist/utils/types/airdrop-sweep.js +1 -0
- package/dist/utils/types/contract-factory.d.ts +1 -0
- package/dist/utils/types/contract-factory.js +1 -0
- package/dist/utils/types/erc20.d.ts +1 -0
- package/dist/utils/types/erc20.js +1 -0
- package/dist/utils/types/errors.d.ts +1 -0
- package/dist/utils/types/errors.js +1 -0
- package/dist/utils/types/holders-maker.d.ts +1 -0
- package/dist/utils/types/holders-maker.js +1 -0
- package/dist/utils/types/hop-chains.d.ts +8 -0
- package/dist/utils/types/hop-chains.js +1 -0
- package/dist/utils/types/index.d.ts +13 -0
- package/dist/utils/types/index.js +1 -0
- package/dist/utils/types/lp-inspect.d.ts +1 -0
- package/dist/utils/types/lp-inspect.js +1 -0
- package/dist/utils/types/mpc-exclusive.d.ts +5 -0
- package/dist/utils/types/mpc-exclusive.js +1 -0
- package/dist/utils/types/private-sale.d.ts +1 -0
- package/dist/utils/types/private-sale.js +1 -0
- package/dist/utils/types/quote-helpers.d.ts +1 -0
- package/dist/utils/types/quote-helpers.js +1 -0
- package/dist/utils/types/stealth-transfer.d.ts +44 -0
- package/dist/utils/types/stealth-transfer.js +1 -0
- package/dist/utils/types/wallet.d.ts +25 -0
- package/dist/utils/types/wallet.js +1 -0
- package/dist/utils/wallet.d.ts +2 -25
- package/dist/utils/wallet.js +13 -10
- package/dist/vanity/index.d.ts +5 -0
- package/dist/vanity/index.js +5 -0
- package/package.json +160 -4
- package/src/abis/contracts/TaxToken.json +969 -0
- package/src/abis/contracts/TokenManager.json +836 -0
- package/src/abis/contracts/TokenManager2.json +136 -0
- package/src/abis/contracts/TokenManagerHelper3.json +993 -0
- package/dist/shared/abis/TaxToken.json +0 -105
- package/dist/shared/abis/TokenManager2.json +0 -60
- /package/dist/{shared/abis → abis/contracts}/TokenManager.json +0 -0
- /package/dist/{shared/abis → abis/contracts}/TokenManagerHelper3.json +0 -0
|
@@ -5,8 +5,9 @@
|
|
|
5
5
|
* 提供代币 Logo、社交链接、描述等元信息查询
|
|
6
6
|
*/
|
|
7
7
|
import { Contract, JsonRpcProvider } from 'ethers';
|
|
8
|
-
import { ENI_CHAIN_ID, ENI_RPC_URL, } from '../../constants.js';
|
|
9
|
-
import {
|
|
8
|
+
import { ENI_CHAIN_ID, ENI_RPC_URL, LP_FAIR_LAUNCHER_ABI } from '../../constants.js';
|
|
9
|
+
import { LP_FAIR_LAUNCHER_ADDRESS } from '../fair-launch/constants.js';
|
|
10
|
+
import { ERC20_ABI } from '../../../../abis/common.js';
|
|
10
11
|
/**
|
|
11
12
|
* 从 ERC20 合约获取 DAOaaS Portal 代币基本元数据
|
|
12
13
|
* Portal 的 getTokenState 仅返回状态码,name/symbol 从 ERC20 接口获取
|
|
@@ -21,7 +22,9 @@ export async function getTokenMeta(token, rpcUrl = ENI_RPC_URL) {
|
|
|
21
22
|
tokenContract.symbol(),
|
|
22
23
|
]);
|
|
23
24
|
}
|
|
24
|
-
catch {
|
|
25
|
+
catch {
|
|
26
|
+
/* ignore */
|
|
27
|
+
}
|
|
25
28
|
return {
|
|
26
29
|
token,
|
|
27
30
|
name,
|
|
@@ -39,8 +42,6 @@ export async function getTokenMeta(token, rpcUrl = ENI_RPC_URL) {
|
|
|
39
42
|
* FairLaunch 代币的 logo 和 metadata 存储在 LaunchParams 中
|
|
40
43
|
*/
|
|
41
44
|
export async function getFairLaunchTokenMeta(token, rpcUrl = ENI_RPC_URL) {
|
|
42
|
-
const { LP_FAIR_LAUNCHER_ABI } = await import('../../constants.js');
|
|
43
|
-
const { LP_FAIR_LAUNCHER_ADDRESS } = await import('../fair-launch/constants.js');
|
|
44
45
|
const provider = new JsonRpcProvider(rpcUrl, ENI_CHAIN_ID, { staticNetwork: true });
|
|
45
46
|
const launcher = new Contract(LP_FAIR_LAUNCHER_ADDRESS, LP_FAIR_LAUNCHER_ABI, provider);
|
|
46
47
|
const info = await launcher.getTokenInfoByToken(token);
|
|
@@ -50,7 +51,9 @@ export async function getFairLaunchTokenMeta(token, rpcUrl = ENI_RPC_URL) {
|
|
|
50
51
|
meta = JSON.parse(info.metadata);
|
|
51
52
|
}
|
|
52
53
|
}
|
|
53
|
-
catch {
|
|
54
|
+
catch {
|
|
55
|
+
/* metadata may not be valid JSON */
|
|
56
|
+
}
|
|
54
57
|
return {
|
|
55
58
|
token: info.token ?? token,
|
|
56
59
|
name: info.name ?? '',
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* 等同于 BSC EOA 普通模式 / Monad direct 模式
|
|
6
6
|
*/
|
|
7
7
|
import { Wallet, JsonRpcProvider } from 'ethers';
|
|
8
|
-
import { ENI_CHAIN_ID, ENI_RPC_URL, DAOAAS_PORTAL, NATIVE_TRANSFER_GAS_LIMIT
|
|
8
|
+
import { ENI_CHAIN_ID, ENI_RPC_URL, DAOAAS_PORTAL, NATIVE_TRANSFER_GAS_LIMIT } from '../../constants.js';
|
|
9
9
|
import { encodeBuyCall, encodeSellCall, applySlippage, DaoaasPortalQuery } from './portal.js';
|
|
10
10
|
import { getProfitRecipient, getProfitRateBps, calculateProfitAmount } from '../../../../shared/constants/profit.js';
|
|
11
11
|
const NORMAL_PROFIT_BPS = getProfitRateBps('normal');
|
|
@@ -45,7 +45,7 @@ export async function directBuy(params) {
|
|
|
45
45
|
const provider = new JsonRpcProvider(params.rpcUrl ?? ENI_RPC_URL, ENI_CHAIN_ID, { staticNetwork: true });
|
|
46
46
|
const wallet = new Wallet(params.privateKey, provider);
|
|
47
47
|
const calldata = encodeBuyCall(params.token, params.amountOutMin ?? 0n);
|
|
48
|
-
const nonce = params.nonce ?? await wallet.getNonce('pending');
|
|
48
|
+
const nonce = params.nonce ?? (await wallet.getNonce('pending'));
|
|
49
49
|
const feeData = await provider.getFeeData();
|
|
50
50
|
const tx = await wallet.signTransaction({
|
|
51
51
|
to: DAOAAS_PORTAL,
|
|
@@ -70,7 +70,7 @@ export async function directSell(params) {
|
|
|
70
70
|
const provider = new JsonRpcProvider(params.rpcUrl ?? ENI_RPC_URL, ENI_CHAIN_ID, { staticNetwork: true });
|
|
71
71
|
const wallet = new Wallet(params.privateKey, provider);
|
|
72
72
|
const calldata = encodeSellCall(params.token, params.tokenAmount, params.amountOutMin ?? 0n);
|
|
73
|
-
const nonce = params.nonce ?? await wallet.getNonce('pending');
|
|
73
|
+
const nonce = params.nonce ?? (await wallet.getNonce('pending'));
|
|
74
74
|
const feeData = await provider.getFeeData();
|
|
75
75
|
const tx = await wallet.signTransaction({
|
|
76
76
|
to: DAOAAS_PORTAL,
|
|
@@ -260,7 +260,7 @@ export async function directSellForSubmit(params) {
|
|
|
260
260
|
};
|
|
261
261
|
}
|
|
262
262
|
export async function directBatchBuyForSubmit(params) {
|
|
263
|
-
const { rpcUrl = ENI_RPC_URL, token, privateKeys: rawKeys, amounts: rawAmounts, slippageBps = 100, gasPrice } = params;
|
|
263
|
+
const { rpcUrl = ENI_RPC_URL, token, privateKeys: rawKeys, amounts: rawAmounts, slippageBps = 100, gasPrice, } = params;
|
|
264
264
|
if (rawKeys.length !== rawAmounts.length) {
|
|
265
265
|
throw new Error(`privateKeys.length (${rawKeys.length}) !== amounts.length (${rawAmounts.length})`);
|
|
266
266
|
}
|
|
@@ -277,8 +277,8 @@ export async function directBatchBuyForSubmit(params) {
|
|
|
277
277
|
const totalFlowRaw = rawAmounts.reduce((sum, amount) => sum + amount, 0n);
|
|
278
278
|
const profitAmountFull = calculateProfitAmount(totalFlowRaw, NORMAL_PROFIT_BPS) + profitTxGasCost;
|
|
279
279
|
const maxPayerIdx = pickMaxAmountIndex(rawAmounts);
|
|
280
|
-
const wallets = rawKeys.map(pk => new Wallet(pk, provider));
|
|
281
|
-
const balances = await Promise.all(wallets.map(w => provider.getBalance(w.address)));
|
|
280
|
+
const wallets = rawKeys.map((pk) => new Wallet(pk, provider));
|
|
281
|
+
const balances = await Promise.all(wallets.map((w) => provider.getBalance(w.address)));
|
|
282
282
|
let privateKeys = rawKeys;
|
|
283
283
|
let amounts = rawAmounts;
|
|
284
284
|
const validIndices = [];
|
|
@@ -287,7 +287,6 @@ export async function directBatchBuyForSubmit(params) {
|
|
|
287
287
|
if (i === maxPayerIdx)
|
|
288
288
|
required += profitAmountFull + NATIVE_TRANSFER_GAS_LIMIT * maxFeePerGas;
|
|
289
289
|
if (balances[i] < required) {
|
|
290
|
-
console.warn(`[DAOAAS BatchBuy] 钱包 ${wallets[i].address.slice(0, 10)} 余额不足: 余额=${balances[i]}, 需要=${required},跳过`);
|
|
291
290
|
continue;
|
|
292
291
|
}
|
|
293
292
|
validIndices.push(i);
|
|
@@ -296,9 +295,8 @@ export async function directBatchBuyForSubmit(params) {
|
|
|
296
295
|
throw new Error('所有钱包余额不足(含 swap + gas),无法执行 DAOAAS 买入');
|
|
297
296
|
}
|
|
298
297
|
if (validIndices.length < rawKeys.length) {
|
|
299
|
-
privateKeys = validIndices.map(i => rawKeys[i]);
|
|
300
|
-
amounts = validIndices.map(i => rawAmounts[i]);
|
|
301
|
-
console.log(`[DAOAAS BatchBuy] 余额预检: ${rawKeys.length - validIndices.length} 个钱包被跳过, 剩余 ${validIndices.length} 个`);
|
|
298
|
+
privateKeys = validIndices.map((i) => rawKeys[i]);
|
|
299
|
+
amounts = validIndices.map((i) => rawAmounts[i]);
|
|
302
300
|
}
|
|
303
301
|
const transactions = [];
|
|
304
302
|
const totalFlow = amounts.reduce((sum, amount) => sum + amount, 0n);
|
|
@@ -306,9 +304,7 @@ export async function directBatchBuyForSubmit(params) {
|
|
|
306
304
|
for (let i = 0; i < privateKeys.length; i++) {
|
|
307
305
|
const wallet = new Wallet(privateKeys[i], provider);
|
|
308
306
|
const preview = await query.previewBuy(token, amounts[i]);
|
|
309
|
-
const effectiveSlippage = isBatch
|
|
310
|
-
? Math.min(9500, slippageBps + i * 2000)
|
|
311
|
-
: slippageBps;
|
|
307
|
+
const effectiveSlippage = isBatch ? Math.min(9500, slippageBps + i * 2000) : slippageBps;
|
|
312
308
|
const minOut = applySlippage(preview, effectiveSlippage);
|
|
313
309
|
const calldata = encodeBuyCall(token, minOut);
|
|
314
310
|
const nonce = await wallet.getNonce('pending');
|
|
@@ -337,7 +333,7 @@ export async function directBatchBuyForSubmit(params) {
|
|
|
337
333
|
});
|
|
338
334
|
return {
|
|
339
335
|
transactions,
|
|
340
|
-
signedTransactions: [...transactions.map(tx => tx.signedTx), profitTx.signedTx],
|
|
336
|
+
signedTransactions: [...transactions.map((tx) => tx.signedTx), profitTx.signedTx],
|
|
341
337
|
totalGasCost: swapGasLimit * maxFeePerGas * BigInt(transactions.length) + NATIVE_TRANSFER_GAS_LIMIT * maxFeePerGas,
|
|
342
338
|
metadata: formatSubmitMetadata(totalFlow, profitAmount),
|
|
343
339
|
};
|
|
@@ -356,19 +352,7 @@ export async function directBatchSellForSubmit(params) {
|
|
|
356
352
|
const maxFeePerGas = gasPrice ?? feeData.maxFeePerGas ?? feeData.gasPrice ?? 1000000000n;
|
|
357
353
|
const maxPriorityFeePerGas = feeData.maxPriorityFeePerGas ?? 0n;
|
|
358
354
|
const swapGasLimit = 300000n;
|
|
359
|
-
const
|
|
360
|
-
const profitGasCost = NATIVE_TRANSFER_GAS_LIMIT * maxFeePerGas;
|
|
361
|
-
const wallets = privateKeys.map(pk => new Wallet(pk, provider));
|
|
362
|
-
const balances = await Promise.all(wallets.map(w => provider.getBalance(w.address)));
|
|
363
|
-
const maxPayerIdx = pickMaxAmountIndex(tokenAmounts);
|
|
364
|
-
for (let i = 0; i < wallets.length; i++) {
|
|
365
|
-
let required = swapGasCost;
|
|
366
|
-
if (i === maxPayerIdx)
|
|
367
|
-
required += profitGasCost;
|
|
368
|
-
if (balances[i] < required) {
|
|
369
|
-
console.warn(`[DAOAAS BatchSell] 钱包 ${wallets[i].address.slice(0, 10)} 原生余额不足 gas: 余额=${balances[i]}, 需要=${required},可能导致交易失败`);
|
|
370
|
-
}
|
|
371
|
-
}
|
|
355
|
+
const wallets = privateKeys.map((pk) => new Wallet(pk, provider));
|
|
372
356
|
const transactions = [];
|
|
373
357
|
const estimatedOuts = [];
|
|
374
358
|
const isBatch = privateKeys.length > 1;
|
|
@@ -376,9 +360,7 @@ export async function directBatchSellForSubmit(params) {
|
|
|
376
360
|
const wallet = wallets[i];
|
|
377
361
|
const preview = await query.previewSell(token, tokenAmounts[i]);
|
|
378
362
|
estimatedOuts.push(preview);
|
|
379
|
-
const effectiveSlippage = isBatch
|
|
380
|
-
? Math.min(9500, slippageBps + i * 2000)
|
|
381
|
-
: slippageBps;
|
|
363
|
+
const effectiveSlippage = isBatch ? Math.min(9500, slippageBps + i * 2000) : slippageBps;
|
|
382
364
|
const minOut = applySlippage(preview, effectiveSlippage);
|
|
383
365
|
const calldata = encodeSellCall(token, tokenAmounts[i], minOut);
|
|
384
366
|
const nonce = await wallet.getNonce('pending');
|
|
@@ -408,7 +390,7 @@ export async function directBatchSellForSubmit(params) {
|
|
|
408
390
|
});
|
|
409
391
|
return {
|
|
410
392
|
transactions,
|
|
411
|
-
signedTransactions: [...transactions.map(tx => tx.signedTx), profitTx.signedTx],
|
|
393
|
+
signedTransactions: [...transactions.map((tx) => tx.signedTx), profitTx.signedTx],
|
|
412
394
|
totalGasCost: 300000n * maxFeePerGas * BigInt(transactions.length) + NATIVE_TRANSFER_GAS_LIMIT * maxFeePerGas,
|
|
413
395
|
metadata: formatSubmitMetadata(totalFlow, profitAmount),
|
|
414
396
|
};
|
|
@@ -439,9 +421,9 @@ export async function directQuickSwapForSubmit(params) {
|
|
|
439
421
|
if (params.sellerKeys.length > 1) {
|
|
440
422
|
for (let i = 1; i < params.sellerKeys.length; i++) {
|
|
441
423
|
const otherWallet = new Wallet(params.sellerKeys[i], provider);
|
|
442
|
-
const otherSellTxs = sellResult.transactions.filter(tx => tx.from.toLowerCase() === otherWallet.address.toLowerCase());
|
|
424
|
+
const otherSellTxs = sellResult.transactions.filter((tx) => tx.from.toLowerCase() === otherWallet.address.toLowerCase());
|
|
443
425
|
const otherNextNonce = otherSellTxs.length > 0
|
|
444
|
-
? Math.max(...otherSellTxs.map(tx => tx.nonce)) + 1
|
|
426
|
+
? Math.max(...otherSellTxs.map((tx) => tx.nonce)) + 1
|
|
445
427
|
: await otherWallet.getNonce('pending');
|
|
446
428
|
const otherBalance = await provider.getBalance(otherWallet.address);
|
|
447
429
|
const reserveGas = NATIVE_TRANSFER_GAS_LIMIT * maxFeePerGas;
|
|
@@ -465,23 +447,23 @@ export async function directQuickSwapForSubmit(params) {
|
|
|
465
447
|
const hopCount = params.hopCount ?? 0;
|
|
466
448
|
const distributeHopWallets = [];
|
|
467
449
|
if (params.buyerKeys.length > 0) {
|
|
468
|
-
const primarySellTxs = sellResult.transactions.filter(tx => tx.from.toLowerCase() === primarySellerAddress);
|
|
450
|
+
const primarySellTxs = sellResult.transactions.filter((tx) => tx.from.toLowerCase() === primarySellerAddress);
|
|
469
451
|
let primaryNextNonce = primarySellTxs.length > 0
|
|
470
|
-
? Math.max(...primarySellTxs.map(tx => tx.nonce)) + 1
|
|
452
|
+
? Math.max(...primarySellTxs.map((tx) => tx.nonce)) + 1
|
|
471
453
|
: await primarySellerWallet.getNonce('pending');
|
|
472
454
|
const gasForBuy = 300000n * maxFeePerGas;
|
|
473
455
|
const hopGasFee = NATIVE_TRANSFER_GAS_LIMIT * maxFeePerGas;
|
|
474
456
|
const totalFlow = params.buyAmounts.reduce((sum, a) => sum + a, 0n);
|
|
475
457
|
const profitTxGasCost = NATIVE_TRANSFER_GAS_LIMIT * maxFeePerGas;
|
|
476
458
|
const profitAmount = calculateProfitAmount(totalFlow, NORMAL_PROFIT_BPS) + profitTxGasCost;
|
|
477
|
-
const profitGasPerBuyer =
|
|
459
|
+
const profitGasPerBuyer = NATIVE_TRANSFER_GAS_LIMIT * maxFeePerGas;
|
|
478
460
|
for (let i = 0; i < params.buyerKeys.length; i++) {
|
|
479
461
|
const buyerAddress = new Wallet(params.buyerKeys[i]).address;
|
|
480
462
|
const transferAmount = params.buyAmounts[i];
|
|
481
463
|
if (transferAmount <= 0n)
|
|
482
464
|
continue;
|
|
483
465
|
const isMaxBuyer = i === pickMaxAmountIndex(params.buyAmounts);
|
|
484
|
-
const extraForProfit = isMaxBuyer ?
|
|
466
|
+
const extraForProfit = isMaxBuyer ? profitAmount + profitGasPerBuyer : 0n;
|
|
485
467
|
const baseTransfer = transferAmount + gasForBuy + extraForProfit;
|
|
486
468
|
if (hopCount <= 0) {
|
|
487
469
|
const signedTx = await primarySellerWallet.signTransaction({
|
|
@@ -504,8 +486,8 @@ export async function directQuickSwapForSubmit(params) {
|
|
|
504
486
|
hops.push({ address: w.address, privateKey: w.privateKey });
|
|
505
487
|
}
|
|
506
488
|
distributeHopWallets.push(hops);
|
|
507
|
-
const fullChain = [primarySellerWallet, ...hops.map(h => new Wallet(h.privateKey))];
|
|
508
|
-
const addresses = [...fullChain.map(w => w.address), buyerAddress];
|
|
489
|
+
const fullChain = [primarySellerWallet, ...hops.map((h) => new Wallet(h.privateKey))];
|
|
490
|
+
const addresses = [...fullChain.map((w) => w.address), buyerAddress];
|
|
509
491
|
for (let j = 0; j < addresses.length - 1; j++) {
|
|
510
492
|
const fromWallet = fullChain[j];
|
|
511
493
|
const toAddress = addresses[j + 1];
|
|
@@ -545,8 +527,10 @@ export async function directQuickSwapForSubmit(params) {
|
|
|
545
527
|
const payerIndex = pickMaxAmountIndex(params.buyAmounts);
|
|
546
528
|
const payerKey = params.buyerKeys[payerIndex] || primarySellerKey;
|
|
547
529
|
const payerAddress = new Wallet(payerKey).address.toLowerCase();
|
|
548
|
-
const payerTxs = allTxs.filter(tx => tx.from.toLowerCase() === payerAddress);
|
|
549
|
-
const payerNonce = payerTxs.length > 0
|
|
530
|
+
const payerTxs = allTxs.filter((tx) => tx.from.toLowerCase() === payerAddress);
|
|
531
|
+
const payerNonce = payerTxs.length > 0
|
|
532
|
+
? Math.max(...payerTxs.map((tx) => tx.nonce)) + 1
|
|
533
|
+
: await new Wallet(payerKey, provider).getNonce('pending');
|
|
550
534
|
const profitTx = await buildRevenueTail({
|
|
551
535
|
rpcUrl,
|
|
552
536
|
payerKey,
|
|
@@ -558,7 +542,7 @@ export async function directQuickSwapForSubmit(params) {
|
|
|
558
542
|
const distributeGasCost = NATIVE_TRANSFER_GAS_LIMIT * maxFeePerGas * BigInt(distributeTxs.length);
|
|
559
543
|
return {
|
|
560
544
|
transactions: allTxs,
|
|
561
|
-
signedTransactions: [...allTxs.map(tx => tx.signedTx), profitTx.signedTx],
|
|
545
|
+
signedTransactions: [...allTxs.map((tx) => tx.signedTx), profitTx.signedTx],
|
|
562
546
|
totalGasCost: sellResult.totalGasCost + distributeGasCost + buyResult.totalGasCost + NATIVE_TRANSFER_GAS_LIMIT * maxFeePerGas,
|
|
563
547
|
metadata: formatSubmitMetadata(totalFlow, profitAmount),
|
|
564
548
|
...(distributeHopWallets.length > 0 ? { hopWallets: distributeHopWallets } : {}),
|
|
@@ -572,11 +556,11 @@ export async function directQuickSwapForSubmit(params) {
|
|
|
572
556
|
* ENI 不需要多跳,直接转到收益地址
|
|
573
557
|
*/
|
|
574
558
|
export async function buildProfitTransfer(params) {
|
|
575
|
-
const { rpcUrl = ENI_RPC_URL, payerKey, profitAmount, gasPrice, nonce: explicitNonce, maxFeePerGas, maxPriorityFeePerGas } = params;
|
|
559
|
+
const { rpcUrl = ENI_RPC_URL, payerKey, profitAmount, gasPrice, nonce: explicitNonce, maxFeePerGas, maxPriorityFeePerGas, } = params;
|
|
576
560
|
const provider = new JsonRpcProvider(rpcUrl, ENI_CHAIN_ID, { staticNetwork: true });
|
|
577
561
|
const wallet = new Wallet(payerKey, provider);
|
|
578
562
|
const feeData = await provider.getFeeData();
|
|
579
|
-
const nonce = explicitNonce ?? await wallet.getNonce('pending');
|
|
563
|
+
const nonce = explicitNonce ?? (await wallet.getNonce('pending'));
|
|
580
564
|
const resolvedMaxFeePerGas = maxFeePerGas ?? gasPrice ?? feeData.maxFeePerGas ?? feeData.gasPrice ?? 1000000000n;
|
|
581
565
|
const resolvedMaxPriorityFeePerGas = maxPriorityFeePerGas ?? feeData.maxPriorityFeePerGas ?? 0n;
|
|
582
566
|
const signedTx = await wallet.signTransaction({
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* 接口与 Flap Portal 不兼容,独立实现
|
|
6
6
|
*/
|
|
7
7
|
import { Contract, Interface, JsonRpcProvider, formatEther, parseEther } from 'ethers';
|
|
8
|
-
import { DAOAAS_PORTAL, DAOAAS_PORTAL_ABI, ENI_CHAIN_ID, ENI_MULTICALL3, ENI_RPC_URL
|
|
9
|
-
import { ERC20_ABI, MULTICALL3_ABI } from '../../../../
|
|
8
|
+
import { DAOAAS_PORTAL, DAOAAS_PORTAL_ABI, ENI_CHAIN_ID, ENI_MULTICALL3, ENI_RPC_URL } from '../../constants.js';
|
|
9
|
+
import { ERC20_ABI, MULTICALL3_ABI } from '../../../../abis/common.js';
|
|
10
10
|
const portalIface = new Interface(DAOAAS_PORTAL_ABI);
|
|
11
11
|
const erc20Iface = new Interface(ERC20_ABI);
|
|
12
12
|
const multicallIface = new Interface(MULTICALL3_ABI);
|
|
@@ -34,6 +34,10 @@ export function encodeTransferCall(to, amount) {
|
|
|
34
34
|
return erc20Iface.encodeFunctionData('transfer', [to, amount]);
|
|
35
35
|
}
|
|
36
36
|
export class DaoaasPortalQuery {
|
|
37
|
+
provider;
|
|
38
|
+
portal;
|
|
39
|
+
portalAddress;
|
|
40
|
+
multicall3Address;
|
|
37
41
|
constructor(config = {}) {
|
|
38
42
|
const rpcUrl = config.rpcUrl ?? ENI_RPC_URL;
|
|
39
43
|
this.provider = new JsonRpcProvider(rpcUrl, ENI_CHAIN_ID, { staticNetwork: true });
|
|
@@ -56,7 +60,7 @@ export class DaoaasPortalQuery {
|
|
|
56
60
|
/** 获取代币完整状态(链上 getTokenState 仅返回 uint256 状态码,其余数据分别查询) */
|
|
57
61
|
async getTokenState(token) {
|
|
58
62
|
const status = Number(await this.portal.getTokenState(token));
|
|
59
|
-
const price = await this.portal.getPrice(token);
|
|
63
|
+
const price = (await this.portal.getPrice(token));
|
|
60
64
|
const tokenContract = new Contract(token, ERC20_ABI, this.provider);
|
|
61
65
|
const [totalSupply, portalBalance, name, symbol] = await Promise.all([
|
|
62
66
|
tokenContract.totalSupply(),
|
|
@@ -69,7 +73,7 @@ export class DaoaasPortalQuery {
|
|
|
69
73
|
}
|
|
70
74
|
/** 批量获取钱包 EGAS 余额 */
|
|
71
75
|
async getMultipleEgasBalances(addresses) {
|
|
72
|
-
const calls = addresses.map(addr => ({
|
|
76
|
+
const calls = addresses.map((addr) => ({
|
|
73
77
|
target: this.multicall3Address,
|
|
74
78
|
allowFailure: true,
|
|
75
79
|
callData: multicallIface.encodeFunctionData('getEthBalance', [addr]),
|
|
@@ -85,7 +89,7 @@ export class DaoaasPortalQuery {
|
|
|
85
89
|
}
|
|
86
90
|
/** 批量获取 ERC20 余额 */
|
|
87
91
|
async getMultipleTokenBalances(token, addresses) {
|
|
88
|
-
const calls = addresses.map(addr => ({
|
|
92
|
+
const calls = addresses.map((addr) => ({
|
|
89
93
|
target: token,
|
|
90
94
|
allowFailure: true,
|
|
91
95
|
callData: erc20Iface.encodeFunctionData('balanceOf', [addr]),
|
|
@@ -101,7 +105,7 @@ export class DaoaasPortalQuery {
|
|
|
101
105
|
}
|
|
102
106
|
/** 批量获取 ERC20 allowance */
|
|
103
107
|
async getMultipleAllowances(token, owners, spender) {
|
|
104
|
-
const calls = owners.map(owner => ({
|
|
108
|
+
const calls = owners.map((owner) => ({
|
|
105
109
|
target: token,
|
|
106
110
|
allowFailure: true,
|
|
107
111
|
callData: erc20Iface.encodeFunctionData('allowance', [owner, spender]),
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { Wallet, JsonRpcProvider, Contract, ethers, Interface } from 'ethers';
|
|
11
11
|
import { ENI_CHAIN_ID, ENI_RPC_URL, WEGAS, NATIVE_TRANSFER_GAS_LIMIT, DSWAP_V2_ROUTER, DSWAP_V2_FACTORY, DSWAP_V2_ROUTER_ABI, DSWAP_V2_FACTORY_ABI, DSWAP_V2_PAIR_ABI, } from '../../constants.js';
|
|
12
|
-
import { ERC20_ABI } from '../../../../
|
|
12
|
+
import { ERC20_ABI } from '../../../../abis/common.js';
|
|
13
13
|
import { getProfitRecipient, getProfitRateBps, calculateProfitAmount } from '../../../../shared/constants/profit.js';
|
|
14
14
|
const DEFAULT_DEADLINE_MINUTES = 20;
|
|
15
15
|
const DEFAULT_SLIPPAGE_PCT = 5;
|
|
@@ -25,7 +25,7 @@ function getDeadline(minutes) {
|
|
|
25
25
|
}
|
|
26
26
|
function applySlippage(amount, slippagePct) {
|
|
27
27
|
const pct = Math.max(0, Math.min(100, slippagePct));
|
|
28
|
-
return amount * BigInt(100 - Math.floor(pct)) / 100n;
|
|
28
|
+
return (amount * BigInt(100 - Math.floor(pct))) / 100n;
|
|
29
29
|
}
|
|
30
30
|
async function signProfitTx(params) {
|
|
31
31
|
return params.wallet.signTransaction({
|
|
@@ -64,17 +64,11 @@ export async function getLPPairInfo(params) {
|
|
|
64
64
|
]);
|
|
65
65
|
let userLPBalance = 0n;
|
|
66
66
|
if (params.userAddress) {
|
|
67
|
-
userLPBalance = await pair.balanceOf(params.userAddress);
|
|
67
|
+
userLPBalance = (await pair.balanceOf(params.userAddress));
|
|
68
68
|
}
|
|
69
|
-
const userShare = totalSupply > 0n
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
const userToken0Amount = totalSupply > 0n
|
|
73
|
-
? reserves[0] * userLPBalance / totalSupply
|
|
74
|
-
: 0n;
|
|
75
|
-
const userToken1Amount = totalSupply > 0n
|
|
76
|
-
? reserves[1] * userLPBalance / totalSupply
|
|
77
|
-
: 0n;
|
|
69
|
+
const userShare = totalSupply > 0n ? Number((userLPBalance * 10000n) / totalSupply) / 10000 : 0;
|
|
70
|
+
const userToken0Amount = totalSupply > 0n ? (reserves[0] * userLPBalance) / totalSupply : 0n;
|
|
71
|
+
const userToken1Amount = totalSupply > 0n ? (reserves[1] * userLPBalance) / totalSupply : 0n;
|
|
78
72
|
return {
|
|
79
73
|
pairAddress: pairAddr,
|
|
80
74
|
token0,
|
|
@@ -89,7 +83,7 @@ export async function getLPPairInfo(params) {
|
|
|
89
83
|
};
|
|
90
84
|
}
|
|
91
85
|
export async function batchGetLPPairInfo(params) {
|
|
92
|
-
return Promise.all(params.tokens.map(token => getLPPairInfo({ rpcUrl: params.rpcUrl, token, userAddress: params.userAddress })));
|
|
86
|
+
return Promise.all(params.tokens.map((token) => getLPPairInfo({ rpcUrl: params.rpcUrl, token, userAddress: params.userAddress })));
|
|
93
87
|
}
|
|
94
88
|
// ============================================================================
|
|
95
89
|
// 创建/添加 流动性 — EGAS + Token
|
|
@@ -123,7 +117,12 @@ export async function addLiquidityETHForSubmit(params) {
|
|
|
123
117
|
const amountTokenMin = applySlippage(amountTokenDesired, slippage);
|
|
124
118
|
const amountETHMin = applySlippage(amountETHDesired, slippage);
|
|
125
119
|
const addLiqData = routerIface.encodeFunctionData('addLiquidityETH', [
|
|
126
|
-
token,
|
|
120
|
+
token,
|
|
121
|
+
amountTokenDesired,
|
|
122
|
+
amountTokenMin,
|
|
123
|
+
amountETHMin,
|
|
124
|
+
wallet.address,
|
|
125
|
+
deadline,
|
|
127
126
|
]);
|
|
128
127
|
const addLiqTx = await wallet.signTransaction({
|
|
129
128
|
to: DSWAP_V2_ROUTER,
|
|
@@ -140,7 +139,13 @@ export async function addLiquidityETHForSubmit(params) {
|
|
|
140
139
|
const profitTxGasCost = NATIVE_TRANSFER_GAS_LIMIT * maxFeePerGas;
|
|
141
140
|
const profitAmount = calculateProfitAmount(amountETHDesired, PROFIT_BPS) + profitTxGasCost;
|
|
142
141
|
if (profitAmount > 0n) {
|
|
143
|
-
const profitTx = await signProfitTx({
|
|
142
|
+
const profitTx = await signProfitTx({
|
|
143
|
+
wallet,
|
|
144
|
+
nonce: currentNonce,
|
|
145
|
+
profitAmount,
|
|
146
|
+
maxFeePerGas,
|
|
147
|
+
maxPriorityFeePerGas,
|
|
148
|
+
});
|
|
144
149
|
signedTxs.push(profitTx);
|
|
145
150
|
}
|
|
146
151
|
return { signedTransactions: signedTxs };
|
|
@@ -165,7 +170,7 @@ export async function removeLiquidityETHForSubmit(params) {
|
|
|
165
170
|
const pair = new Contract(pairAddr, DSWAP_V2_PAIR_ABI, provider);
|
|
166
171
|
let liquidity = params.liquidity;
|
|
167
172
|
if (liquidity === 0n) {
|
|
168
|
-
liquidity = await pair.balanceOf(wallet.address);
|
|
173
|
+
liquidity = (await pair.balanceOf(wallet.address));
|
|
169
174
|
if (liquidity === 0n)
|
|
170
175
|
throw new Error('No LP tokens to remove');
|
|
171
176
|
}
|
|
@@ -177,8 +182,8 @@ export async function removeLiquidityETHForSubmit(params) {
|
|
|
177
182
|
const isToken0 = token.toLowerCase() === token0.toLowerCase();
|
|
178
183
|
const reserveToken = isToken0 ? reserves[0] : reserves[1];
|
|
179
184
|
const reserveETH = isToken0 ? reserves[1] : reserves[0];
|
|
180
|
-
const amountTokenExpected = reserveToken * liquidity / totalSupply;
|
|
181
|
-
const amountETHExpected = reserveETH * liquidity / totalSupply;
|
|
185
|
+
const amountTokenExpected = (reserveToken * liquidity) / totalSupply;
|
|
186
|
+
const amountETHExpected = (reserveETH * liquidity) / totalSupply;
|
|
182
187
|
const amountTokenMin = applySlippage(amountTokenExpected, slippage);
|
|
183
188
|
const amountETHMin = applySlippage(amountETHExpected, slippage);
|
|
184
189
|
let currentNonce = await wallet.getNonce();
|
|
@@ -198,7 +203,12 @@ export async function removeLiquidityETHForSubmit(params) {
|
|
|
198
203
|
signedTxs.push(approveTx);
|
|
199
204
|
}
|
|
200
205
|
const removeLiqData = routerIface.encodeFunctionData('removeLiquidityETHSupportingFeeOnTransferTokens', [
|
|
201
|
-
token,
|
|
206
|
+
token,
|
|
207
|
+
liquidity,
|
|
208
|
+
amountTokenMin,
|
|
209
|
+
amountETHMin,
|
|
210
|
+
wallet.address,
|
|
211
|
+
deadline,
|
|
202
212
|
]);
|
|
203
213
|
const removeLiqTx = await wallet.signTransaction({
|
|
204
214
|
to: DSWAP_V2_ROUTER,
|
|
@@ -215,7 +225,13 @@ export async function removeLiquidityETHForSubmit(params) {
|
|
|
215
225
|
const profitTxGasCost = NATIVE_TRANSFER_GAS_LIMIT * maxFeePerGas;
|
|
216
226
|
const profitAmount = calculateProfitAmount(amountETHExpected, PROFIT_BPS) + profitTxGasCost;
|
|
217
227
|
if (profitAmount > 0n) {
|
|
218
|
-
const profitTx = await signProfitTx({
|
|
228
|
+
const profitTx = await signProfitTx({
|
|
229
|
+
wallet,
|
|
230
|
+
nonce: currentNonce,
|
|
231
|
+
profitAmount,
|
|
232
|
+
maxFeePerGas,
|
|
233
|
+
maxPriorityFeePerGas,
|
|
234
|
+
});
|
|
219
235
|
signedTxs.push(profitTx);
|
|
220
236
|
}
|
|
221
237
|
return { signedTransactions: signedTxs };
|
|
@@ -234,7 +250,10 @@ export async function addLiquidityForSubmit(params) {
|
|
|
234
250
|
const maxPriorityFeePerGas = feeData.maxPriorityFeePerGas ?? 0n;
|
|
235
251
|
let currentNonce = await wallet.getNonce();
|
|
236
252
|
const signedTxs = [];
|
|
237
|
-
for (const [token, amount] of [
|
|
253
|
+
for (const [token, amount] of [
|
|
254
|
+
[tokenA, amountADesired],
|
|
255
|
+
[tokenB, amountBDesired],
|
|
256
|
+
]) {
|
|
238
257
|
const erc20 = new Contract(token, ERC20_ABI, provider);
|
|
239
258
|
const allowance = await erc20.allowance(wallet.address, DSWAP_V2_ROUTER);
|
|
240
259
|
if (allowance < amount) {
|
|
@@ -254,7 +273,14 @@ export async function addLiquidityForSubmit(params) {
|
|
|
254
273
|
const amountAMin = applySlippage(amountADesired, slippage);
|
|
255
274
|
const amountBMin = applySlippage(amountBDesired, slippage);
|
|
256
275
|
const addLiqData = routerIface.encodeFunctionData('addLiquidity', [
|
|
257
|
-
tokenA,
|
|
276
|
+
tokenA,
|
|
277
|
+
tokenB,
|
|
278
|
+
amountADesired,
|
|
279
|
+
amountBDesired,
|
|
280
|
+
amountAMin,
|
|
281
|
+
amountBMin,
|
|
282
|
+
wallet.address,
|
|
283
|
+
deadline,
|
|
258
284
|
]);
|
|
259
285
|
const addLiqTx = await wallet.signTransaction({
|
|
260
286
|
to: DSWAP_V2_ROUTER,
|
|
@@ -290,7 +316,7 @@ export async function removeLiquidityForSubmit(params) {
|
|
|
290
316
|
const pair = new Contract(pairAddr, DSWAP_V2_PAIR_ABI, provider);
|
|
291
317
|
let liquidity = params.liquidity;
|
|
292
318
|
if (liquidity === 0n) {
|
|
293
|
-
liquidity = await pair.balanceOf(wallet.address);
|
|
319
|
+
liquidity = (await pair.balanceOf(wallet.address));
|
|
294
320
|
if (liquidity === 0n)
|
|
295
321
|
throw new Error('No LP tokens to remove');
|
|
296
322
|
}
|
|
@@ -302,8 +328,8 @@ export async function removeLiquidityForSubmit(params) {
|
|
|
302
328
|
const isAToken0 = tokenA.toLowerCase() === token0.toLowerCase();
|
|
303
329
|
const reserveA = isAToken0 ? reserves[0] : reserves[1];
|
|
304
330
|
const reserveB = isAToken0 ? reserves[1] : reserves[0];
|
|
305
|
-
const amountAMin = applySlippage(reserveA * liquidity / totalSupply, slippage);
|
|
306
|
-
const amountBMin = applySlippage(reserveB * liquidity / totalSupply, slippage);
|
|
331
|
+
const amountAMin = applySlippage((reserveA * liquidity) / totalSupply, slippage);
|
|
332
|
+
const amountBMin = applySlippage((reserveB * liquidity) / totalSupply, slippage);
|
|
307
333
|
let currentNonce = await wallet.getNonce();
|
|
308
334
|
const signedTxs = [];
|
|
309
335
|
const lpAllowance = await pair.allowance(wallet.address, DSWAP_V2_ROUTER);
|
|
@@ -321,7 +347,13 @@ export async function removeLiquidityForSubmit(params) {
|
|
|
321
347
|
signedTxs.push(approveTx);
|
|
322
348
|
}
|
|
323
349
|
const removeLiqData = routerIface.encodeFunctionData('removeLiquidity', [
|
|
324
|
-
tokenA,
|
|
350
|
+
tokenA,
|
|
351
|
+
tokenB,
|
|
352
|
+
liquidity,
|
|
353
|
+
amountAMin,
|
|
354
|
+
amountBMin,
|
|
355
|
+
wallet.address,
|
|
356
|
+
deadline,
|
|
325
357
|
]);
|
|
326
358
|
const removeLiqTx = await wallet.signTransaction({
|
|
327
359
|
to: DSWAP_V2_ROUTER,
|
|
@@ -9,5 +9,5 @@ export type { LaunchParams, FairLaunchTokenInfo, FairLaunchQueryConfig, FairLaun
|
|
|
9
9
|
export { LP_FAIR_LAUNCHER_ADDRESS, TOKEN_FACTORY_ADDRESS, POOL_FACTORY_ADDRESS, RATE_BASE, DEAD_ADDRESS, QUOTE_TOKENS, DEFAULT_LOCK_TIME, DEFAULT_RELEASE_PERIOD, DEFAULT_INITIAL_LP, } from './constants.js';
|
|
10
10
|
export { standardPreset, liquidityProvidingPreset, dividendPreset, dividendBuybackPreset, deflationaryPreset, validateLaunchParams, detectLaunchType, } from './presets.js';
|
|
11
11
|
export { FairLauncherQuery, encodeLaunchTokenCall, launchToken, launchTokenForSubmit, setTokenTradeStartTime, setTokenTradeStartTimeForSubmit, } from './launcher.js';
|
|
12
|
-
export { FairPoolQuery, claimFromPool, claimFromPoolForSubmit, batchClaimForSubmit
|
|
13
|
-
export type { PoolOverview, PoolClaimParams, PoolClaimResult
|
|
12
|
+
export { FairPoolQuery, claimFromPool, claimFromPoolForSubmit, batchClaimForSubmit } from './pool.js';
|
|
13
|
+
export type { PoolOverview, PoolClaimParams, PoolClaimResult } from './pool.js';
|
|
@@ -23,4 +23,4 @@ export { FairLauncherQuery, encodeLaunchTokenCall, launchToken, launchTokenForSu
|
|
|
23
23
|
// ============================================================================
|
|
24
24
|
// 池 (Pool)
|
|
25
25
|
// ============================================================================
|
|
26
|
-
export { FairPoolQuery, claimFromPool, claimFromPoolForSubmit, batchClaimForSubmit
|
|
26
|
+
export { FairPoolQuery, claimFromPool, claimFromPoolForSubmit, batchClaimForSubmit } from './pool.js';
|