four-flap-meme-sdk 2.2.1 → 2.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +6 -41
- package/README.md +0 -31
- package/README.zh-CN.md +6 -41
- package/dist/chains/bsc/four/approve-tokenmanager.d.ts +26 -1
- package/dist/chains/bsc/four/approve-tokenmanager.js +113 -1
- package/dist/chains/bsc/four/config.d.ts +67 -5
- package/dist/chains/bsc/four/config.js +114 -2
- package/dist/chains/bsc/four/core.d.ts +4 -1
- package/dist/chains/bsc/four/core.js +592 -1
- package/dist/chains/bsc/four/index.d.ts +6 -6
- package/dist/chains/bsc/four/index.js +6 -6
- package/dist/chains/bsc/four/internal.d.ts +46 -2
- package/dist/chains/bsc/four/internal.js +239 -2
- package/dist/chains/bsc/four/pancake-proxy.d.ts +28 -1
- package/dist/chains/bsc/four/pancake-proxy.js +687 -1
- package/dist/chains/bsc/four/private.d.ts +27 -1
- package/dist/chains/bsc/four/private.js +477 -1
- package/dist/chains/bsc/four/submit.d.ts +315 -2
- package/dist/chains/bsc/four/submit.js +752 -2
- package/dist/chains/bsc/four/swap-buy-first.d.ts +55 -2
- package/dist/chains/bsc/four/swap-buy-first.js +507 -2
- package/dist/chains/bsc/four/swap-internal.d.ts +3 -1
- package/dist/chains/bsc/four/swap-internal.js +18 -1
- package/dist/chains/bsc/four/swap.d.ts +144 -2
- package/dist/chains/bsc/four/swap.js +766 -2
- package/dist/chains/bsc/four/types.d.ts +476 -1
- package/dist/chains/bsc/four/utils.d.ts +18 -5
- package/dist/chains/bsc/four/utils.js +1552 -5
- package/dist/chains/bsc/pancake/bundle-buy-first.d.ts +91 -1
- package/dist/chains/bsc/pancake/bundle-buy-first.js +212 -97
- package/dist/chains/bsc/pancake/bundle-swap.d.ts +79 -1
- package/dist/chains/bsc/pancake/bundle-swap.js +726 -114
- package/dist/chains/bsc/pancake/index.d.ts +2 -4
- package/dist/chains/bsc/pancake/index.js +3 -1
- package/dist/chains/bsc/platforms/iro/factory.d.ts +2 -2
- package/dist/chains/bsc/platforms/iro/factory.js +1 -3
- package/dist/chains/bsc/platforms/iro/index.d.ts +5 -5
- package/dist/chains/bsc/platforms/iro/index.js +3 -3
- package/dist/chains/bsc/platforms/iro/pool.js +10 -31
- package/dist/chains/bsc/platforms/iro/token.js +1 -4
- package/dist/chains/eni/batch-router/bundle-approve.js +3 -4
- package/dist/chains/eni/batch-router/transfer.js +25 -55
- package/dist/chains/eni/batch-router/utils.js +6 -32
- package/dist/chains/eni/bundler/sign.js +6 -5
- package/dist/chains/eni/bundler/submit.js +4 -1
- package/dist/chains/eni/constants.js +1 -1
- package/dist/chains/eni/index.d.ts +1 -2
- package/dist/chains/eni/index.js +0 -1
- package/dist/chains/eni/platforms/daoaas/create.js +2 -2
- package/dist/chains/eni/platforms/daoaas/index.d.ts +3 -3
- package/dist/chains/eni/platforms/daoaas/index.js +3 -3
- package/dist/chains/eni/platforms/daoaas/meta.js +6 -9
- package/dist/chains/eni/platforms/daoaas/portal-direct.js +44 -28
- package/dist/chains/eni/platforms/daoaas/portal.js +6 -10
- package/dist/chains/eni/platforms/dswap/liquidity.js +26 -58
- package/dist/chains/eni/platforms/fair-launch/index.d.ts +2 -2
- package/dist/chains/eni/platforms/fair-launch/index.js +1 -1
- package/dist/chains/eni/platforms/fair-launch/launcher.js +46 -87
- package/dist/chains/eni/platforms/fair-launch/pool.js +1 -4
- package/dist/chains/eni/platforms/fair-launch/presets.js +2 -2
- package/dist/chains/eni/platforms/iro/factory.d.ts +2 -2
- package/dist/chains/eni/platforms/iro/factory.js +1 -3
- package/dist/chains/eni/platforms/iro/index.d.ts +6 -6
- package/dist/chains/eni/platforms/iro/index.js +4 -4
- package/dist/chains/eni/platforms/iro/pool.js +26 -90
- package/dist/chains/eni/platforms/iro/token.js +31 -107
- package/dist/chains/eni/platforms/iro/whitelist.js +18 -6
- package/dist/chains/index.d.ts +0 -13
- package/dist/chains/index.js +0 -13
- package/dist/chains/xlayer/eip7702/bundle-approve.d.ts +26 -2
- package/dist/chains/xlayer/eip7702/bundle-approve.js +21 -11
- package/dist/chains/xlayer/eip7702/bundle-buy.d.ts +6 -2
- package/dist/chains/xlayer/eip7702/bundle-buy.js +51 -13
- package/dist/chains/xlayer/eip7702/bundle-create.js +59 -93
- package/dist/chains/xlayer/eip7702/bundle-sell.d.ts +6 -2
- package/dist/chains/xlayer/eip7702/bundle-sell.js +111 -29
- package/dist/chains/xlayer/eip7702/bundle-swap.d.ts +65 -3
- package/dist/chains/xlayer/eip7702/bundle-swap.js +245 -51
- package/dist/chains/xlayer/eip7702/constants.d.ts +16 -1
- package/dist/chains/xlayer/eip7702/constants.js +21 -3
- package/dist/chains/xlayer/eip7702/index.d.ts +46 -28
- package/dist/chains/xlayer/eip7702/index.js +81 -28
- package/dist/chains/xlayer/eip7702/multi-hop-transfer.d.ts +203 -2
- package/dist/chains/xlayer/eip7702/multi-hop-transfer.js +307 -63
- package/dist/chains/xlayer/eip7702/types.d.ts +0 -88
- package/dist/chains/xlayer/eip7702/utils.d.ts +3 -0
- package/dist/chains/xlayer/eip7702/utils.js +28 -23
- package/dist/chains/xlayer/eip7702/volume.d.ts +184 -6
- package/dist/chains/xlayer/eip7702/volume.js +164 -89
- package/dist/chains/xlayer/eoa/constants.js +1 -1
- package/dist/chains/xlayer/eoa/dex-helpers.js +5 -5
- package/dist/chains/xlayer/eoa/eoa-bundle-swap.d.ts +95 -1
- package/dist/chains/xlayer/eoa/eoa-bundle-swap.js +299 -66
- package/dist/chains/xlayer/eoa/eoa-wash-volume.d.ts +1 -1
- package/dist/chains/xlayer/eoa/eoa-wash-volume.js +23 -18
- package/dist/chains/xlayer/eoa/index.d.ts +6 -10
- package/dist/chains/xlayer/eoa/index.js +23 -8
- package/dist/chains/xlayer/eoa/portal-ops.js +2 -7
- package/dist/chains/xlayer/eoa/router-manager.js +3 -3
- package/dist/chains/xlayer/eoa/types.d.ts +2 -2
- package/dist/chains/xlayer/eoa/types.js +3 -1
- package/dist/chains/xlayer/index.d.ts +2 -3
- package/dist/chains/xlayer/index.js +7 -4
- package/dist/contracts/helper3.d.ts +5 -20
- package/dist/contracts/helper3.js +20 -56
- package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.d.ts +26 -1
- package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.js +113 -1
- package/dist/contracts/tm-bundle-merkle/config.d.ts +67 -5
- package/dist/contracts/tm-bundle-merkle/config.js +114 -2
- package/dist/contracts/tm-bundle-merkle/core.d.ts +4 -1
- package/dist/contracts/tm-bundle-merkle/core.js +591 -1
- package/dist/contracts/tm-bundle-merkle/index.d.ts +5 -5
- package/dist/contracts/tm-bundle-merkle/index.js +5 -5
- package/dist/contracts/tm-bundle-merkle/internal.d.ts +46 -2
- package/dist/contracts/tm-bundle-merkle/internal.js +238 -2
- package/dist/contracts/tm-bundle-merkle/pancake-proxy.d.ts +28 -1
- package/dist/contracts/tm-bundle-merkle/pancake-proxy.js +686 -1
- package/dist/contracts/tm-bundle-merkle/private.d.ts +27 -1
- package/dist/contracts/tm-bundle-merkle/private.js +476 -1
- package/dist/contracts/tm-bundle-merkle/submit.d.ts +314 -3
- package/dist/contracts/tm-bundle-merkle/submit.js +928 -3
- package/dist/contracts/tm-bundle-merkle/swap-buy-first.d.ts +55 -2
- package/dist/contracts/tm-bundle-merkle/swap-buy-first.js +506 -2
- package/dist/contracts/tm-bundle-merkle/swap-internal.d.ts +3 -1
- package/dist/contracts/tm-bundle-merkle/swap-internal.js +18 -1
- package/dist/contracts/tm-bundle-merkle/swap.d.ts +144 -2
- package/dist/contracts/tm-bundle-merkle/swap.js +764 -2
- package/dist/contracts/tm-bundle-merkle/types.d.ts +476 -1
- package/dist/contracts/tm-bundle-merkle/utils.d.ts +18 -6
- package/dist/contracts/tm-bundle-merkle/utils.js +1501 -6
- package/dist/contracts/tm-bundle.d.ts +51 -3
- package/dist/contracts/tm-bundle.js +177 -108
- package/dist/contracts/tm.d.ts +2 -3
- package/dist/contracts/tm.js +32 -37
- package/dist/contracts/tm1.js +4 -9
- package/dist/contracts/tm2.js +4 -9
- package/dist/dex/direct-router.d.ts +125 -3
- package/dist/dex/direct-router.js +666 -237
- package/dist/flows/create.d.ts +1 -2
- package/dist/flows/create.js +6 -6
- package/dist/index.d.ts +85 -20
- package/dist/index.js +215 -20
- package/dist/shared/abis/TaxToken.json +105 -0
- package/dist/shared/abis/TokenManager2.json +60 -0
- package/dist/shared/abis/common.d.ts +83 -2
- package/dist/shared/abis/common.js +252 -2
- package/dist/shared/abis/index.d.ts +6 -5
- package/dist/shared/abis/index.js +7 -5
- package/dist/shared/clients/blockrazor.js +25 -39
- package/dist/shared/clients/club48.d.ts +2 -2
- package/dist/shared/clients/club48.js +29 -34
- package/dist/shared/clients/emitservice.js +0 -2
- package/dist/shared/clients/four.d.ts +6 -21
- package/dist/shared/clients/four.js +24 -29
- package/dist/shared/clients/merkle.js +34 -27
- package/dist/shared/constants/addresses.d.ts +1 -1
- package/dist/shared/constants/addresses.js +2 -11
- package/dist/shared/constants/chains.d.ts +1 -1
- package/dist/shared/constants/chains.js +1 -1
- package/dist/shared/constants/gas.d.ts +1 -1
- package/dist/shared/constants/gas.js +6 -2
- package/dist/shared/constants/index.d.ts +0 -3
- package/dist/shared/constants/index.js +0 -1
- package/dist/shared/flap/abi.js +1 -1
- package/dist/shared/flap/constants.d.ts +2 -1
- package/dist/shared/flap/constants.js +3 -2
- package/dist/shared/flap/curve.js +0 -3
- package/dist/shared/flap/errors.d.ts +4 -1
- package/dist/shared/flap/errors.js +1 -20
- package/dist/shared/flap/index.d.ts +3 -3
- package/dist/shared/flap/index.js +3 -3
- package/dist/shared/flap/meta.d.ts +18 -22
- package/dist/shared/flap/meta.js +17 -12
- package/dist/shared/flap/permit.js +2 -5
- package/dist/shared/flap/pinata.d.ts +6 -22
- package/dist/shared/flap/pinata.js +26 -21
- package/dist/shared/flap/portal-bundle-merkle/config.d.ts +72 -3
- package/dist/shared/flap/portal-bundle-merkle/config.js +124 -4
- package/dist/shared/flap/portal-bundle-merkle/core.d.ts +4 -0
- package/dist/shared/flap/portal-bundle-merkle/core.js +172 -92
- package/dist/shared/flap/portal-bundle-merkle/create-to-dex.d.ts +1 -2
- package/dist/shared/flap/portal-bundle-merkle/create-to-dex.js +99 -106
- package/dist/shared/flap/portal-bundle-merkle/curve-to-dex.js +92 -100
- package/dist/shared/flap/portal-bundle-merkle/index.d.ts +7 -11
- package/dist/shared/flap/portal-bundle-merkle/index.js +7 -4
- package/dist/shared/flap/portal-bundle-merkle/pancake-proxy.js +68 -71
- package/dist/shared/flap/portal-bundle-merkle/private.js +114 -61
- package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.d.ts +64 -1
- package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.js +247 -66
- package/dist/shared/flap/portal-bundle-merkle/swap.d.ts +71 -2
- package/dist/shared/flap/portal-bundle-merkle/swap.js +410 -103
- package/dist/shared/flap/portal-bundle-merkle/types.d.ts +7 -73
- package/dist/shared/flap/portal-bundle-merkle/utils.d.ts +80 -1
- package/dist/shared/flap/portal-bundle-merkle/utils.js +265 -145
- package/dist/shared/flap/portal-bundle.js +56 -55
- package/dist/shared/flap/portal.d.ts +3 -1
- package/dist/shared/flap/portal.js +25 -32
- package/dist/shared/flap/vanity.d.ts +5 -1
- package/dist/shared/flap/vanity.js +17 -6
- package/dist/shared/flap/vault.d.ts +124 -17
- package/dist/shared/flap/vault.js +148 -67
- package/dist/shared/four/tax-token.d.ts +1 -1
- package/dist/shared/four/tax-token.js +7 -27
- package/dist/shared/index.d.ts +0 -6
- package/dist/shared/index.js +0 -4
- package/dist/utils/airdrop-sweep.d.ts +76 -4
- package/dist/utils/airdrop-sweep.js +55 -42
- package/dist/utils/bundle-helpers.d.ts +243 -9
- package/dist/utils/bundle-helpers.js +584 -10
- package/dist/utils/constants.d.ts +61 -5
- package/dist/utils/constants.js +80 -5
- package/dist/utils/contract-factory.d.ts +4 -2
- package/dist/utils/contract-factory.js +18 -25
- package/dist/utils/erc20.d.ts +89 -7
- package/dist/utils/erc20.js +125 -94
- package/dist/utils/errors.d.ts +1 -12
- package/dist/utils/errors.js +1 -60
- package/dist/utils/holders-maker.d.ts +138 -2
- package/dist/utils/holders-maker.js +661 -26
- package/dist/utils/lp-inspect.d.ts +112 -2
- package/dist/utils/lp-inspect.js +223 -73
- package/dist/utils/mpcExclusive.d.ts +5 -2
- package/dist/utils/mpcExclusive.js +3 -4
- package/dist/utils/private-sale.d.ts +58 -2
- package/dist/utils/private-sale.js +15 -4
- package/dist/utils/provider-factory.d.ts +0 -4
- package/dist/utils/provider-factory.js +0 -10
- package/dist/utils/quote-helpers.d.ts +45 -4
- package/dist/utils/quote-helpers.js +74 -17
- package/dist/utils/stealth-transfer.d.ts +28 -2
- package/dist/utils/stealth-transfer.js +15 -31
- package/dist/utils/swap-helpers.d.ts +15 -2
- package/dist/utils/swap-helpers.js +11 -6
- package/dist/utils/wallet.d.ts +25 -2
- package/dist/utils/wallet.js +10 -13
- package/package.json +4 -160
- package/dist/__tests__/subpath-exports.test.d.ts +0 -1
- package/dist/__tests__/subpath-exports.test.js +0 -64
- package/dist/abis/common.d.ts +0 -85
- package/dist/abis/common.js +0 -260
- package/dist/abis/contracts/TaxToken.json +0 -969
- package/dist/abis/contracts/TokenManager2.json +0 -136
- package/dist/abis/contracts/index.d.ts +0 -5
- package/dist/abis/contracts/index.js +0 -5
- package/dist/abis/flap/index.d.ts +0 -3
- package/dist/abis/flap/index.js +0 -3
- package/dist/abis/flap/portal-events.d.ts +0 -6
- package/dist/abis/flap/portal-events.js +0 -17
- package/dist/abis/flap/portal.d.ts +0 -6
- package/dist/abis/flap/portal.js +0 -37
- package/dist/abis/flap/vault.d.ts +0 -171
- package/dist/abis/flap/vault.js +0 -91
- package/dist/abis/index.d.ts +0 -8
- package/dist/abis/index.js +0 -11
- package/dist/bundle-core/__tests__/config-helpers.test.d.ts +0 -1
- package/dist/bundle-core/__tests__/config-helpers.test.js +0 -28
- package/dist/bundle-core/__tests__/facade-parity.test.d.ts +0 -1
- package/dist/bundle-core/__tests__/facade-parity.test.js +0 -33
- package/dist/bundle-core/__tests__/sign-context-helpers.test.d.ts +0 -1
- package/dist/bundle-core/__tests__/sign-context-helpers.test.js +0 -60
- package/dist/bundle-core/__tests__/sign-fixture.test.d.ts +0 -1
- package/dist/bundle-core/__tests__/sign-fixture.test.js +0 -220
- package/dist/bundle-core/__tests__/sign-fixtures.d.ts +0 -10
- package/dist/bundle-core/__tests__/sign-fixtures.js +0 -16
- package/dist/bundle-core/config-helpers.d.ts +0 -36
- package/dist/bundle-core/config-helpers.js +0 -57
- package/dist/bundle-core/errors.d.ts +0 -50
- package/dist/bundle-core/errors.js +0 -35
- package/dist/bundle-core/four-meme/approve-tokenmanager.d.ts +0 -7
- package/dist/bundle-core/four-meme/approve-tokenmanager.js +0 -99
- package/dist/bundle-core/four-meme/core-helpers.d.ts +0 -8
- package/dist/bundle-core/four-meme/core-helpers.js +0 -40
- package/dist/bundle-core/four-meme/core.d.ts +0 -4
- package/dist/bundle-core/four-meme/core.js +0 -515
- package/dist/bundle-core/four-meme/pancake-proxy.d.ts +0 -28
- package/dist/bundle-core/four-meme/pancake-proxy.js +0 -679
- package/dist/bundle-core/four-meme/private.d.ts +0 -27
- package/dist/bundle-core/four-meme/private.js +0 -465
- package/dist/bundle-core/four-meme/sign-context-helpers.d.ts +0 -2
- package/dist/bundle-core/four-meme/sign-context-helpers.js +0 -2
- package/dist/bundle-core/four-meme/swap-buy-first.d.ts +0 -8
- package/dist/bundle-core/four-meme/swap-buy-first.js +0 -493
- package/dist/bundle-core/four-meme/swap-hop-helpers.d.ts +0 -6
- package/dist/bundle-core/four-meme/swap-hop-helpers.js +0 -63
- package/dist/bundle-core/four-meme/swap-internal.d.ts +0 -3
- package/dist/bundle-core/four-meme/swap-internal.js +0 -18
- package/dist/bundle-core/four-meme/swap-sign-helpers.d.ts +0 -27
- package/dist/bundle-core/four-meme/swap-sign-helpers.js +0 -105
- package/dist/bundle-core/four-meme/swap.d.ts +0 -17
- package/dist/bundle-core/four-meme/swap.js +0 -505
- package/dist/bundle-core/four-meme/types/buy-first.d.ts +0 -50
- package/dist/bundle-core/four-meme/types/buy-first.js +0 -1
- package/dist/bundle-core/four-meme/types/core-flow.d.ts +0 -63
- package/dist/bundle-core/four-meme/types/core-flow.js +0 -1
- package/dist/bundle-core/four-meme/types/index.d.ts +0 -600
- package/dist/bundle-core/four-meme/types/index.js +0 -1
- package/dist/bundle-core/four-meme/types/swap-internal.d.ts +0 -19
- package/dist/bundle-core/four-meme/types/swap-internal.js +0 -1
- package/dist/bundle-core/four-meme/types.d.ts +0 -1
- package/dist/bundle-core/four-meme/types.js +0 -1
- package/dist/bundle-core/four-meme/utils-disperse.d.ts +0 -7
- package/dist/bundle-core/four-meme/utils-disperse.js +0 -396
- package/dist/bundle-core/four-meme/utils-pairwise.d.ts +0 -8
- package/dist/bundle-core/four-meme/utils-pairwise.js +0 -328
- package/dist/bundle-core/four-meme/utils-sweep.d.ts +0 -8
- package/dist/bundle-core/four-meme/utils-sweep.js +0 -744
- package/dist/bundle-core/index.d.ts +0 -8
- package/dist/bundle-core/index.js +0 -8
- package/dist/bundle-core/internal.d.ts +0 -21
- package/dist/bundle-core/internal.js +0 -182
- package/dist/bundle-core/sign-context-helpers.d.ts +0 -25
- package/dist/bundle-core/sign-context-helpers.js +0 -67
- package/dist/bundle-core/submit.d.ts +0 -293
- package/dist/bundle-core/submit.js +0 -727
- package/dist/bundle-core/types/index.d.ts +0 -8
- package/dist/bundle-core/types/index.js +0 -1
- package/dist/bundle-core/types.d.ts +0 -1
- package/dist/bundle-core/types.js +0 -1
- package/dist/chains/bsc/four/utils-disperse.d.ts +0 -1
- package/dist/chains/bsc/four/utils-disperse.js +0 -1
- package/dist/chains/bsc/four/utils-pairwise.d.ts +0 -1
- package/dist/chains/bsc/four/utils-pairwise.js +0 -1
- package/dist/chains/bsc/four/utils-sweep.d.ts +0 -1
- package/dist/chains/bsc/four/utils-sweep.js +0 -1
- package/dist/chains/bsc/iro.d.ts +0 -5
- package/dist/chains/bsc/iro.js +0 -4
- package/dist/chains/bsc/pancake/bundle-buy-first-helpers.d.ts +0 -159
- package/dist/chains/bsc/pancake/bundle-buy-first-helpers.js +0 -117
- package/dist/chains/bsc/pancake/bundle-swap-helpers.d.ts +0 -241
- package/dist/chains/bsc/pancake/bundle-swap-helpers.js +0 -565
- package/dist/chains/eni/flat-aliases.d.ts +0 -10
- package/dist/chains/eni/flat-aliases.js +0 -8
- package/dist/chains/eni/submit.d.ts +0 -43
- package/dist/chains/eni/submit.js +0 -286
- package/dist/chains/xlayer/eip7702/flat-aliases.d.ts +0 -13
- package/dist/chains/xlayer/eip7702/flat-aliases.js +0 -10
- package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.d.ts +0 -79
- package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.js +0 -1
- package/dist/chains/xlayer/eip7702/transfer-context-helpers.d.ts +0 -26
- package/dist/chains/xlayer/eip7702/transfer-context-helpers.js +0 -57
- package/dist/chains/xlayer/eip7702/volume-helpers.d.ts +0 -148
- package/dist/chains/xlayer/eip7702/volume-helpers.js +0 -48
- package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.d.ts +0 -126
- package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.js +0 -228
- package/dist/contracts/tm-bundle-helpers.d.ts +0 -88
- package/dist/contracts/tm-bundle-helpers.js +0 -72
- package/dist/contracts/tm-bundle-merkle/utils-disperse.d.ts +0 -1
- package/dist/contracts/tm-bundle-merkle/utils-disperse.js +0 -1
- package/dist/contracts/tm-bundle-merkle/utils-pairwise.d.ts +0 -1
- package/dist/contracts/tm-bundle-merkle/utils-pairwise.js +0 -1
- package/dist/contracts/tm-bundle-merkle/utils-sweep.d.ts +0 -1
- package/dist/contracts/tm-bundle-merkle/utils-sweep.js +0 -1
- package/dist/dex/direct-router-helpers.d.ts +0 -264
- package/dist/dex/direct-router-helpers.js +0 -539
- package/dist/dex/types.d.ts +0 -81
- package/dist/dex/types.js +0 -1
- package/dist/exports/root-bundle-and-tooling.d.ts +0 -27
- package/dist/exports/root-bundle-and-tooling.js +0 -30
- package/dist/exports/root-eni-and-bsc-iro.d.ts +0 -26
- package/dist/exports/root-eni-and-bsc-iro.js +0 -66
- package/dist/exports/root-foundations.d.ts +0 -35
- package/dist/exports/root-foundations.js +0 -70
- package/dist/exports/root-swap-dex-and-xlayer.d.ts +0 -30
- package/dist/exports/root-swap-dex-and-xlayer.js +0 -78
- package/dist/flap/index.d.ts +0 -10
- package/dist/flap/index.js +0 -8
- package/dist/flows/index.d.ts +0 -1
- package/dist/flows/index.js +0 -1
- package/dist/merkle/index.d.ts +0 -12
- package/dist/merkle/index.js +0 -11
- package/dist/shared/clients/index.d.ts +0 -8
- package/dist/shared/clients/index.js +0 -8
- package/dist/shared/constants/quote.d.ts +0 -30
- package/dist/shared/constants/quote.js +0 -37
- package/dist/shared/flap/portal-bundle-merkle/core-helpers.d.ts +0 -32
- package/dist/shared/flap/portal-bundle-merkle/core-helpers.js +0 -83
- package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.d.ts +0 -125
- package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.js +0 -113
- package/dist/shared/flap/portal-bundle-merkle/swap-helpers.d.ts +0 -149
- package/dist/shared/flap/portal-bundle-merkle/swap-helpers.js +0 -259
- package/dist/shared/foundation/dex/v3-path.d.ts +0 -6
- package/dist/shared/foundation/dex/v3-path.js +0 -35
- package/dist/shared/foundation/gas/bundle-gas.d.ts +0 -49
- package/dist/shared/foundation/gas/bundle-gas.js +0 -93
- package/dist/shared/foundation/gas/profit-hop.d.ts +0 -20
- package/dist/shared/foundation/gas/profit-hop.js +0 -72
- package/dist/shared/foundation/index.d.ts +0 -13
- package/dist/shared/foundation/index.js +0 -12
- package/dist/shared/foundation/nonce/nonce-manager.d.ts +0 -17
- package/dist/shared/foundation/nonce/nonce-manager.js +0 -183
- package/dist/shared/foundation/normalize-unknown.d.ts +0 -9
- package/dist/shared/foundation/normalize-unknown.js +0 -29
- package/dist/shared/foundation/sdk-logger.d.ts +0 -13
- package/dist/shared/foundation/sdk-logger.js +0 -12
- package/dist/shared/foundation/tx/build-request.d.ts +0 -17
- package/dist/shared/foundation/tx/build-request.js +0 -25
- package/dist/shared/foundation/tx/sign-batch.d.ts +0 -5
- package/dist/shared/foundation/tx/sign-batch.js +0 -26
- package/dist/shared/foundation/tx/wallet-sign-patch.d.ts +0 -1
- package/dist/shared/foundation/tx/wallet-sign-patch.js +0 -18
- package/dist/shared/foundation/types/airdrop-sweep.d.ts +0 -79
- package/dist/shared/foundation/types/airdrop-sweep.js +0 -1
- package/dist/shared/foundation/types/erc20.d.ts +0 -65
- package/dist/shared/foundation/types/erc20.js +0 -1
- package/dist/shared/foundation/types/holders-maker.d.ts +0 -64
- package/dist/shared/foundation/types/holders-maker.js +0 -1
- package/dist/shared/foundation/types/index.d.ts +0 -7
- package/dist/shared/foundation/types/index.js +0 -1
- package/dist/shared/foundation/types/lp-inspect.d.ts +0 -102
- package/dist/shared/foundation/types/lp-inspect.js +0 -1
- package/dist/shared/foundation/types/multicall.d.ts +0 -5
- package/dist/shared/foundation/types/multicall.js +0 -1
- package/dist/shared/foundation/types/private-sale.d.ts +0 -35
- package/dist/shared/foundation/types/private-sale.js +0 -1
- package/dist/shared/foundation/types/quote-helpers.d.ts +0 -17
- package/dist/shared/foundation/types/quote-helpers.js +0 -1
- package/dist/types/errors.d.ts +0 -27
- package/dist/types/errors.js +0 -34
- package/dist/utils/holders-maker/addresses.d.ts +0 -12
- package/dist/utils/holders-maker/addresses.js +0 -15
- package/dist/utils/holders-maker/buy-tx.d.ts +0 -44
- package/dist/utils/holders-maker/buy-tx.js +0 -278
- package/dist/utils/holders-maker/constants.d.ts +0 -6
- package/dist/utils/holders-maker/constants.js +0 -7
- package/dist/utils/holders-maker/disperse.d.ts +0 -18
- package/dist/utils/holders-maker/disperse.js +0 -90
- package/dist/utils/holders-maker/routing.d.ts +0 -4
- package/dist/utils/holders-maker/routing.js +0 -45
- package/dist/utils/holders-maker/transfer-tx.d.ts +0 -4
- package/dist/utils/holders-maker/transfer-tx.js +0 -67
- package/dist/utils/holders-maker-helpers.d.ts +0 -9
- package/dist/utils/holders-maker-helpers.js +0 -9
- package/dist/utils/hop-chains.d.ts +0 -35
- package/dist/utils/hop-chains.js +0 -215
- package/dist/utils/lp-inspect-helpers.d.ts +0 -9
- package/dist/utils/lp-inspect-helpers.js +0 -109
- package/dist/utils/types/airdrop-sweep.d.ts +0 -1
- package/dist/utils/types/airdrop-sweep.js +0 -1
- package/dist/utils/types/contract-factory.d.ts +0 -1
- package/dist/utils/types/contract-factory.js +0 -1
- package/dist/utils/types/erc20.d.ts +0 -1
- package/dist/utils/types/erc20.js +0 -1
- package/dist/utils/types/errors.d.ts +0 -1
- package/dist/utils/types/errors.js +0 -1
- package/dist/utils/types/holders-maker.d.ts +0 -1
- package/dist/utils/types/holders-maker.js +0 -1
- package/dist/utils/types/hop-chains.d.ts +0 -8
- package/dist/utils/types/hop-chains.js +0 -1
- package/dist/utils/types/index.d.ts +0 -13
- package/dist/utils/types/index.js +0 -1
- package/dist/utils/types/lp-inspect.d.ts +0 -1
- package/dist/utils/types/lp-inspect.js +0 -1
- package/dist/utils/types/mpc-exclusive.d.ts +0 -5
- package/dist/utils/types/mpc-exclusive.js +0 -1
- package/dist/utils/types/private-sale.d.ts +0 -1
- package/dist/utils/types/private-sale.js +0 -1
- package/dist/utils/types/quote-helpers.d.ts +0 -1
- package/dist/utils/types/quote-helpers.js +0 -1
- package/dist/utils/types/stealth-transfer.d.ts +0 -44
- package/dist/utils/types/stealth-transfer.js +0 -1
- package/dist/utils/types/wallet.d.ts +0 -25
- package/dist/utils/types/wallet.js +0 -1
- package/dist/vanity/index.d.ts +0 -5
- package/dist/vanity/index.js +0 -5
- package/src/abis/contracts/TaxToken.json +0 -969
- package/src/abis/contracts/TokenManager.json +0 -836
- package/src/abis/contracts/TokenManager2.json +0 -136
- package/src/abis/contracts/TokenManagerHelper3.json +0 -993
- /package/dist/{abis/contracts → shared/abis}/TokenManager.json +0 -0
- /package/dist/{abis/contracts → shared/abis}/TokenManagerHelper3.json +0 -0
|
@@ -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) {
|
|
@@ -56,11 +56,28 @@ async function estimateGasWithMultiplier(provider, txRequest, multiplier) {
|
|
|
56
56
|
function getTxType(config) {
|
|
57
57
|
return config.txType ?? 0; // 默认 Legacy (type 0),适用于 48.club/BSC
|
|
58
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* 构建完整的交易请求(包含 gas 估算和交易类型)
|
|
61
|
+
*/
|
|
62
|
+
async function buildTxRequest(provider, unsigned, from, nonce, gasPrice, config, value) {
|
|
63
|
+
const gasLimit = await estimateGasWithMultiplier(provider, { ...unsigned, from, value }, config.gasLimitMultiplier);
|
|
64
|
+
return {
|
|
65
|
+
...unsigned,
|
|
66
|
+
from,
|
|
67
|
+
nonce,
|
|
68
|
+
gasLimit,
|
|
69
|
+
gasPrice,
|
|
70
|
+
chainId: 56,
|
|
71
|
+
type: getTxType(config)
|
|
72
|
+
};
|
|
73
|
+
}
|
|
59
74
|
/**
|
|
60
75
|
* Flap Protocol: 创建代币 + 捆绑购买
|
|
61
76
|
*/
|
|
62
77
|
export async function createTokenWithBundleBuy(params) {
|
|
63
|
-
const { chain, privateKeys, buyAmounts, tokenInfo, tokenAddress, config } = params;
|
|
78
|
+
const { chain, privateKeys, buyAmounts, tokenInfo, quoteToken, tokenAddress, config } = params;
|
|
79
|
+
// 默认使用 BNB (0地址)
|
|
80
|
+
const quoteTokenAddress = quoteToken || '0x0000000000000000000000000000000000000000';
|
|
64
81
|
if (privateKeys.length === 0) {
|
|
65
82
|
throw new Error(getErrorMessage('NO_PRIVATE_KEY'));
|
|
66
83
|
}
|
|
@@ -71,7 +88,7 @@ export async function createTokenWithBundleBuy(params) {
|
|
|
71
88
|
const devWallet = new Wallet(privateKeys[0], provider);
|
|
72
89
|
const club48 = new Club48Client({
|
|
73
90
|
endpoint: config.club48Endpoint,
|
|
74
|
-
explorerEndpoint: config.club48ExplorerEndpoint
|
|
91
|
+
explorerEndpoint: config.club48ExplorerEndpoint
|
|
75
92
|
});
|
|
76
93
|
const blockOffset = config.bundleBlockOffset ?? 100;
|
|
77
94
|
// 1. 构建交易(为重复地址分配顺序 nonce)
|
|
@@ -105,7 +122,7 @@ export async function createTokenWithBundleBuy(params) {
|
|
|
105
122
|
quoteToken: params.quoteToken || '0x0000000000000000000000000000000000000000',
|
|
106
123
|
quoteAmt: 0n,
|
|
107
124
|
beneficiary: new Wallet(privateKeys[0]).address,
|
|
108
|
-
permitData: '0x'
|
|
125
|
+
permitData: '0x'
|
|
109
126
|
});
|
|
110
127
|
// 估算 gas 并应用用户配置的安全余量
|
|
111
128
|
const createGasLimit = await estimateGasWithMultiplier(provider, { ...createTxUnsigned, from: devWallet.address }, config.gasLimitMultiplier);
|
|
@@ -116,7 +133,7 @@ export async function createTokenWithBundleBuy(params) {
|
|
|
116
133
|
gasLimit: createGasLimit,
|
|
117
134
|
gasPrice: gasPrice,
|
|
118
135
|
chainId: 56, // BSC
|
|
119
|
-
type: getTxType(config)
|
|
136
|
+
type: getTxType(config) // 用户可配置:0=Legacy(默认),2=EIP-1559
|
|
120
137
|
};
|
|
121
138
|
const signedCreateTx = await devWallet.signTransaction(createTxRequest);
|
|
122
139
|
signedTxs.push(signedCreateTx);
|
|
@@ -129,7 +146,7 @@ export async function createTokenWithBundleBuy(params) {
|
|
|
129
146
|
gasLimit: GAS_LIMITS.BRIBE,
|
|
130
147
|
chainId: 56,
|
|
131
148
|
type: 0, // Legacy transaction
|
|
132
|
-
nonce: await getNextNonce(devWallet)
|
|
149
|
+
nonce: await getNextNonce(devWallet)
|
|
133
150
|
});
|
|
134
151
|
signedTxs.push(tipTx);
|
|
135
152
|
}
|
|
@@ -146,7 +163,7 @@ export async function createTokenWithBundleBuy(params) {
|
|
|
146
163
|
const exactOut = await quote.quoteExactInput.staticCall({
|
|
147
164
|
inputToken: '0x0000000000000000000000000000000000000000',
|
|
148
165
|
outputToken: tokenAddress,
|
|
149
|
-
inputAmount: amountIn
|
|
166
|
+
inputAmount: amountIn
|
|
150
167
|
});
|
|
151
168
|
const keep = BigInt(10000 - slippageBps);
|
|
152
169
|
minAmountOut = (exactOut * keep) / 10000n;
|
|
@@ -176,7 +193,7 @@ export async function createTokenWithBundleBuy(params) {
|
|
|
176
193
|
gasLimit: buyGasLimit,
|
|
177
194
|
gasPrice: gasPrice,
|
|
178
195
|
chainId: 56, // BSC
|
|
179
|
-
type: getTxType(config)
|
|
196
|
+
type: getTxType(config) // 用户可配置
|
|
180
197
|
};
|
|
181
198
|
const signedBuyTx = await buyerWallet.signTransaction(buyTxRequest);
|
|
182
199
|
signedTxs.push(signedBuyTx);
|
|
@@ -186,11 +203,11 @@ export async function createTokenWithBundleBuy(params) {
|
|
|
186
203
|
const bundleUuid = await club48.sendBundle({
|
|
187
204
|
txs: signedTxs,
|
|
188
205
|
maxBlockNumber: (await provider.getBlockNumber()) + blockOffset,
|
|
189
|
-
noMerge: config.noMerge
|
|
206
|
+
noMerge: config.noMerge
|
|
190
207
|
}, {
|
|
191
208
|
spMode: params.config.spMode ?? 'timestampPersonalSign',
|
|
192
209
|
spPrivateKey: params.config.spPrivateKey || privateKeys[0],
|
|
193
|
-
spVMode: params.config.spVMode
|
|
210
|
+
spVMode: params.config.spVMode
|
|
194
211
|
});
|
|
195
212
|
// 3. 等待完成
|
|
196
213
|
const status = await club48.waitForBundle(bundleUuid, params.config.waitTimeoutMs ?? 60000);
|
|
@@ -199,7 +216,7 @@ export async function createTokenWithBundleBuy(params) {
|
|
|
199
216
|
tokenAddress,
|
|
200
217
|
status,
|
|
201
218
|
createTx: signedCreateTx,
|
|
202
|
-
buyTxs
|
|
219
|
+
buyTxs
|
|
203
220
|
};
|
|
204
221
|
}
|
|
205
222
|
/**
|
|
@@ -213,7 +230,7 @@ export async function batchBuyWithBundle(params) {
|
|
|
213
230
|
const provider = new JsonRpcProvider(config.rpcUrl);
|
|
214
231
|
const club48 = new Club48Client({
|
|
215
232
|
endpoint: config.club48Endpoint,
|
|
216
|
-
explorerEndpoint: config.club48ExplorerEndpoint
|
|
233
|
+
explorerEndpoint: config.club48ExplorerEndpoint
|
|
217
234
|
});
|
|
218
235
|
const blockOffset = config.bundleBlockOffset ?? 100;
|
|
219
236
|
const portalAddr = FLAP_PORTAL_ADDRESSES[chain];
|
|
@@ -242,7 +259,7 @@ export async function batchBuyWithBundle(params) {
|
|
|
242
259
|
gasLimit: GAS_LIMITS.BRIBE,
|
|
243
260
|
chainId: 56,
|
|
244
261
|
type: 0, // Legacy transaction
|
|
245
|
-
nonce: await getNextNonce(tipWallet)
|
|
262
|
+
nonce: await getNextNonce(tipWallet)
|
|
246
263
|
});
|
|
247
264
|
signedTxs.unshift(tipTx);
|
|
248
265
|
}
|
|
@@ -257,7 +274,7 @@ export async function batchBuyWithBundle(params) {
|
|
|
257
274
|
const exactOut = await quote.quoteExactInput.staticCall({
|
|
258
275
|
inputToken: '0x0000000000000000000000000000000000000000',
|
|
259
276
|
outputToken: tokenAddress,
|
|
260
|
-
inputAmount: amountIn
|
|
277
|
+
inputAmount: amountIn
|
|
261
278
|
});
|
|
262
279
|
const keep = BigInt(10000 - slippageBps);
|
|
263
280
|
minAmountOut = (exactOut * keep) / 10000n;
|
|
@@ -275,7 +292,7 @@ export async function batchBuyWithBundle(params) {
|
|
|
275
292
|
const estimatedGas = await provider.estimateGas({
|
|
276
293
|
...buyTxUnsigned,
|
|
277
294
|
from: buyerWallet.address,
|
|
278
|
-
value: amountIn
|
|
295
|
+
value: amountIn
|
|
279
296
|
});
|
|
280
297
|
const gasLimit = (estimatedGas * 120n) / 100n;
|
|
281
298
|
const buyTxRequest = {
|
|
@@ -285,7 +302,7 @@ export async function batchBuyWithBundle(params) {
|
|
|
285
302
|
gasLimit: gasLimit,
|
|
286
303
|
gasPrice: gasPrice,
|
|
287
304
|
chainId: 56, // BSC
|
|
288
|
-
type: 0
|
|
305
|
+
type: 0 // Legacy transaction
|
|
289
306
|
};
|
|
290
307
|
const signedBuyTx = await buyerWallet.signTransaction(buyTxRequest);
|
|
291
308
|
signedTxs.push(signedBuyTx);
|
|
@@ -293,11 +310,11 @@ export async function batchBuyWithBundle(params) {
|
|
|
293
310
|
const bundleUuid = await club48.sendBundle({
|
|
294
311
|
txs: signedTxs,
|
|
295
312
|
maxBlockNumber: (await provider.getBlockNumber()) + blockOffset,
|
|
296
|
-
noMerge: config.noMerge
|
|
313
|
+
noMerge: config.noMerge
|
|
297
314
|
}, {
|
|
298
315
|
spMode: params.config.spMode ?? 'timestampPersonalSign',
|
|
299
316
|
spPrivateKey: params.config.spPrivateKey || privateKeys[0],
|
|
300
|
-
spVMode: params.config.spVMode
|
|
317
|
+
spVMode: params.config.spVMode
|
|
301
318
|
});
|
|
302
319
|
const status = await club48.waitForBundle(bundleUuid);
|
|
303
320
|
return { bundleUuid, status, buyTxs: signedTxs };
|
|
@@ -313,7 +330,7 @@ export async function batchSellWithBundle(params) {
|
|
|
313
330
|
const provider = new JsonRpcProvider(config.rpcUrl);
|
|
314
331
|
const club48 = new Club48Client({
|
|
315
332
|
endpoint: config.club48Endpoint,
|
|
316
|
-
explorerEndpoint: config.club48ExplorerEndpoint
|
|
333
|
+
explorerEndpoint: config.club48ExplorerEndpoint
|
|
317
334
|
});
|
|
318
335
|
const blockOffset = config.bundleBlockOffset ?? 100;
|
|
319
336
|
const portalAddr = FLAP_PORTAL_ADDRESSES[chain];
|
|
@@ -342,7 +359,7 @@ export async function batchSellWithBundle(params) {
|
|
|
342
359
|
gasLimit: GAS_LIMITS.BRIBE,
|
|
343
360
|
chainId: 56,
|
|
344
361
|
type: 0, // Legacy transaction
|
|
345
|
-
nonce: await getNextNonce(tipWallet)
|
|
362
|
+
nonce: await getNextNonce(tipWallet)
|
|
346
363
|
});
|
|
347
364
|
signedTxs.unshift(tipTx);
|
|
348
365
|
}
|
|
@@ -361,7 +378,7 @@ export async function batchSellWithBundle(params) {
|
|
|
361
378
|
// 估算 gas 并添加 20% 安全余量
|
|
362
379
|
const estimatedGas = await provider.estimateGas({
|
|
363
380
|
...sellTxUnsigned,
|
|
364
|
-
from: sellerWallet.address
|
|
381
|
+
from: sellerWallet.address
|
|
365
382
|
});
|
|
366
383
|
const gasLimit = (estimatedGas * 120n) / 100n;
|
|
367
384
|
const sellTxRequest = {
|
|
@@ -371,7 +388,7 @@ export async function batchSellWithBundle(params) {
|
|
|
371
388
|
gasLimit: gasLimit,
|
|
372
389
|
gasPrice: gasPrice,
|
|
373
390
|
chainId: 56, // BSC
|
|
374
|
-
type: 0
|
|
391
|
+
type: 0 // Legacy transaction
|
|
375
392
|
};
|
|
376
393
|
const signedSellTx = await sellerWallet.signTransaction(sellTxRequest);
|
|
377
394
|
signedTxs.push(signedSellTx);
|
|
@@ -379,17 +396,17 @@ export async function batchSellWithBundle(params) {
|
|
|
379
396
|
const bundleUuid = await club48.sendBundle({
|
|
380
397
|
txs: signedTxs,
|
|
381
398
|
maxBlockNumber: (await provider.getBlockNumber()) + blockOffset,
|
|
382
|
-
noMerge: config.noMerge
|
|
399
|
+
noMerge: config.noMerge
|
|
383
400
|
}, {
|
|
384
401
|
spMode: params.config.spMode ?? 'timestampPersonalSign',
|
|
385
402
|
spPrivateKey: params.config.spPrivateKey || privateKeys[0],
|
|
386
|
-
spVMode: params.config.spVMode
|
|
403
|
+
spVMode: params.config.spVMode
|
|
387
404
|
});
|
|
388
405
|
const status = await club48.waitForBundle(bundleUuid);
|
|
389
406
|
return { bundleUuid, status, sellTxs: signedTxs };
|
|
390
407
|
}
|
|
391
408
|
export async function flapPrivateBuy(params) {
|
|
392
|
-
const { chain, privateKey, tokenAddress, amountIn, config, spPrivateKey } = params;
|
|
409
|
+
const { chain, privateKey, tokenAddress, amountIn, to, config, spPrivateKey } = params;
|
|
393
410
|
const provider = new JsonRpcProvider(config.rpcUrl);
|
|
394
411
|
const wallet = new Wallet(privateKey, provider);
|
|
395
412
|
const club48 = new Club48Client({ endpoint: config.club48Endpoint, explorerEndpoint: config.club48ExplorerEndpoint });
|
|
@@ -409,7 +426,7 @@ export async function flapPrivateBuy(params) {
|
|
|
409
426
|
const estimatedGas = await provider.estimateGas({
|
|
410
427
|
...unsigned,
|
|
411
428
|
from: wallet.address,
|
|
412
|
-
value: amountWei
|
|
429
|
+
value: amountWei
|
|
413
430
|
});
|
|
414
431
|
const gasLimit = (estimatedGas * 120n) / 100n;
|
|
415
432
|
const req = {
|
|
@@ -419,7 +436,7 @@ export async function flapPrivateBuy(params) {
|
|
|
419
436
|
gasLimit: gasLimit,
|
|
420
437
|
gasPrice,
|
|
421
438
|
chainId: 56,
|
|
422
|
-
type: 0
|
|
439
|
+
type: 0 // Legacy transaction
|
|
423
440
|
};
|
|
424
441
|
const signed = await wallet.signTransaction(req);
|
|
425
442
|
if (spPrivateKey)
|
|
@@ -446,7 +463,7 @@ export async function flapPrivateSell(params) {
|
|
|
446
463
|
// 估算 gas 并添加 20% 安全余量
|
|
447
464
|
const estimatedGas = await provider.estimateGas({
|
|
448
465
|
...unsigned,
|
|
449
|
-
from: wallet.address
|
|
466
|
+
from: wallet.address
|
|
450
467
|
});
|
|
451
468
|
const gasLimit = (estimatedGas * 120n) / 100n;
|
|
452
469
|
const req = {
|
|
@@ -456,7 +473,7 @@ export async function flapPrivateSell(params) {
|
|
|
456
473
|
gasLimit: gasLimit,
|
|
457
474
|
gasPrice,
|
|
458
475
|
chainId: 56,
|
|
459
|
-
type: 0
|
|
476
|
+
type: 0 // Legacy transaction
|
|
460
477
|
};
|
|
461
478
|
const signed = await wallet.signTransaction(req);
|
|
462
479
|
if (spPrivateKey)
|
|
@@ -499,21 +516,13 @@ export async function flapBatchPrivateBuy(params) {
|
|
|
499
516
|
// 估算 gas 并添加 20% 安全余量
|
|
500
517
|
const estimatedGas = await provider.estimateGas({ ...unsigned, from: w.address, value: amountWei });
|
|
501
518
|
const gasLimit = (estimatedGas * 120n) / 100n;
|
|
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
|
-
};
|
|
519
|
+
const req = { ...unsigned, from: w.address, nonce: await getNextNonce(w), gasLimit, gasPrice, chainId: 56, type: 0 };
|
|
511
520
|
signedTxs.push(await w.signTransaction(req));
|
|
512
521
|
}
|
|
513
522
|
return await sendBatchPrivateTransactions(signedTxs, spPrivateKey, config.club48Endpoint || 'https://puissant-bsc.48.club');
|
|
514
523
|
}
|
|
515
524
|
export async function flapBatchPrivateSell(params) {
|
|
516
|
-
const { chain, privateKeys, amounts, tokenAddress, config, minEthEach } = params;
|
|
525
|
+
const { chain, privateKeys, amounts, tokenAddress, config, spPrivateKey, minEthEach } = params;
|
|
517
526
|
if (privateKeys.length !== amounts.length)
|
|
518
527
|
throw new Error('privateKeys and amounts length mismatch');
|
|
519
528
|
const provider = new JsonRpcProvider(config.rpcUrl);
|
|
@@ -549,15 +558,7 @@ export async function flapBatchPrivateSell(params) {
|
|
|
549
558
|
// 估算 gas 并添加 20% 安全余量
|
|
550
559
|
const estimatedGas = await provider.estimateGas({ ...unsigned, from: w.address });
|
|
551
560
|
const gasLimit = (estimatedGas * 120n) / 100n;
|
|
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
|
-
};
|
|
561
|
+
const req = { ...unsigned, from: w.address, nonce: await getNextNonce(w), gasLimit, gasPrice, chainId: 56, type: 0 };
|
|
561
562
|
signedTxs.push(await w.signTransaction(req));
|
|
562
563
|
}
|
|
563
564
|
// 使用 bundle 通道提交(统一与捆绑买保持一致)
|
|
@@ -565,12 +566,12 @@ export async function flapBatchPrivateSell(params) {
|
|
|
565
566
|
const bundleUuid = await club48.sendBundle({
|
|
566
567
|
txs: signedTxs,
|
|
567
568
|
maxBlockNumber: (await provider.getBlockNumber()) + blockOffset,
|
|
568
|
-
noMerge: config.noMerge
|
|
569
|
+
noMerge: config.noMerge
|
|
569
570
|
}, {
|
|
570
571
|
// 若传入 sp 配置,则用于生成 48SP 签名提升打包优先级(与批量买一致)
|
|
571
572
|
spMode: params.config.spMode ?? 'timestampPersonalSign',
|
|
572
573
|
spPrivateKey: params.config.spPrivateKey || 'https://puissant-bsc.48.club',
|
|
573
|
-
spVMode: params.config.spVMode
|
|
574
|
+
spVMode: params.config.spVMode
|
|
574
575
|
});
|
|
575
576
|
try {
|
|
576
577
|
const status = await club48.waitForBundle(bundleUuid);
|
|
@@ -11,7 +11,9 @@ export declare enum TokenVersion {
|
|
|
11
11
|
TOKEN_LEGACY_MINT_NO_PERMIT_DUPLICATE = 1,
|
|
12
12
|
TOKEN_V2_PERMIT = 2,
|
|
13
13
|
TOKEN_GOPLUS = 3,
|
|
14
|
-
TOKEN_TAXED = 4
|
|
14
|
+
TOKEN_TAXED = 4,
|
|
15
|
+
/** VaultPortal.newTokenV6WithVault 金库发射必须使用此版本 */
|
|
16
|
+
TOKEN_TAXED_V3 = 6
|
|
15
17
|
}
|
|
16
18
|
export declare enum DexThreshType {
|
|
17
19
|
TWO_THIRDS = 0,
|
|
@@ -16,6 +16,8 @@ export var TokenVersion;
|
|
|
16
16
|
TokenVersion[TokenVersion["TOKEN_V2_PERMIT"] = 2] = "TOKEN_V2_PERMIT";
|
|
17
17
|
TokenVersion[TokenVersion["TOKEN_GOPLUS"] = 3] = "TOKEN_GOPLUS";
|
|
18
18
|
TokenVersion[TokenVersion["TOKEN_TAXED"] = 4] = "TOKEN_TAXED";
|
|
19
|
+
/** VaultPortal.newTokenV6WithVault 金库发射必须使用此版本 */
|
|
20
|
+
TokenVersion[TokenVersion["TOKEN_TAXED_V3"] = 6] = "TOKEN_TAXED_V3";
|
|
19
21
|
})(TokenVersion || (TokenVersion = {}));
|
|
20
22
|
export var DexThreshType;
|
|
21
23
|
(function (DexThreshType) {
|
|
@@ -90,21 +92,17 @@ const PORTAL_ABI = [
|
|
|
90
92
|
'function getFeeRate() external view returns (uint256,uint256)',
|
|
91
93
|
'function nonce() external view returns (uint256)',
|
|
92
94
|
'function version() external pure returns (string)',
|
|
93
|
-
'function getLocks(address token) external view returns (uint256[])'
|
|
95
|
+
'function getLocks(address token) external view returns (uint256[])'
|
|
94
96
|
];
|
|
95
97
|
/**
|
|
96
98
|
* 将 lpFeeProfile 转换为 V3 fee 值
|
|
97
99
|
*/
|
|
98
100
|
export function lpFeeProfileToV3Fee(profile) {
|
|
99
101
|
switch (profile) {
|
|
100
|
-
case V3LPFeeProfile.LP_FEE_PROFILE_STANDARD:
|
|
101
|
-
|
|
102
|
-
case V3LPFeeProfile.
|
|
103
|
-
|
|
104
|
-
case V3LPFeeProfile.LP_FEE_PROFILE_HIGH:
|
|
105
|
-
return 10000;
|
|
106
|
-
default:
|
|
107
|
-
return 2500; // 默认 STANDARD
|
|
102
|
+
case V3LPFeeProfile.LP_FEE_PROFILE_STANDARD: return 2500;
|
|
103
|
+
case V3LPFeeProfile.LP_FEE_PROFILE_LOW: return 100;
|
|
104
|
+
case V3LPFeeProfile.LP_FEE_PROFILE_HIGH: return 10000;
|
|
105
|
+
default: return 2500; // 默认 STANDARD
|
|
108
106
|
}
|
|
109
107
|
}
|
|
110
108
|
/**
|
|
@@ -121,11 +119,6 @@ export function validateTaxDistribution(config) {
|
|
|
121
119
|
return { valid: true };
|
|
122
120
|
}
|
|
123
121
|
export class FlapPortal {
|
|
124
|
-
rpcUrl;
|
|
125
|
-
portal;
|
|
126
|
-
contract;
|
|
127
|
-
buyFeeRate;
|
|
128
|
-
sellFeeRate;
|
|
129
122
|
constructor(cfg) {
|
|
130
123
|
this.rpcUrl = cfg.rpcUrl;
|
|
131
124
|
this.portal = cfg.addressOverride ?? FLAP_PORTAL_ADDRESSES[cfg.chain];
|
|
@@ -140,27 +133,13 @@ export class FlapPortal {
|
|
|
140
133
|
async getTokenV2(token) {
|
|
141
134
|
const r = await this.contract.getTokenV2(token);
|
|
142
135
|
return {
|
|
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],
|
|
136
|
+
status: r[0], reserve: r[1], circulatingSupply: r[2], price: r[3], tokenVersion: r[4], r: r[5], dexSupplyThresh: r[6],
|
|
150
137
|
};
|
|
151
138
|
}
|
|
152
139
|
async getTokenV3(token) {
|
|
153
140
|
const r = await this.contract.getTokenV3(token);
|
|
154
141
|
return {
|
|
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],
|
|
142
|
+
status: r[0], reserve: r[1], circulatingSupply: r[2], price: r[3], tokenVersion: r[4], r: r[5], dexSupplyThresh: r[6], quoteTokenAddress: r[7], nativeToQuoteSwapEnabled: r[8],
|
|
164
143
|
};
|
|
165
144
|
}
|
|
166
145
|
async getTokenV4(token) {
|
|
@@ -232,6 +211,7 @@ export class FlapPortal {
|
|
|
232
211
|
const curve = new CDPV2(r, h, k);
|
|
233
212
|
const currentReserve = formatEther(state.reserve);
|
|
234
213
|
const dexSupplyThresh = formatEther(state.dexSupplyThresh);
|
|
214
|
+
const circulatingSupply = formatEther(state.circulatingSupply);
|
|
235
215
|
// 计算毕业时的储备
|
|
236
216
|
const graduationReserve = curve.estimateReserve(dexSupplyThresh);
|
|
237
217
|
const graduationReserveNum = parseFloat(graduationReserve.toString());
|
|
@@ -243,7 +223,9 @@ export class FlapPortal {
|
|
|
243
223
|
// 含手续费(1% buy fee)
|
|
244
224
|
const remainingWithFee = remainingNet / (1 - this.buyFeeRate);
|
|
245
225
|
// 计算进度
|
|
246
|
-
const progressPercent = isGraduated
|
|
226
|
+
const progressPercent = isGraduated
|
|
227
|
+
? '100.00'
|
|
228
|
+
: (currentReserveNum / graduationReserveNum * 100).toFixed(2);
|
|
247
229
|
return {
|
|
248
230
|
remainingOkb: remainingWithFee.toFixed(6),
|
|
249
231
|
graduationReserve: graduationReserveNum.toFixed(6),
|
|
@@ -351,7 +333,6 @@ export class FlapPortal {
|
|
|
351
333
|
}
|
|
352
334
|
}
|
|
353
335
|
export class FlapPortalWriter extends FlapPortal {
|
|
354
|
-
wallet;
|
|
355
336
|
constructor(cfg, privateKey) {
|
|
356
337
|
super(cfg);
|
|
357
338
|
// 使用 ethers v6 创建钱包
|
|
@@ -600,3 +581,15 @@ export class FlapPortalWriter extends FlapPortal {
|
|
|
600
581
|
return this.portal;
|
|
601
582
|
}
|
|
602
583
|
}
|
|
584
|
+
/**
|
|
585
|
+
* 获取 Flap Portal 合约地址(内部使用)
|
|
586
|
+
* 注意:此方法不对外导出,用户应使用 FlapPortal 实例而非直接获取地址
|
|
587
|
+
* @internal
|
|
588
|
+
*/
|
|
589
|
+
function getFlapPortalAddress(chain) {
|
|
590
|
+
const address = FLAP_PORTAL_ADDRESSES[chain];
|
|
591
|
+
if (!address) {
|
|
592
|
+
throw new Error(`Flap Portal not deployed on ${chain}`);
|
|
593
|
+
}
|
|
594
|
+
return address;
|
|
595
|
+
}
|
|
@@ -9,8 +9,10 @@ export declare function predictVanityTokenAddress(salt: string, portal: string,
|
|
|
9
9
|
* 注意:使用 Flap 平台的原始 Portal 地址进行 CREATE2 计算
|
|
10
10
|
* BSC/MONAD 默认使用 NORMAL 实现(非税版)
|
|
11
11
|
* @param taxedV5 - 是否使用 V5 高级税代币实现 (mkt/deflation/dividend/lp)
|
|
12
|
+
* @param taxedV3 - 是否使用 V3 金库税代币实现 (VaultPortal.newTokenV6WithVault)
|
|
12
13
|
*/
|
|
13
|
-
export declare function predictVanityTokenAddressByChain(chain: 'BSC' | 'BASE' | 'XLAYER' | 'MORPH' | 'MONAD', salt: string, taxed?: boolean, taxedV5?: boolean
|
|
14
|
+
export declare function predictVanityTokenAddressByChain(chain: 'BSC' | 'BASE' | 'XLAYER' | 'MORPH' | 'MONAD', salt: string, taxed?: boolean, taxedV5?: boolean, // ✅ V5 高级税代币标识
|
|
15
|
+
taxedV3?: boolean): string;
|
|
14
16
|
/**
|
|
15
17
|
* 寻找满足后缀的 salt(默认 8888)
|
|
16
18
|
* 注意:该方法为同步 CPU 搜索,谨慎设置迭代限制
|
|
@@ -33,6 +35,7 @@ export declare function findSaltEnding(opts: {
|
|
|
33
35
|
* BSC/MONAD 默认使用 NORMAL 实现(非税版)
|
|
34
36
|
* XLayer 只有标准版,后缀是 1111
|
|
35
37
|
* @param taxedV5 - 是否使用 V5 高级税代币实现 (mkt/deflation/dividend/lp)
|
|
38
|
+
* @param taxedV3 - 是否使用 V3 金库税代币实现 (VaultPortal.newTokenV6WithVault)
|
|
36
39
|
*/
|
|
37
40
|
export declare function findSaltEndingByChain(opts: {
|
|
38
41
|
chain: 'BSC' | 'BASE' | 'XLAYER' | 'MORPH' | 'MONAD';
|
|
@@ -41,6 +44,7 @@ export declare function findSaltEndingByChain(opts: {
|
|
|
41
44
|
seed?: string;
|
|
42
45
|
taxed?: boolean;
|
|
43
46
|
taxedV5?: boolean;
|
|
47
|
+
taxedV3?: boolean;
|
|
44
48
|
}): Promise<{
|
|
45
49
|
salt: string;
|
|
46
50
|
address: string;
|
|
@@ -6,7 +6,9 @@ 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)
|
|
9
|
+
const normalizedSalt = /^0x[0-9a-fA-F]{64}$/.test(salt)
|
|
10
|
+
? salt.toLowerCase()
|
|
11
|
+
: keccak256(salt);
|
|
10
12
|
// 构建 EIP-1167 minimal proxy bytecode
|
|
11
13
|
const bytecode = '0x3d602d80600a3d3981f3363d3d373d3d3d363d73' + tokenImpl.slice(2).toLowerCase() + '5af43d82803e903d91602b57fd5bf3';
|
|
12
14
|
const bytecodeHash = keccak256(bytecode);
|
|
@@ -18,13 +20,18 @@ export function predictVanityTokenAddress(salt, portal, tokenImpl) {
|
|
|
18
20
|
* 注意:使用 Flap 平台的原始 Portal 地址进行 CREATE2 计算
|
|
19
21
|
* BSC/MONAD 默认使用 NORMAL 实现(非税版)
|
|
20
22
|
* @param taxedV5 - 是否使用 V5 高级税代币实现 (mkt/deflation/dividend/lp)
|
|
23
|
+
* @param taxedV3 - 是否使用 V3 金库税代币实现 (VaultPortal.newTokenV6WithVault)
|
|
21
24
|
*/
|
|
22
|
-
export function predictVanityTokenAddressByChain(chain, salt, taxed = false, taxedV5 = false
|
|
25
|
+
export function predictVanityTokenAddressByChain(chain, salt, taxed = false, taxedV5 = false, // ✅ V5 高级税代币标识
|
|
26
|
+
taxedV3 = false) {
|
|
23
27
|
// 使用 Flap 平台的原始 Portal 地址(用于 CREATE2)
|
|
24
28
|
const portal = FLAP_ORIGINAL_PORTAL_ADDRESSES[chain];
|
|
25
29
|
let tokenImpl;
|
|
26
30
|
if (chain === 'BSC') {
|
|
27
|
-
if (
|
|
31
|
+
if (taxedV3) {
|
|
32
|
+
tokenImpl = FLAP_TOKEN_IMPL_ADDRESSES.BSC_TAXED_V3;
|
|
33
|
+
}
|
|
34
|
+
else if (taxedV5) {
|
|
28
35
|
// ✅ V5 高级税代币使用新的实现地址
|
|
29
36
|
tokenImpl = FLAP_TOKEN_IMPL_ADDRESSES.BSC_TAXED_V5;
|
|
30
37
|
}
|
|
@@ -53,7 +60,7 @@ export async function findSaltEnding(opts) {
|
|
|
53
60
|
// 若未提供 seed,默认使用随机种子,避免每次结果都相同
|
|
54
61
|
let salt = opts.seed ?? keccak256(randomBytes(32));
|
|
55
62
|
let iterations = 0;
|
|
56
|
-
const limit = opts.maxIterations ??
|
|
63
|
+
const limit = opts.maxIterations ?? 1000000;
|
|
57
64
|
while (iterations < limit) {
|
|
58
65
|
const addr = predictVanityTokenAddress(salt, opts.portal, opts.tokenImpl);
|
|
59
66
|
if (addr.toLowerCase().endsWith(suffix)) {
|
|
@@ -71,13 +78,17 @@ export async function findSaltEnding(opts) {
|
|
|
71
78
|
* BSC/MONAD 默认使用 NORMAL 实现(非税版)
|
|
72
79
|
* XLayer 只有标准版,后缀是 1111
|
|
73
80
|
* @param taxedV5 - 是否使用 V5 高级税代币实现 (mkt/deflation/dividend/lp)
|
|
81
|
+
* @param taxedV3 - 是否使用 V3 金库税代币实现 (VaultPortal.newTokenV6WithVault)
|
|
74
82
|
*/
|
|
75
83
|
export async function findSaltEndingByChain(opts) {
|
|
76
84
|
// 使用 Flap 平台的原始 Portal 地址(用于 CREATE2)
|
|
77
85
|
const portal = FLAP_ORIGINAL_PORTAL_ADDRESSES[opts.chain];
|
|
78
86
|
let tokenImpl;
|
|
79
87
|
if (opts.chain === 'BSC') {
|
|
80
|
-
if (opts.
|
|
88
|
+
if (opts.taxedV3) {
|
|
89
|
+
tokenImpl = FLAP_TOKEN_IMPL_ADDRESSES.BSC_TAXED_V3;
|
|
90
|
+
}
|
|
91
|
+
else if (opts.taxedV5) {
|
|
81
92
|
// ✅ V5 高级税代币使用新的实现地址
|
|
82
93
|
tokenImpl = FLAP_TOKEN_IMPL_ADDRESSES.BSC_TAXED_V5;
|
|
83
94
|
}
|
|
@@ -102,6 +113,6 @@ export async function findSaltEndingByChain(opts) {
|
|
|
102
113
|
tokenImpl,
|
|
103
114
|
suffix,
|
|
104
115
|
maxIterations: opts.maxIterations,
|
|
105
|
-
seed: opts.seed
|
|
116
|
+
seed: opts.seed
|
|
106
117
|
});
|
|
107
118
|
}
|