@earthworm/wallet-sdk 0.2.2 → 0.2.3
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.md +16 -19
- package/dist/account-sync-77HMBIWC.js +2 -0
- package/dist/chunk-BUZ26NFL.js +48 -0
- package/dist/chunk-TPFOHQNS.js +40 -0
- package/dist/chunk-Z2EMFRMV.js +1065 -0
- package/dist/index.d.ts +443 -259
- package/dist/index.js +122 -695
- package/dist/network-WJN3S7KB.js +2 -0
- package/package.json +2 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import * as ethers from 'ethers';
|
|
2
|
-
import {
|
|
2
|
+
import { Eip1193Provider, BrowserProvider, JsonRpcProvider, InterfaceAbi, JsonRpcSigner } from 'ethers';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* @param chainId
|
|
8
|
-
* @param fallback
|
|
9
|
-
* @returns
|
|
5
|
+
* @en Convert hex chainId to decimal.
|
|
6
|
+
* @zh 将十六进制 chainId 转为十进制。
|
|
7
|
+
* @param {string} chainId @en Hex chainId, e.g. `"0x38"`. @zh 十六进制 chainId,如 `"0x38"`。
|
|
8
|
+
* @param {number} [fallback] @en Fallback when parse fails. @zh 解析失败时的回退值。
|
|
9
|
+
* @returns @en Decimal chainId or fallback / `NaN`. @zh 十进制 chainId 或回退值 / `NaN`。
|
|
10
10
|
*/
|
|
11
11
|
declare function toChainIdDecimal(chainId: string, fallback?: number): number;
|
|
12
12
|
|
|
@@ -36,8 +36,10 @@ type ChainNativeCurrency = {
|
|
|
36
36
|
symbol: string;
|
|
37
37
|
decimals: number;
|
|
38
38
|
};
|
|
39
|
+
/** @en Supported BSC chain IDs: mainnet `0x38`, testnet `0x61`. @zh 支持的 BSC chainId:主网 `0x38`、测试网 `0x61`。 */
|
|
40
|
+
type SupportedBscChainId = "0x38" | "0x61";
|
|
39
41
|
type ChainConfig = {
|
|
40
|
-
chainId:
|
|
42
|
+
chainId: SupportedBscChainId;
|
|
41
43
|
chainName: string;
|
|
42
44
|
nativeCurrency: ChainNativeCurrency;
|
|
43
45
|
rpcUrls: string[];
|
|
@@ -53,20 +55,15 @@ type Eip6963ProviderDetail = {
|
|
|
53
55
|
info: Eip6963ProviderInfo;
|
|
54
56
|
provider: Eip1193Provider;
|
|
55
57
|
};
|
|
56
|
-
type
|
|
58
|
+
type UsdtInitConfig = {
|
|
59
|
+
/** @en USDT contract address. @zh USDT 合约地址。 */
|
|
57
60
|
address: string;
|
|
58
|
-
abi: InterfaceAbi;
|
|
59
61
|
};
|
|
60
62
|
type WalletSdkInitOptions = {
|
|
61
|
-
/**
|
|
62
|
-
|
|
63
|
-
contract: ContractConfig;
|
|
63
|
+
/** @en USDT contract address (mainnet or testnet, caller decides). @zh USDT 合约地址(主网/测试网由调用方决定)。 */
|
|
64
|
+
usdt: UsdtInitConfig;
|
|
64
65
|
};
|
|
65
66
|
type WalletSdkConfig = {
|
|
66
|
-
isMainnet: boolean;
|
|
67
|
-
chainId: string;
|
|
68
|
-
chain: ChainConfig;
|
|
69
|
-
contract: ContractConfig;
|
|
70
67
|
usdt: {
|
|
71
68
|
address: string;
|
|
72
69
|
abi: InterfaceAbi;
|
|
@@ -75,373 +72,575 @@ type WalletSdkConfig = {
|
|
|
75
72
|
decimals: number;
|
|
76
73
|
};
|
|
77
74
|
};
|
|
75
|
+
type NetworkSwitchResult = {
|
|
76
|
+
chainId: SupportedBscChainId;
|
|
77
|
+
previousChainId: string;
|
|
78
|
+
/** @en `true` if switch was invoked; `false` if already on target chain. @zh `true` 已发起切链;`false` 已在目标链。 */
|
|
79
|
+
switched: boolean;
|
|
80
|
+
};
|
|
81
|
+
type ConnectWalletOptions = {
|
|
82
|
+
/** @en Switch wallet to this BSC chain after connect. @zh 连接后切换到指定 BSC 链。 */
|
|
83
|
+
chainId?: SupportedBscChainId;
|
|
84
|
+
};
|
|
78
85
|
|
|
86
|
+
declare enum Wallet6963Name {
|
|
87
|
+
MetaMask = "metamask",
|
|
88
|
+
Coinbase = "coinbase",
|
|
89
|
+
TokenPocket = "tokenpocket",
|
|
90
|
+
TronLink = "tronlink"
|
|
91
|
+
}
|
|
92
|
+
declare enum Wallet6963Rdns {
|
|
93
|
+
MetaMask = "io.metamask",
|
|
94
|
+
Coinbase = "com.coinbase.wallet",
|
|
95
|
+
TokenPocket = "com.tokenpocket",
|
|
96
|
+
/** @en TronLink browser extension rdns. @zh TronLink 浏览器扩展 rdns。 */
|
|
97
|
+
TronLink = "org.tronlink.www",
|
|
98
|
+
/** @en TronLink App WebView rdns. @zh TronLink App 内置 WebView rdns。 */
|
|
99
|
+
TronLinkAlt = "io.tronlink"
|
|
100
|
+
}
|
|
79
101
|
/**
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
* @param timeoutMs
|
|
83
|
-
* @returns
|
|
102
|
+
* @en Discover wallet providers via EIP-6963 / TIP-6963.
|
|
103
|
+
* @zh 通过 EIP-6963 / TIP-6963 发现浏览器中的钱包 provider。
|
|
104
|
+
* @param {number} [timeoutMs] @en Timeout in ms, default `500`. @zh 等待 announce 的超时毫秒数,默认 `500`。
|
|
105
|
+
* @returns @en List of {@link Eip6963ProviderDetail}. @zh {@link Eip6963ProviderDetail} 列表。
|
|
84
106
|
*/
|
|
85
107
|
declare function discoverWalletProviders(timeoutMs?: number): Promise<Eip6963ProviderDetail[]>;
|
|
86
108
|
/**
|
|
87
|
-
*
|
|
88
|
-
* @
|
|
89
|
-
* @
|
|
109
|
+
* @en Find a provider from discovered EIP-6963 providers.
|
|
110
|
+
* @zh 从已发现的 EIP-6963 provider 中按条件查找。
|
|
111
|
+
* @param {(detail: Eip6963ProviderDetail) => boolean} match @en Match function. @zh 匹配函数。
|
|
112
|
+
* @returns @en EIP-1193 provider or `undefined`. @zh EIP-1193 provider 或 `undefined`。
|
|
90
113
|
*/
|
|
91
114
|
declare function findDiscoveredProvider(match: (detail: Eip6963ProviderDetail) => boolean): ethers.Eip1193Provider | undefined;
|
|
92
|
-
/**
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
*/
|
|
101
|
-
declare
|
|
102
|
-
/**
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
* 是否通过 EIP-6963 检测到 MetaMask。
|
|
109
|
-
* @returns 检测到为 `true`,否则 `false`。
|
|
110
|
-
*/
|
|
111
|
-
declare function hasMetaMaskEip6963Provider(): boolean;
|
|
112
|
-
/**
|
|
113
|
-
* 是否通过 EIP-6963 检测到 Coinbase Wallet。
|
|
114
|
-
* @returns 检测到为 `true`,否则 `false`。
|
|
115
|
-
*/
|
|
116
|
-
declare function hasCoinbaseEip6963Provider(): boolean;
|
|
117
|
-
/**
|
|
118
|
-
* 是否通过 EIP-6963 检测到 TokenPocket。
|
|
119
|
-
* @returns 检测到为 `true`,否则 `false`。
|
|
120
|
-
*/
|
|
121
|
-
declare function hasTokenPocketEip6963Provider(): boolean;
|
|
115
|
+
/** @en Find MetaMask EIP-6963 provider. @zh 查找 MetaMask 的 EIP-6963 provider。 */
|
|
116
|
+
declare const findMetaMaskEip6963Provider: () => ethers.Eip1193Provider | undefined;
|
|
117
|
+
/** @en Find Coinbase Wallet EIP-6963 provider. @zh 查找 Coinbase Wallet 的 EIP-6963 provider。 */
|
|
118
|
+
declare const findCoinbaseEip6963Provider: () => ethers.Eip1193Provider | undefined;
|
|
119
|
+
/** @en Find TokenPocket EIP-6963 provider. @zh 查找 TokenPocket 的 EIP-6963 provider。 */
|
|
120
|
+
declare const findTokenPocketEip6963Provider: () => ethers.Eip1193Provider | undefined;
|
|
121
|
+
/** @en Find TronLink EIP/TIP-6963 provider. @zh 查找 TronLink 的 EIP/TIP-6963 provider。 */
|
|
122
|
+
declare const findTronLinkEip6963Provider: () => ethers.Eip1193Provider | undefined;
|
|
123
|
+
/** @en Whether MetaMask is detected via EIP-6963. @zh 是否通过 EIP-6963 检测到 MetaMask。 */
|
|
124
|
+
declare const hasMetaMaskEip6963Provider: () => boolean;
|
|
125
|
+
/** @en Whether Coinbase Wallet is detected via EIP-6963. @zh 是否通过 EIP-6963 检测到 Coinbase Wallet。 */
|
|
126
|
+
declare const hasCoinbaseEip6963Provider: () => boolean;
|
|
127
|
+
/** @en Whether TokenPocket is detected via EIP-6963. @zh 是否通过 EIP-6963 检测到 TokenPocket。 */
|
|
128
|
+
declare const hasTokenPocketEip6963Provider: () => boolean;
|
|
129
|
+
/** @en Whether TronLink is detected via EIP/TIP-6963. @zh 是否通过 EIP/TIP-6963 检测到 TronLink。 */
|
|
130
|
+
declare const hasTronLinkEip6963Provider: () => boolean;
|
|
122
131
|
|
|
123
132
|
/**
|
|
124
|
-
*
|
|
125
|
-
* @
|
|
126
|
-
* @
|
|
133
|
+
* @en Get shared BrowserProvider bound to EIP-1193 provider.
|
|
134
|
+
* @zh 获取与 EIP-1193 provider 绑定的共享 BrowserProvider。
|
|
135
|
+
* @param {Eip1193Provider} ethereum @en EIP-1193 provider. @zh EIP-1193 provider。
|
|
136
|
+
* @returns @en ethers `BrowserProvider`. @zh ethers `BrowserProvider`。
|
|
127
137
|
*/
|
|
128
138
|
declare function getSharedBrowserProvider(ethereum: Eip1193Provider): BrowserProvider;
|
|
129
139
|
|
|
130
140
|
/**
|
|
131
|
-
*
|
|
132
|
-
* @
|
|
141
|
+
* @en Get all injected Ethereum providers in the browser.
|
|
142
|
+
* @zh 获取浏览器中所有 injected 以太坊 provider。
|
|
143
|
+
* @returns @en Array of {@link InjectedEthereumProvider}. @zh {@link InjectedEthereumProvider} 数组。
|
|
133
144
|
*/
|
|
134
145
|
declare function getInjectedEthereumProviders(): InjectedEthereumProvider[];
|
|
135
146
|
/**
|
|
136
|
-
*
|
|
137
|
-
* @
|
|
147
|
+
* @en Resolve MetaMask injected provider.
|
|
148
|
+
* @zh 解析 MetaMask injected provider。
|
|
149
|
+
* @returns @en MetaMask {@link WalletEventProvider} or `undefined`. @zh MetaMask provider 或 `undefined`。
|
|
138
150
|
*/
|
|
139
151
|
declare function resolveMetaMaskInjectedProvider(): WalletEventProvider | undefined;
|
|
140
152
|
/**
|
|
141
|
-
*
|
|
142
|
-
* @
|
|
153
|
+
* @en Resolve Coinbase Wallet injected provider.
|
|
154
|
+
* @zh 解析 Coinbase Wallet injected provider。
|
|
155
|
+
* @returns @en Coinbase {@link WalletEventProvider} or `undefined`. @zh Coinbase provider 或 `undefined`。
|
|
143
156
|
*/
|
|
144
157
|
declare function resolveCoinbaseInjectedProvider(): WalletEventProvider | undefined;
|
|
145
158
|
/**
|
|
146
|
-
*
|
|
147
|
-
* @
|
|
159
|
+
* @en Resolve TokenPocket injected provider.
|
|
160
|
+
* @zh 解析 TokenPocket injected provider。
|
|
161
|
+
* @returns @en TokenPocket {@link WalletEventProvider} or `undefined`. @zh TokenPocket provider 或 `undefined`。
|
|
148
162
|
*/
|
|
149
163
|
declare function resolveTokenPocketInjectedProvider(): WalletEventProvider | undefined;
|
|
150
164
|
/**
|
|
151
|
-
*
|
|
152
|
-
* @
|
|
165
|
+
* @en Resolve TronLink injected provider.
|
|
166
|
+
* @zh 解析 TronLink injected provider。
|
|
167
|
+
* @returns @en TronLink {@link WalletEventProvider} or `undefined`. @zh TronLink provider 或 `undefined`。
|
|
168
|
+
*/
|
|
169
|
+
declare function resolveTronLinkInjectedProvider(): WalletEventProvider | undefined;
|
|
170
|
+
/**
|
|
171
|
+
* @en Whether MetaMask injected provider is detected.
|
|
172
|
+
* @zh 是否检测到 MetaMask injected provider。
|
|
173
|
+
* @returns @en `true` if detected. @zh 检测到为 `true`。
|
|
153
174
|
*/
|
|
154
175
|
declare function hasMetaMaskInjectedProvider(): boolean;
|
|
155
176
|
/**
|
|
156
|
-
*
|
|
157
|
-
* @
|
|
177
|
+
* @en Whether Coinbase Wallet is detected.
|
|
178
|
+
* @zh 是否检测到 Coinbase Wallet。
|
|
179
|
+
* @returns @en `true` if detected. @zh 检测到为 `true`。
|
|
158
180
|
*/
|
|
159
181
|
declare function hasCoinbaseInjectedProvider(): boolean;
|
|
160
182
|
/**
|
|
161
|
-
*
|
|
162
|
-
* @
|
|
183
|
+
* @en Whether TokenPocket is detected.
|
|
184
|
+
* @zh 是否检测到 TokenPocket。
|
|
185
|
+
* @returns @en `true` if detected. @zh 检测到为 `true`。
|
|
163
186
|
*/
|
|
164
187
|
declare function hasTokenPocketInjectedProvider(): boolean;
|
|
165
188
|
/**
|
|
166
|
-
*
|
|
167
|
-
*
|
|
189
|
+
* @en Whether TronLink injected provider is detected.
|
|
190
|
+
* @zh 是否检测到 TronLink injected provider。
|
|
191
|
+
* @returns @en `true` if detected. @zh 检测到为 `true`。
|
|
192
|
+
*/
|
|
193
|
+
declare function hasTronLinkInjectedProvider(): boolean;
|
|
194
|
+
/**
|
|
195
|
+
* @en Cache the current multi-wallet aggregator root provider.
|
|
196
|
+
* @zh 缓存当前可用的多钱包聚合根 provider。
|
|
168
197
|
*/
|
|
169
198
|
declare function rememberAggregatorProvider(): void;
|
|
170
199
|
/**
|
|
171
|
-
*
|
|
172
|
-
* @
|
|
200
|
+
* @en Whether a recoverable multi-wallet aggregator provider exists.
|
|
201
|
+
* @zh 是否存在可恢复的多钱包聚合 provider。
|
|
202
|
+
* @returns @en `true` if exists. @zh 存在为 `true`。
|
|
173
203
|
*/
|
|
174
204
|
declare function hasRecoverableAggregatorProvider(): boolean;
|
|
175
205
|
/**
|
|
176
|
-
*
|
|
177
|
-
* @
|
|
206
|
+
* @en Get aggregated injected provider.
|
|
207
|
+
* @zh 获取聚合 injected provider。
|
|
208
|
+
* @returns @en {@link InjectedEthereumProvider} or `undefined`. @zh provider 或 `undefined`。
|
|
178
209
|
*/
|
|
179
210
|
declare function getAggregatedInjectedProvider(): WalletEventProvider | undefined;
|
|
180
211
|
/**
|
|
181
|
-
*
|
|
182
|
-
* @
|
|
212
|
+
* @en Whether an aggregated injected Ethereum provider is available.
|
|
213
|
+
* @zh 是否存在可用的聚合 injected 以太坊 provider。
|
|
214
|
+
* @returns @en `true` if available. @zh 存在为 `true`。
|
|
183
215
|
*/
|
|
184
216
|
declare function hasAggregatedInjectedProvider(): boolean;
|
|
185
217
|
|
|
186
218
|
declare const ERC20_DECIMALS_ABI: readonly ["function decimals() view returns (uint8)"];
|
|
219
|
+
type Erc20BalanceResult = {
|
|
220
|
+
accountAddress: string;
|
|
221
|
+
balance: string;
|
|
222
|
+
decimals: number;
|
|
223
|
+
};
|
|
187
224
|
/**
|
|
188
|
-
*
|
|
189
|
-
* @
|
|
190
|
-
* @param
|
|
191
|
-
* @
|
|
225
|
+
* @en Check whether an address has deployed contract bytecode.
|
|
226
|
+
* @zh 检查地址在链上是否已部署合约。
|
|
227
|
+
* @param {EvmReadProvider} readProvider @en Read provider. @zh 只读 provider。
|
|
228
|
+
* @param {string} address @en Address to check. @zh 待检查的地址。
|
|
229
|
+
* @returns @en `true` if deployed. @zh 已部署为 `true`。
|
|
192
230
|
*/
|
|
193
231
|
declare function hasDeployedContract(readProvider: EvmReadProvider, address: string): Promise<boolean>;
|
|
194
232
|
/**
|
|
195
|
-
*
|
|
196
|
-
* @
|
|
197
|
-
* @param
|
|
198
|
-
* @param
|
|
199
|
-
* @param
|
|
200
|
-
* @
|
|
201
|
-
* @
|
|
233
|
+
* @en Read ERC20 token decimals.
|
|
234
|
+
* @zh 读取 ERC20 代币 decimals。
|
|
235
|
+
* @param {EvmReadProvider} readProvider @en Read provider. @zh 只读 provider。
|
|
236
|
+
* @param {string} tokenAddress @en ERC20 contract address. @zh ERC20 合约地址。
|
|
237
|
+
* @param {InterfaceAbi} [erc20Abi] @en Contract ABI. @zh 合约 ABI。
|
|
238
|
+
* @param {number} [fallback] @en Fallback when call fails. @zh 调用失败时的回退值。
|
|
239
|
+
* @returns @en Token decimals. @zh token decimals 数值。
|
|
202
240
|
*/
|
|
203
241
|
declare function readErc20Decimals(readProvider: EvmReadProvider, tokenAddress: string, erc20Abi?: InterfaceAbi, fallback?: 18): Promise<number>;
|
|
242
|
+
/**
|
|
243
|
+
* @en Read ERC20 token balance as formatted string.
|
|
244
|
+
* @zh 读取 ERC20 代币余额(格式化为人类可读字符串)。
|
|
245
|
+
* @param {EvmReadProvider} readProvider @en Read provider. @zh 只读 provider。
|
|
246
|
+
* @param {string} tokenAddress @en ERC20 contract address. @zh ERC20 合约地址。
|
|
247
|
+
* @param {string} accountAddress @en Holder account address. @zh 持有账户地址。
|
|
248
|
+
* @param {InterfaceAbi} [erc20Abi] @en Contract ABI. @zh 合约 ABI。
|
|
249
|
+
* @returns @en {@link Erc20BalanceResult}. @zh {@link Erc20BalanceResult}。
|
|
250
|
+
*/
|
|
251
|
+
declare function readErc20Balance(readProvider: EvmReadProvider, tokenAddress: string, accountAddress: string, erc20Abi?: InterfaceAbi): Promise<Erc20BalanceResult>;
|
|
204
252
|
|
|
205
253
|
/**
|
|
206
|
-
*
|
|
207
|
-
* @
|
|
208
|
-
|
|
254
|
+
* @en Clear JsonRpc read provider cache.
|
|
255
|
+
* @zh 清除 JsonRpc 只读 provider 缓存。
|
|
256
|
+
*/
|
|
257
|
+
declare function clearJsonRpcReadProviderCache(): void;
|
|
258
|
+
/**
|
|
259
|
+
* @en Create and cache a JsonRpc read provider.
|
|
260
|
+
* @zh 创建并缓存 JsonRpc 只读 provider。
|
|
261
|
+
* @param {string} rpcUrl @en RPC node URL. @zh RPC 节点 URL。
|
|
262
|
+
* @param {string} chainIdHex @en Hex chainId. @zh 十六进制 chainId。
|
|
263
|
+
* @param {{ current: JsonRpcProvider | null }} [cache] @en Optional cache object. @zh 可选缓存对象。
|
|
264
|
+
* @returns @en ethers `JsonRpcProvider`. @zh ethers `JsonRpcProvider`。
|
|
265
|
+
*/
|
|
266
|
+
declare function createJsonRpcReadProvider(rpcUrl: string, chainIdHex: string, cache?: {
|
|
267
|
+
current: JsonRpcProvider | null;
|
|
268
|
+
}): JsonRpcProvider;
|
|
269
|
+
type ReadProviderRpcConfig = {
|
|
270
|
+
rpcUrls: string[];
|
|
271
|
+
chainId: string;
|
|
272
|
+
};
|
|
273
|
+
/**
|
|
274
|
+
* @en Get read provider: wallet BrowserProvider first, JsonRpc fallback.
|
|
275
|
+
* @zh 获取只读 provider:优先钱包 BrowserProvider,否则 JsonRpc 回退。
|
|
276
|
+
* @param {BrowserProvider | null} walletProvider @en Wallet BrowserProvider or `null`. @zh 钱包 BrowserProvider 或 `null`。
|
|
277
|
+
* @param {ReadProviderRpcConfig} rpcConfig @en RPC config. @zh RPC 配置。
|
|
278
|
+
* @param {string[]} rpcConfig.rpcUrls @en RPC URL list. @zh RPC 节点 URL 列表。
|
|
279
|
+
* @param {string} rpcConfig.chainId @en Hex chainId. @zh 十六进制 chainId。
|
|
280
|
+
* @param {{ current: JsonRpcProvider | null }} [fallbackCache] @en Optional JsonRpc cache. @zh 可选 JsonRpc 缓存。
|
|
281
|
+
* @returns @en {@link EvmReadProvider}. @zh {@link EvmReadProvider}。
|
|
282
|
+
*/
|
|
283
|
+
declare function getReadProviderWithFallback(walletProvider: BrowserProvider | null, rpcConfig: ReadProviderRpcConfig, fallbackCache?: {
|
|
284
|
+
current: JsonRpcProvider | null;
|
|
285
|
+
}): EvmReadProvider;
|
|
286
|
+
|
|
287
|
+
type GetConfiguredReadProviderOptions = {
|
|
288
|
+
/** @en BSC chain ID for JsonRpc fallback when wallet is not connected. @zh 未连接钱包时用于 JsonRpc 回退的 BSC chainId。 */
|
|
289
|
+
chainId?: SupportedBscChainId;
|
|
290
|
+
};
|
|
291
|
+
/**
|
|
292
|
+
* @en Options for contract read calls.
|
|
293
|
+
* @zh 合约只读调用选项。
|
|
294
|
+
* @property {InterfaceAbi} abi @en Contract ABI. @zh 合约 ABI。
|
|
295
|
+
* @property {string} method @en Method name for staticCall. @zh 用于 staticCall 的合约方法名。
|
|
209
296
|
*/
|
|
210
297
|
type GetContractReadOptions = {
|
|
211
298
|
abi: InterfaceAbi;
|
|
212
299
|
method: string;
|
|
213
300
|
};
|
|
214
301
|
/**
|
|
215
|
-
*
|
|
216
|
-
*
|
|
217
|
-
* @param provider
|
|
302
|
+
* @en Set wallet BrowserProvider for on-chain read calls.
|
|
303
|
+
* @zh 设置用于链上只读调用的钱包 BrowserProvider。
|
|
304
|
+
* @param {BrowserProvider | null} provider @en BrowserProvider or `null` to clear. @zh BrowserProvider;传 `null` 则清除。
|
|
218
305
|
*/
|
|
219
306
|
declare function setWalletReadProvider(provider: BrowserProvider | null): void;
|
|
220
307
|
/**
|
|
221
|
-
*
|
|
222
|
-
*
|
|
223
|
-
* @
|
|
224
|
-
|
|
308
|
+
* @en Rebuild wallet BrowserProvider after chain switch to avoid NETWORK_ERROR.
|
|
309
|
+
* @zh 切链后重建钱包 BrowserProvider,避免 ethers `NETWORK_ERROR`。
|
|
310
|
+
* @param {WalletEventProvider} eip1193 @en Current wallet EIP-1193 provider. @zh 当前钱包 EIP-1193 provider。
|
|
311
|
+
*/
|
|
312
|
+
declare function refreshWalletReadProvider(eip1193: WalletEventProvider): void;
|
|
313
|
+
|
|
314
|
+
/**
|
|
315
|
+
* @en Get read provider: wallet first, otherwise JsonRpc via `chainId`.
|
|
316
|
+
* @zh 获取只读 provider:优先钱包,否则通过 `chainId` 使用 JsonRpc。
|
|
225
317
|
*/
|
|
226
|
-
declare function getConfiguredReadProvider(): EvmReadProvider;
|
|
318
|
+
declare function getConfiguredReadProvider(options?: GetConfiguredReadProviderOptions): EvmReadProvider;
|
|
227
319
|
/**
|
|
228
|
-
*
|
|
229
|
-
* @
|
|
230
|
-
* @
|
|
320
|
+
* @en Check whether a contract is deployed at the given address.
|
|
321
|
+
* @zh 检查指定地址在当前链上是否已部署合约。
|
|
322
|
+
* @param {string} contractAddress @en Contract address. @zh 合约地址。
|
|
323
|
+
* @returns @en `true` if deployed. @zh 已部署为 `true`。
|
|
231
324
|
*/
|
|
232
325
|
declare function isContractDeployed(contractAddress: string): Promise<boolean>;
|
|
233
326
|
/**
|
|
234
|
-
*
|
|
235
|
-
* @
|
|
236
|
-
* @param
|
|
237
|
-
* @param options
|
|
238
|
-
* @
|
|
239
|
-
* @returns token decimals 数值,如 `18`。
|
|
240
|
-
* @throws 合约未部署时抛错。
|
|
327
|
+
* @en Read token contract decimals.
|
|
328
|
+
* @zh 读取 token 合约的 decimals。
|
|
329
|
+
* @param {string} contractAddress @en Token contract address. @zh 代币合约地址。
|
|
330
|
+
* @param {GetContractReadOptions} options @en Read options. @zh 读调用选项。
|
|
331
|
+
* @returns @en Decimals number. @zh decimals 数值。
|
|
241
332
|
*/
|
|
242
333
|
declare function getContractDecimals(contractAddress: string, options: GetContractReadOptions): Promise<number>;
|
|
243
334
|
/**
|
|
244
|
-
*
|
|
245
|
-
*
|
|
246
|
-
* @param contractAddress
|
|
247
|
-
* @param options
|
|
248
|
-
* @
|
|
249
|
-
* @param options.method - 价格读方法名,如 `"getPrice"`。
|
|
250
|
-
* @returns 格式化后的价格字符串(ethers `formatUnits` 结果)。
|
|
251
|
-
* @throws 合约未部署时抛错。
|
|
335
|
+
* @en Read contract price formatted with token decimals.
|
|
336
|
+
* @zh 读取合约价格,并按 token decimals 格式化为人类可读字符串。
|
|
337
|
+
* @param {string} contractAddress @en Price contract address. @zh 价格合约地址。
|
|
338
|
+
* @param {GetContractReadOptions} options @en Read options. @zh 读调用选项。
|
|
339
|
+
* @returns @en Formatted price string. @zh 格式化后的价格字符串。
|
|
252
340
|
*/
|
|
253
341
|
declare function getContractPrice(contractAddress: string, options: GetContractReadOptions): Promise<string>;
|
|
254
|
-
|
|
255
342
|
/**
|
|
256
|
-
*
|
|
257
|
-
* @
|
|
258
|
-
* @
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
* @
|
|
263
|
-
* @
|
|
343
|
+
* @en Read configured USDT decimals from `initWalletSdk`.
|
|
344
|
+
* @zh 读取 `initWalletSdk` 配置的 USDT decimals。
|
|
345
|
+
* @returns @en USDT decimals. @zh USDT decimals 数值。
|
|
346
|
+
*/
|
|
347
|
+
declare function readConfiguredUsdtDecimals(chainId?: SupportedBscChainId): Promise<number>;
|
|
348
|
+
/**
|
|
349
|
+
* @en Read configured USDT balance from `initWalletSdk`.
|
|
350
|
+
* @zh 读取 `initWalletSdk` 配置的 USDT 余额。
|
|
351
|
+
* @param {string} accountAddress @en Holder account address. @zh 持有账户地址。
|
|
352
|
+
* @returns @en {@link Erc20BalanceResult}. @zh {@link Erc20BalanceResult}。
|
|
264
353
|
*/
|
|
265
|
-
declare function
|
|
354
|
+
declare function readUsdtBalance(accountAddress: string, chainId?: SupportedBscChainId): Promise<Erc20BalanceResult>;
|
|
355
|
+
|
|
356
|
+
type EnsureTargetNetworkOptions = {
|
|
266
357
|
targetChainId: string;
|
|
267
358
|
getCurrentChainId: () => Promise<string>;
|
|
268
359
|
switchChain: (chainId: string) => Promise<unknown>;
|
|
269
360
|
addChain: (chainParams: Record<string, unknown>) => Promise<unknown>;
|
|
270
361
|
chainParams: Record<string, unknown>;
|
|
271
|
-
}
|
|
272
|
-
|
|
362
|
+
};
|
|
273
363
|
/**
|
|
274
|
-
*
|
|
275
|
-
* @
|
|
276
|
-
* @param
|
|
277
|
-
* @param
|
|
278
|
-
* @
|
|
364
|
+
* @en Ensure the wallet is on the target network; adds chain if missing.
|
|
365
|
+
* @zh 确保钱包切换到目标网络;链未添加时自动调用 `wallet_addEthereumChain`。
|
|
366
|
+
* @param {EnsureTargetNetworkOptions} options @en Network switch options. @zh 切链选项。
|
|
367
|
+
* @param {string} options.targetChainId @en Target hex chainId. @zh 目标十六进制 chainId。
|
|
368
|
+
* @param {() => Promise<string>} options.getCurrentChainId @en Async fn to get current chainId. @zh 获取当前 chainId 的异步函数。
|
|
369
|
+
* @param {(chainId: string) => Promise<unknown>} options.switchChain @en Async fn to switch chain. @zh 切换链的异步函数。
|
|
370
|
+
* @param {(chainParams: Record<string, unknown>) => Promise<unknown>} options.addChain @en Async fn to add chain. @zh 添加链的异步函数。
|
|
371
|
+
* @param {Record<string, unknown>} options.chainParams @en Chain params for addChain. @zh 传给 addChain 的链参数。
|
|
279
372
|
*/
|
|
280
|
-
declare function
|
|
281
|
-
current: JsonRpcProvider | null;
|
|
282
|
-
}): JsonRpcProvider;
|
|
373
|
+
declare function ensureTargetNetwork(options: EnsureTargetNetworkOptions): Promise<void>;
|
|
283
374
|
/**
|
|
284
|
-
*
|
|
285
|
-
* @
|
|
286
|
-
* @param rpcConfig - RPC 配置。
|
|
287
|
-
* @param rpcConfig.rpcUrls - RPC 节点 URL 列表,取第一个作为 fallback。
|
|
288
|
-
* @param rpcConfig.chainId - 十六进制 chainId,如 `"0x38"`。
|
|
289
|
-
* @param fallbackCache - 可选 JsonRpc provider 缓存。
|
|
290
|
-
* @returns ethers `BrowserProvider` 或 `JsonRpcProvider`。
|
|
291
|
-
* @throws `rpcUrls[0]` 或 `chainId` 缺失时抛错。
|
|
375
|
+
* @en Switch wallet to specified BSC chain (`0x38` or `0x61`).
|
|
376
|
+
* @zh 将钱包切换到指定 BSC 链(主网 `0x38` / 测试网 `0x61`)。
|
|
292
377
|
*/
|
|
293
|
-
declare function
|
|
294
|
-
rpcUrls: string[];
|
|
295
|
-
chainId: string;
|
|
296
|
-
}, fallbackCache?: {
|
|
297
|
-
current: JsonRpcProvider | null;
|
|
298
|
-
}): EvmReadProvider;
|
|
378
|
+
declare function switchToConfiguredNetwork(chainId: SupportedBscChainId): Promise<NetworkSwitchResult>;
|
|
299
379
|
|
|
300
380
|
/**
|
|
301
|
-
*
|
|
302
|
-
* @
|
|
303
|
-
* @param
|
|
304
|
-
* @
|
|
381
|
+
* @en Bind EIP-1193 provider as BrowserProvider and update cache.
|
|
382
|
+
* @zh 将 EIP-1193 provider 绑定为 BrowserProvider 并写入缓存。
|
|
383
|
+
* @param {WalletEventProvider} eip1193 @en Wallet EIP-1193 provider. @zh 钱包 EIP-1193 provider。
|
|
384
|
+
* @param {MutableRef<BrowserProvider | null>} cache @en BrowserProvider cache ref. @zh BrowserProvider 缓存引用。
|
|
385
|
+
* @returns @en ethers `BrowserProvider`. @zh ethers `BrowserProvider`。
|
|
305
386
|
*/
|
|
306
387
|
declare function bindBrowserProvider(eip1193: WalletEventProvider, cache: MutableRef<BrowserProvider | null>): BrowserProvider;
|
|
307
388
|
/**
|
|
308
|
-
*
|
|
309
|
-
* @
|
|
310
|
-
* @param
|
|
311
|
-
* @param
|
|
312
|
-
* @
|
|
389
|
+
* @en Send a JSON-RPC request to the wallet.
|
|
390
|
+
* @zh 向钱包发起 JSON-RPC 请求。
|
|
391
|
+
* @param {WalletEventProvider} eip1193 @en Wallet EIP-1193 provider. @zh 钱包 EIP-1193 provider。
|
|
392
|
+
* @param {string} method @en JSON-RPC method name. @zh JSON-RPC 方法名。
|
|
393
|
+
* @param {EthereumRequestParams} [params] @en Optional request params. @zh 可选请求参数。
|
|
394
|
+
* @returns @en Raw provider response. @zh provider 原始返回值。
|
|
313
395
|
*/
|
|
314
396
|
declare function requestWallet(eip1193: WalletEventProvider, method: string, params?: EthereumRequestParams): Promise<any>;
|
|
315
397
|
/**
|
|
316
|
-
*
|
|
317
|
-
* @
|
|
318
|
-
* @param
|
|
319
|
-
* @param
|
|
320
|
-
* @param
|
|
321
|
-
* @
|
|
322
|
-
* @
|
|
398
|
+
* @en Connect wallet account and initialize signer.
|
|
399
|
+
* @zh 连接钱包账户并初始化 signer。
|
|
400
|
+
* @param {() => Promise<unknown>} requestAccounts @en Function to request accounts. @zh 请求账户的函数。
|
|
401
|
+
* @param {() => BrowserProvider} getProvider @en Function to get BrowserProvider. @zh 获取 BrowserProvider 的函数。
|
|
402
|
+
* @param {(signer: JsonRpcSigner) => void} setSigner @en Callback to set signer. @zh 设置 signer 的回调。
|
|
403
|
+
* @param {() => void} markConnected @en Callback to mark connected. @zh 标记已连接的回调。
|
|
404
|
+
* @returns @en `{ address, signer }`. @zh `{ address, signer }`。
|
|
323
405
|
*/
|
|
324
406
|
declare function connectWalletAccount(requestAccounts: () => Promise<unknown>, getProvider: () => BrowserProvider, setSigner: (signer: JsonRpcSigner) => void, markConnected: () => void): Promise<{
|
|
325
407
|
address: string;
|
|
326
408
|
signer: JsonRpcSigner;
|
|
327
409
|
}>;
|
|
410
|
+
type ClearWalletRuntimeCache = {
|
|
411
|
+
provider: MutableRef<BrowserProvider | null>;
|
|
412
|
+
signer: MutableRef<JsonRpcSigner | null>;
|
|
413
|
+
selectedProvider?: MutableRef<WalletEventProvider | null>;
|
|
414
|
+
};
|
|
328
415
|
/**
|
|
329
|
-
*
|
|
330
|
-
* @
|
|
331
|
-
* @param
|
|
332
|
-
* @param
|
|
333
|
-
* @param
|
|
334
|
-
* @
|
|
416
|
+
* @en Sync wallet account address and signer without authorization prompt.
|
|
417
|
+
* @zh 同步当前钱包账户地址与 signer(不触发授权弹窗)。
|
|
418
|
+
* @param {() => BrowserProvider} getProvider @en Function to get BrowserProvider. @zh 获取 BrowserProvider 的函数。
|
|
419
|
+
* @param {(signer: JsonRpcSigner) => void} setSigner @en Callback to set signer. @zh 设置 signer 的回调。
|
|
420
|
+
* @param {() => void} markConnected @en Callback to mark connected. @zh 标记已连接的回调。
|
|
421
|
+
* @param {string} [nextAddress] @en Optional account address. @zh 可选指定账户地址。
|
|
422
|
+
* @returns @en `{ address, signer }`. @zh `{ address, signer }`。
|
|
335
423
|
*/
|
|
336
424
|
declare function syncWalletAccountAddress(getProvider: () => BrowserProvider, setSigner: (signer: JsonRpcSigner) => void, markConnected: () => void, nextAddress?: string): Promise<{
|
|
337
425
|
address: string;
|
|
338
426
|
signer: JsonRpcSigner;
|
|
339
427
|
}>;
|
|
340
428
|
/**
|
|
341
|
-
*
|
|
342
|
-
* @
|
|
343
|
-
* @param cache.
|
|
344
|
-
* @param cache.
|
|
345
|
-
* @param cache.
|
|
429
|
+
* @en Clear wallet runtime cache.
|
|
430
|
+
* @zh 清除钱包运行时缓存。
|
|
431
|
+
* @param {ClearWalletRuntimeCache} cache @en Runtime cache object. @zh 运行时缓存对象。
|
|
432
|
+
* @param {MutableRef<BrowserProvider | null>} cache.provider @en BrowserProvider cache ref. @zh BrowserProvider 缓存引用。
|
|
433
|
+
* @param {MutableRef<JsonRpcSigner | null>} cache.signer @en Signer cache ref. @zh Signer 缓存引用。
|
|
434
|
+
* @param {MutableRef<WalletEventProvider | null>} [cache.selectedProvider] @en Optional selected EIP-1193 provider ref. @zh 可选选中的 EIP-1193 provider 引用。
|
|
346
435
|
*/
|
|
347
|
-
declare function clearWalletRuntime(cache:
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
436
|
+
declare function clearWalletRuntime(cache: ClearWalletRuntimeCache): void;
|
|
437
|
+
|
|
438
|
+
/**
|
|
439
|
+
* @en Whether the wallet is connected.
|
|
440
|
+
* @zh 是否已连接钱包。
|
|
441
|
+
* @returns @en `true` if connected. @zh 已连接为 `true`。
|
|
442
|
+
*/
|
|
443
|
+
declare function isWalletConnected(): boolean;
|
|
444
|
+
/**
|
|
445
|
+
* @en Get the connected signer.
|
|
446
|
+
* @zh 获取当前连接的 signer。
|
|
447
|
+
* @returns @en Connected {@link JsonRpcSigner}. @zh 已连接的 {@link JsonRpcSigner}。
|
|
448
|
+
*/
|
|
449
|
+
declare function getWalletSigner(): JsonRpcSigner;
|
|
450
|
+
/**
|
|
451
|
+
* @en Get the connected account address.
|
|
452
|
+
* @zh 获取当前连接账户地址。
|
|
453
|
+
* @returns @en Account address string. @zh 账户地址字符串。
|
|
454
|
+
*/
|
|
455
|
+
declare function getConnectedAddress(): Promise<string>;
|
|
456
|
+
/**
|
|
457
|
+
* @en Get the selected EIP-1193 provider.
|
|
458
|
+
* @zh 获取当前选中的 EIP-1193 provider。
|
|
459
|
+
* @returns @en {@link WalletEventProvider} or `null`. @zh {@link WalletEventProvider} 或 `null`。
|
|
460
|
+
*/
|
|
461
|
+
declare function getSelectedWalletProvider(): WalletEventProvider | null;
|
|
462
|
+
/**
|
|
463
|
+
* @en Get the current BrowserProvider.
|
|
464
|
+
* @zh 获取当前 BrowserProvider。
|
|
465
|
+
* @returns @en `BrowserProvider` or `null`. @zh `BrowserProvider` 或 `null`。
|
|
466
|
+
*/
|
|
467
|
+
declare function getWalletBrowserProvider(): BrowserProvider | null;
|
|
468
|
+
/**
|
|
469
|
+
* @en Bind the wallet provider.
|
|
470
|
+
* @zh 绑定钱包 provider。
|
|
471
|
+
* @param {WalletEventProvider} eip1193 @en Wallet EIP-1193 provider. @zh 钱包 EIP-1193 provider。
|
|
472
|
+
* @returns @en Bound `BrowserProvider`. @zh 绑定后的 `BrowserProvider`。
|
|
473
|
+
*/
|
|
474
|
+
declare function bindWalletProvider(eip1193: WalletEventProvider): BrowserProvider;
|
|
475
|
+
/**
|
|
476
|
+
* @en Sync the wallet provider after chain switch.
|
|
477
|
+
* @zh 切链后同步钱包 provider。
|
|
478
|
+
*/
|
|
479
|
+
declare function syncWalletRuntimeProvider(): void;
|
|
480
|
+
/**
|
|
481
|
+
* @en Connect the wallet; optionally switch to a BSC chain when `chainId` is provided.
|
|
482
|
+
* @zh 连接钱包;传入 `chainId` 时在连接后切换到对应 BSC 链。
|
|
483
|
+
*/
|
|
484
|
+
declare function connectWallet(eip1193: WalletEventProvider, options?: ConnectWalletOptions): Promise<{
|
|
485
|
+
address: string;
|
|
486
|
+
signer: JsonRpcSigner;
|
|
487
|
+
}>;
|
|
488
|
+
/**
|
|
489
|
+
* @en Sync the connected wallet signer.
|
|
490
|
+
* @zh 同步已连接钱包的 signer。
|
|
491
|
+
* @param {string} [nextAddress] @en Optional account address. @zh 可选账户地址。
|
|
492
|
+
* @returns @en `{ address, signer }`. @zh `{ address, signer }`。
|
|
493
|
+
*/
|
|
494
|
+
declare function syncConnectedWalletAccount(nextAddress?: string): Promise<{
|
|
495
|
+
address: string;
|
|
496
|
+
signer: JsonRpcSigner;
|
|
497
|
+
}>;
|
|
498
|
+
/**
|
|
499
|
+
* @en Get authorized accounts from the connected wallet (`eth_accounts`).
|
|
500
|
+
* @zh 获取已连接钱包的授权账户列表(`eth_accounts`)。
|
|
501
|
+
* @returns @en Account address strings. @zh 账户地址列表。
|
|
502
|
+
*/
|
|
503
|
+
declare function getWalletAccounts(): Promise<string[]>;
|
|
504
|
+
/**
|
|
505
|
+
* @en Refresh authorized accounts from the wallet.
|
|
506
|
+
* @zh 向钱包重新请求授权账户;已连接时优先调用 `wallet_requestPermissions` 以弹出 MetaMask / Coinbase 账户选择。
|
|
507
|
+
* @returns @en Account address strings. @zh 账户地址列表。
|
|
508
|
+
*/
|
|
509
|
+
declare function refreshWalletAccounts(): Promise<string[]>;
|
|
510
|
+
/**
|
|
511
|
+
* @en Switch the active signer to another authorized account address.
|
|
512
|
+
* @zh 切换到钱包内另一个已授权账户地址。
|
|
513
|
+
* @param {string} address @en Target account address. @zh 目标账户地址。
|
|
514
|
+
* @returns @en `{ address, signer }`. @zh `{ address, signer }`。
|
|
515
|
+
*/
|
|
516
|
+
declare function switchWalletAccount(address: string): Promise<{
|
|
517
|
+
address: string;
|
|
518
|
+
signer: JsonRpcSigner;
|
|
519
|
+
}>;
|
|
520
|
+
/**
|
|
521
|
+
* @en Disconnect the wallet.
|
|
522
|
+
* @zh 断开钱包连接。
|
|
523
|
+
*/
|
|
524
|
+
declare function disconnectWallet(): void;
|
|
525
|
+
|
|
526
|
+
type SupportedWalletKey = "metamask" | "tronlink" | "coinbase" | "tokenpocket" | "unknown";
|
|
527
|
+
/**
|
|
528
|
+
* @en Resolve wallet key from an injected EIP-1193 provider.
|
|
529
|
+
* @zh 从 injected EIP-1193 provider 解析钱包 key。
|
|
530
|
+
*/
|
|
531
|
+
declare function resolveWalletKey(provider: WalletEventProvider | null | undefined): SupportedWalletKey;
|
|
532
|
+
|
|
533
|
+
type WalletNativeEvent<TPayload = unknown> = {
|
|
534
|
+
name: string;
|
|
535
|
+
payload: TPayload;
|
|
536
|
+
raw: unknown[];
|
|
537
|
+
};
|
|
352
538
|
|
|
353
|
-
type
|
|
539
|
+
type WalletSdkEventMap = {
|
|
354
540
|
accountsChanged: string[];
|
|
355
541
|
chainChanged: string;
|
|
542
|
+
networkSwitched: NetworkSwitchResult;
|
|
356
543
|
};
|
|
357
|
-
type
|
|
358
|
-
type
|
|
544
|
+
type WalletSdkEventName = keyof WalletSdkEventMap;
|
|
545
|
+
type WalletScopedEventListener<K extends WalletSdkEventName = WalletSdkEventName> = (wallet: SupportedWalletKey, event: WalletNativeEvent<WalletSdkEventMap[K]>) => void | Promise<void>;
|
|
546
|
+
/**
|
|
547
|
+
* @en Emit an SDK wallet event (e.g. `networkSwitched`).
|
|
548
|
+
* @zh 触发 SDK 钱包事件(如 `networkSwitched`)。
|
|
549
|
+
*/
|
|
550
|
+
declare function emitWalletEvent<K extends WalletSdkEventName>(sdkEvent: K, wallet: SupportedWalletKey, event: WalletNativeEvent<WalletSdkEventMap[K]>): void;
|
|
359
551
|
/**
|
|
360
|
-
*
|
|
361
|
-
* @
|
|
552
|
+
* @en Set wallet EIP-1193 provider for `walletEvents` listening.
|
|
553
|
+
* @zh 设置当前钱包 EIP-1193 provider,供 `walletEvents` 事件监听使用。
|
|
362
554
|
*/
|
|
363
555
|
declare function setWalletEventProvider(provider: WalletEventProvider | null): void;
|
|
364
556
|
/**
|
|
365
|
-
*
|
|
366
|
-
* @
|
|
367
|
-
* @throws 未调用 `setWalletEventProvider` 时抛错。
|
|
557
|
+
* @en Get the current wallet EIP-1193 provider.
|
|
558
|
+
* @zh 获取当前已设置的钱包 EIP-1193 provider。
|
|
368
559
|
*/
|
|
369
560
|
declare function getWalletEventProvider(): WalletEventProvider;
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
on(event:
|
|
374
|
-
off(event:
|
|
375
|
-
off(event: "chainChanged", listener: WalletProviderEventListener<"chainChanged">): void;
|
|
376
|
-
off(event: WalletProviderEventName, listener?: (...args: any[]) => void | Promise<void>): void;
|
|
561
|
+
/** @en Active wallet key for the bound provider. @zh 当前绑定 provider 的钱包 key。 */
|
|
562
|
+
declare function getActiveWalletKey(): SupportedWalletKey;
|
|
563
|
+
declare class WalletEvents {
|
|
564
|
+
on<K extends WalletSdkEventName>(event: K, listener: WalletScopedEventListener<K>): void;
|
|
565
|
+
off<K extends WalletSdkEventName>(event: K, listener?: WalletScopedEventListener<K>): void;
|
|
377
566
|
clear(): void;
|
|
378
567
|
}
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
568
|
+
declare const walletEvents: WalletEvents;
|
|
569
|
+
|
|
570
|
+
type WalletAccountsSyncResult = {
|
|
571
|
+
action: "synced" | "disconnected" | "ignored";
|
|
572
|
+
address?: string;
|
|
573
|
+
};
|
|
574
|
+
/**
|
|
575
|
+
* @en Apply wallet-specific account sync/disconnect side effects.
|
|
576
|
+
* @zh 按钱包类型应用账户同步/断开副作用。
|
|
577
|
+
*/
|
|
578
|
+
declare function applyWalletAccountsChangedEffect(wallet: SupportedWalletKey, accounts: string[]): Promise<WalletAccountsSyncResult>;
|
|
382
579
|
|
|
383
|
-
/**
|
|
580
|
+
/** @en Whether running in a browser environment. @zh 是否在浏览器环境。 */
|
|
384
581
|
declare const isBrowser: boolean;
|
|
385
582
|
/**
|
|
386
|
-
*
|
|
387
|
-
*
|
|
388
|
-
* @param apiName
|
|
389
|
-
* @throws 非浏览器环境时抛错。
|
|
583
|
+
* @en Assert browser environment; throws if not in browser.
|
|
584
|
+
* @zh 断言当前为浏览器环境;非浏览器时抛错。
|
|
585
|
+
* @param {string} apiName @en API name for error message. @zh 用于错误信息的 API 名称。
|
|
390
586
|
*/
|
|
391
587
|
declare function assertBrowser(apiName: string): void;
|
|
392
588
|
|
|
393
589
|
/**
|
|
394
|
-
*
|
|
395
|
-
* @
|
|
590
|
+
* @en Whether MetaMask is detected (injected or EIP-6963).
|
|
591
|
+
* @zh 是否检测到 MetaMask(injected 或 EIP-6963)。
|
|
592
|
+
* @returns @en `true` if detected. @zh 检测到为 `true`。
|
|
396
593
|
*/
|
|
397
594
|
declare function isEthereumProvider(): boolean;
|
|
398
595
|
/**
|
|
399
|
-
*
|
|
400
|
-
* @
|
|
596
|
+
* @en Whether Coinbase Wallet is detected.
|
|
597
|
+
* @zh 是否检测到 Coinbase Wallet。
|
|
598
|
+
* @returns @en `true` if detected. @zh 检测到为 `true`。
|
|
401
599
|
*/
|
|
402
600
|
declare function isCoinbaseProvider(): boolean;
|
|
403
601
|
/**
|
|
404
|
-
*
|
|
405
|
-
* @
|
|
602
|
+
* @en Whether TokenPocket is detected (injected or EIP-6963).
|
|
603
|
+
* @zh 是否检测到 TokenPocket(injected 或 EIP-6963)。
|
|
604
|
+
* @returns @en `true` if detected. @zh 检测到为 `true`。
|
|
406
605
|
*/
|
|
407
606
|
declare function isTokenPocketProvider(): boolean;
|
|
408
607
|
/**
|
|
409
|
-
*
|
|
410
|
-
* @
|
|
608
|
+
* @en Whether a generic injected Ethereum wallet is detected.
|
|
609
|
+
* @zh 是否检测到通用 injected 以太坊钱包。
|
|
610
|
+
* @returns @en `true` if detected. @zh 检测到为 `true`。
|
|
411
611
|
*/
|
|
412
612
|
declare function isInjectedProvider(): boolean;
|
|
413
613
|
/**
|
|
414
|
-
*
|
|
415
|
-
* @
|
|
614
|
+
* @en Whether TronLink is detected (injected or EIP/TIP-6963).
|
|
615
|
+
* @zh 是否检测到 TronLink(injected 或 EIP/TIP-6963)。
|
|
616
|
+
* @returns @en `true` if detected. @zh 检测到为 `true`。
|
|
416
617
|
*/
|
|
417
618
|
declare function isTronLinkProvider(): boolean;
|
|
418
619
|
|
|
419
620
|
/**
|
|
420
|
-
*
|
|
421
|
-
* @
|
|
422
|
-
* @param options.isMainnet - `true` 使用 BSC 主网,`false` 使用 BSC 测试网。
|
|
423
|
-
* @param options.contract - 业务合约配置(`address` + `abi`)。
|
|
424
|
-
* @returns 完整 SDK 配置 {@link WalletSdkConfig}。
|
|
621
|
+
* @en Initialize SDK and persist config to `globalThis`.
|
|
622
|
+
* @zh 初始化 SDK 并将配置持久化到 `globalThis`。
|
|
425
623
|
*/
|
|
426
624
|
declare function initWalletSdk(options: WalletSdkInitOptions): WalletSdkConfig;
|
|
427
625
|
/**
|
|
428
|
-
*
|
|
429
|
-
* @
|
|
430
|
-
* @throws 未调用 `initWalletSdk` 时抛错。
|
|
626
|
+
* @en Get initialized SDK config.
|
|
627
|
+
* @zh 读取已初始化的 SDK 配置。
|
|
431
628
|
*/
|
|
432
629
|
declare function getWalletSdkConfig(): WalletSdkConfig;
|
|
433
630
|
/**
|
|
434
|
-
*
|
|
435
|
-
* @
|
|
631
|
+
* @en Whether SDK is initialized.
|
|
632
|
+
* @zh 判断 SDK 是否已完成初始化。
|
|
436
633
|
*/
|
|
437
634
|
declare function isWalletSdkInitialized(): boolean;
|
|
438
635
|
/**
|
|
439
|
-
*
|
|
636
|
+
* @en Reset persisted SDK config (mainly for tests or hot reload).
|
|
637
|
+
* @zh 清除已持久化的 SDK 配置与初始化状态。
|
|
440
638
|
*/
|
|
441
639
|
declare function resetWalletSdkConfig(): void;
|
|
442
640
|
|
|
641
|
+
/** @en BSC mainnet configuration. @zh BSC 主网配置。 */
|
|
443
642
|
declare const BSC_NETWORK: {
|
|
444
|
-
chainId:
|
|
643
|
+
chainId: "0x38";
|
|
445
644
|
chainName: string;
|
|
446
645
|
nativeCurrency: {
|
|
447
646
|
name: string;
|
|
@@ -451,8 +650,9 @@ declare const BSC_NETWORK: {
|
|
|
451
650
|
rpcUrls: string[];
|
|
452
651
|
blockExplorerUrls: string[];
|
|
453
652
|
};
|
|
653
|
+
/** @en BSC testnet configuration. @zh BSC 测试网配置。 */
|
|
454
654
|
declare const BSC_TESTNET_NETWORK: {
|
|
455
|
-
chainId:
|
|
655
|
+
chainId: "0x61";
|
|
456
656
|
chainName: string;
|
|
457
657
|
nativeCurrency: {
|
|
458
658
|
name: string;
|
|
@@ -463,37 +663,21 @@ declare const BSC_TESTNET_NETWORK: {
|
|
|
463
663
|
blockExplorerUrls: string[];
|
|
464
664
|
};
|
|
465
665
|
|
|
466
|
-
|
|
467
|
-
declare const USDT_CONTRACT_ADDRESSES: {
|
|
468
|
-
readonly [BSC_NETWORK.chainId]: "0x55d398326f99059fF775485246999027B3197955";
|
|
469
|
-
readonly [BSC_TESTNET_NETWORK.chainId]: "0x66E972502A34A625828C544a1914E8D8cc2A9dE5";
|
|
470
|
-
};
|
|
471
|
-
/**
|
|
472
|
-
* 根据 chainId 解析 BSC USDT 合约地址。
|
|
473
|
-
* @param chainId - 十六进制 chainId,如 `"0x38"` 或 `"0x61"`。
|
|
474
|
-
* @returns USDT 合约地址字符串。
|
|
475
|
-
* @throws 不支持的 chainId 时抛错。
|
|
476
|
-
*/
|
|
477
|
-
declare function resolveUsdtContractAddress(chainId: string): "0x55d398326f99059fF775485246999027B3197955" | "0x66E972502A34A625828C544a1914E8D8cc2A9dE5";
|
|
478
|
-
/**
|
|
479
|
-
* 根据是否主网解析 BSC 链配置。
|
|
480
|
-
* @param isMainnet - `true` 返回 BSC 主网,`false` 返回 BSC 测试网。
|
|
481
|
-
* @returns {@link ChainConfig}。
|
|
482
|
-
*/
|
|
483
|
-
declare function resolveChainByMainnet(isMainnet: boolean): ChainConfig;
|
|
666
|
+
declare const SUPPORTED_BSC_CHAIN_IDS: ["0x38", "0x61"];
|
|
484
667
|
/**
|
|
485
|
-
*
|
|
486
|
-
* @
|
|
487
|
-
* @
|
|
668
|
+
* @en Normalize and validate supported BSC chainId (`0x38` or `0x61`).
|
|
669
|
+
* @zh 校验并规范化为支持的 BSC chainId(主网 `0x38` / 测试网 `0x61`)。
|
|
670
|
+
* @param {string | number} chainId @en Hex or decimal chainId. @zh 十六进制或十进制 chainId。
|
|
671
|
+
* @returns @en {@link SupportedBscChainId}. @zh {@link SupportedBscChainId}。
|
|
488
672
|
*/
|
|
489
|
-
declare function
|
|
673
|
+
declare function normalizeSupportedBscChainId(chainId: string | number): SupportedBscChainId;
|
|
490
674
|
/**
|
|
491
|
-
*
|
|
492
|
-
* @
|
|
493
|
-
* @
|
|
494
|
-
* @
|
|
675
|
+
* @en Resolve BSC chain config by chainId.
|
|
676
|
+
* @zh 根据 chainId 解析 BSC 链配置。
|
|
677
|
+
* @param {SupportedBscChainId} chainId @en Supported BSC chain ID. @zh 支持的 BSC chainId。
|
|
678
|
+
* @returns @en {@link ChainConfig}. @zh {@link ChainConfig}。
|
|
495
679
|
*/
|
|
496
|
-
declare function resolveChainConfig(chainId:
|
|
680
|
+
declare function resolveChainConfig(chainId: SupportedBscChainId): ChainConfig;
|
|
497
681
|
|
|
498
682
|
declare const USDT_CONFIG: {
|
|
499
683
|
readonly symbol: "USDT";
|
|
@@ -541,7 +725,7 @@ declare const USDT_CONFIG: {
|
|
|
541
725
|
stateMutability?: undefined;
|
|
542
726
|
})[];
|
|
543
727
|
};
|
|
544
|
-
/** BSC 上 ERC20 代币统一 decimals
|
|
728
|
+
/** @en Unified ERC20 decimals on BSC (USDT is 18). @zh BSC 上 ERC20 代币统一 decimals(USDT 为 18)。 */
|
|
545
729
|
declare const ERC20_DECIMALS: 18;
|
|
546
730
|
|
|
547
731
|
declare const ERC20_ABI: ({
|
|
@@ -586,4 +770,4 @@ declare const ERC20_ABI: ({
|
|
|
586
770
|
stateMutability?: undefined;
|
|
587
771
|
})[];
|
|
588
772
|
|
|
589
|
-
export { BSC_NETWORK, BSC_TESTNET_NETWORK, type ChainConfig, type ChainNativeCurrency, type
|
|
773
|
+
export { BSC_NETWORK, BSC_TESTNET_NETWORK, type ChainConfig, type ChainNativeCurrency, type ConnectWalletOptions, ERC20_ABI, ERC20_DECIMALS, ERC20_DECIMALS_ABI, type Eip6963ProviderDetail, type Eip6963ProviderInfo, type Erc20BalanceResult, type EthereumRequestParams, type EvmReadProvider, type GetConfiguredReadProviderOptions, type GetContractReadOptions, type InjectedEthereumProvider, type MutableRef, type NetworkSwitchResult, SUPPORTED_BSC_CHAIN_IDS, type SupportedBscChainId, type SupportedWalletKey, USDT_CONFIG, type UsdtInitConfig, Wallet6963Name, Wallet6963Rdns, type WalletAccountsSyncResult, type WalletEventProvider, WalletEvents, type WalletNativeEvent, type WalletScopedEventListener, type WalletSdkConfig, type WalletSdkEventMap, type WalletSdkEventName, type WalletSdkInitOptions, applyWalletAccountsChangedEffect, assertBrowser, bindBrowserProvider, bindWalletProvider, clearJsonRpcReadProviderCache, clearWalletRuntime, connectWallet, connectWalletAccount, createJsonRpcReadProvider, disconnectWallet, discoverWalletProviders, emitWalletEvent, ensureTargetNetwork, findCoinbaseEip6963Provider, findDiscoveredProvider, findMetaMaskEip6963Provider, findTokenPocketEip6963Provider, findTronLinkEip6963Provider, getActiveWalletKey, getAggregatedInjectedProvider, getConfiguredReadProvider, getConnectedAddress, getContractDecimals, getContractPrice, getInjectedEthereumProviders, getReadProviderWithFallback, getSelectedWalletProvider, getSharedBrowserProvider, getWalletAccounts, getWalletBrowserProvider, getWalletEventProvider, getWalletSdkConfig, getWalletSigner, hasAggregatedInjectedProvider, hasCoinbaseEip6963Provider, hasCoinbaseInjectedProvider, hasDeployedContract, hasMetaMaskEip6963Provider, hasMetaMaskInjectedProvider, hasRecoverableAggregatorProvider, hasTokenPocketEip6963Provider, hasTokenPocketInjectedProvider, hasTronLinkEip6963Provider, hasTronLinkInjectedProvider, initWalletSdk, isBrowser, isCoinbaseProvider, isContractDeployed, isEthereumProvider, isInjectedProvider, isTokenPocketProvider, isTronLinkProvider, isWalletConnected, isWalletSdkInitialized, normalizeSupportedBscChainId, readConfiguredUsdtDecimals, readErc20Balance, readErc20Decimals, readUsdtBalance, refreshWalletAccounts, refreshWalletReadProvider, rememberAggregatorProvider, requestWallet, resetWalletSdkConfig, resolveChainConfig, resolveCoinbaseInjectedProvider, resolveMetaMaskInjectedProvider, resolveTokenPocketInjectedProvider, resolveTronLinkInjectedProvider, resolveWalletKey, setWalletEventProvider, setWalletReadProvider, switchToConfiguredNetwork, switchWalletAccount, syncConnectedWalletAccount, syncWalletAccountAddress, syncWalletRuntimeProvider, toChainIdDecimal, walletEvents };
|