@w3lib/evm-batch-call 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +54 -0
- package/README.md +367 -3
- package/contracts/TokenProbe.sol +103 -0
- package/dist/aggregate.d.ts.map +1 -1
- package/dist/aggregate.js +114 -3
- package/dist/aggregate.js.map +1 -1
- package/dist/approvals.d.ts +169 -0
- package/dist/approvals.d.ts.map +1 -0
- package/dist/approvals.js +310 -0
- package/dist/approvals.js.map +1 -0
- package/dist/chains.d.ts.map +1 -1
- package/dist/chains.js +4 -0
- package/dist/chains.js.map +1 -1
- package/dist/dividends.d.ts +135 -0
- package/dist/dividends.d.ts.map +1 -0
- package/dist/dividends.js +253 -0
- package/dist/dividends.js.map +1 -0
- package/dist/fees.d.ts +97 -0
- package/dist/fees.d.ts.map +1 -0
- package/dist/fees.js +115 -0
- package/dist/fees.js.map +1 -0
- package/dist/history.d.ts +154 -0
- package/dist/history.d.ts.map +1 -0
- package/dist/history.js +247 -0
- package/dist/history.js.map +1 -0
- package/dist/historySources.d.ts +32 -0
- package/dist/historySources.d.ts.map +1 -0
- package/dist/historySources.js +319 -0
- package/dist/historySources.js.map +1 -0
- package/dist/http.d.ts +10 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +30 -0
- package/dist/http.js.map +1 -0
- package/dist/liquidity/v3.d.ts +2 -0
- package/dist/liquidity/v3.d.ts.map +1 -1
- package/dist/liquidity/v3.js +1 -1
- package/dist/liquidity/v3.js.map +1 -1
- package/dist/liquidity/v4.d.ts +21 -0
- package/dist/liquidity/v4.d.ts.map +1 -1
- package/dist/liquidity/v4.js +4 -3
- package/dist/liquidity/v4.js.map +1 -1
- package/dist/lp.d.ts +10 -1
- package/dist/lp.d.ts.map +1 -1
- package/dist/lp.js +19 -2
- package/dist/lp.js.map +1 -1
- package/dist/lpV4.d.ts +4 -0
- package/dist/lpV4.d.ts.map +1 -1
- package/dist/lpV4.js +27 -3
- package/dist/lpV4.js.map +1 -1
- package/dist/multicall.d.ts.map +1 -1
- package/dist/multicall.js +3 -0
- package/dist/multicall.js.map +1 -1
- package/dist/names.d.ts +55 -0
- package/dist/names.d.ts.map +1 -0
- package/dist/names.js +93 -0
- package/dist/names.js.map +1 -0
- package/dist/owner.d.ts +4 -26
- package/dist/owner.d.ts.map +1 -1
- package/dist/owner.js +7 -112
- package/dist/owner.js.map +1 -1
- package/dist/permit.d.ts +137 -0
- package/dist/permit.d.ts.map +1 -0
- package/dist/permit.js +355 -0
- package/dist/permit.js.map +1 -0
- package/dist/portfolio.d.ts +56 -0
- package/dist/portfolio.d.ts.map +1 -0
- package/dist/portfolio.js +54 -0
- package/dist/portfolio.js.map +1 -0
- package/dist/price.d.ts +95 -0
- package/dist/price.d.ts.map +1 -0
- package/dist/price.js +329 -0
- package/dist/price.js.map +1 -0
- package/dist/rewards/farms.d.ts +26 -0
- package/dist/rewards/farms.d.ts.map +1 -0
- package/dist/rewards/farms.js +210 -0
- package/dist/rewards/farms.js.map +1 -0
- package/dist/rewards/index.d.ts +42 -0
- package/dist/rewards/index.d.ts.map +1 -0
- package/dist/rewards/index.js +382 -0
- package/dist/rewards/index.js.map +1 -0
- package/dist/rewards/types.d.ts +170 -0
- package/dist/rewards/types.d.ts.map +1 -0
- package/dist/rewards/types.js +2 -0
- package/dist/rewards/types.js.map +1 -0
- package/dist/risk.d.ts +42 -0
- package/dist/risk.d.ts.map +1 -0
- package/dist/risk.js +134 -0
- package/dist/risk.js.map +1 -0
- package/dist/rpcNodes.d.ts.map +1 -1
- package/dist/rpcNodes.js +18 -0
- package/dist/rpcNodes.js.map +1 -1
- package/dist/simulate.d.ts +186 -0
- package/dist/simulate.d.ts.map +1 -0
- package/dist/simulate.js +559 -0
- package/dist/simulate.js.map +1 -0
- package/dist/simulateDecode.d.ts +33 -0
- package/dist/simulateDecode.d.ts.map +1 -0
- package/dist/simulateDecode.js +321 -0
- package/dist/simulateDecode.js.map +1 -0
- package/dist/smartAccount/account.d.ts +31 -0
- package/dist/smartAccount/account.d.ts.map +1 -0
- package/dist/smartAccount/account.js +33 -0
- package/dist/smartAccount/account.js.map +1 -0
- package/dist/smartAccount/clients.d.ts +77 -0
- package/dist/smartAccount/clients.d.ts.map +1 -0
- package/dist/smartAccount/clients.js +122 -0
- package/dist/smartAccount/clients.js.map +1 -0
- package/dist/smartAccount/eip5792.d.ts +77 -0
- package/dist/smartAccount/eip5792.d.ts.map +1 -0
- package/dist/smartAccount/eip5792.js +152 -0
- package/dist/smartAccount/eip5792.js.map +1 -0
- package/dist/smartAccount/send.d.ts +40 -0
- package/dist/smartAccount/send.d.ts.map +1 -0
- package/dist/smartAccount/send.js +271 -0
- package/dist/smartAccount/send.js.map +1 -0
- package/dist/smartAccount/userOp.d.ts +91 -0
- package/dist/smartAccount/userOp.d.ts.map +1 -0
- package/dist/smartAccount/userOp.js +124 -0
- package/dist/smartAccount/userOp.js.map +1 -0
- package/dist/subpaths/approvals.d.ts +26 -0
- package/dist/subpaths/approvals.d.ts.map +1 -0
- package/dist/subpaths/approvals.js +27 -0
- package/dist/subpaths/approvals.js.map +1 -0
- package/dist/subpaths/dividends.d.ts +28 -0
- package/dist/subpaths/dividends.d.ts.map +1 -0
- package/dist/subpaths/dividends.js +29 -0
- package/dist/subpaths/dividends.js.map +1 -0
- package/dist/subpaths/fees.d.ts +23 -0
- package/dist/subpaths/fees.d.ts.map +1 -0
- package/dist/subpaths/fees.js +25 -0
- package/dist/subpaths/fees.js.map +1 -0
- package/dist/subpaths/history.d.ts +22 -0
- package/dist/subpaths/history.d.ts.map +1 -0
- package/dist/subpaths/history.js +23 -0
- package/dist/subpaths/history.js.map +1 -0
- package/dist/subpaths/names.d.ts +35 -0
- package/dist/subpaths/names.d.ts.map +1 -0
- package/dist/subpaths/names.js +39 -0
- package/dist/subpaths/names.js.map +1 -0
- package/dist/subpaths/permit.d.ts +14 -0
- package/dist/subpaths/permit.d.ts.map +1 -0
- package/dist/subpaths/permit.js +14 -0
- package/dist/subpaths/permit.js.map +1 -0
- package/dist/subpaths/price.d.ts +38 -0
- package/dist/subpaths/price.d.ts.map +1 -0
- package/dist/subpaths/price.js +40 -0
- package/dist/subpaths/price.js.map +1 -0
- package/dist/subpaths/rewards.d.ts +27 -0
- package/dist/subpaths/rewards.d.ts.map +1 -0
- package/dist/subpaths/rewards.js +25 -0
- package/dist/subpaths/rewards.js.map +1 -0
- package/dist/subpaths/risk.d.ts +19 -0
- package/dist/subpaths/risk.d.ts.map +1 -0
- package/dist/subpaths/risk.js +20 -0
- package/dist/subpaths/risk.js.map +1 -0
- package/dist/subpaths/simulate.d.ts +25 -0
- package/dist/subpaths/simulate.d.ts.map +1 -0
- package/dist/subpaths/simulate.js +28 -0
- package/dist/subpaths/simulate.js.map +1 -0
- package/dist/subpaths/smart-account.d.ts +24 -0
- package/dist/subpaths/smart-account.d.ts.map +1 -0
- package/dist/subpaths/smart-account.js +24 -0
- package/dist/subpaths/smart-account.js.map +1 -0
- package/dist/subpaths/swap.d.ts +19 -0
- package/dist/subpaths/swap.d.ts.map +1 -0
- package/dist/subpaths/swap.js +20 -0
- package/dist/subpaths/swap.js.map +1 -0
- package/dist/swap.d.ts +168 -0
- package/dist/swap.d.ts.map +1 -0
- package/dist/swap.js +387 -0
- package/dist/swap.js.map +1 -0
- package/dist/tokenProbe.d.ts +3 -0
- package/dist/tokenProbe.d.ts.map +1 -0
- package/dist/tokenProbe.js +4 -0
- package/dist/tokenProbe.js.map +1 -0
- package/dist/write/batch.d.ts +34 -2
- package/dist/write/batch.d.ts.map +1 -1
- package/dist/write/batch.js +22 -3
- package/dist/write/batch.js.map +1 -1
- package/dist/write/collect.d.ts +9 -0
- package/dist/write/collect.d.ts.map +1 -1
- package/dist/write/collect.js +41 -1
- package/dist/write/collect.js.map +1 -1
- package/dist/write/send.d.ts +4 -0
- package/dist/write/send.d.ts.map +1 -1
- package/dist/write/send.js.map +1 -1
- package/dist/write/signer.d.ts +5 -1
- package/dist/write/signer.d.ts.map +1 -1
- package/dist/write/signer.js.map +1 -1
- package/dist/write/transfer.d.ts +5 -3
- package/dist/write/transfer.d.ts.map +1 -1
- package/dist/write/transfer.js +12 -6
- package/dist/write/transfer.js.map +1 -1
- package/dist/write/tron.d.ts +25 -0
- package/dist/write/tron.d.ts.map +1 -1
- package/dist/write/tron.js +26 -0
- package/dist/write/tron.js.map +1 -1
- package/package.json +73 -16
- package/src/aggregate.ts +110 -3
- package/src/approvals.ts +462 -0
- package/src/chains.ts +4 -0
- package/src/dividends.ts +360 -0
- package/src/fees.ts +201 -0
- package/src/history.ts +367 -0
- package/src/historySources.ts +360 -0
- package/src/http.ts +34 -0
- package/src/liquidity/v3.ts +1 -1
- package/src/liquidity/v4.ts +4 -3
- package/src/lp.ts +21 -2
- package/src/lpV4.ts +32 -2
- package/src/multicall.ts +3 -0
- package/src/names.ts +141 -0
- package/src/owner.ts +7 -138
- package/src/permit.ts +457 -0
- package/src/portfolio.ts +98 -0
- package/src/price.ts +415 -0
- package/src/rewards/farms.ts +229 -0
- package/src/rewards/index.ts +431 -0
- package/src/rewards/types.ts +179 -0
- package/src/risk.ts +166 -0
- package/src/rpcNodes.ts +18 -0
- package/src/simulate.ts +727 -0
- package/src/simulateDecode.ts +352 -0
- package/src/smartAccount/account.ts +63 -0
- package/src/smartAccount/clients.ts +180 -0
- package/src/smartAccount/eip5792.ts +187 -0
- package/src/smartAccount/send.ts +341 -0
- package/src/smartAccount/userOp.ts +180 -0
- package/src/subpaths/approvals.ts +48 -0
- package/src/subpaths/dividends.ts +47 -0
- package/src/subpaths/fees.ts +43 -0
- package/src/subpaths/history.ts +41 -0
- package/src/subpaths/names.ts +43 -0
- package/src/subpaths/permit.ts +39 -0
- package/src/subpaths/price.ts +60 -0
- package/src/subpaths/rewards.ts +46 -0
- package/src/subpaths/risk.ts +23 -0
- package/src/subpaths/simulate.ts +51 -0
- package/src/subpaths/smart-account.ts +40 -0
- package/src/subpaths/swap.ts +36 -0
- package/src/swap.ts +534 -0
- package/src/tokenProbe.ts +5 -0
- package/src/write/batch.ts +44 -5
- package/src/write/collect.ts +60 -1
- package/src/write/send.ts +4 -0
- package/src/write/signer.ts +5 -1
- package/src/write/transfer.ts +17 -10
- package/src/write/tron.ts +43 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Flap 分红(子路径 `@w3lib/evm-batch-call/dividends`):查持有人在 Flap(flap.sh,BNB Chain 发币平台)税收代币上累计的分红
|
|
3
|
+
* (可领取 / 已领取、分红资产、美元价值),批量领取(可用 7702 / 4337 / 5792 合成一笔原子交易)。
|
|
4
|
+
* 不放在主入口,不用时打包不会带上这部分代码;发送和模拟的代码按需加载。只支持 BSC,合约形态和核实范围见 README「Flap 分红」。
|
|
5
|
+
*
|
|
6
|
+
* ```ts
|
|
7
|
+
* import { getDividends, claimDividends } from '@w3lib/evm-batch-call/dividends'
|
|
8
|
+
*
|
|
9
|
+
* const { items } = await getDividends(user, { chainId: 56, discover: true }) // 或 tokens: [flapToken]
|
|
10
|
+
* await claimDividends(provider, key, items, { mode: '7702', simulate: true })
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
import { dividends } from '../dividends.js';
|
|
14
|
+
import { resolve } from '../shortcuts.js';
|
|
15
|
+
export { FLAP_DIVIDEND_CHAINS, FLAP_TOKEN_SUFFIXES, buildClaimDividends, claimDividends, dividends, scanDividendTokens, } from '../dividends.js';
|
|
16
|
+
/**
|
|
17
|
+
* 查持有人在 Flap 代币上的分红,节点参数与 getBalances 相同(chainId 只能是 56)。
|
|
18
|
+
* tokens 给定要查的代币;discover 从收到过的 Transfer 事件里发现(卖光的代币上之前累计的分红也能领)。
|
|
19
|
+
*
|
|
20
|
+
* ```ts
|
|
21
|
+
* const { items, unsupported } = await getDividends(user, { chainId: 56, tokens: [flapToken] })
|
|
22
|
+
* // [{ token, symbol, balance, claimable: '88823258714382840', asset: '0x9b8E…', assetSymbol: 'FXIon', usd: null, dividendContract, … }]
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export function getDividends(owner, options = {}) {
|
|
26
|
+
const { provider, own } = resolve(options, ['tokens', 'discover', 'prices', 'fetch', 'includeZero']);
|
|
27
|
+
return dividends(provider, owner, own);
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=dividends.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dividends.js","sourceRoot":"","sources":["../../src/subpaths/dividends.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,SAAS,EAA+C,MAAM,iBAAiB,CAAA;AACxF,OAAO,EAAE,OAAO,EAAgC,MAAM,iBAAiB,CAAA;AAEvE,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,SAAS,EACT,kBAAkB,GASnB,MAAM,iBAAiB,CAAA;AAIxB;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,UAA+B,EAAE;IAC3E,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAA;IACpG,OAAO,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAuB,CAAC,CAAA;AAC5D,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 手续费估算(子路径 `@w3lib/evm-batch-call/fees`):EIP-1559 的三档费用建议、一笔交易的手续费(含 L1 数据费),
|
|
3
|
+
* Tron 按能量 / 带宽和账户剩余的资源算要烧的 TRX。不放在主入口,不用时打包不会带上这部分代码。
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* import { getCostEstimate, getFeeEstimate } from '@w3lib/evm-batch-call/fees'
|
|
7
|
+
*
|
|
8
|
+
* await getFeeEstimate({ chainId: 1 })
|
|
9
|
+
* await getCostEstimate({ from: user, to: USDT, data }, { chainId: 728126428 })
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
import { type CostCall, type CostEstimate, type EstimateCostOptions, type EstimateFeesOptions, type FeeEstimate } from '../fees.js';
|
|
13
|
+
import { type ShortcutProviderOptions } from '../shortcuts.js';
|
|
14
|
+
export { estimateCost, estimateFees, type CostCall, type CostEstimate, type EstimateCostOptions, type EstimateFeesOptions, type EvmCostEstimate, type FeeEstimate, type FeeLevel, type FeeLevelEstimate, type TronCost, } from '../fees.js';
|
|
15
|
+
export interface GetFeeEstimateOptions extends EstimateFeesOptions, ShortcutProviderOptions {
|
|
16
|
+
}
|
|
17
|
+
/** 当前的三档手续费建议(EVM 链),节点参数与 getBalances 相同 */
|
|
18
|
+
export declare function getFeeEstimate(options?: GetFeeEstimateOptions): Promise<FeeEstimate>;
|
|
19
|
+
export interface GetCostEstimateOptions extends EstimateCostOptions, ShortcutProviderOptions {
|
|
20
|
+
}
|
|
21
|
+
/** 一笔交易的手续费(EVM:gas × 价格 + L1 数据费;Tron:要烧的 TRX) */
|
|
22
|
+
export declare function getCostEstimate(call: CostCall, options?: GetCostEstimateOptions): Promise<CostEstimate>;
|
|
23
|
+
//# sourceMappingURL=fees.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fees.d.ts","sourceRoot":"","sources":["../../src/subpaths/fees.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAA8B,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,KAAK,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAA;AAC/J,OAAO,EAAW,KAAK,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAEvE,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACrB,KAAK,QAAQ,GACd,MAAM,YAAY,CAAA;AAEnB,MAAM,WAAW,qBAAsB,SAAQ,mBAAmB,EAAE,uBAAuB;CAAG;AAE9F,6CAA6C;AAC7C,wBAAgB,cAAc,CAAC,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAAC,WAAW,CAAC,CAGxF;AAED,MAAM,WAAW,sBAAuB,SAAQ,mBAAmB,EAAE,uBAAuB;CAAG;AAE/F,mDAAmD;AACnD,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,GAAE,sBAA2B,GAAG,OAAO,CAAC,YAAY,CAAC,CAG3G"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 手续费估算(子路径 `@w3lib/evm-batch-call/fees`):EIP-1559 的三档费用建议、一笔交易的手续费(含 L1 数据费),
|
|
3
|
+
* Tron 按能量 / 带宽和账户剩余的资源算要烧的 TRX。不放在主入口,不用时打包不会带上这部分代码。
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* import { getCostEstimate, getFeeEstimate } from '@w3lib/evm-batch-call/fees'
|
|
7
|
+
*
|
|
8
|
+
* await getFeeEstimate({ chainId: 1 })
|
|
9
|
+
* await getCostEstimate({ from: user, to: USDT, data }, { chainId: 728126428 })
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
import { estimateCost, estimateFees } from '../fees.js';
|
|
13
|
+
import { resolve } from '../shortcuts.js';
|
|
14
|
+
export { estimateCost, estimateFees, } from '../fees.js';
|
|
15
|
+
/** 当前的三档手续费建议(EVM 链),节点参数与 getBalances 相同 */
|
|
16
|
+
export function getFeeEstimate(options = {}) {
|
|
17
|
+
const { provider, own } = resolve(options, ['blocks', 'percentiles', 'baseFeeMultiplier']);
|
|
18
|
+
return estimateFees(provider, own);
|
|
19
|
+
}
|
|
20
|
+
/** 一笔交易的手续费(EVM:gas × 价格 + L1 数据费;Tron:要烧的 TRX) */
|
|
21
|
+
export function getCostEstimate(call, options = {}) {
|
|
22
|
+
const { provider, own } = resolve(options, ['blocks', 'percentiles', 'baseFeeMultiplier', 'level', 'fees']);
|
|
23
|
+
return estimateCost(provider, call, own);
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=fees.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fees.js","sourceRoot":"","sources":["../../src/subpaths/fees.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,YAAY,EAAE,YAAY,EAA0G,MAAM,YAAY,CAAA;AAC/J,OAAO,EAAE,OAAO,EAAgC,MAAM,iBAAiB,CAAA;AAEvE,OAAO,EACL,YAAY,EACZ,YAAY,GAUb,MAAM,YAAY,CAAA;AAInB,6CAA6C;AAC7C,MAAM,UAAU,cAAc,CAAC,UAAiC,EAAE;IAChE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,mBAAmB,CAAC,CAAC,CAAA;IAC1F,OAAO,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;AACpC,CAAC;AAID,mDAAmD;AACnD,MAAM,UAAU,eAAe,CAAC,IAAc,EAAE,UAAkC,EAAE;IAClF,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;IAC3G,OAAO,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;AAC1C,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 交易历史(子路径 `@w3lib/evm-batch-call/history`):一个地址的转账 / 兑换 / 授权 / 流动性 / 铸造记录,带解码后的类型、资产变化和手续费。
|
|
3
|
+
* 数据来源可替换、可故障切换:Blockscout(免 Key,默认)、Etherscan v2(传 apiKey)、纯 RPC 日志、Tron 的 TronGrid。
|
|
4
|
+
* 不放在主入口,不用时打包不会带上这部分代码。
|
|
5
|
+
*
|
|
6
|
+
* ```ts
|
|
7
|
+
* import { getHistory } from '@w3lib/evm-batch-call/history'
|
|
8
|
+
*
|
|
9
|
+
* const page = await getHistory(user, { chainId: 1, limit: 20 })
|
|
10
|
+
* const more = await getHistory(user, { chainId: 1, cursor: page.nextCursor, types: ['swap'] })
|
|
11
|
+
* await getHistory(user, { chainId: 56, source: ['etherscan', 'rpc'], apiKey })
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
import { type HistoryOptions, type HistoryResult } from '../history.js';
|
|
15
|
+
import { type ShortcutProviderOptions } from '../shortcuts.js';
|
|
16
|
+
export { HistorySourceError, buildActivities, history, type Activity, type ActivityChange, type ActivityType, type HistoryAdapter, type HistoryOptions, type HistoryQuery, type HistoryResult, type HistorySource, type RawMove, type RawPage, type RawTx, } from '../history.js';
|
|
17
|
+
export { BLOCKSCOUT_APIS, blockscoutSource, etherscanSource, explorerSource, rpcSource, trongridSource, type RpcSourceOptions, type TrongridSourceOptions } from '../historySources.js';
|
|
18
|
+
export interface GetHistoryOptions extends HistoryOptions, ShortcutProviderOptions {
|
|
19
|
+
}
|
|
20
|
+
/** 查一个地址的历史活动,节点参数与 getBalances 相同(只有 rpc 来源会用到节点) */
|
|
21
|
+
export declare function getHistory(address: string, options?: GetHistoryOptions): Promise<HistoryResult>;
|
|
22
|
+
//# sourceMappingURL=history.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/subpaths/history.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAW,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAA;AAChF,OAAO,EAAW,KAAK,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAEvE,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,OAAO,EACP,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,KAAK,GACX,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,EAAE,SAAS,EAAE,cAAc,EAAE,KAAK,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAEvL,MAAM,WAAW,iBAAkB,SAAQ,cAAc,EAAE,uBAAuB;CAAG;AAErF,sDAAsD;AACtD,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,aAAa,CAAC,CAGnG"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 交易历史(子路径 `@w3lib/evm-batch-call/history`):一个地址的转账 / 兑换 / 授权 / 流动性 / 铸造记录,带解码后的类型、资产变化和手续费。
|
|
3
|
+
* 数据来源可替换、可故障切换:Blockscout(免 Key,默认)、Etherscan v2(传 apiKey)、纯 RPC 日志、Tron 的 TronGrid。
|
|
4
|
+
* 不放在主入口,不用时打包不会带上这部分代码。
|
|
5
|
+
*
|
|
6
|
+
* ```ts
|
|
7
|
+
* import { getHistory } from '@w3lib/evm-batch-call/history'
|
|
8
|
+
*
|
|
9
|
+
* const page = await getHistory(user, { chainId: 1, limit: 20 })
|
|
10
|
+
* const more = await getHistory(user, { chainId: 1, cursor: page.nextCursor, types: ['swap'] })
|
|
11
|
+
* await getHistory(user, { chainId: 56, source: ['etherscan', 'rpc'], apiKey })
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
import { history } from '../history.js';
|
|
15
|
+
import { resolve } from '../shortcuts.js';
|
|
16
|
+
export { HistorySourceError, buildActivities, history, } from '../history.js';
|
|
17
|
+
export { BLOCKSCOUT_APIS, blockscoutSource, etherscanSource, explorerSource, rpcSource, trongridSource } from '../historySources.js';
|
|
18
|
+
/** 查一个地址的历史活动,节点参数与 getBalances 相同(只有 rpc 来源会用到节点) */
|
|
19
|
+
export function getHistory(address, options = {}) {
|
|
20
|
+
const { provider, own } = resolve(options, ['source', 'apiKey', 'limit', 'cursor', 'types', 'before', 'after', 'nft', 'maxPages', 'fetch']);
|
|
21
|
+
return history(provider, address, own);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=history.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/subpaths/history.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,OAAO,EAA2C,MAAM,eAAe,CAAA;AAChF,OAAO,EAAE,OAAO,EAAgC,MAAM,iBAAiB,CAAA;AAEvE,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,OAAO,GAYR,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,EAAE,SAAS,EAAE,cAAc,EAAqD,MAAM,sBAAsB,CAAA;AAIvL,sDAAsD;AACtD,MAAM,UAAU,UAAU,CAAC,OAAe,EAAE,UAA6B,EAAE;IACzE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAA;IAC3I,OAAO,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,CAAA;AACxC,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 域名解析(子路径 `@w3lib/evm-batch-call/names`):ENS、SPACE ID(.bnb)、Basenames(.base.eth),名字 → 地址、地址 → 名字。
|
|
3
|
+
* 不放在主入口,不用时打包不会带上这部分代码。
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* import { getAddressNames, getNameAddresses } from '@w3lib/evm-batch-call/names'
|
|
7
|
+
*
|
|
8
|
+
* await getNameAddresses(['vitalik.eth'], { chainId: 1 })
|
|
9
|
+
* await getAddressNames([user], { chainId: 56 })
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
import { type AddressName, type NamesOptions, type ResolvedName } from '../names.js';
|
|
13
|
+
import { type ShortcutProviderOptions } from '../shortcuts.js';
|
|
14
|
+
export { NAME_SERVICES, lookupAddresses, resolveNames, type AddressName, type NameService, type NamesOptions, type ResolvedName } from '../names.js';
|
|
15
|
+
export interface GetNamesOptions extends NamesOptions, ShortcutProviderOptions {
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* 名字 → 地址,节点参数与 getBalances 相同(用这条链的域名服务:Ethereum 是 ENS,BSC 是 SPACE ID,Base 是 Basenames)。
|
|
19
|
+
*
|
|
20
|
+
* ```ts
|
|
21
|
+
* await getNameAddresses(['vitalik.eth', 'nick.eth'], { chainId: 1 })
|
|
22
|
+
* // [{ name: 'vitalik.eth', normalized: 'vitalik.eth', address: '0xd8dA…6045', service: 'ens' }, …]
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export declare function getNameAddresses(names: readonly string[], options?: GetNamesOptions): Promise<ResolvedName[]>;
|
|
26
|
+
/**
|
|
27
|
+
* 地址 → 名字(反查的主名字,正查核对过)。
|
|
28
|
+
*
|
|
29
|
+
* ```ts
|
|
30
|
+
* await getAddressNames(['0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'], { chainId: 1 })
|
|
31
|
+
* // [{ address: '0xd8dA…', name: 'vitalik.eth', service: 'ens' }]
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export declare function getAddressNames(addresses: readonly string[], options?: GetNamesOptions): Promise<AddressName[]>;
|
|
35
|
+
//# sourceMappingURL=names.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"names.d.ts","sourceRoot":"","sources":["../../src/subpaths/names.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAiC,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAA;AACnH,OAAO,EAAW,KAAK,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAEvE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAA;AAEpJ,MAAM,WAAW,eAAgB,SAAQ,YAAY,EAAE,uBAAuB;CAAG;AAEjF;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAGjH;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAGnH"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 域名解析(子路径 `@w3lib/evm-batch-call/names`):ENS、SPACE ID(.bnb)、Basenames(.base.eth),名字 → 地址、地址 → 名字。
|
|
3
|
+
* 不放在主入口,不用时打包不会带上这部分代码。
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* import { getAddressNames, getNameAddresses } from '@w3lib/evm-batch-call/names'
|
|
7
|
+
*
|
|
8
|
+
* await getNameAddresses(['vitalik.eth'], { chainId: 1 })
|
|
9
|
+
* await getAddressNames([user], { chainId: 56 })
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
import { lookupAddresses, resolveNames } from '../names.js';
|
|
13
|
+
import { resolve } from '../shortcuts.js';
|
|
14
|
+
export { NAME_SERVICES, lookupAddresses, resolveNames } from '../names.js';
|
|
15
|
+
/**
|
|
16
|
+
* 名字 → 地址,节点参数与 getBalances 相同(用这条链的域名服务:Ethereum 是 ENS,BSC 是 SPACE ID,Base 是 Basenames)。
|
|
17
|
+
*
|
|
18
|
+
* ```ts
|
|
19
|
+
* await getNameAddresses(['vitalik.eth', 'nick.eth'], { chainId: 1 })
|
|
20
|
+
* // [{ name: 'vitalik.eth', normalized: 'vitalik.eth', address: '0xd8dA…6045', service: 'ens' }, …]
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export function getNameAddresses(names, options = {}) {
|
|
24
|
+
const { provider, own } = resolve(options, ['services']);
|
|
25
|
+
return resolveNames(provider, names, own);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* 地址 → 名字(反查的主名字,正查核对过)。
|
|
29
|
+
*
|
|
30
|
+
* ```ts
|
|
31
|
+
* await getAddressNames(['0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'], { chainId: 1 })
|
|
32
|
+
* // [{ address: '0xd8dA…', name: 'vitalik.eth', service: 'ens' }]
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export function getAddressNames(addresses, options = {}) {
|
|
36
|
+
const { provider, own } = resolve(options, ['services']);
|
|
37
|
+
return lookupAddresses(provider, addresses, own);
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=names.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"names.js","sourceRoot":"","sources":["../../src/subpaths/names.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,eAAe,EAAE,YAAY,EAA0D,MAAM,aAAa,CAAA;AACnH,OAAO,EAAE,OAAO,EAAgC,MAAM,iBAAiB,CAAA;AAEvE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAA4E,MAAM,aAAa,CAAA;AAIpJ;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAwB,EAAE,UAA2B,EAAE;IACtF,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC,CAAA;IACxD,OAAO,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;AAC3C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,SAA4B,EAAE,UAA2B,EAAE;IACzF,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC,CAAA;IACxD,OAAO,eAAe,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,CAAA;AAClD,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 免 gas 授权(子路径 `@w3lib/evm-batch-call/permit`):EIP-2612 permit、DAI 风格 permit、Permit2(PermitSingle / PermitBatch / permitTransferFrom)。
|
|
3
|
+
* 构建 EIP-712 数据 → 用 ethers Signer 签名 → 本地验证 → 生成上链的 calldata。不放在主入口,不用时打包不会带上。
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* import { buildPermit, signPermit, permitCalldata } from '@w3lib/evm-batch-call/permit'
|
|
7
|
+
*
|
|
8
|
+
* const permit = await buildPermit(provider, { token: USDC, owner, spender: router, value: 100_000_000n }) // 精确额度,30 分钟有效
|
|
9
|
+
* const signed = await signPermit(signer, permit) // signer:Wallet / 浏览器钱包的 JsonRpcSigner
|
|
10
|
+
* const data = permitCalldata(signed) // token.permit(...) 的 calldata,谁都可以提交
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
export { DEFAULT_PERMIT_DEADLINE, MAX_PERMIT_DEADLINE, MAX_UINT160, PERMIT2_ADDRESS, assertPermitSafe, buildPermit, buildPermit2Batch, buildPermit2Single, buildPermit2Transfer, detectPermit, permit2Calldata, permitCalldata, permitTransferFromCalldata, signPermit, verifyPermitSignature, type BuildPermitParams, type Permit, type Permit2AllowanceParams, type Permit2BatchParams, type Permit2TransferParams, type PermitKind, type PermitOptions, type PermitSupport, type SignedPermit, type TypedData, } from '../permit.js';
|
|
14
|
+
//# sourceMappingURL=permit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permit.d.ts","sourceRoot":"","sources":["../../src/subpaths/permit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,cAAc,EACd,0BAA0B,EAC1B,UAAU,EACV,qBAAqB,EACrB,KAAK,iBAAiB,EACtB,KAAK,MAAM,EACX,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,SAAS,GACf,MAAM,cAAc,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 免 gas 授权(子路径 `@w3lib/evm-batch-call/permit`):EIP-2612 permit、DAI 风格 permit、Permit2(PermitSingle / PermitBatch / permitTransferFrom)。
|
|
3
|
+
* 构建 EIP-712 数据 → 用 ethers Signer 签名 → 本地验证 → 生成上链的 calldata。不放在主入口,不用时打包不会带上。
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* import { buildPermit, signPermit, permitCalldata } from '@w3lib/evm-batch-call/permit'
|
|
7
|
+
*
|
|
8
|
+
* const permit = await buildPermit(provider, { token: USDC, owner, spender: router, value: 100_000_000n }) // 精确额度,30 分钟有效
|
|
9
|
+
* const signed = await signPermit(signer, permit) // signer:Wallet / 浏览器钱包的 JsonRpcSigner
|
|
10
|
+
* const data = permitCalldata(signed) // token.permit(...) 的 calldata,谁都可以提交
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
export { DEFAULT_PERMIT_DEADLINE, MAX_PERMIT_DEADLINE, MAX_UINT160, PERMIT2_ADDRESS, assertPermitSafe, buildPermit, buildPermit2Batch, buildPermit2Single, buildPermit2Transfer, detectPermit, permit2Calldata, permitCalldata, permitTransferFromCalldata, signPermit, verifyPermitSignature, } from '../permit.js';
|
|
14
|
+
//# sourceMappingURL=permit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permit.js","sourceRoot":"","sources":["../../src/subpaths/permit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,cAAc,EACd,0BAA0B,EAC1B,UAAU,EACV,qBAAqB,GAWtB,MAAM,cAAc,CAAA"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 价格(子路径 `@w3lib/evm-batch-call/price`):代币的美元价格(DefiLlama 当前 / 历史价格,没有收录的从链上 V2 / V3 池子算)、
|
|
3
|
+
* 组合价格源、地址的资产总值。不放在主入口,不用时打包不会带上这部分代码。
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* import { getTokenPrices, getPortfolio } from '@w3lib/evm-batch-call/price'
|
|
7
|
+
*
|
|
8
|
+
* await getTokenPrices([NATIVE_TOKEN, USDT, newToken], { chainId: 56 })
|
|
9
|
+
* await getPortfolio(user, { chainId: 56, tokens: [NATIVE_TOKEN, USDT], lp: true })
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
import { type Portfolio, type PortfolioOptions } from '../portfolio.js';
|
|
13
|
+
import { type TokenPrice, type TokenPricesOptions } from '../price.js';
|
|
14
|
+
import { type ShortcutProviderOptions } from '../shortcuts.js';
|
|
15
|
+
export { portfolio, type Portfolio, type PortfolioOptions, type PortfolioToken } from '../portfolio.js';
|
|
16
|
+
export { DEFILLAMA_CHAINS, STABLECOINS, combinePrices, defillamaPrices, onchainPrices, priceKeyOf, tokenPrices, type DefillamaPriceOptions, type OnchainPriceOptions, type PriceSource, type PriceSourceContext, type TokenPrice, type TokenPricesOptions, } from '../price.js';
|
|
17
|
+
export interface GetTokenPricesOptions extends TokenPricesOptions, ShortcutProviderOptions {
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* 查代币的美元价格(主币用 NATIVE_TOKEN),节点参数与 getBalances 相同。
|
|
21
|
+
*
|
|
22
|
+
* ```ts
|
|
23
|
+
* await getTokenPrices([NATIVE_TOKEN, USDT], { chainId: 56 })
|
|
24
|
+
* // [{ token: '0xEeee…', native: true, price: 612.3, source: 'defillama' }, { token: USDT, …, price: 1, source: 'defillama' }]
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export declare function getTokenPrices(tokens: readonly string[], options?: GetTokenPricesOptions): Promise<TokenPrice[]>;
|
|
28
|
+
export interface GetPortfolioOptions extends PortfolioOptions, ShortcutProviderOptions {
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* 地址的资产总值:传入代币的余额 × 价格,可选加上 LP 仓位(lp: true)。
|
|
32
|
+
*
|
|
33
|
+
* ```ts
|
|
34
|
+
* const p = await getPortfolio(user, { chainId: 56, tokens: [NATIVE_TOKEN, USDT, CAKE], lp: true })
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export declare function getPortfolio(owner: string, options: GetPortfolioOptions): Promise<Portfolio>;
|
|
38
|
+
//# sourceMappingURL=price.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"price.d.ts","sourceRoot":"","sources":["../../src/subpaths/price.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAa,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClF,OAAO,EAAe,KAAK,UAAU,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACnF,OAAO,EAAW,KAAK,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAEvE,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACvG,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,eAAe,EACf,aAAa,EACb,UAAU,EACV,WAAW,EACX,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,KAAK,kBAAkB,GACxB,MAAM,aAAa,CAAA;AAEpB,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB,EAAE,uBAAuB;CAAG;AAE7F;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAGpH;AAED,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB,EAAE,uBAAuB;CAAG;AAEzF;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,SAAS,CAAC,CAG5F"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 价格(子路径 `@w3lib/evm-batch-call/price`):代币的美元价格(DefiLlama 当前 / 历史价格,没有收录的从链上 V2 / V3 池子算)、
|
|
3
|
+
* 组合价格源、地址的资产总值。不放在主入口,不用时打包不会带上这部分代码。
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* import { getTokenPrices, getPortfolio } from '@w3lib/evm-batch-call/price'
|
|
7
|
+
*
|
|
8
|
+
* await getTokenPrices([NATIVE_TOKEN, USDT, newToken], { chainId: 56 })
|
|
9
|
+
* await getPortfolio(user, { chainId: 56, tokens: [NATIVE_TOKEN, USDT], lp: true })
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
import { portfolio } from '../portfolio.js';
|
|
13
|
+
import { tokenPrices } from '../price.js';
|
|
14
|
+
import { resolve } from '../shortcuts.js';
|
|
15
|
+
export { portfolio } from '../portfolio.js';
|
|
16
|
+
export { DEFILLAMA_CHAINS, STABLECOINS, combinePrices, defillamaPrices, onchainPrices, priceKeyOf, tokenPrices, } from '../price.js';
|
|
17
|
+
/**
|
|
18
|
+
* 查代币的美元价格(主币用 NATIVE_TOKEN),节点参数与 getBalances 相同。
|
|
19
|
+
*
|
|
20
|
+
* ```ts
|
|
21
|
+
* await getTokenPrices([NATIVE_TOKEN, USDT], { chainId: 56 })
|
|
22
|
+
* // [{ token: '0xEeee…', native: true, price: 612.3, source: 'defillama' }, { token: USDT, …, price: 1, source: 'defillama' }]
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export function getTokenPrices(tokens, options = {}) {
|
|
26
|
+
const { provider, own } = resolve(options, ['sources', 'onError', 'fetch']);
|
|
27
|
+
return tokenPrices(provider, tokens, own);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* 地址的资产总值:传入代币的余额 × 价格,可选加上 LP 仓位(lp: true)。
|
|
31
|
+
*
|
|
32
|
+
* ```ts
|
|
33
|
+
* const p = await getPortfolio(user, { chainId: 56, tokens: [NATIVE_TOKEN, USDT, CAKE], lp: true })
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export function getPortfolio(owner, options) {
|
|
37
|
+
const { provider, overrides, own } = resolve(options, ['tokens', 'sources', 'lp', 'minUsd', 'onPriceError', 'fetch']);
|
|
38
|
+
return portfolio(provider, owner, { ...own, ...(overrides.signal ? { signal: overrides.signal } : {}) });
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=price.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"price.js","sourceRoot":"","sources":["../../src/subpaths/price.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,SAAS,EAAyC,MAAM,iBAAiB,CAAA;AAClF,OAAO,EAAE,WAAW,EAA4C,MAAM,aAAa,CAAA;AACnF,OAAO,EAAE,OAAO,EAAgC,MAAM,iBAAiB,CAAA;AAEvE,OAAO,EAAE,SAAS,EAA8D,MAAM,iBAAiB,CAAA;AACvG,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,eAAe,EACf,aAAa,EACb,UAAU,EACV,WAAW,GAOZ,MAAM,aAAa,CAAA;AAIpB;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,MAAyB,EAAE,UAAiC,EAAE;IAC3F,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAA;IAC3E,OAAO,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,CAAA;AAC3C,CAAC;AAID;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,OAA4B;IACtE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC,CAAA;IACrH,OAAO,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,GAAI,GAAwB,EAAE,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;AAChI,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 一键领取手续费和挖矿奖励(子路径 `@w3lib/evm-batch-call/rewards`):V3 / V4 仓位(含 Tron 的 SunSwap V3)未领取的手续费、
|
|
3
|
+
* PancakeSwap V3 MasterChef 的 CAKE(和质押仓位的手续费)、Aerodrome / Velodrome Slipstream gauge 的奖励。
|
|
4
|
+
* 不放在主入口,不用时打包不会带上这部分代码。
|
|
5
|
+
*
|
|
6
|
+
* - getClaimable:只读,列出每个仓位能领什么(数量 + 美元价值)
|
|
7
|
+
* - buildClaimAll:合并成尽量少的交易(V3 multicall、V4 一次 modifyLiquidities、MasterChef multicall),先模拟、剔除会失败的项
|
|
8
|
+
* - claimAll:构建后签名发送;`mode: '7702' | '4337' | '5792'` 时合成一笔原子交易
|
|
9
|
+
*
|
|
10
|
+
* ```ts
|
|
11
|
+
* import { claimAll, getClaimable } from '@w3lib/evm-batch-call/rewards'
|
|
12
|
+
*
|
|
13
|
+
* const c = await getClaimable(user, { chainId: 56, prices: true }) // c.items、c.totals、c.usd
|
|
14
|
+
* const { status, claimed } = await claimAll(multi, privateKey, { minUsd: 1 })
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
import { type ShortcutProviderOptions } from '../shortcuts.js';
|
|
18
|
+
import type { Claimable, ClaimableOptions } from '../rewards/types.js';
|
|
19
|
+
export { FARM_PROTOCOLS, buildClaimAll, claimAll, claimable } from '../rewards/index.js';
|
|
20
|
+
export type { ClaimAllOptions, ClaimAllSendOptions, ClaimAmount, ClaimItem, ClaimKind, ClaimPlan, ClaimResult, ClaimSkipped, ClaimTx, ClaimTxResult, Claimable, ClaimableOptions, FarmProtocol, } from '../rewards/types.js';
|
|
21
|
+
export type { LpProtocol } from '../lp.js';
|
|
22
|
+
export type { SignerInput, WriteResult, WriteStatus } from '../subpaths/write.js';
|
|
23
|
+
export interface GetClaimableOptions extends ClaimableOptions, ShortcutProviderOptions {
|
|
24
|
+
}
|
|
25
|
+
/** 查一个地址能领取的手续费和挖矿奖励,节点参数与 getBalances 相同 */
|
|
26
|
+
export declare function getClaimable(owner: string, options?: GetClaimableOptions): Promise<Claimable>;
|
|
27
|
+
//# sourceMappingURL=rewards.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rewards.d.ts","sourceRoot":"","sources":["../../src/subpaths/rewards.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAW,KAAK,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAEvE,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEtE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACxF,YAAY,EACV,eAAe,EACf,mBAAmB,EACnB,WAAW,EACX,SAAS,EACT,SAAS,EACT,SAAS,EACT,WAAW,EACX,YAAY,EACZ,OAAO,EACP,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,YAAY,GACb,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAC1C,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAEjF,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB,EAAE,uBAAuB;CAAG;AAEzF,6CAA6C;AAC7C,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,SAAS,CAAC,CAGjG"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 一键领取手续费和挖矿奖励(子路径 `@w3lib/evm-batch-call/rewards`):V3 / V4 仓位(含 Tron 的 SunSwap V3)未领取的手续费、
|
|
3
|
+
* PancakeSwap V3 MasterChef 的 CAKE(和质押仓位的手续费)、Aerodrome / Velodrome Slipstream gauge 的奖励。
|
|
4
|
+
* 不放在主入口,不用时打包不会带上这部分代码。
|
|
5
|
+
*
|
|
6
|
+
* - getClaimable:只读,列出每个仓位能领什么(数量 + 美元价值)
|
|
7
|
+
* - buildClaimAll:合并成尽量少的交易(V3 multicall、V4 一次 modifyLiquidities、MasterChef multicall),先模拟、剔除会失败的项
|
|
8
|
+
* - claimAll:构建后签名发送;`mode: '7702' | '4337' | '5792'` 时合成一笔原子交易
|
|
9
|
+
*
|
|
10
|
+
* ```ts
|
|
11
|
+
* import { claimAll, getClaimable } from '@w3lib/evm-batch-call/rewards'
|
|
12
|
+
*
|
|
13
|
+
* const c = await getClaimable(user, { chainId: 56, prices: true }) // c.items、c.totals、c.usd
|
|
14
|
+
* const { status, claimed } = await claimAll(multi, privateKey, { minUsd: 1 })
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
import { resolve } from '../shortcuts.js';
|
|
18
|
+
import { claimable } from '../rewards/index.js';
|
|
19
|
+
export { FARM_PROTOCOLS, buildClaimAll, claimAll, claimable } from '../rewards/index.js';
|
|
20
|
+
/** 查一个地址能领取的手续费和挖矿奖励,节点参数与 getBalances 相同 */
|
|
21
|
+
export function getClaimable(owner, options = {}) {
|
|
22
|
+
const { provider, overrides, own } = resolve(options, ['protocols', 'fees', 'rewards', 'v4', 'farms', 'gauges', 'maxPositions', 'prices', 'onPriceError', 'fetch']);
|
|
23
|
+
return claimable(provider, owner, { ...overrides, ...own });
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=rewards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rewards.js","sourceRoot":"","sources":["../../src/subpaths/rewards.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,OAAO,EAAgC,MAAM,iBAAiB,CAAA;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAG/C,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAqBxF,6CAA6C;AAC7C,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,UAA+B,EAAE;IAC3E,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC,CAAA;IACnK,OAAO,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,GAAG,SAAS,EAAE,GAAG,GAAG,EAAE,CAAC,CAAA;AAC7D,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 代币风险检查(子路径 `@w3lib/evm-batch-call/risk`):模拟买入 / 转账 / 卖出,算出买卖税、判断貔貅盘,看是不是可升级代理、owner 有没有放弃。
|
|
3
|
+
* 不放在主入口,不用时打包不会带上这部分代码(含约 2.7KB 的探测合约字节码)。
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* import { getTokenRisks } from '@w3lib/evm-batch-call/risk'
|
|
7
|
+
*
|
|
8
|
+
* const [risk] = await getTokenRisks([token], { chainId: 56 })
|
|
9
|
+
* if (risk.honeypot) alert('卖不出')
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
import { type TokenRisk, type TokenRiskOptions } from '../risk.js';
|
|
13
|
+
import { type ShortcutProviderOptions } from '../shortcuts.js';
|
|
14
|
+
export { tokenRisks, type ProbeStage, type TokenRisk, type TokenRiskOptions } from '../risk.js';
|
|
15
|
+
export interface GetTokenRisksOptions extends TokenRiskOptions, ShortcutProviderOptions {
|
|
16
|
+
}
|
|
17
|
+
/** 检查代币的风险,节点参数与 getBalances 相同 */
|
|
18
|
+
export declare function getTokenRisks(tokens: readonly string[], options?: GetTokenRisksOptions): Promise<TokenRisk[]>;
|
|
19
|
+
//# sourceMappingURL=risk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"risk.d.ts","sourceRoot":"","sources":["../../src/subpaths/risk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAc,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC9E,OAAO,EAAW,KAAK,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAEvE,OAAO,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAE/F,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB,EAAE,uBAAuB;CAAG;AAE1F,mCAAmC;AACnC,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAGjH"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 代币风险检查(子路径 `@w3lib/evm-batch-call/risk`):模拟买入 / 转账 / 卖出,算出买卖税、判断貔貅盘,看是不是可升级代理、owner 有没有放弃。
|
|
3
|
+
* 不放在主入口,不用时打包不会带上这部分代码(含约 2.7KB 的探测合约字节码)。
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* import { getTokenRisks } from '@w3lib/evm-batch-call/risk'
|
|
7
|
+
*
|
|
8
|
+
* const [risk] = await getTokenRisks([token], { chainId: 56 })
|
|
9
|
+
* if (risk.honeypot) alert('卖不出')
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
import { tokenRisks } from '../risk.js';
|
|
13
|
+
import { resolve } from '../shortcuts.js';
|
|
14
|
+
export { tokenRisks } from '../risk.js';
|
|
15
|
+
/** 检查代币的风险,节点参数与 getBalances 相同 */
|
|
16
|
+
export function getTokenRisks(tokens, options = {}) {
|
|
17
|
+
const { provider, own } = resolve(options, ['amount', 'protocols']);
|
|
18
|
+
return tokenRisks(provider, tokens, own);
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=risk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"risk.js","sourceRoot":"","sources":["../../src/subpaths/risk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,UAAU,EAAyC,MAAM,YAAY,CAAA;AAC9E,OAAO,EAAE,OAAO,EAAgC,MAAM,iBAAiB,CAAA;AAEvE,OAAO,EAAE,UAAU,EAA0D,MAAM,YAAY,CAAA;AAI/F,mCAAmC;AACnC,MAAM,UAAU,aAAa,CAAC,MAAyB,EAAE,UAAgC,EAAE;IACzF,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAA;IACnE,OAAO,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,CAAA;AAC1C,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 交易模拟(子路径 `@w3lib/evm-batch-call/simulate`):发送前先看一笔(或一串依赖的)交易会发生什么——成不成功、gas、
|
|
3
|
+
* 哪些资产进出(含美元价值)、给了什么授权、calldata 解码、风险提示。可以直接传 `buildSwap` / `buildRevokes` / 流动性构建的交易。
|
|
4
|
+
* 不放在主入口,不用时打包不会带上这部分代码。EVM 用 `eth_simulateV1`(不支持时退回 `eth_call`),Tron 用 `triggerconstantcontract`。
|
|
5
|
+
*
|
|
6
|
+
* ```ts
|
|
7
|
+
* import { getSimulation, getBatchSimulation } from '@w3lib/evm-batch-call/simulate'
|
|
8
|
+
*
|
|
9
|
+
* const sim = await getSimulation({ to: router, data, value }, { chainId: 1, from: user, usd: true })
|
|
10
|
+
* if (sim.warnings.some((w) => w.severity === 'danger')) alert(sim.warnings[0].message)
|
|
11
|
+
* const flow = await getBatchSimulation(plan.transactions, { chainId: 1, from: user }) // approve + swap,状态延续
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
import { type BatchSimulationResult, type SimulateOptions, type SimulateTx, type SimulationResult } from '../simulate.js';
|
|
15
|
+
import { type ShortcutProviderOptions } from '../shortcuts.js';
|
|
16
|
+
export { assertSimulation, decodeCalldata, decodeRevert, simulate, simulateBatch, type ApprovalChange, type BalanceChange, type BatchSimulationResult, type DecodedCall, type DecodedType, type SimulatedTransfer, type SimulateOptions, type SimulateTx, type SimulationResult, type SimulationWarning, type StateOverrides, type WarningSeverity, } from '../simulate.js';
|
|
17
|
+
export interface GetSimulationOptions extends SimulateOptions, ShortcutProviderOptions {
|
|
18
|
+
}
|
|
19
|
+
/** 模拟一笔交易,节点参数与 getBalances 相同 */
|
|
20
|
+
export declare function getSimulation(tx: SimulateTx, options?: GetSimulationOptions): Promise<SimulationResult>;
|
|
21
|
+
/** 按顺序模拟一串依赖前一笔的交易(也可以直接传 buildSwap 等的结果),节点参数与 getBalances 相同 */
|
|
22
|
+
export declare function getBatchSimulation(txs: readonly SimulateTx[] | {
|
|
23
|
+
transactions: readonly SimulateTx[];
|
|
24
|
+
}, options?: GetSimulationOptions): Promise<BatchSimulationResult>;
|
|
25
|
+
//# sourceMappingURL=simulate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simulate.d.ts","sourceRoot":"","sources":["../../src/subpaths/simulate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAA2B,KAAK,qBAAqB,EAAE,KAAK,eAAe,EAAE,KAAK,UAAU,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAClJ,OAAO,EAAW,KAAK,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAEvE,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,eAAe,GACrB,MAAM,gBAAgB,CAAA;AAIvB,MAAM,WAAW,oBAAqB,SAAQ,eAAe,EAAE,uBAAuB;CAAG;AAEzF,kCAAkC;AAClC,wBAAgB,aAAa,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAG3G;AAED,kEAAkE;AAClE,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,SAAS,UAAU,EAAE,GAAG;IAAE,YAAY,EAAE,SAAS,UAAU,EAAE,CAAA;CAAE,EAAE,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAG3K"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 交易模拟(子路径 `@w3lib/evm-batch-call/simulate`):发送前先看一笔(或一串依赖的)交易会发生什么——成不成功、gas、
|
|
3
|
+
* 哪些资产进出(含美元价值)、给了什么授权、calldata 解码、风险提示。可以直接传 `buildSwap` / `buildRevokes` / 流动性构建的交易。
|
|
4
|
+
* 不放在主入口,不用时打包不会带上这部分代码。EVM 用 `eth_simulateV1`(不支持时退回 `eth_call`),Tron 用 `triggerconstantcontract`。
|
|
5
|
+
*
|
|
6
|
+
* ```ts
|
|
7
|
+
* import { getSimulation, getBatchSimulation } from '@w3lib/evm-batch-call/simulate'
|
|
8
|
+
*
|
|
9
|
+
* const sim = await getSimulation({ to: router, data, value }, { chainId: 1, from: user, usd: true })
|
|
10
|
+
* if (sim.warnings.some((w) => w.severity === 'danger')) alert(sim.warnings[0].message)
|
|
11
|
+
* const flow = await getBatchSimulation(plan.transactions, { chainId: 1, from: user }) // approve + swap,状态延续
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
import { simulate, simulateBatch } from '../simulate.js';
|
|
15
|
+
import { resolve } from '../shortcuts.js';
|
|
16
|
+
export { assertSimulation, decodeCalldata, decodeRevert, simulate, simulateBatch, } from '../simulate.js';
|
|
17
|
+
const OWN = ['from', 'watch', 'stateOverrides', 'gas', 'fee', 'usd', 'risk', 'forceCall'];
|
|
18
|
+
/** 模拟一笔交易,节点参数与 getBalances 相同 */
|
|
19
|
+
export function getSimulation(tx, options = {}) {
|
|
20
|
+
const { provider, overrides, own } = resolve(options, OWN);
|
|
21
|
+
return simulate(provider, tx, { ...own, ...(overrides.blockTag === undefined ? {} : { blockTag: overrides.blockTag }) });
|
|
22
|
+
}
|
|
23
|
+
/** 按顺序模拟一串依赖前一笔的交易(也可以直接传 buildSwap 等的结果),节点参数与 getBalances 相同 */
|
|
24
|
+
export function getBatchSimulation(txs, options = {}) {
|
|
25
|
+
const { provider, overrides, own } = resolve(options, OWN);
|
|
26
|
+
return simulateBatch(provider, txs, { ...own, ...(overrides.blockTag === undefined ? {} : { blockTag: overrides.blockTag }) });
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=simulate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simulate.js","sourceRoot":"","sources":["../../src/subpaths/simulate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,QAAQ,EAAE,aAAa,EAA4F,MAAM,gBAAgB,CAAA;AAClJ,OAAO,EAAE,OAAO,EAAgC,MAAM,iBAAiB,CAAA;AAEvE,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,QAAQ,EACR,aAAa,GAad,MAAM,gBAAgB,CAAA;AAEvB,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAU,CAAA;AAIlG,kCAAkC;AAClC,MAAM,UAAU,aAAa,CAAC,EAAc,EAAE,UAAgC,EAAE;IAC9E,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IAC1D,OAAO,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAA;AAC1H,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,kBAAkB,CAAC,GAAoE,EAAE,UAAgC,EAAE;IACzI,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IAC1D,OAAO,aAAa,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAA;AAChI,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 智能账户批量执行(子路径 `@w3lib/evm-batch-call/smart-account`):ERC-4337(EntryPoint v0.7 / v0.8)UserOperation 的构建 / 哈希 / 签名、
|
|
3
|
+
* bundler 与 ERC-7677 paymaster 客户端、自己打包(handleOps)、EIP-5792(wallet_sendCalls)。
|
|
4
|
+
* 通常通过 `/write` 的 `mode: '4337' | '5792'`、`mode: '7702' + sponsor` 使用,这里是底层积木。
|
|
5
|
+
*
|
|
6
|
+
* ```ts
|
|
7
|
+
* import { BundlerClient } from '@w3lib/evm-batch-call/smart-account'
|
|
8
|
+
* const bundler = new BundlerClient('https://public.pimlico.io/v2/8453/rpc')
|
|
9
|
+
* await bundler.supportedEntryPoints()
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
export { BundlerClient, PaymasterClient, type GasEstimate, type PaymasterContext, type PaymasterFields, type PaymasterHook, type RpcClientOptions, type UserOperationReceipt } from '../smartAccount/clients.js';
|
|
13
|
+
export { DUMMY_SIGNATURE, EIP7702_MARKER, ENTRY_POINT_V07, ENTRY_POINT_V08, entryPointAddress, getUserOpHash, packUserOp, userOpToRpc, userOpTypedData, type EntryPointVersion, type PackedUserOperation, type UserOperation, } from '../smartAccount/userOp.js';
|
|
14
|
+
import type { Provider } from '../provider.js';
|
|
15
|
+
import type { SmartAccountOptions } from '../smartAccount/send.js';
|
|
16
|
+
export { SIMPLE_ACCOUNT_FACTORY_V07, SIMPLE_ACCOUNT_FACTORY_V08, encodeExecuteBatch, type SmartAccountKind } from '../smartAccount/account.js';
|
|
17
|
+
export { getCallsStatus, getWalletCapabilities, sendCalls, waitForCalls, type CallsStatus, type Eip1193Like, type SendCallsRequest, type WalletCapabilities } from '../smartAccount/eip5792.js';
|
|
18
|
+
export type { SmartAccountOptions };
|
|
19
|
+
/** owner 对应的 SimpleAccount 地址(部署前就能算出,向它转入资产后再用 `mode: '4337'` 发送) */
|
|
20
|
+
export declare function getSimpleAccount(provider: Provider, owner: string, options?: Pick<SmartAccountOptions, 'entryPoint' | 'salt' | 'factory'>): Promise<{
|
|
21
|
+
address: string;
|
|
22
|
+
deployed: boolean;
|
|
23
|
+
}>;
|
|
24
|
+
//# sourceMappingURL=smart-account.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"smart-account.d.ts","sourceRoot":"","sources":["../../src/subpaths/smart-account.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,KAAK,WAAW,EAAE,KAAK,gBAAgB,EAAE,KAAK,eAAe,EAAE,KAAK,aAAa,EAAE,KAAK,gBAAgB,EAAE,KAAK,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AAChN,OAAO,EACL,eAAe,EACf,cAAc,EACd,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,WAAW,EACX,eAAe,EACf,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,aAAa,GACnB,MAAM,2BAA2B,CAAA;AAClC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAG9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAClE,OAAO,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAC9I,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/L,YAAY,EAAE,mBAAmB,EAAE,CAAA;AAEnC,sEAAsE;AACtE,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,IAAI,CAAC,mBAAmB,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS,CAAM,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC,CAIrM"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 智能账户批量执行(子路径 `@w3lib/evm-batch-call/smart-account`):ERC-4337(EntryPoint v0.7 / v0.8)UserOperation 的构建 / 哈希 / 签名、
|
|
3
|
+
* bundler 与 ERC-7677 paymaster 客户端、自己打包(handleOps)、EIP-5792(wallet_sendCalls)。
|
|
4
|
+
* 通常通过 `/write` 的 `mode: '4337' | '5792'`、`mode: '7702' + sponsor` 使用,这里是底层积木。
|
|
5
|
+
*
|
|
6
|
+
* ```ts
|
|
7
|
+
* import { BundlerClient } from '@w3lib/evm-batch-call/smart-account'
|
|
8
|
+
* const bundler = new BundlerClient('https://public.pimlico.io/v2/8453/rpc')
|
|
9
|
+
* await bundler.supportedEntryPoints()
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
export { BundlerClient, PaymasterClient } from '../smartAccount/clients.js';
|
|
13
|
+
export { DUMMY_SIGNATURE, EIP7702_MARKER, ENTRY_POINT_V07, ENTRY_POINT_V08, entryPointAddress, getUserOpHash, packUserOp, userOpToRpc, userOpTypedData, } from '../smartAccount/userOp.js';
|
|
14
|
+
import { WriteRpc } from '../write/rpc.js';
|
|
15
|
+
import { resolveSimpleAccount } from '../smartAccount/account.js';
|
|
16
|
+
export { SIMPLE_ACCOUNT_FACTORY_V07, SIMPLE_ACCOUNT_FACTORY_V08, encodeExecuteBatch } from '../smartAccount/account.js';
|
|
17
|
+
export { getCallsStatus, getWalletCapabilities, sendCalls, waitForCalls } from '../smartAccount/eip5792.js';
|
|
18
|
+
/** owner 对应的 SimpleAccount 地址(部署前就能算出,向它转入资产后再用 `mode: '4337'` 发送) */
|
|
19
|
+
export async function getSimpleAccount(provider, owner, options = {}) {
|
|
20
|
+
const rpc = await WriteRpc.from(provider);
|
|
21
|
+
const { address, deployed } = await resolveSimpleAccount(rpc, owner, options.entryPoint ?? '0.7', options.salt, options.factory);
|
|
22
|
+
return { address, deployed };
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=smart-account.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"smart-account.js","sourceRoot":"","sources":["../../src/subpaths/smart-account.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,aAAa,EAAE,eAAe,EAAuI,MAAM,4BAA4B,CAAA;AAChN,OAAO,EACL,eAAe,EACf,cAAc,EACd,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,WAAW,EACX,eAAe,GAIhB,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AAEjE,OAAO,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,kBAAkB,EAAyB,MAAM,4BAA4B,CAAA;AAC9I,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,SAAS,EAAE,YAAY,EAAsF,MAAM,4BAA4B,CAAA;AAG/L,sEAAsE;AACtE,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAkB,EAAE,KAAa,EAAE,UAAwE,EAAE;IAClJ,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACzC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,oBAAoB,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,UAAU,IAAI,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;IAChI,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAA;AAC9B,CAAC"}
|