four-flap-meme-sdk 1.9.49 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +41 -6
- package/README.md +31 -0
- package/README.zh-CN.md +41 -6
- package/dist/__tests__/subpath-exports.test.js +34 -0
- package/dist/abis/common.js +74 -68
- package/dist/abis/flap/vault.js +9 -7
- package/dist/abis/index.d.ts +3 -4
- package/dist/abis/index.js +3 -4
- package/dist/bundle-core/__tests__/config-helpers.test.js +28 -0
- package/dist/bundle-core/__tests__/facade-parity.test.js +33 -0
- package/dist/bundle-core/__tests__/sign-context-helpers.test.js +60 -0
- package/dist/bundle-core/__tests__/sign-fixture.test.js +220 -0
- package/dist/bundle-core/__tests__/sign-fixtures.d.ts +10 -0
- package/dist/bundle-core/__tests__/sign-fixtures.js +16 -0
- package/dist/bundle-core/config-helpers.d.ts +36 -0
- package/dist/bundle-core/config-helpers.js +57 -0
- package/dist/bundle-core/errors.d.ts +50 -0
- package/dist/bundle-core/errors.js +34 -0
- package/dist/bundle-core/four-meme/approve-tokenmanager.d.ts +7 -0
- package/dist/bundle-core/four-meme/approve-tokenmanager.js +99 -0
- package/dist/bundle-core/four-meme/core-helpers.d.ts +8 -0
- package/dist/bundle-core/four-meme/core-helpers.js +40 -0
- package/dist/bundle-core/four-meme/core.d.ts +4 -0
- package/dist/bundle-core/four-meme/core.js +515 -0
- package/dist/bundle-core/four-meme/pancake-proxy.d.ts +28 -0
- package/dist/{shared 2/flap/portal-bundle-merkle/pancake-proxy.js → bundle-core/four-meme/pancake-proxy.js} +277 -299
- package/dist/bundle-core/four-meme/private.d.ts +27 -0
- package/dist/bundle-core/four-meme/private.js +465 -0
- package/dist/bundle-core/four-meme/sign-context-helpers.d.ts +2 -0
- package/dist/bundle-core/four-meme/sign-context-helpers.js +2 -0
- package/dist/bundle-core/four-meme/swap-buy-first.d.ts +8 -0
- package/dist/bundle-core/four-meme/swap-buy-first.js +493 -0
- package/dist/bundle-core/four-meme/swap-hop-helpers.d.ts +6 -0
- package/dist/bundle-core/four-meme/swap-hop-helpers.js +63 -0
- package/dist/bundle-core/four-meme/swap-internal.d.ts +3 -0
- package/dist/bundle-core/four-meme/swap-internal.js +18 -0
- package/dist/bundle-core/four-meme/swap-sign-helpers.d.ts +27 -0
- package/dist/bundle-core/four-meme/swap-sign-helpers.js +105 -0
- package/dist/bundle-core/four-meme/swap.d.ts +17 -0
- package/dist/{chains/bsc/four/swap/index.js → bundle-core/four-meme/swap.js} +84 -408
- package/dist/bundle-core/four-meme/types/buy-first.d.ts +50 -0
- package/dist/bundle-core/four-meme/types/core-flow.d.ts +63 -0
- package/dist/bundle-core/four-meme/types/index.d.ts +600 -0
- package/dist/bundle-core/four-meme/types/swap-internal.d.ts +19 -0
- package/dist/bundle-core/four-meme/types.d.ts +1 -0
- package/dist/bundle-core/four-meme/utils-disperse.d.ts +7 -0
- package/dist/bundle-core/four-meme/utils-disperse.js +396 -0
- package/dist/bundle-core/four-meme/utils-pairwise.d.ts +8 -0
- package/dist/bundle-core/four-meme/utils-pairwise.js +328 -0
- package/dist/bundle-core/four-meme/utils-sweep.d.ts +8 -0
- package/dist/bundle-core/four-meme/utils-sweep.js +744 -0
- package/dist/bundle-core/index.d.ts +8 -0
- package/dist/bundle-core/index.js +8 -0
- package/dist/bundle-core/internal.d.ts +21 -0
- package/dist/bundle-core/internal.js +182 -0
- package/dist/bundle-core/sign-context-helpers.d.ts +25 -0
- package/dist/bundle-core/sign-context-helpers.js +67 -0
- package/dist/bundle-core/submit.d.ts +293 -0
- package/dist/bundle-core/submit.js +727 -0
- package/dist/bundle-core/types/index.d.ts +8 -0
- package/dist/bundle-core/types.d.ts +1 -0
- package/dist/chains/bsc/four/approve-tokenmanager.d.ts +1 -26
- package/dist/chains/bsc/four/approve-tokenmanager.js +1 -116
- package/dist/chains/bsc/four/config.d.ts +5 -70
- package/dist/chains/bsc/four/config.js +2 -115
- package/dist/chains/bsc/four/core.d.ts +1 -4
- package/dist/chains/bsc/four/core.js +1 -589
- package/dist/chains/bsc/four/index.d.ts +6 -6
- package/dist/chains/bsc/four/index.js +6 -6
- package/dist/chains/bsc/four/internal.d.ts +2 -50
- package/dist/chains/bsc/four/internal.js +2 -237
- package/dist/chains/bsc/four/pancake-proxy.d.ts +1 -28
- package/dist/chains/bsc/four/pancake-proxy.js +1 -688
- package/dist/chains/bsc/four/private.d.ts +1 -27
- package/dist/chains/bsc/four/private.js +1 -477
- package/dist/chains/bsc/four/submit.d.ts +2 -315
- package/dist/chains/bsc/four/submit.js +2 -746
- package/dist/chains/bsc/four/swap-buy-first.d.ts +2 -55
- package/dist/chains/bsc/four/swap-buy-first.js +2 -506
- package/dist/chains/bsc/four/swap-internal.d.ts +1 -3
- package/dist/chains/bsc/four/swap-internal.js +1 -18
- package/dist/chains/bsc/four/swap.d.ts +2 -144
- package/dist/chains/bsc/four/swap.js +2 -760
- package/dist/chains/bsc/four/types.d.ts +1 -476
- package/dist/chains/bsc/four/utils-disperse.d.ts +1 -0
- package/dist/chains/bsc/four/utils-disperse.js +1 -0
- package/dist/chains/bsc/four/utils-pairwise.d.ts +1 -0
- package/dist/chains/bsc/four/utils-pairwise.js +1 -0
- package/dist/chains/bsc/four/utils-sweep.d.ts +1 -0
- package/dist/chains/bsc/four/utils-sweep.js +1 -0
- package/dist/chains/bsc/four/utils.d.ts +5 -18
- package/dist/chains/bsc/four/utils.js +5 -1534
- package/dist/chains/bsc/pancake/bundle-buy-first-helpers.d.ts +159 -0
- package/dist/chains/bsc/pancake/bundle-buy-first-helpers.js +117 -0
- package/dist/chains/bsc/pancake/bundle-buy-first.d.ts +1 -91
- package/dist/chains/bsc/pancake/bundle-buy-first.js +97 -207
- package/dist/chains/bsc/pancake/bundle-swap-helpers.d.ts +241 -0
- package/dist/chains/bsc/pancake/{bundle-swap/helpers.js → bundle-swap-helpers.js} +63 -70
- package/dist/chains/bsc/pancake/bundle-swap.d.ts +1 -79
- package/dist/chains/bsc/pancake/bundle-swap.js +111 -686
- package/dist/chains/bsc/pancake/index.d.ts +4 -2
- package/dist/chains/bsc/pancake/index.js +1 -3
- package/dist/chains/bsc/platforms/iro/factory.js +3 -1
- package/dist/chains/bsc/platforms/iro/index.d.ts +5 -5
- package/dist/chains/bsc/platforms/iro/index.js +3 -3
- package/dist/chains/bsc/platforms/iro/pool.js +31 -10
- package/dist/chains/bsc/platforms/iro/token.js +4 -1
- package/dist/chains/eni/batch-router/bundle-approve.js +4 -3
- package/dist/chains/eni/batch-router/transfer.js +54 -23
- package/dist/chains/eni/batch-router/utils.js +32 -6
- package/dist/chains/eni/bundler/sign.js +4 -4
- package/dist/chains/eni/bundler/submit.js +1 -4
- package/dist/chains/eni/constants.js +1 -1
- package/dist/chains/eni/index.d.ts +1 -1
- package/dist/chains/eni/platforms/daoaas/create.js +2 -2
- package/dist/chains/eni/platforms/daoaas/index.d.ts +3 -3
- package/dist/chains/eni/platforms/daoaas/index.js +3 -3
- package/dist/chains/eni/platforms/daoaas/meta.js +8 -4
- package/dist/chains/eni/platforms/daoaas/portal-direct.js +28 -43
- package/dist/chains/eni/platforms/daoaas/portal.js +10 -6
- package/dist/chains/eni/platforms/dswap/liquidity.js +58 -26
- package/dist/chains/eni/platforms/fair-launch/index.d.ts +2 -2
- package/dist/chains/eni/platforms/fair-launch/index.js +1 -1
- package/dist/chains/eni/platforms/fair-launch/launcher.js +87 -47
- package/dist/chains/eni/platforms/fair-launch/pool.js +4 -1
- package/dist/chains/eni/platforms/fair-launch/presets.js +2 -2
- package/dist/chains/eni/platforms/iro/factory.js +3 -1
- package/dist/chains/eni/platforms/iro/index.d.ts +6 -6
- package/dist/chains/eni/platforms/iro/index.js +4 -4
- package/dist/chains/eni/platforms/iro/pool.js +90 -26
- package/dist/chains/eni/platforms/iro/token.js +107 -31
- package/dist/chains/eni/platforms/iro/whitelist.js +6 -18
- package/dist/chains/eni/submit.js +5 -13
- package/dist/chains/index.d.ts +13 -0
- package/dist/chains/index.js +13 -0
- package/dist/chains/xlayer/eip7702/bundle-approve.d.ts +2 -26
- package/dist/chains/xlayer/eip7702/bundle-approve.js +11 -20
- package/dist/chains/xlayer/eip7702/bundle-buy.d.ts +2 -6
- package/dist/chains/xlayer/eip7702/bundle-buy.js +13 -51
- package/dist/chains/xlayer/eip7702/bundle-create.js +93 -56
- package/dist/chains/xlayer/eip7702/bundle-sell.d.ts +2 -6
- package/dist/chains/xlayer/eip7702/bundle-sell.js +26 -74
- package/dist/chains/xlayer/eip7702/bundle-swap.d.ts +3 -65
- package/dist/chains/xlayer/eip7702/bundle-swap.js +51 -68
- package/dist/chains/xlayer/eip7702/constants.d.ts +1 -16
- package/dist/chains/xlayer/eip7702/constants.js +3 -21
- package/dist/chains/xlayer/eip7702/index.d.ts +29 -46
- package/dist/chains/xlayer/eip7702/index.js +27 -81
- package/dist/chains/xlayer/eip7702/{multi-hop-transfer/types.d.ts → multi-hop-transfer-helpers.d.ts} +17 -23
- package/dist/chains/xlayer/eip7702/multi-hop-transfer.d.ts +2 -203
- package/dist/chains/xlayer/eip7702/multi-hop-transfer.js +58 -291
- package/dist/chains/xlayer/eip7702/transfer-context-helpers.d.ts +26 -0
- package/dist/chains/xlayer/eip7702/transfer-context-helpers.js +57 -0
- package/dist/chains/xlayer/eip7702/types.d.ts +88 -0
- package/dist/chains/xlayer/eip7702/utils.d.ts +0 -3
- package/dist/chains/xlayer/eip7702/utils.js +23 -28
- package/dist/chains/xlayer/eip7702/{volume/types.d.ts → volume-helpers.d.ts} +41 -17
- package/dist/chains/xlayer/eip7702/volume-helpers.js +48 -0
- package/dist/chains/xlayer/eip7702/volume.d.ts +6 -184
- package/dist/chains/xlayer/eip7702/volume.js +83 -158
- package/dist/chains/xlayer/eoa/constants.js +1 -1
- package/dist/chains/xlayer/eoa/dex-helpers.js +5 -5
- package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.d.ts +126 -0
- package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.js +228 -0
- package/dist/chains/xlayer/eoa/eoa-bundle-swap.d.ts +1 -95
- package/dist/chains/xlayer/eoa/eoa-bundle-swap.js +64 -276
- package/dist/chains/xlayer/eoa/eoa-wash-volume.d.ts +1 -1
- package/dist/chains/xlayer/eoa/eoa-wash-volume.js +14 -14
- package/dist/chains/xlayer/eoa/index.d.ts +10 -6
- package/dist/chains/xlayer/eoa/index.js +8 -23
- package/dist/chains/xlayer/eoa/portal-ops.js +7 -2
- package/dist/chains/xlayer/eoa/router-manager.js +3 -3
- package/dist/chains/xlayer/eoa/types.d.ts +2 -2
- package/dist/chains/xlayer/eoa/types.js +1 -3
- package/dist/contracts/helper3.d.ts +20 -17
- package/dist/contracts/helper3.js +56 -20
- package/dist/contracts/tm-bundle-helpers.d.ts +88 -0
- package/dist/contracts/tm-bundle-helpers.js +72 -0
- package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.d.ts +1 -26
- package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.js +1 -117
- package/dist/contracts/tm-bundle-merkle/config.d.ts +5 -70
- package/dist/contracts/tm-bundle-merkle/config.js +2 -115
- package/dist/contracts/tm-bundle-merkle/core.d.ts +1 -4
- package/dist/contracts/tm-bundle-merkle/core.js +1 -588
- package/dist/contracts/tm-bundle-merkle/index.d.ts +5 -5
- package/dist/contracts/tm-bundle-merkle/index.js +5 -5
- package/dist/contracts/tm-bundle-merkle/internal.d.ts +2 -50
- package/dist/contracts/tm-bundle-merkle/internal.js +2 -236
- package/dist/contracts/tm-bundle-merkle/pancake-proxy.d.ts +1 -28
- package/dist/contracts/tm-bundle-merkle/pancake-proxy.js +1 -687
- package/dist/contracts/tm-bundle-merkle/private.d.ts +1 -27
- package/dist/contracts/tm-bundle-merkle/private.js +1 -476
- package/dist/contracts/tm-bundle-merkle/submit.d.ts +3 -314
- package/dist/contracts/tm-bundle-merkle/submit.js +3 -919
- package/dist/contracts/tm-bundle-merkle/swap-buy-first.d.ts +2 -55
- package/dist/contracts/tm-bundle-merkle/swap-buy-first.js +2 -505
- package/dist/contracts/tm-bundle-merkle/swap-internal.d.ts +1 -3
- package/dist/contracts/tm-bundle-merkle/swap-internal.js +1 -18
- package/dist/contracts/tm-bundle-merkle/swap.d.ts +2 -144
- package/dist/contracts/tm-bundle-merkle/swap.js +2 -757
- package/dist/contracts/tm-bundle-merkle/types.d.ts +1 -476
- package/dist/contracts/tm-bundle-merkle/utils-disperse.d.ts +1 -0
- package/dist/contracts/tm-bundle-merkle/utils-disperse.js +1 -0
- package/dist/contracts/tm-bundle-merkle/utils-pairwise.d.ts +1 -0
- package/dist/contracts/tm-bundle-merkle/utils-pairwise.js +1 -0
- package/dist/contracts/tm-bundle-merkle/utils-sweep.d.ts +1 -0
- package/dist/contracts/tm-bundle-merkle/utils-sweep.js +1 -0
- package/dist/contracts/tm-bundle-merkle/utils.d.ts +5 -6
- package/dist/contracts/tm-bundle-merkle/utils.js +5 -6
- package/dist/contracts/tm-bundle.d.ts +3 -51
- package/dist/contracts/tm-bundle.js +102 -142
- package/dist/contracts/tm.d.ts +3 -2
- package/dist/contracts/tm.js +36 -32
- package/dist/contracts/tm1.js +9 -4
- package/dist/contracts/tm2.js +9 -4
- package/dist/dex/direct-router-helpers.d.ts +264 -0
- package/dist/dex/direct-router-helpers.js +539 -0
- package/dist/dex/direct-router.d.ts +3 -125
- package/dist/dex/direct-router.js +237 -652
- package/dist/dex/{direct-router/types.d.ts → types.d.ts} +1 -1
- package/dist/exports/root-bundle-and-tooling.d.ts +27 -0
- package/dist/exports/root-bundle-and-tooling.js +30 -0
- package/dist/exports/root-eni-and-bsc-iro.d.ts +26 -0
- package/dist/exports/root-eni-and-bsc-iro.js +66 -0
- package/dist/exports/root-foundations.d.ts +35 -0
- package/dist/exports/root-foundations.js +70 -0
- package/dist/exports/root-swap-dex-and-xlayer.d.ts +30 -0
- package/dist/exports/root-swap-dex-and-xlayer.js +78 -0
- package/dist/flap/index.d.ts +10 -0
- package/dist/flap/index.js +8 -0
- package/dist/flows/create.d.ts +2 -2
- package/dist/flows/create.js +6 -6
- package/dist/flows/index.d.ts +1 -0
- package/dist/flows/index.js +1 -0
- package/dist/index.d.ts +20 -91
- package/dist/index.js +20 -215
- package/dist/shared/abis/common.d.ts +2 -83
- package/dist/shared/abis/common.js +2 -252
- package/dist/shared/abis/index.d.ts +5 -6
- package/dist/shared/abis/index.js +5 -7
- package/dist/shared/clients/blockrazor.js +41 -24
- package/dist/shared/clients/club48.js +30 -26
- package/dist/shared/clients/emitservice.js +2 -0
- package/dist/shared/clients/four.js +23 -18
- package/dist/shared/clients/index.d.ts +8 -0
- package/dist/shared/clients/index.js +8 -0
- package/dist/shared/clients/merkle.js +26 -30
- package/dist/shared/constants/addresses.d.ts +1 -1
- package/dist/shared/constants/addresses.js +11 -2
- package/dist/shared/constants/chains.d.ts +1 -1
- package/dist/shared/constants/chains.js +1 -1
- package/dist/shared/constants/gas.d.ts +1 -1
- package/dist/shared/constants/gas.js +2 -6
- package/dist/shared/constants/index.d.ts +3 -0
- package/dist/shared/constants/index.js +1 -0
- package/dist/shared/constants/quote.d.ts +30 -0
- package/dist/shared/constants/quote.js +37 -0
- package/dist/shared/flap/abi.js +1 -1
- package/dist/shared/flap/constants.d.ts +1 -1
- package/dist/shared/flap/constants.js +2 -2
- package/dist/shared/flap/curve.js +3 -0
- package/dist/shared/flap/errors.d.ts +1 -4
- package/dist/shared/flap/errors.js +21 -3
- package/dist/shared/flap/index.d.ts +2 -2
- package/dist/shared/flap/index.js +2 -2
- package/dist/shared/flap/meta.d.ts +16 -18
- package/dist/shared/flap/meta.js +14 -26
- package/dist/shared/flap/permit.js +6 -5
- package/dist/shared/flap/pinata.d.ts +9 -2
- package/dist/shared/flap/pinata.js +20 -18
- package/dist/shared/flap/portal-bundle-merkle/config.d.ts +3 -72
- package/dist/shared/flap/portal-bundle-merkle/config.js +4 -124
- package/dist/shared/flap/portal-bundle-merkle/core-helpers.d.ts +32 -0
- package/dist/shared/flap/portal-bundle-merkle/core-helpers.js +83 -0
- package/dist/shared/flap/portal-bundle-merkle/core.d.ts +0 -4
- package/dist/shared/flap/portal-bundle-merkle/core.js +66 -156
- package/dist/shared/flap/portal-bundle-merkle/create-to-dex.js +81 -86
- package/dist/shared/flap/portal-bundle-merkle/curve-to-dex.js +100 -92
- package/dist/shared/flap/portal-bundle-merkle/index.d.ts +11 -7
- package/dist/shared/flap/portal-bundle-merkle/index.js +4 -7
- package/dist/shared/flap/portal-bundle-merkle/pancake-proxy.js +71 -68
- package/dist/shared/flap/portal-bundle-merkle/private.js +61 -114
- package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.d.ts +125 -0
- package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.js +113 -0
- package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.d.ts +1 -64
- package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.js +66 -247
- package/dist/shared/flap/portal-bundle-merkle/swap-helpers.d.ts +149 -0
- package/dist/shared/flap/portal-bundle-merkle/swap-helpers.js +259 -0
- package/dist/shared/flap/portal-bundle-merkle/swap.d.ts +2 -71
- package/dist/shared/flap/portal-bundle-merkle/swap.js +103 -410
- package/dist/shared/flap/portal-bundle-merkle/types.d.ts +73 -3
- package/dist/shared/flap/portal-bundle-merkle/utils.d.ts +1 -80
- package/dist/shared/flap/portal-bundle-merkle/utils.js +145 -265
- package/dist/shared/flap/portal-bundle.js +54 -42
- package/dist/shared/flap/portal.js +32 -10
- package/dist/shared/flap/vanity.js +4 -7
- package/dist/shared/flap/vault.d.ts +1 -1
- package/dist/shared/flap/vault.js +54 -48
- package/dist/shared/foundation/dex/v3-path.d.ts +6 -0
- package/dist/shared/foundation/dex/v3-path.js +35 -0
- package/dist/shared/foundation/gas/bundle-gas.d.ts +39 -0
- package/dist/shared/foundation/gas/bundle-gas.js +93 -0
- package/dist/shared/foundation/gas/profit-hop.d.ts +20 -0
- package/dist/shared/foundation/gas/profit-hop.js +72 -0
- package/dist/shared/foundation/index.d.ts +13 -0
- package/dist/shared/foundation/index.js +12 -0
- package/dist/shared/foundation/nonce/nonce-manager.d.ts +17 -0
- package/dist/shared/foundation/nonce/nonce-manager.js +180 -0
- package/dist/shared/foundation/normalize-unknown.d.ts +9 -0
- package/dist/shared/foundation/normalize-unknown.js +29 -0
- package/dist/shared/foundation/sdk-logger.d.ts +13 -0
- package/dist/shared/foundation/sdk-logger.js +12 -0
- package/dist/shared/foundation/tx/build-request.d.ts +17 -0
- package/dist/shared/foundation/tx/build-request.js +25 -0
- package/dist/shared/foundation/tx/sign-batch.d.ts +5 -0
- package/dist/shared/foundation/tx/sign-batch.js +26 -0
- package/dist/shared/foundation/tx/wallet-sign-patch.js +18 -0
- package/dist/shared/foundation/types/airdrop-sweep.d.ts +79 -0
- package/dist/{utils/erc20/types.d.ts → shared/foundation/types/erc20.d.ts} +7 -19
- package/dist/{utils/holders-maker/types.d.ts → shared/foundation/types/holders-maker.d.ts} +4 -12
- package/dist/shared/foundation/types/index.d.ts +7 -0
- package/dist/{utils/lp-inspect/types.d.ts → shared/foundation/types/lp-inspect.d.ts} +4 -2
- package/dist/shared/foundation/types/multicall.d.ts +5 -0
- package/dist/shared/foundation/types/multicall.js +1 -0
- package/dist/shared/foundation/types/private-sale.d.ts +35 -0
- package/dist/shared/foundation/types/private-sale.js +1 -0
- package/dist/{utils/quote-helpers/types.d.ts → shared/foundation/types/quote-helpers.d.ts} +1 -0
- package/dist/shared/foundation/types/quote-helpers.js +1 -0
- package/dist/shared/four/tax-token.d.ts +1 -1
- package/dist/shared/four/tax-token.js +27 -7
- package/dist/shared/index.d.ts +6 -0
- package/dist/shared/index.js +4 -0
- package/dist/utils/airdrop-sweep.d.ts +4 -76
- package/dist/utils/airdrop-sweep.js +38 -52
- package/dist/utils/bundle-helpers.d.ts +9 -243
- package/dist/utils/bundle-helpers.js +10 -584
- package/dist/utils/constants.d.ts +5 -61
- package/dist/utils/constants.js +5 -80
- package/dist/utils/contract-factory.d.ts +2 -4
- package/dist/utils/contract-factory.js +25 -18
- package/dist/utils/erc20.d.ts +8 -90
- package/dist/utils/erc20.js +94 -153
- package/dist/utils/errors.d.ts +10 -22
- package/dist/utils/errors.js +61 -79
- package/dist/utils/holders-maker/addresses.d.ts +12 -0
- package/dist/utils/holders-maker/addresses.js +15 -0
- package/dist/utils/holders-maker/buy-tx.d.ts +44 -0
- package/dist/utils/holders-maker/buy-tx.js +278 -0
- package/dist/utils/holders-maker/constants.d.ts +6 -0
- package/dist/utils/holders-maker/constants.js +7 -0
- package/dist/utils/holders-maker/disperse.d.ts +18 -0
- package/dist/utils/holders-maker/disperse.js +90 -0
- package/dist/utils/holders-maker/routing.d.ts +4 -0
- package/dist/utils/holders-maker/routing.js +45 -0
- package/dist/utils/holders-maker/transfer-tx.d.ts +4 -0
- package/dist/utils/holders-maker/transfer-tx.js +67 -0
- package/dist/utils/holders-maker-helpers.d.ts +9 -0
- package/dist/utils/holders-maker-helpers.js +9 -0
- package/dist/utils/holders-maker.d.ts +2 -138
- package/dist/utils/holders-maker.js +23 -651
- package/dist/utils/hop-chains.d.ts +35 -0
- package/dist/utils/hop-chains.js +215 -0
- package/dist/utils/lp-inspect-helpers.d.ts +9 -0
- package/dist/utils/lp-inspect-helpers.js +109 -0
- package/dist/utils/lp-inspect.d.ts +2 -112
- package/dist/utils/lp-inspect.js +63 -195
- package/dist/utils/mpcExclusive.d.ts +2 -5
- package/dist/utils/mpcExclusive.js +4 -3
- package/dist/utils/private-sale.d.ts +2 -58
- package/dist/utils/private-sale.js +2 -7
- package/dist/utils/provider-factory.d.ts +4 -0
- package/dist/utils/provider-factory.js +10 -0
- package/dist/utils/quote-helpers.d.ts +4 -45
- package/dist/utils/quote-helpers.js +15 -65
- package/dist/utils/stealth-transfer.d.ts +2 -28
- package/dist/utils/stealth-transfer.js +30 -14
- package/dist/utils/swap-helpers.d.ts +0 -3
- package/dist/utils/swap-helpers.js +6 -9
- package/dist/utils/types/airdrop-sweep.d.ts +1 -0
- package/dist/utils/types/airdrop-sweep.js +1 -0
- package/dist/utils/types/contract-factory.d.ts +1 -0
- package/dist/utils/types/contract-factory.js +1 -0
- package/dist/utils/types/erc20.d.ts +1 -0
- package/dist/utils/types/erc20.js +1 -0
- package/dist/utils/types/errors.d.ts +1 -0
- package/dist/utils/types/errors.js +1 -0
- package/dist/utils/types/holders-maker.d.ts +1 -0
- package/dist/utils/types/holders-maker.js +1 -0
- package/dist/utils/types/hop-chains.d.ts +8 -0
- package/dist/utils/types/hop-chains.js +1 -0
- package/dist/utils/types/index.d.ts +13 -0
- package/dist/utils/types/index.js +1 -0
- package/dist/utils/types/lp-inspect.d.ts +1 -0
- package/dist/utils/types/lp-inspect.js +1 -0
- package/dist/utils/types/mpc-exclusive.d.ts +5 -0
- package/dist/utils/types/mpc-exclusive.js +1 -0
- package/dist/utils/types/private-sale.d.ts +1 -0
- package/dist/utils/types/private-sale.js +1 -0
- package/dist/utils/types/quote-helpers.d.ts +1 -0
- package/dist/utils/types/quote-helpers.js +1 -0
- package/dist/utils/types/stealth-transfer.d.ts +44 -0
- package/dist/utils/types/stealth-transfer.js +1 -0
- package/dist/utils/types/wallet.d.ts +25 -0
- package/dist/utils/types/wallet.js +1 -0
- package/dist/utils/wallet.d.ts +2 -25
- package/dist/utils/wallet.js +9 -10
- package/package.json +120 -2
- package/src/abis/contracts/TaxToken.json +969 -0
- package/src/abis/contracts/TokenManager.json +836 -0
- package/src/abis/contracts/TokenManager2.json +136 -0
- package/src/abis/contracts/TokenManagerHelper3.json +993 -0
- package/dist/chains/bsc/four/submit/blockrazor.d.ts +0 -18
- package/dist/chains/bsc/four/submit/blockrazor.js +0 -86
- package/dist/chains/bsc/four/submit/direct.d.ts +0 -66
- package/dist/chains/bsc/four/submit/direct.js +0 -452
- package/dist/chains/bsc/four/submit/helpers.d.ts +0 -18
- package/dist/chains/bsc/four/submit/helpers.js +0 -57
- package/dist/chains/bsc/four/submit/index.d.ts +0 -12
- package/dist/chains/bsc/four/submit/index.js +0 -11
- package/dist/chains/bsc/four/submit/merkle.d.ts +0 -18
- package/dist/chains/bsc/four/submit/merkle.js +0 -74
- package/dist/chains/bsc/four/submit/types.d.ts +0 -143
- package/dist/chains/bsc/four/swap/index.d.ts +0 -32
- package/dist/chains/bsc/four/swap/types.d.ts +0 -70
- package/dist/chains/bsc/four/utils/index.d.ts +0 -20
- package/dist/chains/bsc/four/utils/index.js +0 -1558
- package/dist/chains/bsc/pancake/bundle-buy-first/index.d.ts +0 -8
- package/dist/chains/bsc/pancake/bundle-buy-first/index.js +0 -907
- package/dist/chains/bsc/pancake/bundle-buy-first/types.d.ts +0 -73
- package/dist/chains/bsc/pancake/bundle-swap/helpers.d.ts +0 -102
- package/dist/chains/bsc/pancake/bundle-swap/index.d.ts +0 -50
- package/dist/chains/bsc/pancake/bundle-swap/index.js +0 -1066
- package/dist/chains/bsc/pancake/bundle-swap/types.d.ts +0 -202
- package/dist/chains/bsc/pancake/bundle-swap/types.js +0 -3
- package/dist/chains/xlayer/eip7702/bundle-swap/index.d.ts +0 -72
- package/dist/chains/xlayer/eip7702/bundle-swap/index.js +0 -921
- package/dist/chains/xlayer/eip7702/bundle-swap/types.d.ts +0 -65
- package/dist/chains/xlayer/eip7702/multi-hop-transfer/index.d.ts +0 -128
- package/dist/chains/xlayer/eip7702/multi-hop-transfer/index.js +0 -857
- package/dist/chains/xlayer/eip7702/volume/index.d.ts +0 -96
- package/dist/chains/xlayer/eip7702/volume/index.js +0 -793
- package/dist/dex/direct-router/index.d.ts +0 -70
- package/dist/dex/direct-router/index.js +0 -1410
- package/dist/shared/abis/TaxToken.json +0 -969
- package/dist/shared/abis/TokenManager.json +0 -836
- package/dist/shared/abis/TokenManager2.json +0 -136
- package/dist/shared/abis/TokenManagerHelper3.json +0 -993
- package/dist/shared/flap/__tests__/curve.test.js +0 -85
- package/dist/shared/flap/portal/index.d.ts +0 -12
- package/dist/shared/flap/portal/index.js +0 -11
- package/dist/shared/flap/portal/portal.d.ts +0 -47
- package/dist/shared/flap/portal/portal.js +0 -218
- package/dist/shared/flap/portal/types.d.ts +0 -227
- package/dist/shared/flap/portal/types.js +0 -80
- package/dist/shared/flap/portal/writer.d.ts +0 -121
- package/dist/shared/flap/portal/writer.js +0 -265
- package/dist/shared/flap/portal-bundle-merkle/core/index.d.ts +0 -18
- package/dist/shared/flap/portal-bundle-merkle/core/index.js +0 -938
- package/dist/shared/flap/portal-bundle-merkle/swap/index.d.ts +0 -42
- package/dist/shared/flap/portal-bundle-merkle/swap/index.js +0 -1448
- package/dist/shared/flap/portal-bundle-merkle/swap/types.d.ts +0 -84
- package/dist/shared/flap/portal-bundle-merkle/utils/index.d.ts +0 -17
- package/dist/shared/flap/portal-bundle-merkle/utils/index.js +0 -1024
- package/dist/shared/flap/portal-bundle-merkle/utils/types.d.ts +0 -16
- package/dist/shared 2/abis/TaxToken.json +0 -105
- package/dist/shared 2/abis/TokenManager.json +0 -836
- package/dist/shared 2/abis/TokenManager2.json +0 -60
- package/dist/shared 2/abis/TokenManagerHelper3.json +0 -993
- package/dist/shared 2/abis/common.d.ts +0 -85
- package/dist/shared 2/abis/common.js +0 -254
- package/dist/shared 2/abis/index.d.ts +0 -8
- package/dist/shared 2/abis/index.js +0 -8
- package/dist/shared 2/clients/blockrazor.d.ts +0 -314
- package/dist/shared 2/clients/blockrazor.js +0 -596
- package/dist/shared 2/clients/club48.d.ts +0 -154
- package/dist/shared 2/clients/club48.js +0 -331
- package/dist/shared 2/clients/emitservice.d.ts +0 -47
- package/dist/shared 2/clients/emitservice.js +0 -44
- package/dist/shared 2/clients/four.d.ts +0 -132
- package/dist/shared 2/clients/four.js +0 -281
- package/dist/shared 2/clients/merkle.d.ts +0 -210
- package/dist/shared 2/clients/merkle.js +0 -400
- package/dist/shared 2/flap/__tests__/curve.test.js +0 -85
- package/dist/shared 2/flap/abi.d.ts +0 -4
- package/dist/shared 2/flap/abi.js +0 -4
- package/dist/shared 2/flap/constants.d.ts +0 -128
- package/dist/shared 2/flap/constants.js +0 -143
- package/dist/shared 2/flap/curve.d.ts +0 -33
- package/dist/shared 2/flap/curve.js +0 -84
- package/dist/shared 2/flap/errors.d.ts +0 -37
- package/dist/shared 2/flap/errors.js +0 -114
- package/dist/shared 2/flap/index.d.ts +0 -22
- package/dist/shared 2/flap/index.js +0 -33
- package/dist/shared 2/flap/ipfs.d.ts +0 -21
- package/dist/shared 2/flap/ipfs.js +0 -38
- package/dist/shared 2/flap/meta.d.ts +0 -30
- package/dist/shared 2/flap/meta.js +0 -195
- package/dist/shared 2/flap/permit.d.ts +0 -16
- package/dist/shared 2/flap/permit.js +0 -67
- package/dist/shared 2/flap/pinata.d.ts +0 -40
- package/dist/shared 2/flap/pinata.js +0 -106
- package/dist/shared 2/flap/portal-bundle-merkle/config.d.ts +0 -79
- package/dist/shared 2/flap/portal-bundle-merkle/config.js +0 -133
- package/dist/shared 2/flap/portal-bundle-merkle/core.d.ts +0 -18
- package/dist/shared 2/flap/portal-bundle-merkle/core.js +0 -938
- package/dist/shared 2/flap/portal-bundle-merkle/create-to-dex.d.ts +0 -125
- package/dist/shared 2/flap/portal-bundle-merkle/create-to-dex.js +0 -665
- package/dist/shared 2/flap/portal-bundle-merkle/curve-to-dex.d.ts +0 -88
- package/dist/shared 2/flap/portal-bundle-merkle/curve-to-dex.js +0 -446
- package/dist/shared 2/flap/portal-bundle-merkle/index.d.ts +0 -14
- package/dist/shared 2/flap/portal-bundle-merkle/index.js +0 -26
- package/dist/shared 2/flap/portal-bundle-merkle/pancake-proxy.d.ts +0 -28
- package/dist/shared 2/flap/portal-bundle-merkle/private.d.ts +0 -17
- package/dist/shared 2/flap/portal-bundle-merkle/private.js +0 -549
- package/dist/shared 2/flap/portal-bundle-merkle/swap-buy-first.d.ts +0 -65
- package/dist/shared 2/flap/portal-bundle-merkle/swap-buy-first.js +0 -831
- package/dist/shared 2/flap/portal-bundle-merkle/swap.d.ts +0 -201
- package/dist/shared 2/flap/portal-bundle-merkle/swap.js +0 -1359
- package/dist/shared 2/flap/portal-bundle-merkle/types.d.ts +0 -358
- package/dist/shared 2/flap/portal-bundle-merkle/utils.d.ts +0 -89
- package/dist/shared 2/flap/portal-bundle-merkle/utils.js +0 -963
- package/dist/shared 2/flap/portal-bundle.d.ts +0 -119
- package/dist/shared 2/flap/portal-bundle.js +0 -584
- package/dist/shared 2/flap/portal.d.ts +0 -392
- package/dist/shared 2/flap/portal.js +0 -559
- package/dist/shared 2/flap/vanity.d.ts +0 -48
- package/dist/shared 2/flap/vanity.js +0 -110
- package/dist/shared 2/flap/vault.d.ts +0 -240
- package/dist/shared 2/flap/vault.js +0 -366
- package/dist/shared 2/four/index.d.ts +0 -7
- package/dist/shared 2/four/index.js +0 -22
- package/dist/shared 2/four/tax-token.d.ts +0 -176
- package/dist/shared 2/four/tax-token.js +0 -302
- package/dist/shared 2/index.d.ts +0 -10
- package/dist/shared 2/index.js +0 -10
- package/dist/utils/__tests__/errors.test.js +0 -76
- package/dist/utils/erc20/index.d.ts +0 -242
- package/dist/utils/erc20/index.js +0 -645
- package/dist/utils/holders-maker/helpers.d.ts +0 -43
- package/dist/utils/holders-maker/helpers.js +0 -371
- package/dist/utils/holders-maker/index.d.ts +0 -26
- package/dist/utils/holders-maker/index.js +0 -218
- package/dist/utils/holders-maker/types.js +0 -4
- package/dist/utils/lp-inspect/index.d.ts +0 -44
- package/dist/utils/lp-inspect/index.js +0 -937
- package/dist/utils/quote-helpers/index.d.ts +0 -107
- package/dist/utils/quote-helpers/index.js +0 -346
- /package/dist/{chains/bsc/four/submit/types.js → __tests__/subpath-exports.test.d.ts} +0 -0
- /package/dist/{chains/bsc/four/swap/types.js → bundle-core/__tests__/config-helpers.test.d.ts} +0 -0
- /package/dist/{chains/bsc/four/utils/types.d.ts → bundle-core/__tests__/facade-parity.test.d.ts} +0 -0
- /package/dist/{chains/bsc/four/utils/types.js → bundle-core/__tests__/sign-context-helpers.test.d.ts} +0 -0
- /package/dist/{chains/bsc/pancake/bundle-buy-first/types.js → bundle-core/__tests__/sign-fixture.test.d.ts} +0 -0
- /package/dist/{chains/xlayer/eip7702/multi-hop-transfer/types.js → bundle-core/four-meme/types/buy-first.js} +0 -0
- /package/dist/{chains/xlayer/eip7702/volume/types.js → bundle-core/four-meme/types/core-flow.js} +0 -0
- /package/dist/{dex/direct-router/types.js → bundle-core/four-meme/types/index.js} +0 -0
- /package/dist/{shared 2/flap/__tests__/curve.test.d.ts → bundle-core/four-meme/types/swap-internal.js} +0 -0
- /package/dist/{chains/xlayer/eip7702/bundle-swap → bundle-core/four-meme}/types.js +0 -0
- /package/dist/{shared/flap/__tests__/curve.test.d.ts → bundle-core/types/index.js} +0 -0
- /package/dist/{shared 2/flap/portal-bundle-merkle → bundle-core}/types.js +0 -0
- /package/dist/{shared/flap/portal-bundle-merkle/core/types.d.ts → chains/xlayer/eip7702/multi-hop-transfer-helpers.js} +0 -0
- /package/dist/{shared/flap/portal-bundle-merkle/core → dex}/types.js +0 -0
- /package/dist/shared/{flap/portal-bundle-merkle/swap/types.js → foundation/tx/wallet-sign-patch.d.ts} +0 -0
- /package/dist/shared/{flap/portal-bundle-merkle/utils/types.js → foundation/types/airdrop-sweep.js} +0 -0
- /package/dist/{utils/__tests__/errors.test.d.ts → shared/foundation/types/erc20.js} +0 -0
- /package/dist/{utils/erc20/types.js → shared/foundation/types/holders-maker.js} +0 -0
- /package/dist/{utils/lp-inspect/types.js → shared/foundation/types/index.js} +0 -0
- /package/dist/{utils/quote-helpers/types.js → shared/foundation/types/lp-inspect.js} +0 -0
|
@@ -8,7 +8,7 @@ const PORTAL_ABI = [
|
|
|
8
8
|
'function newTokenV2((string name,string symbol,string meta,uint8 dexThresh,bytes32 salt,uint16 taxRate,uint8 migratorType,address quoteToken,uint256 quoteAmt,address beneficiary,bytes permitData)) external payable returns (address)',
|
|
9
9
|
'function swapExactInputBuy((address inputToken,address outputToken,uint256 inputAmount,uint256 minOutputAmount,bytes permitData)) external payable returns (uint256)',
|
|
10
10
|
'function swapExactInputSell((address inputToken,address outputToken,uint256 inputAmount,uint256 minOutputAmount,bytes permitData)) external returns (uint256)',
|
|
11
|
-
'function quoteExactInput((address inputToken,address outputToken,uint256 inputAmount)) external returns (uint256)'
|
|
11
|
+
'function quoteExactInput((address inputToken,address outputToken,uint256 inputAmount)) external returns (uint256)',
|
|
12
12
|
];
|
|
13
13
|
/**
|
|
14
14
|
* Flap Protocol Bundle 交易方法
|
|
@@ -18,20 +18,20 @@ const PORTAL_ABI = [
|
|
|
18
18
|
const ERRORS = {
|
|
19
19
|
NO_PRIVATE_KEY: {
|
|
20
20
|
en: 'At least 1 private key (creator) is required',
|
|
21
|
-
zh: '至少需要 1 个私钥(创建者)'
|
|
21
|
+
zh: '至少需要 1 个私钥(创建者)',
|
|
22
22
|
},
|
|
23
23
|
AMOUNT_MISMATCH: {
|
|
24
24
|
en: (buyCount, buyerCount) => `Buy amount count (${buyCount}) must equal buyer count (${buyerCount})`,
|
|
25
|
-
zh: (buyCount, buyerCount) => `购买金额数量(${buyCount})必须等于买家数量(${buyerCount})
|
|
25
|
+
zh: (buyCount, buyerCount) => `购买金额数量(${buyCount})必须等于买家数量(${buyerCount})`,
|
|
26
26
|
},
|
|
27
27
|
KEY_AMOUNT_MISMATCH: {
|
|
28
28
|
en: 'Private key count and amount count must match',
|
|
29
|
-
zh: '私钥和购买金额数量必须一致'
|
|
29
|
+
zh: '私钥和购买金额数量必须一致',
|
|
30
30
|
},
|
|
31
31
|
SELL_KEY_AMOUNT_MISMATCH: {
|
|
32
32
|
en: 'Private key count and sell amount count must match',
|
|
33
|
-
zh: '私钥和卖出数量必须一致'
|
|
34
|
-
}
|
|
33
|
+
zh: '私钥和卖出数量必须一致',
|
|
34
|
+
},
|
|
35
35
|
};
|
|
36
36
|
// 获取错误信息(根据环境语言)
|
|
37
37
|
function getErrorMessage(key, ...args) {
|
|
@@ -71,7 +71,7 @@ export async function createTokenWithBundleBuy(params) {
|
|
|
71
71
|
const devWallet = new Wallet(privateKeys[0], provider);
|
|
72
72
|
const club48 = new Club48Client({
|
|
73
73
|
endpoint: config.club48Endpoint,
|
|
74
|
-
explorerEndpoint: config.club48ExplorerEndpoint
|
|
74
|
+
explorerEndpoint: config.club48ExplorerEndpoint,
|
|
75
75
|
});
|
|
76
76
|
const blockOffset = config.bundleBlockOffset ?? 100;
|
|
77
77
|
// 1. 构建交易(为重复地址分配顺序 nonce)
|
|
@@ -105,7 +105,7 @@ export async function createTokenWithBundleBuy(params) {
|
|
|
105
105
|
quoteToken: params.quoteToken || '0x0000000000000000000000000000000000000000',
|
|
106
106
|
quoteAmt: 0n,
|
|
107
107
|
beneficiary: new Wallet(privateKeys[0]).address,
|
|
108
|
-
permitData: '0x'
|
|
108
|
+
permitData: '0x',
|
|
109
109
|
});
|
|
110
110
|
// 估算 gas 并应用用户配置的安全余量
|
|
111
111
|
const createGasLimit = await estimateGasWithMultiplier(provider, { ...createTxUnsigned, from: devWallet.address }, config.gasLimitMultiplier);
|
|
@@ -116,7 +116,7 @@ export async function createTokenWithBundleBuy(params) {
|
|
|
116
116
|
gasLimit: createGasLimit,
|
|
117
117
|
gasPrice: gasPrice,
|
|
118
118
|
chainId: 56, // BSC
|
|
119
|
-
type: getTxType(config) // 用户可配置:0=Legacy(默认),2=EIP-1559
|
|
119
|
+
type: getTxType(config), // 用户可配置:0=Legacy(默认),2=EIP-1559
|
|
120
120
|
};
|
|
121
121
|
const signedCreateTx = await devWallet.signTransaction(createTxRequest);
|
|
122
122
|
signedTxs.push(signedCreateTx);
|
|
@@ -129,7 +129,7 @@ export async function createTokenWithBundleBuy(params) {
|
|
|
129
129
|
gasLimit: GAS_LIMITS.BRIBE,
|
|
130
130
|
chainId: 56,
|
|
131
131
|
type: 0, // Legacy transaction
|
|
132
|
-
nonce: await getNextNonce(devWallet)
|
|
132
|
+
nonce: await getNextNonce(devWallet),
|
|
133
133
|
});
|
|
134
134
|
signedTxs.push(tipTx);
|
|
135
135
|
}
|
|
@@ -146,14 +146,12 @@ export async function createTokenWithBundleBuy(params) {
|
|
|
146
146
|
const exactOut = await quote.quoteExactInput.staticCall({
|
|
147
147
|
inputToken: '0x0000000000000000000000000000000000000000',
|
|
148
148
|
outputToken: tokenAddress,
|
|
149
|
-
inputAmount: amountIn
|
|
149
|
+
inputAmount: amountIn,
|
|
150
150
|
});
|
|
151
151
|
const keep = BigInt(10000 - slippageBps);
|
|
152
152
|
minAmountOut = (exactOut * keep) / 10000n;
|
|
153
153
|
}
|
|
154
|
-
catch {
|
|
155
|
-
void 0;
|
|
156
|
-
}
|
|
154
|
+
catch { }
|
|
157
155
|
const buyPortal = new ethers.Contract(portalAddr, PORTAL_ABI, buyerWallet);
|
|
158
156
|
const buyTxUnsigned = await buyPortal.swapExactInputBuy.populateTransaction({
|
|
159
157
|
inputToken: '0x0000000000000000000000000000000000000000',
|
|
@@ -178,7 +176,7 @@ export async function createTokenWithBundleBuy(params) {
|
|
|
178
176
|
gasLimit: buyGasLimit,
|
|
179
177
|
gasPrice: gasPrice,
|
|
180
178
|
chainId: 56, // BSC
|
|
181
|
-
type: getTxType(config) // 用户可配置
|
|
179
|
+
type: getTxType(config), // 用户可配置
|
|
182
180
|
};
|
|
183
181
|
const signedBuyTx = await buyerWallet.signTransaction(buyTxRequest);
|
|
184
182
|
signedTxs.push(signedBuyTx);
|
|
@@ -188,11 +186,11 @@ export async function createTokenWithBundleBuy(params) {
|
|
|
188
186
|
const bundleUuid = await club48.sendBundle({
|
|
189
187
|
txs: signedTxs,
|
|
190
188
|
maxBlockNumber: (await provider.getBlockNumber()) + blockOffset,
|
|
191
|
-
noMerge: config.noMerge
|
|
189
|
+
noMerge: config.noMerge,
|
|
192
190
|
}, {
|
|
193
191
|
spMode: params.config.spMode ?? 'timestampPersonalSign',
|
|
194
192
|
spPrivateKey: params.config.spPrivateKey || privateKeys[0],
|
|
195
|
-
spVMode: params.config.spVMode
|
|
193
|
+
spVMode: params.config.spVMode,
|
|
196
194
|
});
|
|
197
195
|
// 3. 等待完成
|
|
198
196
|
const status = await club48.waitForBundle(bundleUuid, params.config.waitTimeoutMs ?? 60000);
|
|
@@ -201,7 +199,7 @@ export async function createTokenWithBundleBuy(params) {
|
|
|
201
199
|
tokenAddress,
|
|
202
200
|
status,
|
|
203
201
|
createTx: signedCreateTx,
|
|
204
|
-
buyTxs
|
|
202
|
+
buyTxs,
|
|
205
203
|
};
|
|
206
204
|
}
|
|
207
205
|
/**
|
|
@@ -215,7 +213,7 @@ export async function batchBuyWithBundle(params) {
|
|
|
215
213
|
const provider = new JsonRpcProvider(config.rpcUrl);
|
|
216
214
|
const club48 = new Club48Client({
|
|
217
215
|
endpoint: config.club48Endpoint,
|
|
218
|
-
explorerEndpoint: config.club48ExplorerEndpoint
|
|
216
|
+
explorerEndpoint: config.club48ExplorerEndpoint,
|
|
219
217
|
});
|
|
220
218
|
const blockOffset = config.bundleBlockOffset ?? 100;
|
|
221
219
|
const portalAddr = FLAP_PORTAL_ADDRESSES[chain];
|
|
@@ -244,7 +242,7 @@ export async function batchBuyWithBundle(params) {
|
|
|
244
242
|
gasLimit: GAS_LIMITS.BRIBE,
|
|
245
243
|
chainId: 56,
|
|
246
244
|
type: 0, // Legacy transaction
|
|
247
|
-
nonce: await getNextNonce(tipWallet)
|
|
245
|
+
nonce: await getNextNonce(tipWallet),
|
|
248
246
|
});
|
|
249
247
|
signedTxs.unshift(tipTx);
|
|
250
248
|
}
|
|
@@ -259,14 +257,12 @@ export async function batchBuyWithBundle(params) {
|
|
|
259
257
|
const exactOut = await quote.quoteExactInput.staticCall({
|
|
260
258
|
inputToken: '0x0000000000000000000000000000000000000000',
|
|
261
259
|
outputToken: tokenAddress,
|
|
262
|
-
inputAmount: amountIn
|
|
260
|
+
inputAmount: amountIn,
|
|
263
261
|
});
|
|
264
262
|
const keep = BigInt(10000 - slippageBps);
|
|
265
263
|
minAmountOut = (exactOut * keep) / 10000n;
|
|
266
264
|
}
|
|
267
|
-
catch {
|
|
268
|
-
void 0;
|
|
269
|
-
}
|
|
265
|
+
catch { }
|
|
270
266
|
const portal = new ethers.Contract(portalAddr, PORTAL_ABI, buyerWallet);
|
|
271
267
|
const buyTxUnsigned = await portal.swapExactInputBuy.populateTransaction({
|
|
272
268
|
inputToken: '0x0000000000000000000000000000000000000000',
|
|
@@ -279,7 +275,7 @@ export async function batchBuyWithBundle(params) {
|
|
|
279
275
|
const estimatedGas = await provider.estimateGas({
|
|
280
276
|
...buyTxUnsigned,
|
|
281
277
|
from: buyerWallet.address,
|
|
282
|
-
value: amountIn
|
|
278
|
+
value: amountIn,
|
|
283
279
|
});
|
|
284
280
|
const gasLimit = (estimatedGas * 120n) / 100n;
|
|
285
281
|
const buyTxRequest = {
|
|
@@ -289,7 +285,7 @@ export async function batchBuyWithBundle(params) {
|
|
|
289
285
|
gasLimit: gasLimit,
|
|
290
286
|
gasPrice: gasPrice,
|
|
291
287
|
chainId: 56, // BSC
|
|
292
|
-
type: 0 // Legacy transaction
|
|
288
|
+
type: 0, // Legacy transaction
|
|
293
289
|
};
|
|
294
290
|
const signedBuyTx = await buyerWallet.signTransaction(buyTxRequest);
|
|
295
291
|
signedTxs.push(signedBuyTx);
|
|
@@ -297,11 +293,11 @@ export async function batchBuyWithBundle(params) {
|
|
|
297
293
|
const bundleUuid = await club48.sendBundle({
|
|
298
294
|
txs: signedTxs,
|
|
299
295
|
maxBlockNumber: (await provider.getBlockNumber()) + blockOffset,
|
|
300
|
-
noMerge: config.noMerge
|
|
296
|
+
noMerge: config.noMerge,
|
|
301
297
|
}, {
|
|
302
298
|
spMode: params.config.spMode ?? 'timestampPersonalSign',
|
|
303
299
|
spPrivateKey: params.config.spPrivateKey || privateKeys[0],
|
|
304
|
-
spVMode: params.config.spVMode
|
|
300
|
+
spVMode: params.config.spVMode,
|
|
305
301
|
});
|
|
306
302
|
const status = await club48.waitForBundle(bundleUuid);
|
|
307
303
|
return { bundleUuid, status, buyTxs: signedTxs };
|
|
@@ -317,7 +313,7 @@ export async function batchSellWithBundle(params) {
|
|
|
317
313
|
const provider = new JsonRpcProvider(config.rpcUrl);
|
|
318
314
|
const club48 = new Club48Client({
|
|
319
315
|
endpoint: config.club48Endpoint,
|
|
320
|
-
explorerEndpoint: config.club48ExplorerEndpoint
|
|
316
|
+
explorerEndpoint: config.club48ExplorerEndpoint,
|
|
321
317
|
});
|
|
322
318
|
const blockOffset = config.bundleBlockOffset ?? 100;
|
|
323
319
|
const portalAddr = FLAP_PORTAL_ADDRESSES[chain];
|
|
@@ -346,7 +342,7 @@ export async function batchSellWithBundle(params) {
|
|
|
346
342
|
gasLimit: GAS_LIMITS.BRIBE,
|
|
347
343
|
chainId: 56,
|
|
348
344
|
type: 0, // Legacy transaction
|
|
349
|
-
nonce: await getNextNonce(tipWallet)
|
|
345
|
+
nonce: await getNextNonce(tipWallet),
|
|
350
346
|
});
|
|
351
347
|
signedTxs.unshift(tipTx);
|
|
352
348
|
}
|
|
@@ -365,7 +361,7 @@ export async function batchSellWithBundle(params) {
|
|
|
365
361
|
// 估算 gas 并添加 20% 安全余量
|
|
366
362
|
const estimatedGas = await provider.estimateGas({
|
|
367
363
|
...sellTxUnsigned,
|
|
368
|
-
from: sellerWallet.address
|
|
364
|
+
from: sellerWallet.address,
|
|
369
365
|
});
|
|
370
366
|
const gasLimit = (estimatedGas * 120n) / 100n;
|
|
371
367
|
const sellTxRequest = {
|
|
@@ -375,7 +371,7 @@ export async function batchSellWithBundle(params) {
|
|
|
375
371
|
gasLimit: gasLimit,
|
|
376
372
|
gasPrice: gasPrice,
|
|
377
373
|
chainId: 56, // BSC
|
|
378
|
-
type: 0 // Legacy transaction
|
|
374
|
+
type: 0, // Legacy transaction
|
|
379
375
|
};
|
|
380
376
|
const signedSellTx = await sellerWallet.signTransaction(sellTxRequest);
|
|
381
377
|
signedTxs.push(signedSellTx);
|
|
@@ -383,11 +379,11 @@ export async function batchSellWithBundle(params) {
|
|
|
383
379
|
const bundleUuid = await club48.sendBundle({
|
|
384
380
|
txs: signedTxs,
|
|
385
381
|
maxBlockNumber: (await provider.getBlockNumber()) + blockOffset,
|
|
386
|
-
noMerge: config.noMerge
|
|
382
|
+
noMerge: config.noMerge,
|
|
387
383
|
}, {
|
|
388
384
|
spMode: params.config.spMode ?? 'timestampPersonalSign',
|
|
389
385
|
spPrivateKey: params.config.spPrivateKey || privateKeys[0],
|
|
390
|
-
spVMode: params.config.spVMode
|
|
386
|
+
spVMode: params.config.spVMode,
|
|
391
387
|
});
|
|
392
388
|
const status = await club48.waitForBundle(bundleUuid);
|
|
393
389
|
return { bundleUuid, status, sellTxs: signedTxs };
|
|
@@ -413,7 +409,7 @@ export async function flapPrivateBuy(params) {
|
|
|
413
409
|
const estimatedGas = await provider.estimateGas({
|
|
414
410
|
...unsigned,
|
|
415
411
|
from: wallet.address,
|
|
416
|
-
value: amountWei
|
|
412
|
+
value: amountWei,
|
|
417
413
|
});
|
|
418
414
|
const gasLimit = (estimatedGas * 120n) / 100n;
|
|
419
415
|
const req = {
|
|
@@ -423,7 +419,7 @@ export async function flapPrivateBuy(params) {
|
|
|
423
419
|
gasLimit: gasLimit,
|
|
424
420
|
gasPrice,
|
|
425
421
|
chainId: 56,
|
|
426
|
-
type: 0 // Legacy transaction
|
|
422
|
+
type: 0, // Legacy transaction
|
|
427
423
|
};
|
|
428
424
|
const signed = await wallet.signTransaction(req);
|
|
429
425
|
if (spPrivateKey)
|
|
@@ -450,7 +446,7 @@ export async function flapPrivateSell(params) {
|
|
|
450
446
|
// 估算 gas 并添加 20% 安全余量
|
|
451
447
|
const estimatedGas = await provider.estimateGas({
|
|
452
448
|
...unsigned,
|
|
453
|
-
from: wallet.address
|
|
449
|
+
from: wallet.address,
|
|
454
450
|
});
|
|
455
451
|
const gasLimit = (estimatedGas * 120n) / 100n;
|
|
456
452
|
const req = {
|
|
@@ -460,7 +456,7 @@ export async function flapPrivateSell(params) {
|
|
|
460
456
|
gasLimit: gasLimit,
|
|
461
457
|
gasPrice,
|
|
462
458
|
chainId: 56,
|
|
463
|
-
type: 0 // Legacy transaction
|
|
459
|
+
type: 0, // Legacy transaction
|
|
464
460
|
};
|
|
465
461
|
const signed = await wallet.signTransaction(req);
|
|
466
462
|
if (spPrivateKey)
|
|
@@ -503,7 +499,15 @@ export async function flapBatchPrivateBuy(params) {
|
|
|
503
499
|
// 估算 gas 并添加 20% 安全余量
|
|
504
500
|
const estimatedGas = await provider.estimateGas({ ...unsigned, from: w.address, value: amountWei });
|
|
505
501
|
const gasLimit = (estimatedGas * 120n) / 100n;
|
|
506
|
-
const req = {
|
|
502
|
+
const req = {
|
|
503
|
+
...unsigned,
|
|
504
|
+
from: w.address,
|
|
505
|
+
nonce: await getNextNonce(w),
|
|
506
|
+
gasLimit,
|
|
507
|
+
gasPrice,
|
|
508
|
+
chainId: 56,
|
|
509
|
+
type: 0,
|
|
510
|
+
};
|
|
507
511
|
signedTxs.push(await w.signTransaction(req));
|
|
508
512
|
}
|
|
509
513
|
return await sendBatchPrivateTransactions(signedTxs, spPrivateKey, config.club48Endpoint || 'https://puissant-bsc.48.club');
|
|
@@ -545,7 +549,15 @@ export async function flapBatchPrivateSell(params) {
|
|
|
545
549
|
// 估算 gas 并添加 20% 安全余量
|
|
546
550
|
const estimatedGas = await provider.estimateGas({ ...unsigned, from: w.address });
|
|
547
551
|
const gasLimit = (estimatedGas * 120n) / 100n;
|
|
548
|
-
const req = {
|
|
552
|
+
const req = {
|
|
553
|
+
...unsigned,
|
|
554
|
+
from: w.address,
|
|
555
|
+
nonce: await getNextNonce(w),
|
|
556
|
+
gasLimit,
|
|
557
|
+
gasPrice,
|
|
558
|
+
chainId: 56,
|
|
559
|
+
type: 0,
|
|
560
|
+
};
|
|
549
561
|
signedTxs.push(await w.signTransaction(req));
|
|
550
562
|
}
|
|
551
563
|
// 使用 bundle 通道提交(统一与捆绑买保持一致)
|
|
@@ -553,12 +565,12 @@ export async function flapBatchPrivateSell(params) {
|
|
|
553
565
|
const bundleUuid = await club48.sendBundle({
|
|
554
566
|
txs: signedTxs,
|
|
555
567
|
maxBlockNumber: (await provider.getBlockNumber()) + blockOffset,
|
|
556
|
-
noMerge: config.noMerge
|
|
568
|
+
noMerge: config.noMerge,
|
|
557
569
|
}, {
|
|
558
570
|
// 若传入 sp 配置,则用于生成 48SP 签名提升打包优先级(与批量买一致)
|
|
559
571
|
spMode: params.config.spMode ?? 'timestampPersonalSign',
|
|
560
572
|
spPrivateKey: params.config.spPrivateKey || 'https://puissant-bsc.48.club',
|
|
561
|
-
spVMode: params.config.spVMode
|
|
573
|
+
spVMode: params.config.spVMode,
|
|
562
574
|
});
|
|
563
575
|
try {
|
|
564
576
|
const status = await club48.waitForBundle(bundleUuid);
|
|
@@ -90,17 +90,21 @@ const PORTAL_ABI = [
|
|
|
90
90
|
'function getFeeRate() external view returns (uint256,uint256)',
|
|
91
91
|
'function nonce() external view returns (uint256)',
|
|
92
92
|
'function version() external pure returns (string)',
|
|
93
|
-
'function getLocks(address token) external view returns (uint256[])'
|
|
93
|
+
'function getLocks(address token) external view returns (uint256[])',
|
|
94
94
|
];
|
|
95
95
|
/**
|
|
96
96
|
* 将 lpFeeProfile 转换为 V3 fee 值
|
|
97
97
|
*/
|
|
98
98
|
export function lpFeeProfileToV3Fee(profile) {
|
|
99
99
|
switch (profile) {
|
|
100
|
-
case V3LPFeeProfile.LP_FEE_PROFILE_STANDARD:
|
|
101
|
-
|
|
102
|
-
case V3LPFeeProfile.
|
|
103
|
-
|
|
100
|
+
case V3LPFeeProfile.LP_FEE_PROFILE_STANDARD:
|
|
101
|
+
return 2500;
|
|
102
|
+
case V3LPFeeProfile.LP_FEE_PROFILE_LOW:
|
|
103
|
+
return 100;
|
|
104
|
+
case V3LPFeeProfile.LP_FEE_PROFILE_HIGH:
|
|
105
|
+
return 10000;
|
|
106
|
+
default:
|
|
107
|
+
return 2500; // 默认 STANDARD
|
|
104
108
|
}
|
|
105
109
|
}
|
|
106
110
|
/**
|
|
@@ -117,6 +121,11 @@ export function validateTaxDistribution(config) {
|
|
|
117
121
|
return { valid: true };
|
|
118
122
|
}
|
|
119
123
|
export class FlapPortal {
|
|
124
|
+
rpcUrl;
|
|
125
|
+
portal;
|
|
126
|
+
contract;
|
|
127
|
+
buyFeeRate;
|
|
128
|
+
sellFeeRate;
|
|
120
129
|
constructor(cfg) {
|
|
121
130
|
this.rpcUrl = cfg.rpcUrl;
|
|
122
131
|
this.portal = cfg.addressOverride ?? FLAP_PORTAL_ADDRESSES[cfg.chain];
|
|
@@ -131,13 +140,27 @@ export class FlapPortal {
|
|
|
131
140
|
async getTokenV2(token) {
|
|
132
141
|
const r = await this.contract.getTokenV2(token);
|
|
133
142
|
return {
|
|
134
|
-
status: r[0],
|
|
143
|
+
status: r[0],
|
|
144
|
+
reserve: r[1],
|
|
145
|
+
circulatingSupply: r[2],
|
|
146
|
+
price: r[3],
|
|
147
|
+
tokenVersion: r[4],
|
|
148
|
+
r: r[5],
|
|
149
|
+
dexSupplyThresh: r[6],
|
|
135
150
|
};
|
|
136
151
|
}
|
|
137
152
|
async getTokenV3(token) {
|
|
138
153
|
const r = await this.contract.getTokenV3(token);
|
|
139
154
|
return {
|
|
140
|
-
status: r[0],
|
|
155
|
+
status: r[0],
|
|
156
|
+
reserve: r[1],
|
|
157
|
+
circulatingSupply: r[2],
|
|
158
|
+
price: r[3],
|
|
159
|
+
tokenVersion: r[4],
|
|
160
|
+
r: r[5],
|
|
161
|
+
dexSupplyThresh: r[6],
|
|
162
|
+
quoteTokenAddress: r[7],
|
|
163
|
+
nativeToQuoteSwapEnabled: r[8],
|
|
141
164
|
};
|
|
142
165
|
}
|
|
143
166
|
async getTokenV4(token) {
|
|
@@ -220,9 +243,7 @@ export class FlapPortal {
|
|
|
220
243
|
// 含手续费(1% buy fee)
|
|
221
244
|
const remainingWithFee = remainingNet / (1 - this.buyFeeRate);
|
|
222
245
|
// 计算进度
|
|
223
|
-
const progressPercent = isGraduated
|
|
224
|
-
? '100.00'
|
|
225
|
-
: (currentReserveNum / graduationReserveNum * 100).toFixed(2);
|
|
246
|
+
const progressPercent = isGraduated ? '100.00' : ((currentReserveNum / graduationReserveNum) * 100).toFixed(2);
|
|
226
247
|
return {
|
|
227
248
|
remainingOkb: remainingWithFee.toFixed(6),
|
|
228
249
|
graduationReserve: graduationReserveNum.toFixed(6),
|
|
@@ -330,6 +351,7 @@ export class FlapPortal {
|
|
|
330
351
|
}
|
|
331
352
|
}
|
|
332
353
|
export class FlapPortalWriter extends FlapPortal {
|
|
354
|
+
wallet;
|
|
333
355
|
constructor(cfg, privateKey) {
|
|
334
356
|
super(cfg);
|
|
335
357
|
// 使用 ethers v6 创建钱包
|
|
@@ -6,9 +6,7 @@ import { FLAP_ORIGINAL_PORTAL_ADDRESSES, FLAP_TOKEN_IMPL_ADDRESSES, getVanitySuf
|
|
|
6
6
|
*/
|
|
7
7
|
export function predictVanityTokenAddress(salt, portal, tokenImpl) {
|
|
8
8
|
// 规范化 salt 到 bytes32(避免前端传入的短字符串导致不可预期行为)
|
|
9
|
-
const normalizedSalt = /^0x[0-9a-fA-F]{64}$/.test(salt)
|
|
10
|
-
? salt.toLowerCase()
|
|
11
|
-
: keccak256(salt);
|
|
9
|
+
const normalizedSalt = /^0x[0-9a-fA-F]{64}$/.test(salt) ? salt.toLowerCase() : keccak256(salt);
|
|
12
10
|
// 构建 EIP-1167 minimal proxy bytecode
|
|
13
11
|
const bytecode = '0x3d602d80600a3d3981f3363d3d373d3d3d363d73' + tokenImpl.slice(2).toLowerCase() + '5af43d82803e903d91602b57fd5bf3';
|
|
14
12
|
const bytecodeHash = keccak256(bytecode);
|
|
@@ -21,8 +19,7 @@ export function predictVanityTokenAddress(salt, portal, tokenImpl) {
|
|
|
21
19
|
* BSC/MONAD 默认使用 NORMAL 实现(非税版)
|
|
22
20
|
* @param taxedV5 - 是否使用 V5 高级税代币实现 (mkt/deflation/dividend/lp)
|
|
23
21
|
*/
|
|
24
|
-
export function predictVanityTokenAddressByChain(chain, salt, taxed = false, taxedV5 = false
|
|
25
|
-
) {
|
|
22
|
+
export function predictVanityTokenAddressByChain(chain, salt, taxed = false, taxedV5 = false) {
|
|
26
23
|
// 使用 Flap 平台的原始 Portal 地址(用于 CREATE2)
|
|
27
24
|
const portal = FLAP_ORIGINAL_PORTAL_ADDRESSES[chain];
|
|
28
25
|
let tokenImpl;
|
|
@@ -56,7 +53,7 @@ export async function findSaltEnding(opts) {
|
|
|
56
53
|
// 若未提供 seed,默认使用随机种子,避免每次结果都相同
|
|
57
54
|
let salt = opts.seed ?? keccak256(randomBytes(32));
|
|
58
55
|
let iterations = 0;
|
|
59
|
-
const limit = opts.maxIterations ??
|
|
56
|
+
const limit = opts.maxIterations ?? 1_000_000;
|
|
60
57
|
while (iterations < limit) {
|
|
61
58
|
const addr = predictVanityTokenAddress(salt, opts.portal, opts.tokenImpl);
|
|
62
59
|
if (addr.toLowerCase().endsWith(suffix)) {
|
|
@@ -105,6 +102,6 @@ export async function findSaltEndingByChain(opts) {
|
|
|
105
102
|
tokenImpl,
|
|
106
103
|
suffix,
|
|
107
104
|
maxIterations: opts.maxIterations,
|
|
108
|
-
seed: opts.seed
|
|
105
|
+
seed: opts.seed,
|
|
109
106
|
});
|
|
110
107
|
}
|
|
@@ -361,7 +361,7 @@ export declare function buildVaultParams(config?: TaxVaultConfig, chain?: string
|
|
|
361
361
|
* 金库参数通过 VaultPortal 的 vaultFactory/vaultData 传递
|
|
362
362
|
* 此函数仅用于向后兼容
|
|
363
363
|
*/
|
|
364
|
-
export declare function buildVaultExtensionParams(
|
|
364
|
+
export declare function buildVaultExtensionParams(): {
|
|
365
365
|
extensionID: string;
|
|
366
366
|
extensionData: string;
|
|
367
367
|
};
|
|
@@ -28,6 +28,32 @@
|
|
|
28
28
|
* @module vault
|
|
29
29
|
*/
|
|
30
30
|
import { Contract, AbiCoder, ZeroAddress } from 'ethers';
|
|
31
|
+
function mapFieldDescriptor(f) {
|
|
32
|
+
return {
|
|
33
|
+
name: f.name,
|
|
34
|
+
fieldType: f.fieldType,
|
|
35
|
+
description: f.description,
|
|
36
|
+
decimals: Number(f.decimals),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function mapApproveAction(a) {
|
|
40
|
+
return {
|
|
41
|
+
tokenType: a.tokenType,
|
|
42
|
+
amountFieldName: a.amountFieldName,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
function mapVaultMethodSchema(m) {
|
|
46
|
+
return {
|
|
47
|
+
name: m.name,
|
|
48
|
+
description: m.description,
|
|
49
|
+
inputs: m.inputs.map(mapFieldDescriptor),
|
|
50
|
+
outputs: m.outputs.map(mapFieldDescriptor),
|
|
51
|
+
approvals: m.approvals.map(mapApproveAction),
|
|
52
|
+
isInputArray: m.isInputArray,
|
|
53
|
+
isOutputArray: m.isOutputArray,
|
|
54
|
+
isWriteMethod: m.isWriteMethod,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
31
57
|
/**
|
|
32
58
|
* 金库类型显示标签
|
|
33
59
|
*/
|
|
@@ -115,7 +141,8 @@ export const VAULT_PORTAL_ABI = [
|
|
|
115
141
|
{
|
|
116
142
|
type: 'function',
|
|
117
143
|
name: 'newTaxTokenWithVault',
|
|
118
|
-
inputs: [
|
|
144
|
+
inputs: [
|
|
145
|
+
{
|
|
119
146
|
name: 'params',
|
|
120
147
|
type: 'tuple',
|
|
121
148
|
internalType: 'struct IVaultPortalTypes.NewTaxTokenWithVaultParams',
|
|
@@ -143,8 +170,9 @@ export const VAULT_PORTAL_ABI = [
|
|
|
143
170
|
{ name: 'minimumShareBalance', type: 'uint256', internalType: 'uint256' },
|
|
144
171
|
{ name: 'vaultFactory', type: 'address', internalType: 'address' },
|
|
145
172
|
{ name: 'vaultData', type: 'bytes', internalType: 'bytes' },
|
|
146
|
-
]
|
|
147
|
-
}
|
|
173
|
+
],
|
|
174
|
+
},
|
|
175
|
+
],
|
|
148
176
|
outputs: [{ name: 'token', type: 'address', internalType: 'address' }],
|
|
149
177
|
stateMutability: 'payable',
|
|
150
178
|
},
|
|
@@ -152,7 +180,8 @@ export const VAULT_PORTAL_ABI = [
|
|
|
152
180
|
type: 'function',
|
|
153
181
|
name: 'getVault',
|
|
154
182
|
inputs: [{ name: 'taxToken', type: 'address', internalType: 'address' }],
|
|
155
|
-
outputs: [
|
|
183
|
+
outputs: [
|
|
184
|
+
{
|
|
156
185
|
name: 'info',
|
|
157
186
|
type: 'tuple',
|
|
158
187
|
internalType: 'struct IVaultPortalTypes.VaultInfo',
|
|
@@ -162,8 +191,9 @@ export const VAULT_PORTAL_ABI = [
|
|
|
162
191
|
{ name: 'description', type: 'string', internalType: 'string' },
|
|
163
192
|
{ name: 'isOfficial', type: 'bool', internalType: 'bool' },
|
|
164
193
|
{ name: 'riskLevel', type: 'uint8', internalType: 'enum IVaultPortalTypes.RiskLevel' },
|
|
165
|
-
]
|
|
166
|
-
}
|
|
194
|
+
],
|
|
195
|
+
},
|
|
196
|
+
],
|
|
167
197
|
stateMutability: 'view',
|
|
168
198
|
},
|
|
169
199
|
{
|
|
@@ -190,9 +220,7 @@ export const VAULT_FACTORY_V2_ABI = [
|
|
|
190
220
|
/**
|
|
191
221
|
* VaultBase ABI(V1)
|
|
192
222
|
*/
|
|
193
|
-
export const VAULT_BASE_ABI = [
|
|
194
|
-
'function description() public view returns (string)',
|
|
195
|
-
];
|
|
223
|
+
export const VAULT_BASE_ABI = ['function description() public view returns (string)'];
|
|
196
224
|
/**
|
|
197
225
|
* VaultBaseV2 ABI
|
|
198
226
|
*/
|
|
@@ -241,16 +269,21 @@ function mapFieldTypeToAbiType(fieldType) {
|
|
|
241
269
|
function processFieldValue(field, rawValue) {
|
|
242
270
|
if (rawValue === undefined || rawValue === null) {
|
|
243
271
|
switch (field.fieldType) {
|
|
244
|
-
case 'address':
|
|
245
|
-
|
|
246
|
-
case '
|
|
272
|
+
case 'address':
|
|
273
|
+
return ZeroAddress;
|
|
274
|
+
case 'bool':
|
|
275
|
+
return false;
|
|
276
|
+
case 'string':
|
|
277
|
+
return '';
|
|
247
278
|
case 'bytes':
|
|
248
|
-
case 'bytes32':
|
|
249
|
-
|
|
279
|
+
case 'bytes32':
|
|
280
|
+
return '0x' + '00'.repeat(32);
|
|
281
|
+
default:
|
|
282
|
+
return 0;
|
|
250
283
|
}
|
|
251
284
|
}
|
|
252
285
|
if (field.decimals > 0 && typeof rawValue === 'number') {
|
|
253
|
-
return BigInt(Math.round(rawValue *
|
|
286
|
+
return BigInt(Math.round(rawValue * 10 ** field.decimals));
|
|
254
287
|
}
|
|
255
288
|
if (field.fieldType === 'bool') {
|
|
256
289
|
return Boolean(rawValue);
|
|
@@ -328,7 +361,7 @@ export function buildVaultParams(config, chain) {
|
|
|
328
361
|
* 金库参数通过 VaultPortal 的 vaultFactory/vaultData 传递
|
|
329
362
|
* 此函数仅用于向后兼容
|
|
330
363
|
*/
|
|
331
|
-
export function buildVaultExtensionParams(
|
|
364
|
+
export function buildVaultExtensionParams() {
|
|
332
365
|
// 金库模式下 extensionID/extensionData 始终为零值
|
|
333
366
|
return {
|
|
334
367
|
extensionID: NONE_EXTENSION_ID,
|
|
@@ -344,15 +377,10 @@ export function buildVaultExtensionParams(_config) {
|
|
|
344
377
|
export async function queryVaultDataSchema(provider, factoryAddress) {
|
|
345
378
|
try {
|
|
346
379
|
const factory = new Contract(factoryAddress, VAULT_FACTORY_V2_ABI, provider);
|
|
347
|
-
const raw = await factory.vaultDataSchema();
|
|
380
|
+
const raw = (await factory.vaultDataSchema());
|
|
348
381
|
return {
|
|
349
382
|
description: raw.description,
|
|
350
|
-
fields: raw.fields.map(
|
|
351
|
-
name: f.name,
|
|
352
|
-
fieldType: f.fieldType,
|
|
353
|
-
description: f.description,
|
|
354
|
-
decimals: Number(f.decimals),
|
|
355
|
-
})),
|
|
383
|
+
fields: raw.fields.map(mapFieldDescriptor),
|
|
356
384
|
isArray: raw.isArray,
|
|
357
385
|
};
|
|
358
386
|
}
|
|
@@ -366,33 +394,11 @@ export async function queryVaultDataSchema(provider, factoryAddress) {
|
|
|
366
394
|
export async function queryVaultUISchema(provider, vaultAddress) {
|
|
367
395
|
try {
|
|
368
396
|
const vault = new Contract(vaultAddress, VAULT_BASE_V2_ABI, provider);
|
|
369
|
-
const raw = await vault.vaultUISchema();
|
|
397
|
+
const raw = (await vault.vaultUISchema());
|
|
370
398
|
return {
|
|
371
399
|
vaultType: raw.vaultType,
|
|
372
400
|
description: raw.description,
|
|
373
|
-
methods: raw.methods.map(
|
|
374
|
-
name: m.name,
|
|
375
|
-
description: m.description,
|
|
376
|
-
inputs: m.inputs.map((f) => ({
|
|
377
|
-
name: f.name,
|
|
378
|
-
fieldType: f.fieldType,
|
|
379
|
-
description: f.description,
|
|
380
|
-
decimals: Number(f.decimals),
|
|
381
|
-
})),
|
|
382
|
-
outputs: m.outputs.map((f) => ({
|
|
383
|
-
name: f.name,
|
|
384
|
-
fieldType: f.fieldType,
|
|
385
|
-
description: f.description,
|
|
386
|
-
decimals: Number(f.decimals),
|
|
387
|
-
})),
|
|
388
|
-
approvals: m.approvals.map((a) => ({
|
|
389
|
-
tokenType: a.tokenType,
|
|
390
|
-
amountFieldName: a.amountFieldName,
|
|
391
|
-
})),
|
|
392
|
-
isInputArray: m.isInputArray,
|
|
393
|
-
isOutputArray: m.isOutputArray,
|
|
394
|
-
isWriteMethod: m.isWriteMethod,
|
|
395
|
-
})),
|
|
401
|
+
methods: raw.methods.map(mapVaultMethodSchema),
|
|
396
402
|
};
|
|
397
403
|
}
|
|
398
404
|
catch {
|
|
@@ -437,7 +443,7 @@ export async function validateVaultFactory(provider, factoryAddress) {
|
|
|
437
443
|
export async function getVaultInfo(provider, vaultPortalAddress, taxTokenAddress) {
|
|
438
444
|
try {
|
|
439
445
|
const portal = new Contract(vaultPortalAddress, VAULT_PORTAL_ABI, provider);
|
|
440
|
-
const info = await portal.getVault(taxTokenAddress);
|
|
446
|
+
const info = (await portal.getVault(taxTokenAddress));
|
|
441
447
|
return {
|
|
442
448
|
vault: info.vault,
|
|
443
449
|
vaultFactory: info.vaultFactory,
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { GAS_CONFIG } from '../../constants/gas.js';
|
|
2
|
+
export function getDeadline(minutes = GAS_CONFIG.DEFAULT_DEADLINE_MINUTES) {
|
|
3
|
+
return Math.floor(Date.now() / 1000) + 60 * minutes;
|
|
4
|
+
}
|
|
5
|
+
export function encodeV3Path(tokens, fees) {
|
|
6
|
+
if (tokens.length < 2) {
|
|
7
|
+
throw new Error('V3 path 需要至少 2 个代币');
|
|
8
|
+
}
|
|
9
|
+
if (fees.length !== tokens.length - 1) {
|
|
10
|
+
throw new Error(`费率数量 (${fees.length}) 必须等于代币数量 - 1 (${tokens.length - 1})`);
|
|
11
|
+
}
|
|
12
|
+
let path = '0x';
|
|
13
|
+
for (let i = 0; i < tokens.length; i++) {
|
|
14
|
+
path += tokens[i].slice(2).toLowerCase().padStart(40, '0');
|
|
15
|
+
if (i < fees.length) {
|
|
16
|
+
path += fees[i].toString(16).padStart(6, '0');
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return path;
|
|
20
|
+
}
|
|
21
|
+
export function decodeV3Path(path) {
|
|
22
|
+
const cleanPath = path.startsWith('0x') ? path.slice(2) : path;
|
|
23
|
+
const tokens = [];
|
|
24
|
+
const fees = [];
|
|
25
|
+
let offset = 0;
|
|
26
|
+
while (offset < cleanPath.length) {
|
|
27
|
+
tokens.push('0x' + cleanPath.slice(offset, offset + 40));
|
|
28
|
+
offset += 40;
|
|
29
|
+
if (offset < cleanPath.length) {
|
|
30
|
+
fees.push(parseInt(cleanPath.slice(offset, offset + 6), 16));
|
|
31
|
+
offset += 6;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return { tokens, fees };
|
|
35
|
+
}
|