@earthworm/wallet-sdk 0.2.1 → 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 +55 -5
- 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 +453 -243
- package/dist/index.js +150 -686
- 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
|
|
|
@@ -20,6 +20,7 @@ type WalletEventProvider = Eip1193Provider & {
|
|
|
20
20
|
type InjectedEthereumProvider = WalletEventProvider & {
|
|
21
21
|
isMetaMask?: boolean;
|
|
22
22
|
isCoinbaseWallet?: boolean;
|
|
23
|
+
isTokenPocket?: boolean;
|
|
23
24
|
isTronLink?: boolean;
|
|
24
25
|
isTronLinkWallet?: boolean;
|
|
25
26
|
providers?: InjectedEthereumProvider[];
|
|
@@ -35,8 +36,10 @@ type ChainNativeCurrency = {
|
|
|
35
36
|
symbol: string;
|
|
36
37
|
decimals: number;
|
|
37
38
|
};
|
|
39
|
+
/** @en Supported BSC chain IDs: mainnet `0x38`, testnet `0x61`. @zh 支持的 BSC chainId:主网 `0x38`、测试网 `0x61`。 */
|
|
40
|
+
type SupportedBscChainId = "0x38" | "0x61";
|
|
38
41
|
type ChainConfig = {
|
|
39
|
-
chainId:
|
|
42
|
+
chainId: SupportedBscChainId;
|
|
40
43
|
chainName: string;
|
|
41
44
|
nativeCurrency: ChainNativeCurrency;
|
|
42
45
|
rpcUrls: string[];
|
|
@@ -52,20 +55,15 @@ type Eip6963ProviderDetail = {
|
|
|
52
55
|
info: Eip6963ProviderInfo;
|
|
53
56
|
provider: Eip1193Provider;
|
|
54
57
|
};
|
|
55
|
-
type
|
|
58
|
+
type UsdtInitConfig = {
|
|
59
|
+
/** @en USDT contract address. @zh USDT 合约地址。 */
|
|
56
60
|
address: string;
|
|
57
|
-
abi: InterfaceAbi;
|
|
58
61
|
};
|
|
59
62
|
type WalletSdkInitOptions = {
|
|
60
|
-
/**
|
|
61
|
-
|
|
62
|
-
contract: ContractConfig;
|
|
63
|
+
/** @en USDT contract address (mainnet or testnet, caller decides). @zh USDT 合约地址(主网/测试网由调用方决定)。 */
|
|
64
|
+
usdt: UsdtInitConfig;
|
|
63
65
|
};
|
|
64
66
|
type WalletSdkConfig = {
|
|
65
|
-
isMainnet: boolean;
|
|
66
|
-
chainId: string;
|
|
67
|
-
chain: ChainConfig;
|
|
68
|
-
contract: ContractConfig;
|
|
69
67
|
usdt: {
|
|
70
68
|
address: string;
|
|
71
69
|
abi: InterfaceAbi;
|
|
@@ -74,348 +72,575 @@ type WalletSdkConfig = {
|
|
|
74
72
|
decimals: number;
|
|
75
73
|
};
|
|
76
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
|
+
};
|
|
77
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
|
+
}
|
|
78
101
|
/**
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
* @param timeoutMs
|
|
82
|
-
* @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} 列表。
|
|
83
106
|
*/
|
|
84
107
|
declare function discoverWalletProviders(timeoutMs?: number): Promise<Eip6963ProviderDetail[]>;
|
|
85
108
|
/**
|
|
86
|
-
*
|
|
87
|
-
* @
|
|
88
|
-
* @
|
|
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`。
|
|
89
113
|
*/
|
|
90
114
|
declare function findDiscoveredProvider(match: (detail: Eip6963ProviderDetail) => boolean): ethers.Eip1193Provider | undefined;
|
|
91
|
-
/**
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
*/
|
|
100
|
-
declare
|
|
101
|
-
/**
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
* 是否通过 EIP-6963 检测到 Coinbase Wallet。
|
|
108
|
-
* @returns 检测到为 `true`,否则 `false`。
|
|
109
|
-
*/
|
|
110
|
-
declare function hasCoinbaseEip6963Provider(): 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;
|
|
111
131
|
|
|
112
132
|
/**
|
|
113
|
-
*
|
|
114
|
-
* @
|
|
115
|
-
* @
|
|
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`。
|
|
116
137
|
*/
|
|
117
138
|
declare function getSharedBrowserProvider(ethereum: Eip1193Provider): BrowserProvider;
|
|
118
139
|
|
|
119
140
|
/**
|
|
120
|
-
*
|
|
121
|
-
* @
|
|
141
|
+
* @en Get all injected Ethereum providers in the browser.
|
|
142
|
+
* @zh 获取浏览器中所有 injected 以太坊 provider。
|
|
143
|
+
* @returns @en Array of {@link InjectedEthereumProvider}. @zh {@link InjectedEthereumProvider} 数组。
|
|
122
144
|
*/
|
|
123
145
|
declare function getInjectedEthereumProviders(): InjectedEthereumProvider[];
|
|
124
146
|
/**
|
|
125
|
-
*
|
|
126
|
-
* @
|
|
147
|
+
* @en Resolve MetaMask injected provider.
|
|
148
|
+
* @zh 解析 MetaMask injected provider。
|
|
149
|
+
* @returns @en MetaMask {@link WalletEventProvider} or `undefined`. @zh MetaMask provider 或 `undefined`。
|
|
127
150
|
*/
|
|
128
151
|
declare function resolveMetaMaskInjectedProvider(): WalletEventProvider | undefined;
|
|
129
152
|
/**
|
|
130
|
-
*
|
|
131
|
-
* @
|
|
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`。
|
|
132
156
|
*/
|
|
133
157
|
declare function resolveCoinbaseInjectedProvider(): WalletEventProvider | undefined;
|
|
134
158
|
/**
|
|
135
|
-
*
|
|
136
|
-
* @
|
|
159
|
+
* @en Resolve TokenPocket injected provider.
|
|
160
|
+
* @zh 解析 TokenPocket injected provider。
|
|
161
|
+
* @returns @en TokenPocket {@link WalletEventProvider} or `undefined`. @zh TokenPocket provider 或 `undefined`。
|
|
162
|
+
*/
|
|
163
|
+
declare function resolveTokenPocketInjectedProvider(): WalletEventProvider | undefined;
|
|
164
|
+
/**
|
|
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`。
|
|
137
174
|
*/
|
|
138
175
|
declare function hasMetaMaskInjectedProvider(): boolean;
|
|
139
176
|
/**
|
|
140
|
-
*
|
|
141
|
-
* @
|
|
177
|
+
* @en Whether Coinbase Wallet is detected.
|
|
178
|
+
* @zh 是否检测到 Coinbase Wallet。
|
|
179
|
+
* @returns @en `true` if detected. @zh 检测到为 `true`。
|
|
142
180
|
*/
|
|
143
181
|
declare function hasCoinbaseInjectedProvider(): boolean;
|
|
144
182
|
/**
|
|
145
|
-
*
|
|
146
|
-
*
|
|
183
|
+
* @en Whether TokenPocket is detected.
|
|
184
|
+
* @zh 是否检测到 TokenPocket。
|
|
185
|
+
* @returns @en `true` if detected. @zh 检测到为 `true`。
|
|
186
|
+
*/
|
|
187
|
+
declare function hasTokenPocketInjectedProvider(): boolean;
|
|
188
|
+
/**
|
|
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。
|
|
147
197
|
*/
|
|
148
198
|
declare function rememberAggregatorProvider(): void;
|
|
149
199
|
/**
|
|
150
|
-
*
|
|
151
|
-
* @
|
|
200
|
+
* @en Whether a recoverable multi-wallet aggregator provider exists.
|
|
201
|
+
* @zh 是否存在可恢复的多钱包聚合 provider。
|
|
202
|
+
* @returns @en `true` if exists. @zh 存在为 `true`。
|
|
152
203
|
*/
|
|
153
204
|
declare function hasRecoverableAggregatorProvider(): boolean;
|
|
154
205
|
/**
|
|
155
|
-
*
|
|
156
|
-
* @
|
|
206
|
+
* @en Get aggregated injected provider.
|
|
207
|
+
* @zh 获取聚合 injected provider。
|
|
208
|
+
* @returns @en {@link InjectedEthereumProvider} or `undefined`. @zh provider 或 `undefined`。
|
|
157
209
|
*/
|
|
158
210
|
declare function getAggregatedInjectedProvider(): WalletEventProvider | undefined;
|
|
159
211
|
/**
|
|
160
|
-
*
|
|
161
|
-
* @
|
|
212
|
+
* @en Whether an aggregated injected Ethereum provider is available.
|
|
213
|
+
* @zh 是否存在可用的聚合 injected 以太坊 provider。
|
|
214
|
+
* @returns @en `true` if available. @zh 存在为 `true`。
|
|
162
215
|
*/
|
|
163
216
|
declare function hasAggregatedInjectedProvider(): boolean;
|
|
164
217
|
|
|
165
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
|
+
};
|
|
166
224
|
/**
|
|
167
|
-
*
|
|
168
|
-
* @
|
|
169
|
-
* @param
|
|
170
|
-
* @
|
|
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`。
|
|
171
230
|
*/
|
|
172
231
|
declare function hasDeployedContract(readProvider: EvmReadProvider, address: string): Promise<boolean>;
|
|
173
232
|
/**
|
|
174
|
-
*
|
|
175
|
-
* @
|
|
176
|
-
* @param
|
|
177
|
-
* @param
|
|
178
|
-
* @param
|
|
179
|
-
* @
|
|
180
|
-
* @
|
|
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 数值。
|
|
181
240
|
*/
|
|
182
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>;
|
|
252
|
+
|
|
253
|
+
/**
|
|
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;
|
|
183
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
|
+
};
|
|
184
291
|
/**
|
|
185
|
-
*
|
|
186
|
-
* @
|
|
187
|
-
* @property
|
|
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 的合约方法名。
|
|
188
296
|
*/
|
|
189
297
|
type GetContractReadOptions = {
|
|
190
298
|
abi: InterfaceAbi;
|
|
191
299
|
method: string;
|
|
192
300
|
};
|
|
193
301
|
/**
|
|
194
|
-
*
|
|
195
|
-
*
|
|
196
|
-
* @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` 则清除。
|
|
197
305
|
*/
|
|
198
306
|
declare function setWalletReadProvider(provider: BrowserProvider | null): void;
|
|
199
307
|
/**
|
|
200
|
-
*
|
|
201
|
-
*
|
|
202
|
-
* @
|
|
203
|
-
* @throws 未初始化 SDK,或 RPC 配置缺失时抛错。
|
|
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。
|
|
204
311
|
*/
|
|
205
|
-
declare function
|
|
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。
|
|
317
|
+
*/
|
|
318
|
+
declare function getConfiguredReadProvider(options?: GetConfiguredReadProviderOptions): EvmReadProvider;
|
|
206
319
|
/**
|
|
207
|
-
*
|
|
208
|
-
* @
|
|
209
|
-
* @
|
|
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`。
|
|
210
324
|
*/
|
|
211
325
|
declare function isContractDeployed(contractAddress: string): Promise<boolean>;
|
|
212
326
|
/**
|
|
213
|
-
*
|
|
214
|
-
* @
|
|
215
|
-
* @param
|
|
216
|
-
* @param options
|
|
217
|
-
* @
|
|
218
|
-
* @returns token decimals 数值,如 `18`。
|
|
219
|
-
* @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 数值。
|
|
220
332
|
*/
|
|
221
333
|
declare function getContractDecimals(contractAddress: string, options: GetContractReadOptions): Promise<number>;
|
|
222
334
|
/**
|
|
223
|
-
*
|
|
224
|
-
*
|
|
225
|
-
* @param contractAddress
|
|
226
|
-
* @param options
|
|
227
|
-
* @
|
|
228
|
-
* @param options.method - 价格读方法名,如 `"getPrice"`。
|
|
229
|
-
* @returns 格式化后的价格字符串(ethers `formatUnits` 结果)。
|
|
230
|
-
* @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 格式化后的价格字符串。
|
|
231
340
|
*/
|
|
232
341
|
declare function getContractPrice(contractAddress: string, options: GetContractReadOptions): Promise<string>;
|
|
233
|
-
|
|
234
342
|
/**
|
|
235
|
-
*
|
|
236
|
-
* @
|
|
237
|
-
* @
|
|
238
|
-
* @param options.getCurrentChainId - 获取当前 chainId 的异步函数(通常 `eth_chainId`)。
|
|
239
|
-
* @param options.switchChain - 切换链的异步函数(通常 `wallet_switchEthereumChain`)。
|
|
240
|
-
* @param options.addChain - 添加链的异步函数(通常 `wallet_addEthereumChain`);参数为 {@link ChainConfig} 兼容对象。
|
|
241
|
-
* @param options.chainParams - 传给 `addChain` 的链参数,可直接使用 `getWalletSdkConfig().chain`。
|
|
242
|
-
* @returns 已在目标链上或切链成功时 resolve;非 4902 错误会向上抛出。
|
|
343
|
+
* @en Read configured USDT decimals from `initWalletSdk`.
|
|
344
|
+
* @zh 读取 `initWalletSdk` 配置的 USDT decimals。
|
|
345
|
+
* @returns @en USDT decimals. @zh USDT decimals 数值。
|
|
243
346
|
*/
|
|
244
|
-
declare function
|
|
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}。
|
|
353
|
+
*/
|
|
354
|
+
declare function readUsdtBalance(accountAddress: string, chainId?: SupportedBscChainId): Promise<Erc20BalanceResult>;
|
|
355
|
+
|
|
356
|
+
type EnsureTargetNetworkOptions = {
|
|
245
357
|
targetChainId: string;
|
|
246
358
|
getCurrentChainId: () => Promise<string>;
|
|
247
359
|
switchChain: (chainId: string) => Promise<unknown>;
|
|
248
360
|
addChain: (chainParams: Record<string, unknown>) => Promise<unknown>;
|
|
249
361
|
chainParams: Record<string, unknown>;
|
|
250
|
-
}
|
|
251
|
-
|
|
362
|
+
};
|
|
252
363
|
/**
|
|
253
|
-
*
|
|
254
|
-
* @
|
|
255
|
-
* @param
|
|
256
|
-
* @param
|
|
257
|
-
* @
|
|
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 的链参数。
|
|
258
372
|
*/
|
|
259
|
-
declare function
|
|
260
|
-
current: JsonRpcProvider | null;
|
|
261
|
-
}): JsonRpcProvider;
|
|
373
|
+
declare function ensureTargetNetwork(options: EnsureTargetNetworkOptions): Promise<void>;
|
|
262
374
|
/**
|
|
263
|
-
*
|
|
264
|
-
* @
|
|
265
|
-
* @param rpcConfig - RPC 配置。
|
|
266
|
-
* @param rpcConfig.rpcUrls - RPC 节点 URL 列表,取第一个作为 fallback。
|
|
267
|
-
* @param rpcConfig.chainId - 十六进制 chainId,如 `"0x38"`。
|
|
268
|
-
* @param fallbackCache - 可选 JsonRpc provider 缓存。
|
|
269
|
-
* @returns ethers `BrowserProvider` 或 `JsonRpcProvider`。
|
|
270
|
-
* @throws `rpcUrls[0]` 或 `chainId` 缺失时抛错。
|
|
375
|
+
* @en Switch wallet to specified BSC chain (`0x38` or `0x61`).
|
|
376
|
+
* @zh 将钱包切换到指定 BSC 链(主网 `0x38` / 测试网 `0x61`)。
|
|
271
377
|
*/
|
|
272
|
-
declare function
|
|
273
|
-
rpcUrls: string[];
|
|
274
|
-
chainId: string;
|
|
275
|
-
}, fallbackCache?: {
|
|
276
|
-
current: JsonRpcProvider | null;
|
|
277
|
-
}): EvmReadProvider;
|
|
378
|
+
declare function switchToConfiguredNetwork(chainId: SupportedBscChainId): Promise<NetworkSwitchResult>;
|
|
278
379
|
|
|
279
380
|
/**
|
|
280
|
-
*
|
|
281
|
-
* @
|
|
282
|
-
* @param
|
|
283
|
-
* @
|
|
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`。
|
|
284
386
|
*/
|
|
285
387
|
declare function bindBrowserProvider(eip1193: WalletEventProvider, cache: MutableRef<BrowserProvider | null>): BrowserProvider;
|
|
286
388
|
/**
|
|
287
|
-
*
|
|
288
|
-
* @
|
|
289
|
-
* @param
|
|
290
|
-
* @param
|
|
291
|
-
* @
|
|
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 原始返回值。
|
|
292
395
|
*/
|
|
293
396
|
declare function requestWallet(eip1193: WalletEventProvider, method: string, params?: EthereumRequestParams): Promise<any>;
|
|
294
397
|
/**
|
|
295
|
-
*
|
|
296
|
-
* @
|
|
297
|
-
* @param
|
|
298
|
-
* @param
|
|
299
|
-
* @param
|
|
300
|
-
* @
|
|
301
|
-
* @
|
|
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 }`。
|
|
302
405
|
*/
|
|
303
406
|
declare function connectWalletAccount(requestAccounts: () => Promise<unknown>, getProvider: () => BrowserProvider, setSigner: (signer: JsonRpcSigner) => void, markConnected: () => void): Promise<{
|
|
304
407
|
address: string;
|
|
305
408
|
signer: JsonRpcSigner;
|
|
306
409
|
}>;
|
|
410
|
+
type ClearWalletRuntimeCache = {
|
|
411
|
+
provider: MutableRef<BrowserProvider | null>;
|
|
412
|
+
signer: MutableRef<JsonRpcSigner | null>;
|
|
413
|
+
selectedProvider?: MutableRef<WalletEventProvider | null>;
|
|
414
|
+
};
|
|
307
415
|
/**
|
|
308
|
-
*
|
|
309
|
-
* @
|
|
310
|
-
* @param
|
|
311
|
-
* @param
|
|
312
|
-
* @param
|
|
313
|
-
* @
|
|
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 }`。
|
|
314
423
|
*/
|
|
315
424
|
declare function syncWalletAccountAddress(getProvider: () => BrowserProvider, setSigner: (signer: JsonRpcSigner) => void, markConnected: () => void, nextAddress?: string): Promise<{
|
|
316
425
|
address: string;
|
|
317
426
|
signer: JsonRpcSigner;
|
|
318
427
|
}>;
|
|
319
428
|
/**
|
|
320
|
-
*
|
|
321
|
-
* @
|
|
322
|
-
* @param cache.
|
|
323
|
-
* @param cache.
|
|
324
|
-
* @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 引用。
|
|
325
435
|
*/
|
|
326
|
-
declare function clearWalletRuntime(cache:
|
|
327
|
-
provider: MutableRef<BrowserProvider | null>;
|
|
328
|
-
signer: MutableRef<JsonRpcSigner | null>;
|
|
329
|
-
selectedProvider?: MutableRef<WalletEventProvider | null>;
|
|
330
|
-
}): void;
|
|
436
|
+
declare function clearWalletRuntime(cache: ClearWalletRuntimeCache): void;
|
|
331
437
|
|
|
332
|
-
|
|
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
|
+
};
|
|
538
|
+
|
|
539
|
+
type WalletSdkEventMap = {
|
|
333
540
|
accountsChanged: string[];
|
|
334
541
|
chainChanged: string;
|
|
542
|
+
networkSwitched: NetworkSwitchResult;
|
|
335
543
|
};
|
|
336
|
-
type
|
|
337
|
-
type
|
|
544
|
+
type WalletSdkEventName = keyof WalletSdkEventMap;
|
|
545
|
+
type WalletScopedEventListener<K extends WalletSdkEventName = WalletSdkEventName> = (wallet: SupportedWalletKey, event: WalletNativeEvent<WalletSdkEventMap[K]>) => void | Promise<void>;
|
|
338
546
|
/**
|
|
339
|
-
*
|
|
340
|
-
* @
|
|
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;
|
|
551
|
+
/**
|
|
552
|
+
* @en Set wallet EIP-1193 provider for `walletEvents` listening.
|
|
553
|
+
* @zh 设置当前钱包 EIP-1193 provider,供 `walletEvents` 事件监听使用。
|
|
341
554
|
*/
|
|
342
555
|
declare function setWalletEventProvider(provider: WalletEventProvider | null): void;
|
|
343
556
|
/**
|
|
344
|
-
*
|
|
345
|
-
* @
|
|
346
|
-
* @throws 未调用 `setWalletEventProvider` 时抛错。
|
|
557
|
+
* @en Get the current wallet EIP-1193 provider.
|
|
558
|
+
* @zh 获取当前已设置的钱包 EIP-1193 provider。
|
|
347
559
|
*/
|
|
348
560
|
declare function getWalletEventProvider(): WalletEventProvider;
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
on(event:
|
|
353
|
-
off(event:
|
|
354
|
-
off(event: "chainChanged", listener: WalletProviderEventListener<"chainChanged">): void;
|
|
355
|
-
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;
|
|
356
566
|
clear(): void;
|
|
357
567
|
}
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
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>;
|
|
361
579
|
|
|
362
|
-
/**
|
|
580
|
+
/** @en Whether running in a browser environment. @zh 是否在浏览器环境。 */
|
|
363
581
|
declare const isBrowser: boolean;
|
|
364
582
|
/**
|
|
365
|
-
*
|
|
366
|
-
*
|
|
367
|
-
* @param apiName
|
|
368
|
-
* @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 名称。
|
|
369
586
|
*/
|
|
370
587
|
declare function assertBrowser(apiName: string): void;
|
|
371
588
|
|
|
372
589
|
/**
|
|
373
|
-
*
|
|
374
|
-
* @
|
|
590
|
+
* @en Whether MetaMask is detected (injected or EIP-6963).
|
|
591
|
+
* @zh 是否检测到 MetaMask(injected 或 EIP-6963)。
|
|
592
|
+
* @returns @en `true` if detected. @zh 检测到为 `true`。
|
|
375
593
|
*/
|
|
376
594
|
declare function isEthereumProvider(): boolean;
|
|
377
595
|
/**
|
|
378
|
-
*
|
|
379
|
-
* @
|
|
596
|
+
* @en Whether Coinbase Wallet is detected.
|
|
597
|
+
* @zh 是否检测到 Coinbase Wallet。
|
|
598
|
+
* @returns @en `true` if detected. @zh 检测到为 `true`。
|
|
380
599
|
*/
|
|
381
600
|
declare function isCoinbaseProvider(): boolean;
|
|
382
601
|
/**
|
|
383
|
-
*
|
|
384
|
-
* @
|
|
602
|
+
* @en Whether TokenPocket is detected (injected or EIP-6963).
|
|
603
|
+
* @zh 是否检测到 TokenPocket(injected 或 EIP-6963)。
|
|
604
|
+
* @returns @en `true` if detected. @zh 检测到为 `true`。
|
|
605
|
+
*/
|
|
606
|
+
declare function isTokenPocketProvider(): boolean;
|
|
607
|
+
/**
|
|
608
|
+
* @en Whether a generic injected Ethereum wallet is detected.
|
|
609
|
+
* @zh 是否检测到通用 injected 以太坊钱包。
|
|
610
|
+
* @returns @en `true` if detected. @zh 检测到为 `true`。
|
|
385
611
|
*/
|
|
386
612
|
declare function isInjectedProvider(): boolean;
|
|
387
613
|
/**
|
|
388
|
-
*
|
|
389
|
-
* @
|
|
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`。
|
|
390
617
|
*/
|
|
391
618
|
declare function isTronLinkProvider(): boolean;
|
|
392
619
|
|
|
393
620
|
/**
|
|
394
|
-
*
|
|
395
|
-
* @
|
|
396
|
-
* @param options.isMainnet - `true` 使用 BSC 主网,`false` 使用 BSC 测试网。
|
|
397
|
-
* @param options.contract - 业务合约配置(`address` + `abi`)。
|
|
398
|
-
* @returns 完整 SDK 配置 {@link WalletSdkConfig}。
|
|
621
|
+
* @en Initialize SDK and persist config to `globalThis`.
|
|
622
|
+
* @zh 初始化 SDK 并将配置持久化到 `globalThis`。
|
|
399
623
|
*/
|
|
400
624
|
declare function initWalletSdk(options: WalletSdkInitOptions): WalletSdkConfig;
|
|
401
625
|
/**
|
|
402
|
-
*
|
|
403
|
-
* @
|
|
404
|
-
* @throws 未调用 `initWalletSdk` 时抛错。
|
|
626
|
+
* @en Get initialized SDK config.
|
|
627
|
+
* @zh 读取已初始化的 SDK 配置。
|
|
405
628
|
*/
|
|
406
629
|
declare function getWalletSdkConfig(): WalletSdkConfig;
|
|
407
630
|
/**
|
|
408
|
-
*
|
|
409
|
-
* @
|
|
631
|
+
* @en Whether SDK is initialized.
|
|
632
|
+
* @zh 判断 SDK 是否已完成初始化。
|
|
410
633
|
*/
|
|
411
634
|
declare function isWalletSdkInitialized(): boolean;
|
|
412
635
|
/**
|
|
413
|
-
*
|
|
636
|
+
* @en Reset persisted SDK config (mainly for tests or hot reload).
|
|
637
|
+
* @zh 清除已持久化的 SDK 配置与初始化状态。
|
|
414
638
|
*/
|
|
415
639
|
declare function resetWalletSdkConfig(): void;
|
|
416
640
|
|
|
641
|
+
/** @en BSC mainnet configuration. @zh BSC 主网配置。 */
|
|
417
642
|
declare const BSC_NETWORK: {
|
|
418
|
-
chainId:
|
|
643
|
+
chainId: "0x38";
|
|
419
644
|
chainName: string;
|
|
420
645
|
nativeCurrency: {
|
|
421
646
|
name: string;
|
|
@@ -425,8 +650,9 @@ declare const BSC_NETWORK: {
|
|
|
425
650
|
rpcUrls: string[];
|
|
426
651
|
blockExplorerUrls: string[];
|
|
427
652
|
};
|
|
653
|
+
/** @en BSC testnet configuration. @zh BSC 测试网配置。 */
|
|
428
654
|
declare const BSC_TESTNET_NETWORK: {
|
|
429
|
-
chainId:
|
|
655
|
+
chainId: "0x61";
|
|
430
656
|
chainName: string;
|
|
431
657
|
nativeCurrency: {
|
|
432
658
|
name: string;
|
|
@@ -437,37 +663,21 @@ declare const BSC_TESTNET_NETWORK: {
|
|
|
437
663
|
blockExplorerUrls: string[];
|
|
438
664
|
};
|
|
439
665
|
|
|
440
|
-
|
|
441
|
-
declare const USDT_CONTRACT_ADDRESSES: {
|
|
442
|
-
readonly [BSC_NETWORK.chainId]: "0x55d398326f99059fF775485246999027B3197955";
|
|
443
|
-
readonly [BSC_TESTNET_NETWORK.chainId]: "0x66E972502A34A625828C544a1914E8D8cc2A9dE5";
|
|
444
|
-
};
|
|
445
|
-
/**
|
|
446
|
-
* 根据 chainId 解析 BSC USDT 合约地址。
|
|
447
|
-
* @param chainId - 十六进制 chainId,如 `"0x38"` 或 `"0x61"`。
|
|
448
|
-
* @returns USDT 合约地址字符串。
|
|
449
|
-
* @throws 不支持的 chainId 时抛错。
|
|
450
|
-
*/
|
|
451
|
-
declare function resolveUsdtContractAddress(chainId: string): "0x55d398326f99059fF775485246999027B3197955" | "0x66E972502A34A625828C544a1914E8D8cc2A9dE5";
|
|
452
|
-
/**
|
|
453
|
-
* 根据是否主网解析 BSC 链配置。
|
|
454
|
-
* @param isMainnet - `true` 返回 BSC 主网,`false` 返回 BSC 测试网。
|
|
455
|
-
* @returns {@link ChainConfig}。
|
|
456
|
-
*/
|
|
457
|
-
declare function resolveChainByMainnet(isMainnet: boolean): ChainConfig;
|
|
666
|
+
declare const SUPPORTED_BSC_CHAIN_IDS: ["0x38", "0x61"];
|
|
458
667
|
/**
|
|
459
|
-
*
|
|
460
|
-
* @
|
|
461
|
-
* @
|
|
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}。
|
|
462
672
|
*/
|
|
463
|
-
declare function
|
|
673
|
+
declare function normalizeSupportedBscChainId(chainId: string | number): SupportedBscChainId;
|
|
464
674
|
/**
|
|
465
|
-
*
|
|
466
|
-
* @
|
|
467
|
-
* @
|
|
468
|
-
* @
|
|
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}。
|
|
469
679
|
*/
|
|
470
|
-
declare function resolveChainConfig(chainId:
|
|
680
|
+
declare function resolveChainConfig(chainId: SupportedBscChainId): ChainConfig;
|
|
471
681
|
|
|
472
682
|
declare const USDT_CONFIG: {
|
|
473
683
|
readonly symbol: "USDT";
|
|
@@ -515,7 +725,7 @@ declare const USDT_CONFIG: {
|
|
|
515
725
|
stateMutability?: undefined;
|
|
516
726
|
})[];
|
|
517
727
|
};
|
|
518
|
-
/** BSC 上 ERC20 代币统一 decimals
|
|
728
|
+
/** @en Unified ERC20 decimals on BSC (USDT is 18). @zh BSC 上 ERC20 代币统一 decimals(USDT 为 18)。 */
|
|
519
729
|
declare const ERC20_DECIMALS: 18;
|
|
520
730
|
|
|
521
731
|
declare const ERC20_ABI: ({
|
|
@@ -560,4 +770,4 @@ declare const ERC20_ABI: ({
|
|
|
560
770
|
stateMutability?: undefined;
|
|
561
771
|
})[];
|
|
562
772
|
|
|
563
|
-
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 };
|