four-flap-meme-sdk 2.2.8 → 2.2.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +6 -41
- package/README.md +0 -31
- package/README.zh-CN.md +6 -41
- package/dist/chains/bsc/four/approve-tokenmanager.d.ts +26 -1
- package/dist/chains/bsc/four/approve-tokenmanager.js +113 -1
- package/dist/chains/bsc/four/config.d.ts +67 -5
- package/dist/chains/bsc/four/config.js +114 -2
- package/dist/chains/bsc/four/core.d.ts +4 -1
- package/dist/chains/bsc/four/core.js +592 -1
- package/dist/chains/bsc/four/index.d.ts +6 -6
- package/dist/chains/bsc/four/index.js +6 -6
- package/dist/chains/bsc/four/internal.d.ts +46 -2
- package/dist/chains/bsc/four/internal.js +239 -2
- package/dist/chains/bsc/four/pancake-proxy.d.ts +28 -1
- package/dist/chains/bsc/four/pancake-proxy.js +687 -1
- package/dist/chains/bsc/four/private.d.ts +27 -1
- package/dist/chains/bsc/four/private.js +477 -1
- package/dist/chains/bsc/four/submit.d.ts +315 -2
- package/dist/chains/bsc/four/submit.js +752 -2
- package/dist/chains/bsc/four/swap-buy-first.d.ts +55 -2
- package/dist/chains/bsc/four/swap-buy-first.js +507 -2
- package/dist/chains/bsc/four/swap-internal.d.ts +3 -1
- package/dist/chains/bsc/four/swap-internal.js +18 -1
- package/dist/chains/bsc/four/swap.d.ts +144 -2
- package/dist/chains/bsc/four/swap.js +766 -2
- package/dist/chains/bsc/four/types.d.ts +476 -1
- package/dist/chains/bsc/four/utils.d.ts +18 -5
- package/dist/chains/bsc/four/utils.js +1552 -5
- package/dist/chains/bsc/pancake/bundle-buy-first.d.ts +91 -1
- package/dist/chains/bsc/pancake/bundle-buy-first.js +212 -97
- package/dist/chains/bsc/pancake/bundle-swap.d.ts +79 -1
- package/dist/chains/bsc/pancake/bundle-swap.js +726 -114
- package/dist/chains/bsc/pancake/index.d.ts +2 -4
- package/dist/chains/bsc/pancake/index.js +3 -1
- package/dist/chains/bsc/platforms/iro/factory.d.ts +2 -2
- package/dist/chains/bsc/platforms/iro/factory.js +1 -3
- package/dist/chains/bsc/platforms/iro/index.d.ts +5 -5
- package/dist/chains/bsc/platforms/iro/index.js +3 -3
- package/dist/chains/bsc/platforms/iro/pool.js +10 -31
- package/dist/chains/bsc/platforms/iro/token.js +1 -4
- package/dist/chains/eni/batch-router/bundle-approve.js +3 -4
- package/dist/chains/eni/batch-router/transfer.js +25 -55
- package/dist/chains/eni/batch-router/utils.js +6 -32
- package/dist/chains/eni/bundler/sign.js +6 -5
- package/dist/chains/eni/bundler/submit.js +4 -1
- package/dist/chains/eni/constants.js +1 -1
- package/dist/chains/eni/index.d.ts +1 -2
- package/dist/chains/eni/index.js +0 -1
- package/dist/chains/eni/platforms/daoaas/create.js +2 -2
- package/dist/chains/eni/platforms/daoaas/index.d.ts +3 -3
- package/dist/chains/eni/platforms/daoaas/index.js +3 -3
- package/dist/chains/eni/platforms/daoaas/meta.js +6 -9
- package/dist/chains/eni/platforms/daoaas/portal-direct.js +44 -28
- package/dist/chains/eni/platforms/daoaas/portal.js +6 -10
- package/dist/chains/eni/platforms/dswap/liquidity.js +26 -58
- package/dist/chains/eni/platforms/fair-launch/index.d.ts +2 -2
- package/dist/chains/eni/platforms/fair-launch/index.js +1 -1
- package/dist/chains/eni/platforms/fair-launch/launcher.js +46 -87
- package/dist/chains/eni/platforms/fair-launch/pool.js +1 -4
- package/dist/chains/eni/platforms/fair-launch/presets.js +2 -2
- package/dist/chains/eni/platforms/iro/factory.d.ts +2 -2
- package/dist/chains/eni/platforms/iro/factory.js +1 -3
- package/dist/chains/eni/platforms/iro/index.d.ts +6 -6
- package/dist/chains/eni/platforms/iro/index.js +4 -4
- package/dist/chains/eni/platforms/iro/pool.js +26 -90
- package/dist/chains/eni/platforms/iro/token.js +31 -107
- package/dist/chains/eni/platforms/iro/whitelist.js +18 -6
- package/dist/chains/index.d.ts +0 -13
- package/dist/chains/index.js +0 -13
- package/dist/chains/xlayer/eip7702/bundle-approve.d.ts +26 -2
- package/dist/chains/xlayer/eip7702/bundle-approve.js +21 -11
- package/dist/chains/xlayer/eip7702/bundle-buy.d.ts +6 -2
- package/dist/chains/xlayer/eip7702/bundle-buy.js +51 -13
- package/dist/chains/xlayer/eip7702/bundle-create.js +59 -93
- package/dist/chains/xlayer/eip7702/bundle-sell.d.ts +6 -2
- package/dist/chains/xlayer/eip7702/bundle-sell.js +111 -29
- package/dist/chains/xlayer/eip7702/bundle-swap.d.ts +65 -3
- package/dist/chains/xlayer/eip7702/bundle-swap.js +245 -51
- package/dist/chains/xlayer/eip7702/constants.d.ts +16 -1
- package/dist/chains/xlayer/eip7702/constants.js +21 -3
- package/dist/chains/xlayer/eip7702/index.d.ts +46 -28
- package/dist/chains/xlayer/eip7702/index.js +81 -28
- package/dist/chains/xlayer/eip7702/multi-hop-transfer.d.ts +203 -2
- package/dist/chains/xlayer/eip7702/multi-hop-transfer.js +307 -63
- package/dist/chains/xlayer/eip7702/types.d.ts +0 -88
- package/dist/chains/xlayer/eip7702/utils.d.ts +3 -0
- package/dist/chains/xlayer/eip7702/utils.js +28 -23
- package/dist/chains/xlayer/eip7702/volume.d.ts +184 -6
- package/dist/chains/xlayer/eip7702/volume.js +164 -89
- package/dist/chains/xlayer/eoa/constants.js +1 -1
- package/dist/chains/xlayer/eoa/dex-helpers.js +5 -5
- package/dist/chains/xlayer/eoa/eoa-bundle-swap.d.ts +95 -1
- package/dist/chains/xlayer/eoa/eoa-bundle-swap.js +299 -66
- package/dist/chains/xlayer/eoa/eoa-wash-volume.d.ts +1 -1
- package/dist/chains/xlayer/eoa/eoa-wash-volume.js +23 -18
- package/dist/chains/xlayer/eoa/index.d.ts +6 -10
- package/dist/chains/xlayer/eoa/index.js +23 -8
- package/dist/chains/xlayer/eoa/portal-ops.js +2 -7
- package/dist/chains/xlayer/eoa/router-manager.js +3 -3
- package/dist/chains/xlayer/eoa/types.d.ts +2 -2
- package/dist/chains/xlayer/eoa/types.js +3 -1
- package/dist/chains/xlayer/index.d.ts +2 -3
- package/dist/chains/xlayer/index.js +7 -4
- package/dist/contracts/helper3.d.ts +5 -20
- package/dist/contracts/helper3.js +20 -56
- package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.d.ts +26 -1
- package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.js +113 -1
- package/dist/contracts/tm-bundle-merkle/config.d.ts +67 -5
- package/dist/contracts/tm-bundle-merkle/config.js +114 -2
- package/dist/contracts/tm-bundle-merkle/core.d.ts +4 -1
- package/dist/contracts/tm-bundle-merkle/core.js +591 -1
- package/dist/contracts/tm-bundle-merkle/index.d.ts +5 -5
- package/dist/contracts/tm-bundle-merkle/index.js +5 -5
- package/dist/contracts/tm-bundle-merkle/internal.d.ts +46 -2
- package/dist/contracts/tm-bundle-merkle/internal.js +238 -2
- package/dist/contracts/tm-bundle-merkle/pancake-proxy.d.ts +28 -1
- package/dist/contracts/tm-bundle-merkle/pancake-proxy.js +686 -1
- package/dist/contracts/tm-bundle-merkle/private.d.ts +27 -1
- package/dist/contracts/tm-bundle-merkle/private.js +476 -1
- package/dist/contracts/tm-bundle-merkle/submit.d.ts +314 -3
- package/dist/contracts/tm-bundle-merkle/submit.js +928 -3
- package/dist/contracts/tm-bundle-merkle/swap-buy-first.d.ts +55 -2
- package/dist/contracts/tm-bundle-merkle/swap-buy-first.js +506 -2
- package/dist/contracts/tm-bundle-merkle/swap-internal.d.ts +3 -1
- package/dist/contracts/tm-bundle-merkle/swap-internal.js +18 -1
- package/dist/contracts/tm-bundle-merkle/swap.d.ts +144 -2
- package/dist/contracts/tm-bundle-merkle/swap.js +764 -2
- package/dist/contracts/tm-bundle-merkle/types.d.ts +476 -1
- package/dist/contracts/tm-bundle-merkle/utils.d.ts +18 -6
- package/dist/contracts/tm-bundle-merkle/utils.js +1501 -6
- package/dist/contracts/tm-bundle.d.ts +51 -3
- package/dist/contracts/tm-bundle.js +177 -108
- package/dist/contracts/tm.d.ts +2 -3
- package/dist/contracts/tm.js +32 -37
- package/dist/contracts/tm1.js +4 -9
- package/dist/contracts/tm2.js +4 -9
- package/dist/dex/direct-router.d.ts +125 -3
- package/dist/dex/direct-router.js +666 -237
- package/dist/flows/create.d.ts +1 -2
- package/dist/flows/create.js +6 -6
- package/dist/index.d.ts +86 -20
- package/dist/index.js +216 -20
- package/dist/shared/abis/TaxToken.json +105 -0
- package/dist/shared/abis/TokenManager2.json +60 -0
- package/dist/shared/abis/common.d.ts +83 -2
- package/dist/shared/abis/common.js +253 -2
- package/dist/shared/abis/index.d.ts +6 -5
- package/dist/shared/abis/index.js +7 -5
- package/dist/shared/clients/blockrazor.js +25 -39
- package/dist/shared/clients/club48.d.ts +2 -2
- package/dist/shared/clients/club48.js +29 -34
- package/dist/shared/clients/emitservice.js +0 -2
- package/dist/shared/clients/four.d.ts +6 -21
- package/dist/shared/clients/four.js +24 -29
- package/dist/shared/clients/merkle.js +34 -27
- package/dist/shared/constants/addresses.d.ts +1 -1
- package/dist/shared/constants/addresses.js +2 -11
- package/dist/shared/constants/chains.d.ts +1 -1
- package/dist/shared/constants/chains.js +1 -1
- package/dist/shared/constants/gas.d.ts +1 -1
- package/dist/shared/constants/gas.js +6 -2
- package/dist/shared/constants/index.d.ts +0 -3
- package/dist/shared/constants/index.js +0 -1
- package/dist/shared/flap/abi.js +1 -1
- package/dist/shared/flap/constants.d.ts +2 -3
- package/dist/shared/flap/constants.js +4 -5
- package/dist/shared/flap/curve.js +0 -3
- package/dist/shared/flap/errors.d.ts +4 -1
- package/dist/shared/flap/errors.js +1 -20
- package/dist/shared/flap/index.d.ts +5 -5
- package/dist/shared/flap/index.js +5 -5
- package/dist/shared/flap/launch-v6.d.ts +117 -0
- package/dist/shared/flap/launch-v6.js +111 -0
- package/dist/shared/flap/meta.d.ts +18 -22
- package/dist/shared/flap/meta.js +17 -12
- package/dist/shared/flap/permit.js +2 -5
- package/dist/shared/flap/pinata.d.ts +6 -22
- package/dist/shared/flap/pinata.js +26 -21
- package/dist/shared/flap/portal-bundle-merkle/config.d.ts +72 -3
- package/dist/shared/flap/portal-bundle-merkle/config.js +124 -4
- package/dist/shared/flap/portal-bundle-merkle/core.d.ts +4 -0
- package/dist/shared/flap/portal-bundle-merkle/core.js +267 -161
- package/dist/shared/flap/portal-bundle-merkle/create-to-dex.d.ts +4 -17
- package/dist/shared/flap/portal-bundle-merkle/create-to-dex.js +195 -104
- package/dist/shared/flap/portal-bundle-merkle/curve-to-dex.js +92 -100
- package/dist/shared/flap/portal-bundle-merkle/index.d.ts +7 -11
- package/dist/shared/flap/portal-bundle-merkle/index.js +7 -4
- package/dist/shared/flap/portal-bundle-merkle/pancake-proxy.js +68 -71
- package/dist/shared/flap/portal-bundle-merkle/private.js +114 -61
- package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.d.ts +64 -1
- package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.js +247 -66
- package/dist/shared/flap/portal-bundle-merkle/swap.d.ts +71 -2
- package/dist/shared/flap/portal-bundle-merkle/swap.js +410 -103
- package/dist/shared/flap/portal-bundle-merkle/types.d.ts +12 -88
- package/dist/shared/flap/portal-bundle-merkle/utils.d.ts +80 -1
- package/dist/shared/flap/portal-bundle-merkle/utils.js +265 -145
- package/dist/shared/flap/portal-bundle.js +56 -55
- package/dist/shared/flap/portal.d.ts +3 -14
- package/dist/shared/flap/portal.js +26 -49
- package/dist/shared/flap/vanity.d.ts +5 -8
- package/dist/shared/flap/vanity.js +20 -21
- package/dist/shared/flap/vault.d.ts +93 -25
- package/dist/shared/flap/vault.js +126 -75
- package/dist/shared/four/tax-token.d.ts +1 -1
- package/dist/shared/four/tax-token.js +7 -27
- package/dist/shared/index.d.ts +0 -6
- package/dist/shared/index.js +0 -4
- package/dist/utils/airdrop-sweep.d.ts +76 -4
- package/dist/utils/airdrop-sweep.js +55 -42
- package/dist/utils/bundle-helpers.d.ts +243 -9
- package/dist/utils/bundle-helpers.js +584 -10
- package/dist/utils/constants.d.ts +61 -5
- package/dist/utils/constants.js +80 -5
- package/dist/utils/contract-factory.d.ts +4 -2
- package/dist/utils/contract-factory.js +18 -25
- package/dist/utils/erc20.d.ts +89 -7
- package/dist/utils/erc20.js +125 -94
- package/dist/utils/errors.d.ts +1 -12
- package/dist/utils/errors.js +1 -60
- package/dist/utils/holders-maker.d.ts +138 -2
- package/dist/utils/holders-maker.js +661 -26
- package/dist/utils/lp-inspect.d.ts +112 -2
- package/dist/utils/lp-inspect.js +223 -73
- package/dist/utils/mpcExclusive.d.ts +5 -2
- package/dist/utils/mpcExclusive.js +3 -4
- package/dist/utils/private-sale.d.ts +58 -2
- package/dist/utils/private-sale.js +15 -4
- package/dist/utils/provider-factory.d.ts +0 -4
- package/dist/utils/provider-factory.js +0 -10
- package/dist/utils/quote-helpers.d.ts +45 -4
- package/dist/utils/quote-helpers.js +74 -17
- package/dist/utils/stealth-transfer.d.ts +28 -2
- package/dist/utils/stealth-transfer.js +15 -31
- package/dist/utils/swap-helpers.d.ts +15 -2
- package/dist/utils/swap-helpers.js +11 -6
- package/dist/utils/wallet.d.ts +25 -2
- package/dist/utils/wallet.js +10 -13
- package/package.json +4 -160
- package/dist/__tests__/subpath-exports.test.d.ts +0 -1
- package/dist/__tests__/subpath-exports.test.js +0 -64
- package/dist/abis/common.d.ts +0 -85
- package/dist/abis/common.js +0 -264
- package/dist/abis/contracts/TaxToken.json +0 -969
- package/dist/abis/contracts/TokenManager2.json +0 -136
- package/dist/abis/contracts/index.d.ts +0 -5
- package/dist/abis/contracts/index.js +0 -5
- package/dist/abis/flap/index.d.ts +0 -3
- package/dist/abis/flap/index.js +0 -3
- package/dist/abis/flap/portal-events.d.ts +0 -6
- package/dist/abis/flap/portal-events.js +0 -17
- package/dist/abis/flap/portal.d.ts +0 -6
- package/dist/abis/flap/portal.js +0 -37
- package/dist/abis/flap/vault.d.ts +0 -171
- package/dist/abis/flap/vault.js +0 -91
- package/dist/abis/index.d.ts +0 -8
- package/dist/abis/index.js +0 -11
- package/dist/bundle-core/__tests__/config-helpers.test.d.ts +0 -1
- package/dist/bundle-core/__tests__/config-helpers.test.js +0 -28
- package/dist/bundle-core/__tests__/facade-parity.test.d.ts +0 -1
- package/dist/bundle-core/__tests__/facade-parity.test.js +0 -33
- package/dist/bundle-core/__tests__/sign-context-helpers.test.d.ts +0 -1
- package/dist/bundle-core/__tests__/sign-context-helpers.test.js +0 -60
- package/dist/bundle-core/__tests__/sign-fixture.test.d.ts +0 -1
- package/dist/bundle-core/__tests__/sign-fixture.test.js +0 -220
- package/dist/bundle-core/__tests__/sign-fixtures.d.ts +0 -10
- package/dist/bundle-core/__tests__/sign-fixtures.js +0 -16
- package/dist/bundle-core/config-helpers.d.ts +0 -36
- package/dist/bundle-core/config-helpers.js +0 -57
- package/dist/bundle-core/errors.d.ts +0 -50
- package/dist/bundle-core/errors.js +0 -35
- package/dist/bundle-core/four-meme/approve-tokenmanager.d.ts +0 -7
- package/dist/bundle-core/four-meme/approve-tokenmanager.js +0 -99
- package/dist/bundle-core/four-meme/core-helpers.d.ts +0 -8
- package/dist/bundle-core/four-meme/core-helpers.js +0 -40
- package/dist/bundle-core/four-meme/core.d.ts +0 -4
- package/dist/bundle-core/four-meme/core.js +0 -515
- package/dist/bundle-core/four-meme/pancake-proxy.d.ts +0 -28
- package/dist/bundle-core/four-meme/pancake-proxy.js +0 -679
- package/dist/bundle-core/four-meme/private.d.ts +0 -27
- package/dist/bundle-core/four-meme/private.js +0 -465
- package/dist/bundle-core/four-meme/sign-context-helpers.d.ts +0 -2
- package/dist/bundle-core/four-meme/sign-context-helpers.js +0 -2
- package/dist/bundle-core/four-meme/swap-buy-first.d.ts +0 -8
- package/dist/bundle-core/four-meme/swap-buy-first.js +0 -493
- package/dist/bundle-core/four-meme/swap-hop-helpers.d.ts +0 -6
- package/dist/bundle-core/four-meme/swap-hop-helpers.js +0 -63
- package/dist/bundle-core/four-meme/swap-internal.d.ts +0 -3
- package/dist/bundle-core/four-meme/swap-internal.js +0 -18
- package/dist/bundle-core/four-meme/swap-sign-helpers.d.ts +0 -27
- package/dist/bundle-core/four-meme/swap-sign-helpers.js +0 -105
- package/dist/bundle-core/four-meme/swap.d.ts +0 -17
- package/dist/bundle-core/four-meme/swap.js +0 -505
- package/dist/bundle-core/four-meme/types/buy-first.d.ts +0 -50
- package/dist/bundle-core/four-meme/types/buy-first.js +0 -1
- package/dist/bundle-core/four-meme/types/core-flow.d.ts +0 -63
- package/dist/bundle-core/four-meme/types/core-flow.js +0 -1
- package/dist/bundle-core/four-meme/types/index.d.ts +0 -600
- package/dist/bundle-core/four-meme/types/index.js +0 -1
- package/dist/bundle-core/four-meme/types/swap-internal.d.ts +0 -19
- package/dist/bundle-core/four-meme/types/swap-internal.js +0 -1
- package/dist/bundle-core/four-meme/types.d.ts +0 -1
- package/dist/bundle-core/four-meme/types.js +0 -1
- package/dist/bundle-core/four-meme/utils-disperse.d.ts +0 -7
- package/dist/bundle-core/four-meme/utils-disperse.js +0 -396
- package/dist/bundle-core/four-meme/utils-pairwise.d.ts +0 -8
- package/dist/bundle-core/four-meme/utils-pairwise.js +0 -328
- package/dist/bundle-core/four-meme/utils-sweep.d.ts +0 -8
- package/dist/bundle-core/four-meme/utils-sweep.js +0 -744
- package/dist/bundle-core/index.d.ts +0 -8
- package/dist/bundle-core/index.js +0 -8
- package/dist/bundle-core/internal.d.ts +0 -21
- package/dist/bundle-core/internal.js +0 -182
- package/dist/bundle-core/sign-context-helpers.d.ts +0 -25
- package/dist/bundle-core/sign-context-helpers.js +0 -67
- package/dist/bundle-core/submit.d.ts +0 -293
- package/dist/bundle-core/submit.js +0 -727
- package/dist/bundle-core/types/index.d.ts +0 -8
- package/dist/bundle-core/types/index.js +0 -1
- package/dist/bundle-core/types.d.ts +0 -1
- package/dist/bundle-core/types.js +0 -1
- package/dist/chains/bsc/four/utils-disperse.d.ts +0 -1
- package/dist/chains/bsc/four/utils-disperse.js +0 -1
- package/dist/chains/bsc/four/utils-pairwise.d.ts +0 -1
- package/dist/chains/bsc/four/utils-pairwise.js +0 -1
- package/dist/chains/bsc/four/utils-sweep.d.ts +0 -1
- package/dist/chains/bsc/four/utils-sweep.js +0 -1
- package/dist/chains/bsc/iro.d.ts +0 -5
- package/dist/chains/bsc/iro.js +0 -4
- package/dist/chains/bsc/pancake/bundle-buy-first-helpers.d.ts +0 -159
- package/dist/chains/bsc/pancake/bundle-buy-first-helpers.js +0 -117
- package/dist/chains/bsc/pancake/bundle-swap-helpers.d.ts +0 -241
- package/dist/chains/bsc/pancake/bundle-swap-helpers.js +0 -565
- package/dist/chains/eni/flat-aliases.d.ts +0 -10
- package/dist/chains/eni/flat-aliases.js +0 -8
- package/dist/chains/eni/submit.d.ts +0 -43
- package/dist/chains/eni/submit.js +0 -286
- package/dist/chains/xlayer/eip7702/flat-aliases.d.ts +0 -13
- package/dist/chains/xlayer/eip7702/flat-aliases.js +0 -10
- package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.d.ts +0 -79
- package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.js +0 -1
- package/dist/chains/xlayer/eip7702/transfer-context-helpers.d.ts +0 -26
- package/dist/chains/xlayer/eip7702/transfer-context-helpers.js +0 -57
- package/dist/chains/xlayer/eip7702/volume-helpers.d.ts +0 -148
- package/dist/chains/xlayer/eip7702/volume-helpers.js +0 -48
- package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.d.ts +0 -126
- package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.js +0 -228
- package/dist/contracts/tm-bundle-helpers.d.ts +0 -88
- package/dist/contracts/tm-bundle-helpers.js +0 -72
- package/dist/contracts/tm-bundle-merkle/utils-disperse.d.ts +0 -1
- package/dist/contracts/tm-bundle-merkle/utils-disperse.js +0 -1
- package/dist/contracts/tm-bundle-merkle/utils-pairwise.d.ts +0 -1
- package/dist/contracts/tm-bundle-merkle/utils-pairwise.js +0 -1
- package/dist/contracts/tm-bundle-merkle/utils-sweep.d.ts +0 -1
- package/dist/contracts/tm-bundle-merkle/utils-sweep.js +0 -1
- package/dist/dex/direct-router-helpers.d.ts +0 -264
- package/dist/dex/direct-router-helpers.js +0 -539
- package/dist/dex/types.d.ts +0 -81
- package/dist/dex/types.js +0 -1
- package/dist/exports/root-bundle-and-tooling.d.ts +0 -27
- package/dist/exports/root-bundle-and-tooling.js +0 -30
- package/dist/exports/root-eni-and-bsc-iro.d.ts +0 -26
- package/dist/exports/root-eni-and-bsc-iro.js +0 -66
- package/dist/exports/root-foundations.d.ts +0 -35
- package/dist/exports/root-foundations.js +0 -70
- package/dist/exports/root-swap-dex-and-xlayer.d.ts +0 -30
- package/dist/exports/root-swap-dex-and-xlayer.js +0 -78
- package/dist/flap/index.d.ts +0 -10
- package/dist/flap/index.js +0 -8
- package/dist/flows/index.d.ts +0 -1
- package/dist/flows/index.js +0 -1
- package/dist/merkle/index.d.ts +0 -12
- package/dist/merkle/index.js +0 -11
- package/dist/shared/clients/index.d.ts +0 -8
- package/dist/shared/clients/index.js +0 -8
- package/dist/shared/constants/quote.d.ts +0 -30
- package/dist/shared/constants/quote.js +0 -37
- package/dist/shared/flap/portal-bundle-merkle/core-helpers.d.ts +0 -32
- package/dist/shared/flap/portal-bundle-merkle/core-helpers.js +0 -83
- package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.d.ts +0 -125
- package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.js +0 -113
- package/dist/shared/flap/portal-bundle-merkle/swap-helpers.d.ts +0 -149
- package/dist/shared/flap/portal-bundle-merkle/swap-helpers.js +0 -259
- package/dist/shared/flap/portal-create-token.d.ts +0 -81
- package/dist/shared/flap/portal-create-token.js +0 -255
- package/dist/shared/foundation/dex/v3-path.d.ts +0 -6
- package/dist/shared/foundation/dex/v3-path.js +0 -35
- package/dist/shared/foundation/gas/bundle-gas.d.ts +0 -49
- package/dist/shared/foundation/gas/bundle-gas.js +0 -93
- package/dist/shared/foundation/gas/profit-hop.d.ts +0 -20
- package/dist/shared/foundation/gas/profit-hop.js +0 -72
- package/dist/shared/foundation/index.d.ts +0 -13
- package/dist/shared/foundation/index.js +0 -12
- package/dist/shared/foundation/nonce/nonce-manager.d.ts +0 -17
- package/dist/shared/foundation/nonce/nonce-manager.js +0 -183
- package/dist/shared/foundation/normalize-unknown.d.ts +0 -9
- package/dist/shared/foundation/normalize-unknown.js +0 -29
- package/dist/shared/foundation/sdk-logger.d.ts +0 -13
- package/dist/shared/foundation/sdk-logger.js +0 -12
- package/dist/shared/foundation/tx/build-request.d.ts +0 -17
- package/dist/shared/foundation/tx/build-request.js +0 -25
- package/dist/shared/foundation/tx/sign-batch.d.ts +0 -5
- package/dist/shared/foundation/tx/sign-batch.js +0 -26
- package/dist/shared/foundation/tx/wallet-sign-patch.d.ts +0 -1
- package/dist/shared/foundation/tx/wallet-sign-patch.js +0 -18
- package/dist/shared/foundation/types/airdrop-sweep.d.ts +0 -79
- package/dist/shared/foundation/types/airdrop-sweep.js +0 -1
- package/dist/shared/foundation/types/erc20.d.ts +0 -65
- package/dist/shared/foundation/types/erc20.js +0 -1
- package/dist/shared/foundation/types/holders-maker.d.ts +0 -64
- package/dist/shared/foundation/types/holders-maker.js +0 -1
- package/dist/shared/foundation/types/index.d.ts +0 -7
- package/dist/shared/foundation/types/index.js +0 -1
- package/dist/shared/foundation/types/lp-inspect.d.ts +0 -102
- package/dist/shared/foundation/types/lp-inspect.js +0 -1
- package/dist/shared/foundation/types/multicall.d.ts +0 -5
- package/dist/shared/foundation/types/multicall.js +0 -1
- package/dist/shared/foundation/types/private-sale.d.ts +0 -35
- package/dist/shared/foundation/types/private-sale.js +0 -1
- package/dist/shared/foundation/types/quote-helpers.d.ts +0 -17
- package/dist/shared/foundation/types/quote-helpers.js +0 -1
- package/dist/types/errors.d.ts +0 -27
- package/dist/types/errors.js +0 -34
- package/dist/utils/holders-maker/addresses.d.ts +0 -12
- package/dist/utils/holders-maker/addresses.js +0 -15
- package/dist/utils/holders-maker/buy-tx.d.ts +0 -44
- package/dist/utils/holders-maker/buy-tx.js +0 -278
- package/dist/utils/holders-maker/constants.d.ts +0 -6
- package/dist/utils/holders-maker/constants.js +0 -7
- package/dist/utils/holders-maker/disperse.d.ts +0 -18
- package/dist/utils/holders-maker/disperse.js +0 -90
- package/dist/utils/holders-maker/routing.d.ts +0 -4
- package/dist/utils/holders-maker/routing.js +0 -45
- package/dist/utils/holders-maker/transfer-tx.d.ts +0 -4
- package/dist/utils/holders-maker/transfer-tx.js +0 -67
- package/dist/utils/holders-maker-helpers.d.ts +0 -9
- package/dist/utils/holders-maker-helpers.js +0 -9
- package/dist/utils/hop-chains.d.ts +0 -35
- package/dist/utils/hop-chains.js +0 -215
- package/dist/utils/lp-inspect-helpers.d.ts +0 -9
- package/dist/utils/lp-inspect-helpers.js +0 -109
- package/dist/utils/types/airdrop-sweep.d.ts +0 -1
- package/dist/utils/types/airdrop-sweep.js +0 -1
- package/dist/utils/types/contract-factory.d.ts +0 -1
- package/dist/utils/types/contract-factory.js +0 -1
- package/dist/utils/types/erc20.d.ts +0 -1
- package/dist/utils/types/erc20.js +0 -1
- package/dist/utils/types/errors.d.ts +0 -1
- package/dist/utils/types/errors.js +0 -1
- package/dist/utils/types/holders-maker.d.ts +0 -1
- package/dist/utils/types/holders-maker.js +0 -1
- package/dist/utils/types/hop-chains.d.ts +0 -8
- package/dist/utils/types/hop-chains.js +0 -1
- package/dist/utils/types/index.d.ts +0 -13
- package/dist/utils/types/index.js +0 -1
- package/dist/utils/types/lp-inspect.d.ts +0 -1
- package/dist/utils/types/lp-inspect.js +0 -1
- package/dist/utils/types/mpc-exclusive.d.ts +0 -5
- package/dist/utils/types/mpc-exclusive.js +0 -1
- package/dist/utils/types/private-sale.d.ts +0 -1
- package/dist/utils/types/private-sale.js +0 -1
- package/dist/utils/types/quote-helpers.d.ts +0 -1
- package/dist/utils/types/quote-helpers.js +0 -1
- package/dist/utils/types/stealth-transfer.d.ts +0 -44
- package/dist/utils/types/stealth-transfer.js +0 -1
- package/dist/utils/types/wallet.d.ts +0 -25
- package/dist/utils/types/wallet.js +0 -1
- package/dist/vanity/index.d.ts +0 -5
- package/dist/vanity/index.js +0 -5
- package/src/abis/contracts/TaxToken.json +0 -969
- package/src/abis/contracts/TokenManager.json +0 -836
- package/src/abis/contracts/TokenManager2.json +0 -136
- package/src/abis/contracts/TokenManagerHelper3.json +0 -993
- /package/dist/{abis/contracts → shared/abis}/TokenManager.json +0 -0
- /package/dist/{abis/contracts → shared/abis}/TokenManagerHelper3.json +0 -0
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { ethers } from 'ethers';
|
|
2
|
-
export async function getOptimizedGasPrice(provider, config) {
|
|
3
|
-
const feeData = await provider.getFeeData();
|
|
4
|
-
const chainGasPrice = feeData.gasPrice || ethers.parseUnits('3', 'gwei');
|
|
5
|
-
let gasPrice;
|
|
6
|
-
if (config?.baseGasPrice) {
|
|
7
|
-
gasPrice = config.baseGasPrice;
|
|
8
|
-
}
|
|
9
|
-
else {
|
|
10
|
-
gasPrice = chainGasPrice;
|
|
11
|
-
}
|
|
12
|
-
const multiplier = config?.multiplierPercent ?? 50;
|
|
13
|
-
gasPrice = (gasPrice * BigInt(100 + multiplier)) / 100n;
|
|
14
|
-
if (gasPrice < chainGasPrice) {
|
|
15
|
-
gasPrice = chainGasPrice;
|
|
16
|
-
}
|
|
17
|
-
if (config?.minGasPrice && gasPrice < config.minGasPrice) {
|
|
18
|
-
gasPrice = config.minGasPrice;
|
|
19
|
-
}
|
|
20
|
-
if (config?.maxGasPrice && gasPrice > config.maxGasPrice) {
|
|
21
|
-
gasPrice = config.maxGasPrice;
|
|
22
|
-
}
|
|
23
|
-
return gasPrice;
|
|
24
|
-
}
|
|
25
|
-
export async function estimateGasWithSafety(provider, txRequest, config) {
|
|
26
|
-
const multiplier = config?.multiplier ?? 1.2;
|
|
27
|
-
const fallback = config?.fallbackGasLimit ?? 600000n;
|
|
28
|
-
const allowFailure = config?.allowFailure ?? true;
|
|
29
|
-
try {
|
|
30
|
-
const estimated = await provider.estimateGas(txRequest);
|
|
31
|
-
return BigInt(Math.ceil(Number(estimated) * multiplier));
|
|
32
|
-
}
|
|
33
|
-
catch (error) {
|
|
34
|
-
if (!allowFailure) {
|
|
35
|
-
throw error;
|
|
36
|
-
}
|
|
37
|
-
return fallback;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
export async function estimateGasBatch(provider, txRequests, config) {
|
|
41
|
-
return Promise.all(txRequests.map((req) => estimateGasWithSafety(provider, req, config)));
|
|
42
|
-
}
|
|
43
|
-
export function buildTransaction(options) {
|
|
44
|
-
const tx = {
|
|
45
|
-
from: options.from,
|
|
46
|
-
nonce: options.nonce,
|
|
47
|
-
gasLimit: options.gasLimit,
|
|
48
|
-
chainId: options.chainId,
|
|
49
|
-
};
|
|
50
|
-
if (options.to)
|
|
51
|
-
tx.to = options.to;
|
|
52
|
-
if (options.data)
|
|
53
|
-
tx.data = options.data;
|
|
54
|
-
if (options.value)
|
|
55
|
-
tx.value = options.value;
|
|
56
|
-
if (options.type === 2) {
|
|
57
|
-
tx.type = 2;
|
|
58
|
-
tx.maxFeePerGas = options.gasPrice;
|
|
59
|
-
tx.maxPriorityFeePerGas = options.gasPrice / 10n;
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
tx.type = 0;
|
|
63
|
-
tx.gasPrice = options.gasPrice;
|
|
64
|
-
}
|
|
65
|
-
return tx;
|
|
66
|
-
}
|
|
67
|
-
export function getGasLimit(config, defaultGas = 500000) {
|
|
68
|
-
if (config.gasLimit !== undefined) {
|
|
69
|
-
return typeof config.gasLimit === 'bigint' ? config.gasLimit : BigInt(config.gasLimit);
|
|
70
|
-
}
|
|
71
|
-
const multiplier = config.gasLimitMultiplier ?? 1.0;
|
|
72
|
-
return BigInt(Math.ceil(defaultGas * multiplier));
|
|
73
|
-
}
|
|
74
|
-
export function getGasPriceConfig(config) {
|
|
75
|
-
const gasPriceConfig = {};
|
|
76
|
-
if (config.minGasPriceGwei !== undefined) {
|
|
77
|
-
gasPriceConfig.baseGasPrice = ethers.parseUnits(String(config.minGasPriceGwei), 'gwei');
|
|
78
|
-
gasPriceConfig.multiplierPercent = 0;
|
|
79
|
-
}
|
|
80
|
-
if (config.maxGasPriceGwei !== undefined) {
|
|
81
|
-
gasPriceConfig.maxGasPrice = ethers.parseUnits(String(config.maxGasPriceGwei), 'gwei');
|
|
82
|
-
}
|
|
83
|
-
return gasPriceConfig;
|
|
84
|
-
}
|
|
85
|
-
export function getTxType(config) {
|
|
86
|
-
return config.txType ?? 0;
|
|
87
|
-
}
|
|
88
|
-
export function buildGasFields(txType, gasPrice) {
|
|
89
|
-
if (txType === 2) {
|
|
90
|
-
return { type: 2, maxFeePerGas: gasPrice, maxPriorityFeePerGas: gasPrice / 10n || 1n };
|
|
91
|
-
}
|
|
92
|
-
return { type: 0, gasPrice };
|
|
93
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { JsonRpcProvider, Wallet } from 'ethers';
|
|
2
|
-
import { type GeneratedWallet } from '../../../utils/wallet.js';
|
|
3
|
-
export interface ProfitHopConfig {
|
|
4
|
-
provider: JsonRpcProvider;
|
|
5
|
-
payerWallet: Wallet;
|
|
6
|
-
profitAmount: bigint;
|
|
7
|
-
profitRecipient: string;
|
|
8
|
-
hopCount?: number;
|
|
9
|
-
gasPrice: bigint;
|
|
10
|
-
chainId: number;
|
|
11
|
-
txType: number;
|
|
12
|
-
startNonce?: number;
|
|
13
|
-
}
|
|
14
|
-
export interface ProfitHopResult {
|
|
15
|
-
signedTransactions: string[];
|
|
16
|
-
hopWallets: GeneratedWallet[];
|
|
17
|
-
totalNonceUsed: number;
|
|
18
|
-
}
|
|
19
|
-
export declare const PROFIT_HOP_COUNT = 2;
|
|
20
|
-
export declare function buildProfitHopTransactions(config: ProfitHopConfig): Promise<ProfitHopResult>;
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import { Wallet } from 'ethers';
|
|
2
|
-
import { generateWallets } from '../../../utils/wallet.js';
|
|
3
|
-
import { GAS_LIMITS, CHAINS } from '../../constants/index.js';
|
|
4
|
-
import { NonceManager } from '../nonce/nonce-manager.js';
|
|
5
|
-
import { buildGasFields } from './bundle-gas.js';
|
|
6
|
-
export const PROFIT_HOP_COUNT = 2;
|
|
7
|
-
const CHAINS_REQUIRE_HOP = [CHAINS.BSC.chainId];
|
|
8
|
-
export async function buildProfitHopTransactions(config) {
|
|
9
|
-
const { provider, payerWallet, profitAmount, profitRecipient, hopCount = PROFIT_HOP_COUNT, gasPrice, chainId, txType, startNonce, } = config;
|
|
10
|
-
if (profitAmount <= 0n) {
|
|
11
|
-
return { signedTransactions: [], hopWallets: [], totalNonceUsed: 0 };
|
|
12
|
-
}
|
|
13
|
-
const nativeTransferGasLimit = GAS_LIMITS.NATIVE_TRANSFER;
|
|
14
|
-
const signedTxs = [];
|
|
15
|
-
const nonceManager = new NonceManager(provider);
|
|
16
|
-
const payerNonce = startNonce ?? (await nonceManager.getNextNonce(payerWallet));
|
|
17
|
-
const needHop = CHAINS_REQUIRE_HOP.includes(chainId);
|
|
18
|
-
const gasFields = buildGasFields(txType, gasPrice);
|
|
19
|
-
if (!needHop) {
|
|
20
|
-
const directTx = await payerWallet.signTransaction({
|
|
21
|
-
to: profitRecipient,
|
|
22
|
-
value: profitAmount,
|
|
23
|
-
nonce: payerNonce,
|
|
24
|
-
gasLimit: nativeTransferGasLimit,
|
|
25
|
-
chainId,
|
|
26
|
-
...gasFields,
|
|
27
|
-
});
|
|
28
|
-
signedTxs.push(directTx);
|
|
29
|
-
return { signedTransactions: signedTxs, hopWallets: [], totalNonceUsed: 1 };
|
|
30
|
-
}
|
|
31
|
-
const gasFeePerHop = nativeTransferGasLimit * gasPrice;
|
|
32
|
-
const hopWalletsInfo = generateWallets(hopCount);
|
|
33
|
-
const hopWallets = hopWalletsInfo.map((w) => new Wallet(w.privateKey, provider));
|
|
34
|
-
const hopAmounts = [];
|
|
35
|
-
for (let i = hopCount - 1; i >= 0; i--) {
|
|
36
|
-
if (i === hopCount - 1) {
|
|
37
|
-
hopAmounts.unshift(profitAmount + gasFeePerHop);
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
hopAmounts.unshift(hopAmounts[0] + gasFeePerHop);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
const payerTx = await payerWallet.signTransaction({
|
|
44
|
-
to: hopWallets[0].address,
|
|
45
|
-
value: hopAmounts[0],
|
|
46
|
-
nonce: payerNonce,
|
|
47
|
-
gasLimit: nativeTransferGasLimit,
|
|
48
|
-
chainId,
|
|
49
|
-
...gasFields,
|
|
50
|
-
});
|
|
51
|
-
signedTxs.push(payerTx);
|
|
52
|
-
for (let i = 0; i < hopCount; i++) {
|
|
53
|
-
const fromWallet = hopWallets[i];
|
|
54
|
-
const isLastHop = i === hopCount - 1;
|
|
55
|
-
const toAddress = isLastHop ? profitRecipient : hopWallets[i + 1].address;
|
|
56
|
-
const value = isLastHop ? profitAmount : hopAmounts[i + 1];
|
|
57
|
-
const hopTx = await fromWallet.signTransaction({
|
|
58
|
-
to: toAddress,
|
|
59
|
-
value,
|
|
60
|
-
nonce: 0,
|
|
61
|
-
gasLimit: nativeTransferGasLimit,
|
|
62
|
-
chainId,
|
|
63
|
-
...gasFields,
|
|
64
|
-
});
|
|
65
|
-
signedTxs.push(hopTx);
|
|
66
|
-
}
|
|
67
|
-
return {
|
|
68
|
-
signedTransactions: signedTxs,
|
|
69
|
-
hopWallets: hopWalletsInfo,
|
|
70
|
-
totalNonceUsed: 1,
|
|
71
|
-
};
|
|
72
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SDK 横向基础(错误规范化、可选日志、共享类型与 Tx 构建)。
|
|
3
|
-
* 新代码优先从这里收口 unknown / Logger / 复用类型;存量代码可渐进迁移。
|
|
4
|
-
*/
|
|
5
|
-
export { getErrorMessageFromUnknown, normalizeUnknownError, type NormalizedErrorShape } from './normalize-unknown.js';
|
|
6
|
-
export { noopSdkLogger, consoleSdkLogger, type SdkLogger } from './sdk-logger.js';
|
|
7
|
-
export type { Aggregate3CallResult, EnsureAllowanceResult, EnsureAllowanceBatchItemResult, ApproveTokenBatchParams, ApproveTokenBatchRawParams, ApproveTokenBatchResult, ApproveTokenBatchSignResult, HoldersMakerChain, HoldersMakerTradeType, BaseTokenType, HoldersMakerConfig, HoldersMakerParams, TransactionLayer, BatchResult, HoldersMakerResult, DexConfig, ChainDexConfig, PoolPairInfo, V3PoolInfo, DexPoolInfo, BestPoolInfo, LPPlatform, LPInfo, InspectOptions, BundleSubmitResult, SignedTransactionsResult, AirdropDisperseParams, AirdropDisperseSignParams, AirdropSweepParams, AirdropSweepSignParams, DisperseParams, DisperseSignParams, SweepParams, SweepSignParams, PrivateSaleSignConfig, PrivateSaleTransferParams, BatchPrivateSaleParams, PrivateSaleResult, SupportedChain, QuoteParams, QuoteResult, } from './types/index.js';
|
|
8
|
-
export { buildTransactionRequest, type BuildTxRequestParams } from './tx/build-request.js';
|
|
9
|
-
export { NonceManager } from './nonce/nonce-manager.js';
|
|
10
|
-
export { type GasPriceConfig, type GasEstimateConfig, type BuildTransactionOptions, type CommonBundleConfig, getOptimizedGasPrice, estimateGasWithSafety, estimateGasBatch, buildTransaction, getGasLimit, getGasPriceConfig, getTxType, buildGasFields, } from './gas/bundle-gas.js';
|
|
11
|
-
export { type ProfitHopConfig, type ProfitHopResult, PROFIT_HOP_COUNT, buildProfitHopTransactions, } from './gas/profit-hop.js';
|
|
12
|
-
export { getChainId, signTransactionsBatch, signTransactionsBatchMultiWallet, validateSignedTransactions, } from './tx/sign-batch.js';
|
|
13
|
-
export { getDeadline, encodeV3Path, decodeV3Path } from './dex/v3-path.js';
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SDK 横向基础(错误规范化、可选日志、共享类型与 Tx 构建)。
|
|
3
|
-
* 新代码优先从这里收口 unknown / Logger / 复用类型;存量代码可渐进迁移。
|
|
4
|
-
*/
|
|
5
|
-
export { getErrorMessageFromUnknown, normalizeUnknownError } from './normalize-unknown.js';
|
|
6
|
-
export { noopSdkLogger, consoleSdkLogger } from './sdk-logger.js';
|
|
7
|
-
export { buildTransactionRequest } from './tx/build-request.js';
|
|
8
|
-
export { NonceManager } from './nonce/nonce-manager.js';
|
|
9
|
-
export { getOptimizedGasPrice, estimateGasWithSafety, estimateGasBatch, buildTransaction, getGasLimit, getGasPriceConfig, getTxType, buildGasFields, } from './gas/bundle-gas.js';
|
|
10
|
-
export { PROFIT_HOP_COUNT, buildProfitHopTransactions, } from './gas/profit-hop.js';
|
|
11
|
-
export { getChainId, signTransactionsBatch, signTransactionsBatchMultiWallet, validateSignedTransactions, } from './tx/sign-batch.js';
|
|
12
|
-
export { getDeadline, encodeV3Path, decodeV3Path } from './dex/v3-path.js';
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import '../tx/wallet-sign-patch.js';
|
|
2
|
-
import { JsonRpcProvider, Wallet } from 'ethers';
|
|
3
|
-
/**
|
|
4
|
-
* Nonce 管理器 — bundle 交易中管理多钱包 nonce
|
|
5
|
-
*/
|
|
6
|
-
export declare class NonceManager {
|
|
7
|
-
private provider;
|
|
8
|
-
private tempNonceCache;
|
|
9
|
-
private chainIdPromise?;
|
|
10
|
-
constructor(provider: JsonRpcProvider);
|
|
11
|
-
private getChainId;
|
|
12
|
-
getNextNonce(wallet: Wallet | string): Promise<number>;
|
|
13
|
-
getNextNonceBatch(wallet: Wallet | string, count: number): Promise<number[]>;
|
|
14
|
-
clearTemp(): void;
|
|
15
|
-
getTempCachedNonce(address: string): number | undefined;
|
|
16
|
-
getNextNoncesForWallets(wallets: (Wallet | string)[]): Promise<number[]>;
|
|
17
|
-
}
|
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
import '../tx/wallet-sign-patch.js';
|
|
2
|
-
import { CHAINS } from '../../constants/index.js';
|
|
3
|
-
function asBatchSendProvider(provider) {
|
|
4
|
-
return provider;
|
|
5
|
-
}
|
|
6
|
-
const GLOBAL_NONCE_TTL_MS = 60 * 1000;
|
|
7
|
-
const globalNonceCursorByChain = new Map();
|
|
8
|
-
function isFlakyNonceChain(chainId) {
|
|
9
|
-
return Number(chainId) === CHAINS.XLAYER.chainId;
|
|
10
|
-
}
|
|
11
|
-
function getCursorMap(chainId) {
|
|
12
|
-
let m = globalNonceCursorByChain.get(chainId);
|
|
13
|
-
if (!m) {
|
|
14
|
-
m = new Map();
|
|
15
|
-
globalNonceCursorByChain.set(chainId, m);
|
|
16
|
-
}
|
|
17
|
-
return m;
|
|
18
|
-
}
|
|
19
|
-
function getGlobalNextNonce(chainId, addrLower) {
|
|
20
|
-
const m = globalNonceCursorByChain.get(chainId);
|
|
21
|
-
if (!m)
|
|
22
|
-
return undefined;
|
|
23
|
-
const e = m.get(addrLower);
|
|
24
|
-
if (!e)
|
|
25
|
-
return undefined;
|
|
26
|
-
if (Date.now() - e.updatedAt > GLOBAL_NONCE_TTL_MS) {
|
|
27
|
-
m.delete(addrLower);
|
|
28
|
-
return undefined;
|
|
29
|
-
}
|
|
30
|
-
return e.nextNonce;
|
|
31
|
-
}
|
|
32
|
-
function setGlobalNextNonce(chainId, addrLower, nextNonce) {
|
|
33
|
-
const m = getCursorMap(chainId);
|
|
34
|
-
const cur = m.get(addrLower);
|
|
35
|
-
const next = Number(nextNonce);
|
|
36
|
-
if (!Number.isFinite(next) || next < 0)
|
|
37
|
-
return;
|
|
38
|
-
if (!cur || next > cur.nextNonce || Date.now() - cur.updatedAt > GLOBAL_NONCE_TTL_MS) {
|
|
39
|
-
m.set(addrLower, { nextNonce: next, updatedAt: Date.now() });
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
cur.updatedAt = Date.now();
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Nonce 管理器 — bundle 交易中管理多钱包 nonce
|
|
47
|
-
*/
|
|
48
|
-
export class NonceManager {
|
|
49
|
-
provider;
|
|
50
|
-
tempNonceCache = new Map();
|
|
51
|
-
chainIdPromise;
|
|
52
|
-
constructor(provider) {
|
|
53
|
-
this.provider = provider;
|
|
54
|
-
}
|
|
55
|
-
async getChainId() {
|
|
56
|
-
if (!this.chainIdPromise) {
|
|
57
|
-
this.chainIdPromise = this.provider
|
|
58
|
-
.getNetwork()
|
|
59
|
-
.then((n) => Number(n.chainId))
|
|
60
|
-
.catch(() => 0);
|
|
61
|
-
}
|
|
62
|
-
return this.chainIdPromise;
|
|
63
|
-
}
|
|
64
|
-
async getNextNonce(wallet) {
|
|
65
|
-
const address = typeof wallet === 'string' ? wallet : wallet.address;
|
|
66
|
-
const key = address.toLowerCase();
|
|
67
|
-
const chainId = await this.getChainId();
|
|
68
|
-
const flaky = isFlakyNonceChain(chainId);
|
|
69
|
-
if (this.tempNonceCache.has(key)) {
|
|
70
|
-
const cachedNonce = this.tempNonceCache.get(key);
|
|
71
|
-
this.tempNonceCache.set(key, cachedNonce + 1);
|
|
72
|
-
if (flaky)
|
|
73
|
-
setGlobalNextNonce(chainId, key, cachedNonce + 1);
|
|
74
|
-
return cachedNonce;
|
|
75
|
-
}
|
|
76
|
-
const onchainNonce = await this.provider.getTransactionCount(address, 'pending');
|
|
77
|
-
let effectiveNonce = onchainNonce;
|
|
78
|
-
if (flaky) {
|
|
79
|
-
const globalNext = getGlobalNextNonce(chainId, key);
|
|
80
|
-
if (globalNext !== undefined) {
|
|
81
|
-
const delta = globalNext - onchainNonce;
|
|
82
|
-
if (delta > 0 && delta <= 10) {
|
|
83
|
-
effectiveNonce = globalNext;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
setGlobalNextNonce(chainId, key, effectiveNonce + 1);
|
|
87
|
-
}
|
|
88
|
-
this.tempNonceCache.set(key, effectiveNonce + 1);
|
|
89
|
-
return effectiveNonce;
|
|
90
|
-
}
|
|
91
|
-
async getNextNonceBatch(wallet, count) {
|
|
92
|
-
const address = typeof wallet === 'string' ? wallet : wallet.address;
|
|
93
|
-
const key = address.toLowerCase();
|
|
94
|
-
const chainId = await this.getChainId();
|
|
95
|
-
const flaky = isFlakyNonceChain(chainId);
|
|
96
|
-
let startNonce;
|
|
97
|
-
if (this.tempNonceCache.has(key)) {
|
|
98
|
-
startNonce = this.tempNonceCache.get(key);
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
startNonce = await this.provider.getTransactionCount(address, 'pending');
|
|
102
|
-
}
|
|
103
|
-
if (flaky) {
|
|
104
|
-
const globalNext = getGlobalNextNonce(chainId, key);
|
|
105
|
-
if (globalNext !== undefined) {
|
|
106
|
-
const delta = globalNext - startNonce;
|
|
107
|
-
if (delta > 0 && delta <= 10)
|
|
108
|
-
startNonce = globalNext;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
this.tempNonceCache.set(key, startNonce + count);
|
|
112
|
-
if (flaky)
|
|
113
|
-
setGlobalNextNonce(chainId, key, startNonce + count);
|
|
114
|
-
return Array.from({ length: count }, (_, i) => startNonce + i);
|
|
115
|
-
}
|
|
116
|
-
clearTemp() {
|
|
117
|
-
this.tempNonceCache.clear();
|
|
118
|
-
}
|
|
119
|
-
getTempCachedNonce(address) {
|
|
120
|
-
return this.tempNonceCache.get(address.toLowerCase());
|
|
121
|
-
}
|
|
122
|
-
async getNextNoncesForWallets(wallets) {
|
|
123
|
-
const addresses = wallets.map((w) => (typeof w === 'string' ? w : w.address));
|
|
124
|
-
const keys = addresses.map((a) => a.toLowerCase());
|
|
125
|
-
const chainId = await this.getChainId();
|
|
126
|
-
const flaky = isFlakyNonceChain(chainId);
|
|
127
|
-
const needQuery = [];
|
|
128
|
-
const results = new Array(wallets.length);
|
|
129
|
-
for (let i = 0; i < keys.length; i++) {
|
|
130
|
-
const key = keys[i];
|
|
131
|
-
if (this.tempNonceCache.has(key)) {
|
|
132
|
-
const cachedNonce = this.tempNonceCache.get(key);
|
|
133
|
-
results[i] = cachedNonce;
|
|
134
|
-
this.tempNonceCache.set(key, cachedNonce + 1);
|
|
135
|
-
if (flaky)
|
|
136
|
-
setGlobalNextNonce(chainId, key, cachedNonce + 1);
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
139
|
-
needQuery.push({ index: i, address: addresses[i] });
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
if (needQuery.length > 0) {
|
|
143
|
-
let queryResults;
|
|
144
|
-
try {
|
|
145
|
-
const batchRequests = needQuery.map(({ address }, idx) => ({
|
|
146
|
-
method: 'eth_getTransactionCount',
|
|
147
|
-
params: [address, 'pending'],
|
|
148
|
-
id: idx + 1,
|
|
149
|
-
jsonrpc: '2.0',
|
|
150
|
-
}));
|
|
151
|
-
const rawResults = await asBatchSendProvider(this.provider)._send(batchRequests);
|
|
152
|
-
queryResults = rawResults.map((r) => {
|
|
153
|
-
if (r.result) {
|
|
154
|
-
return parseInt(r.result, 16);
|
|
155
|
-
}
|
|
156
|
-
return 0;
|
|
157
|
-
});
|
|
158
|
-
}
|
|
159
|
-
catch {
|
|
160
|
-
const queryPromises = needQuery.map(({ address }) => this.provider.getTransactionCount(address, 'pending'));
|
|
161
|
-
queryResults = await Promise.all(queryPromises);
|
|
162
|
-
}
|
|
163
|
-
for (let i = 0; i < needQuery.length; i++) {
|
|
164
|
-
const { index, address } = needQuery[i];
|
|
165
|
-
const key = address.toLowerCase();
|
|
166
|
-
const onchainNonce = queryResults[i];
|
|
167
|
-
let effectiveNonce = onchainNonce;
|
|
168
|
-
if (flaky) {
|
|
169
|
-
const globalNext = getGlobalNextNonce(chainId, key);
|
|
170
|
-
if (globalNext !== undefined) {
|
|
171
|
-
const delta = globalNext - onchainNonce;
|
|
172
|
-
if (delta > 0 && delta <= 10)
|
|
173
|
-
effectiveNonce = globalNext;
|
|
174
|
-
}
|
|
175
|
-
setGlobalNextNonce(chainId, key, effectiveNonce + 1);
|
|
176
|
-
}
|
|
177
|
-
results[index] = effectiveNonce;
|
|
178
|
-
this.tempNonceCache.set(key, effectiveNonce + 1);
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
return results;
|
|
182
|
-
}
|
|
183
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SDK 统一的 unknown / Error 收口(审计:catch 宜用 unknown + normalize)
|
|
3
|
-
*/
|
|
4
|
-
export interface NormalizedErrorShape {
|
|
5
|
-
message: string;
|
|
6
|
-
cause?: unknown;
|
|
7
|
-
}
|
|
8
|
-
export declare function getErrorMessageFromUnknown(error: unknown): string;
|
|
9
|
-
export declare function normalizeUnknownError(error: unknown): NormalizedErrorShape;
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SDK 统一的 unknown / Error 收口(审计:catch 宜用 unknown + normalize)
|
|
3
|
-
*/
|
|
4
|
-
export function getErrorMessageFromUnknown(error) {
|
|
5
|
-
if (error instanceof Error)
|
|
6
|
-
return error.message;
|
|
7
|
-
if (typeof error === 'string')
|
|
8
|
-
return error;
|
|
9
|
-
if (error !== null && typeof error === 'object') {
|
|
10
|
-
const o = error;
|
|
11
|
-
const m = o.message;
|
|
12
|
-
if (typeof m === 'string')
|
|
13
|
-
return m;
|
|
14
|
-
const reason = o.reason;
|
|
15
|
-
if (typeof reason === 'string')
|
|
16
|
-
return reason;
|
|
17
|
-
}
|
|
18
|
-
try {
|
|
19
|
-
return String(error);
|
|
20
|
-
}
|
|
21
|
-
catch {
|
|
22
|
-
return 'Unknown error';
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
export function normalizeUnknownError(error) {
|
|
26
|
-
const message = getErrorMessageFromUnknown(error);
|
|
27
|
-
const cause = error instanceof Error && error.cause !== undefined ? error.cause : error instanceof Error ? undefined : error;
|
|
28
|
-
return { message, ...(cause !== undefined ? { cause } : {}) };
|
|
29
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SDK 可选日志门面(默认静默);业务侧可传入以替代 console.*
|
|
3
|
-
*/
|
|
4
|
-
export interface SdkLogger {
|
|
5
|
-
debug?: (msg: string, ...args: unknown[]) => void;
|
|
6
|
-
info?: (msg: string, ...args: unknown[]) => void;
|
|
7
|
-
warn?: (msg: string, ...args: unknown[]) => void;
|
|
8
|
-
error?: (msg: string, ...args: unknown[]) => void;
|
|
9
|
-
}
|
|
10
|
-
/** 不输出日志(库的推荐默认)。 */
|
|
11
|
-
export declare const noopSdkLogger: SdkLogger;
|
|
12
|
-
/** 直接使用 console(仅调试/过渡期)。 */
|
|
13
|
-
export declare const consoleSdkLogger: SdkLogger;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SDK 可选日志门面(默认静默);业务侧可传入以替代 console.*
|
|
3
|
-
*/
|
|
4
|
-
/** 不输出日志(库的推荐默认)。 */
|
|
5
|
-
export const noopSdkLogger = {};
|
|
6
|
-
/** 直接使用 console(仅调试/过渡期)。 */
|
|
7
|
-
export const consoleSdkLogger = {
|
|
8
|
-
debug: (msg, ...args) => console.debug(msg, ...args),
|
|
9
|
-
info: (msg, ...args) => console.info(msg, ...args),
|
|
10
|
-
warn: (msg, ...args) => console.warn(msg, ...args),
|
|
11
|
-
error: (msg, ...args) => console.error(msg, ...args),
|
|
12
|
-
};
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { TransactionLike, TransactionRequest } from 'ethers';
|
|
2
|
-
/** 构建签名用 TransactionRequest 的公共参数 */
|
|
3
|
-
export type BuildTxRequestParams = {
|
|
4
|
-
from: string;
|
|
5
|
-
nonce: number;
|
|
6
|
-
gasLimit: bigint;
|
|
7
|
-
gasPrice: bigint;
|
|
8
|
-
priorityFee: bigint;
|
|
9
|
-
chainId: number;
|
|
10
|
-
txType: number;
|
|
11
|
-
value?: bigint;
|
|
12
|
-
};
|
|
13
|
-
/**
|
|
14
|
-
* 将 populateTransaction 结果与 gas/nonce 字段合并为可签名交易。
|
|
15
|
-
* type 0 (Legacy) 使用 gasPrice;type 2 (EIP-1559) 使用 maxFeePerGas + maxPriorityFeePerGas。
|
|
16
|
-
*/
|
|
17
|
-
export declare function buildTransactionRequest(unsigned: TransactionLike, { from, nonce, gasLimit, gasPrice, priorityFee, chainId, txType, value }: BuildTxRequestParams): TransactionRequest;
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 将 populateTransaction 结果与 gas/nonce 字段合并为可签名交易。
|
|
3
|
-
* type 0 (Legacy) 使用 gasPrice;type 2 (EIP-1559) 使用 maxFeePerGas + maxPriorityFeePerGas。
|
|
4
|
-
*/
|
|
5
|
-
export function buildTransactionRequest(unsigned, { from, nonce, gasLimit, gasPrice, priorityFee, chainId, txType, value }) {
|
|
6
|
-
const tx = {
|
|
7
|
-
...unsigned,
|
|
8
|
-
from,
|
|
9
|
-
nonce,
|
|
10
|
-
gasLimit,
|
|
11
|
-
chainId,
|
|
12
|
-
type: txType,
|
|
13
|
-
};
|
|
14
|
-
if (value !== undefined) {
|
|
15
|
-
tx.value = value;
|
|
16
|
-
}
|
|
17
|
-
if (txType === 2) {
|
|
18
|
-
tx.maxFeePerGas = gasPrice;
|
|
19
|
-
tx.maxPriorityFeePerGas = priorityFee;
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
tx.gasPrice = gasPrice;
|
|
23
|
-
}
|
|
24
|
-
return tx;
|
|
25
|
-
}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { JsonRpcProvider, Wallet, type TransactionRequest } from 'ethers';
|
|
2
|
-
export declare function getChainId(provider: JsonRpcProvider, configChainId?: number): Promise<number>;
|
|
3
|
-
export declare function signTransactionsBatch(wallet: Wallet, transactions: TransactionRequest[]): Promise<string[]>;
|
|
4
|
-
export declare function signTransactionsBatchMultiWallet(wallets: Wallet[], transactions: TransactionRequest[]): Promise<string[]>;
|
|
5
|
-
export declare function validateSignedTransactions(signedTxs: string[]): boolean;
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
export async function getChainId(provider, configChainId) {
|
|
2
|
-
if (configChainId !== undefined)
|
|
3
|
-
return configChainId;
|
|
4
|
-
const network = await provider.getNetwork();
|
|
5
|
-
return Number(network.chainId);
|
|
6
|
-
}
|
|
7
|
-
export async function signTransactionsBatch(wallet, transactions) {
|
|
8
|
-
return Promise.all(transactions.map((tx) => wallet.signTransaction(tx)));
|
|
9
|
-
}
|
|
10
|
-
export async function signTransactionsBatchMultiWallet(wallets, transactions) {
|
|
11
|
-
if (wallets.length !== transactions.length) {
|
|
12
|
-
throw new Error(`Wallet count (${wallets.length}) must match transaction count (${transactions.length})`);
|
|
13
|
-
}
|
|
14
|
-
return Promise.all(transactions.map((tx, i) => wallets[i].signTransaction(tx)));
|
|
15
|
-
}
|
|
16
|
-
export function validateSignedTransactions(signedTxs) {
|
|
17
|
-
if (!signedTxs || signedTxs.length === 0) {
|
|
18
|
-
return false;
|
|
19
|
-
}
|
|
20
|
-
for (const tx of signedTxs) {
|
|
21
|
-
if (typeof tx !== 'string' || !tx.startsWith('0x')) {
|
|
22
|
-
return false;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
return true;
|
|
26
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* EIP-1559 兼容:当 txType=2 但传了 gasPrice 时,自动转换为 maxFeePerGas
|
|
3
|
-
* 模块加载时 patch Wallet.prototype.signTransaction(全局一次)
|
|
4
|
-
*/
|
|
5
|
-
import { Wallet } from 'ethers';
|
|
6
|
-
const _origWalletSign = Wallet.prototype.signTransaction;
|
|
7
|
-
Wallet.prototype.signTransaction = async function (tx) {
|
|
8
|
-
const signable = tx;
|
|
9
|
-
if (signable.type === 2 && signable.gasPrice != null && signable.maxFeePerGas == null) {
|
|
10
|
-
const { gasPrice: gp, ...rest } = signable;
|
|
11
|
-
return _origWalletSign.call(this, {
|
|
12
|
-
...rest,
|
|
13
|
-
maxFeePerGas: gp,
|
|
14
|
-
maxPriorityFeePerGas: rest.maxPriorityFeePerGas ?? 0n,
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
return _origWalletSign.call(this, tx);
|
|
18
|
-
};
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 空投分散 / 归集(airdrop-sweep)— 类型定义
|
|
3
|
-
*/
|
|
4
|
-
import type { SoulPointSignatureMode, VNormalizationMode } from '../../clients/club48.js';
|
|
5
|
-
export type BundleSubmitResult = {
|
|
6
|
-
bundleUuid: string;
|
|
7
|
-
signedTxs: string[];
|
|
8
|
-
};
|
|
9
|
-
export type SignedTransactionsResult = {
|
|
10
|
-
signedTransactions: string[];
|
|
11
|
-
};
|
|
12
|
-
export type AirdropDisperseParams = {
|
|
13
|
-
rpcUrl: string;
|
|
14
|
-
chainId: number;
|
|
15
|
-
fromPrivateKey: string;
|
|
16
|
-
recipients: string[];
|
|
17
|
-
amount?: string;
|
|
18
|
-
amounts?: string[];
|
|
19
|
-
tokenAddress?: string;
|
|
20
|
-
bundleEndpoint?: string;
|
|
21
|
-
gasPriceGwei?: string;
|
|
22
|
-
transferGasLimit?: bigint;
|
|
23
|
-
nativeGasLimit?: bigint;
|
|
24
|
-
blockOffset?: number;
|
|
25
|
-
spMode?: SoulPointSignatureMode;
|
|
26
|
-
spPrivateKey?: string;
|
|
27
|
-
spVMode?: VNormalizationMode;
|
|
28
|
-
};
|
|
29
|
-
export type AirdropDisperseSignParams = {
|
|
30
|
-
rpcUrl: string;
|
|
31
|
-
chainId: number;
|
|
32
|
-
fromPrivateKey: string;
|
|
33
|
-
recipients: string[];
|
|
34
|
-
amount?: string;
|
|
35
|
-
amounts?: string[];
|
|
36
|
-
tokenAddress?: string;
|
|
37
|
-
gasPriceGwei?: string;
|
|
38
|
-
transferGasLimit?: bigint;
|
|
39
|
-
nativeGasLimit?: bigint;
|
|
40
|
-
};
|
|
41
|
-
export type AirdropSweepParams = {
|
|
42
|
-
rpcUrl: string;
|
|
43
|
-
chainId: number;
|
|
44
|
-
sourcePrivateKeys: string[];
|
|
45
|
-
target: string;
|
|
46
|
-
ratioPct?: number;
|
|
47
|
-
amount?: string;
|
|
48
|
-
tokenAddress?: string;
|
|
49
|
-
bundleEndpoint?: string;
|
|
50
|
-
gasPriceGwei?: string;
|
|
51
|
-
transferGasLimit?: bigint;
|
|
52
|
-
nativeGasLimit?: bigint;
|
|
53
|
-
blockOffset?: number;
|
|
54
|
-
skipIfInsufficient?: boolean;
|
|
55
|
-
spMode?: SoulPointSignatureMode;
|
|
56
|
-
spPrivateKey?: string;
|
|
57
|
-
spVMode?: VNormalizationMode;
|
|
58
|
-
};
|
|
59
|
-
export type AirdropSweepSignParams = {
|
|
60
|
-
rpcUrl: string;
|
|
61
|
-
chainId: number;
|
|
62
|
-
sourcePrivateKeys: string[];
|
|
63
|
-
target: string;
|
|
64
|
-
ratioPct?: number;
|
|
65
|
-
amount?: string;
|
|
66
|
-
tokenAddress?: string;
|
|
67
|
-
gasPriceGwei?: string;
|
|
68
|
-
transferGasLimit?: bigint;
|
|
69
|
-
nativeGasLimit?: bigint;
|
|
70
|
-
skipIfInsufficient?: boolean;
|
|
71
|
-
};
|
|
72
|
-
/** @deprecated 使用 `AirdropDisperseParams` */
|
|
73
|
-
export type DisperseParams = AirdropDisperseParams;
|
|
74
|
-
/** @deprecated 使用 `AirdropDisperseSignParams` */
|
|
75
|
-
export type DisperseSignParams = AirdropDisperseSignParams;
|
|
76
|
-
/** @deprecated 使用 `AirdropSweepParams` */
|
|
77
|
-
export type SweepParams = AirdropSweepParams;
|
|
78
|
-
/** @deprecated 使用 `AirdropSweepSignParams` */
|
|
79
|
-
export type SweepSignParams = AirdropSweepSignParams;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|