@wangjinbao/wallet-connect 0.1.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/README.md +187 -0
- package/dist/cjs/index.js +11 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/styles.css +3 -0
- package/dist/cjs/types/components/AccountModal.d.ts +6 -0
- package/dist/cjs/types/components/AccountModal.d.ts.map +1 -0
- package/dist/cjs/types/components/ChainSwitcher.d.ts +6 -0
- package/dist/cjs/types/components/ChainSwitcher.d.ts.map +1 -0
- package/dist/cjs/types/components/ConnectButton.d.ts +2 -0
- package/dist/cjs/types/components/ConnectButton.d.ts.map +1 -0
- package/dist/cjs/types/components/WalletModal.d.ts +6 -0
- package/dist/cjs/types/components/WalletModal.d.ts.map +1 -0
- package/dist/cjs/types/components/WalletProvider.d.ts +13 -0
- package/dist/cjs/types/components/WalletProvider.d.ts.map +1 -0
- package/dist/cjs/types/context/WalletContext.d.ts +7 -0
- package/dist/cjs/types/context/WalletContext.d.ts.map +1 -0
- package/dist/cjs/types/hooks/useWallet.d.ts +6 -0
- package/dist/cjs/types/hooks/useWallet.d.ts.map +1 -0
- package/dist/cjs/types/index.d.ts +9 -0
- package/dist/cjs/types/index.d.ts.map +1 -0
- package/dist/cjs/types/types/index.d.ts +2 -0
- package/dist/cjs/types/types/index.d.ts.map +1 -0
- package/dist/cjs/types/types/wallet.d.ts +89 -0
- package/dist/cjs/types/types/wallet.d.ts.map +1 -0
- package/dist/cjs/types/utils/chains.d.ts +26 -0
- package/dist/cjs/types/utils/chains.d.ts.map +1 -0
- package/dist/cjs/types/utils/errors.d.ts +30 -0
- package/dist/cjs/types/utils/errors.d.ts.map +1 -0
- package/dist/cjs/types/utils/format.d.ts +9 -0
- package/dist/cjs/types/utils/format.d.ts.map +1 -0
- package/dist/cjs/types/wallets/BaseWallet.d.ts +86 -0
- package/dist/cjs/types/wallets/BaseWallet.d.ts.map +1 -0
- package/dist/cjs/types/wallets/CoinbaseWallet.d.ts +16 -0
- package/dist/cjs/types/wallets/CoinbaseWallet.d.ts.map +1 -0
- package/dist/cjs/types/wallets/MetaMaskWallet.d.ts +16 -0
- package/dist/cjs/types/wallets/MetaMaskWallet.d.ts.map +1 -0
- package/dist/cjs/types/wallets/OKXWallet.d.ts +16 -0
- package/dist/cjs/types/wallets/OKXWallet.d.ts.map +1 -0
- package/dist/cjs/types/wallets/PhantomWallet.d.ts +20 -0
- package/dist/cjs/types/wallets/PhantomWallet.d.ts.map +1 -0
- package/dist/cjs/types/wallets/index.d.ts +15 -0
- package/dist/cjs/types/wallets/index.d.ts.map +1 -0
- package/dist/esm/index.js +11 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/styles.css +3 -0
- package/dist/esm/types/components/AccountModal.d.ts +6 -0
- package/dist/esm/types/components/AccountModal.d.ts.map +1 -0
- package/dist/esm/types/components/ChainSwitcher.d.ts +6 -0
- package/dist/esm/types/components/ChainSwitcher.d.ts.map +1 -0
- package/dist/esm/types/components/ConnectButton.d.ts +2 -0
- package/dist/esm/types/components/ConnectButton.d.ts.map +1 -0
- package/dist/esm/types/components/WalletModal.d.ts +6 -0
- package/dist/esm/types/components/WalletModal.d.ts.map +1 -0
- package/dist/esm/types/components/WalletProvider.d.ts +13 -0
- package/dist/esm/types/components/WalletProvider.d.ts.map +1 -0
- package/dist/esm/types/context/WalletContext.d.ts +7 -0
- package/dist/esm/types/context/WalletContext.d.ts.map +1 -0
- package/dist/esm/types/hooks/useWallet.d.ts +6 -0
- package/dist/esm/types/hooks/useWallet.d.ts.map +1 -0
- package/dist/esm/types/index.d.ts +9 -0
- package/dist/esm/types/index.d.ts.map +1 -0
- package/dist/esm/types/types/index.d.ts +2 -0
- package/dist/esm/types/types/index.d.ts.map +1 -0
- package/dist/esm/types/types/wallet.d.ts +89 -0
- package/dist/esm/types/types/wallet.d.ts.map +1 -0
- package/dist/esm/types/utils/chains.d.ts +26 -0
- package/dist/esm/types/utils/chains.d.ts.map +1 -0
- package/dist/esm/types/utils/errors.d.ts +30 -0
- package/dist/esm/types/utils/errors.d.ts.map +1 -0
- package/dist/esm/types/utils/format.d.ts +9 -0
- package/dist/esm/types/utils/format.d.ts.map +1 -0
- package/dist/esm/types/wallets/BaseWallet.d.ts +86 -0
- package/dist/esm/types/wallets/BaseWallet.d.ts.map +1 -0
- package/dist/esm/types/wallets/CoinbaseWallet.d.ts +16 -0
- package/dist/esm/types/wallets/CoinbaseWallet.d.ts.map +1 -0
- package/dist/esm/types/wallets/MetaMaskWallet.d.ts +16 -0
- package/dist/esm/types/wallets/MetaMaskWallet.d.ts.map +1 -0
- package/dist/esm/types/wallets/OKXWallet.d.ts +16 -0
- package/dist/esm/types/wallets/OKXWallet.d.ts.map +1 -0
- package/dist/esm/types/wallets/PhantomWallet.d.ts +20 -0
- package/dist/esm/types/wallets/PhantomWallet.d.ts.map +1 -0
- package/dist/esm/types/wallets/index.d.ts +15 -0
- package/dist/esm/types/wallets/index.d.ts.map +1 -0
- package/dist/types/index.d.ts +273 -0
- package/package.json +72 -0
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 基于 EIP-1193 的以太坊提供者接口
|
|
3
|
+
*/
|
|
4
|
+
export interface EthereumProvider {
|
|
5
|
+
request(args: RequestArguments): Promise<unknown>;
|
|
6
|
+
on(event: string, listener: (...args: unknown[]) => void): void;
|
|
7
|
+
removeListener(event: string, listener: (...args: unknown[]) => void): void;
|
|
8
|
+
isMetaMask?: boolean;
|
|
9
|
+
isOkxWallet?: boolean;
|
|
10
|
+
isCoinbaseWallet?: boolean;
|
|
11
|
+
isPhantom?: boolean;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* JSON-RPC 调用请求参数
|
|
15
|
+
*/
|
|
16
|
+
export interface RequestArguments {
|
|
17
|
+
method: string;
|
|
18
|
+
params?: unknown[] | Record<string, unknown>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* 链配置
|
|
22
|
+
*/
|
|
23
|
+
export interface Chain {
|
|
24
|
+
chainId: string;
|
|
25
|
+
chainName: string;
|
|
26
|
+
nativeCurrency: {
|
|
27
|
+
name: string;
|
|
28
|
+
symbol: string;
|
|
29
|
+
decimals: number;
|
|
30
|
+
};
|
|
31
|
+
rpcUrls: string[];
|
|
32
|
+
blockExplorerUrls?: string[];
|
|
33
|
+
iconUrls?: string[];
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* 钱包信息
|
|
37
|
+
*/
|
|
38
|
+
export interface WalletInfo {
|
|
39
|
+
id: string;
|
|
40
|
+
name: string;
|
|
41
|
+
icon?: string;
|
|
42
|
+
downloadUrl?: string;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* 钱包连接状态
|
|
46
|
+
*/
|
|
47
|
+
export interface WalletState {
|
|
48
|
+
isConnected: boolean;
|
|
49
|
+
account: string | null;
|
|
50
|
+
chainId: string | null;
|
|
51
|
+
balance: string | null;
|
|
52
|
+
wallet: WalletInfo | null;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* 钱包事件类型
|
|
56
|
+
*/
|
|
57
|
+
export type WalletEventType = "accountsChanged" | "chainChanged" | "connect" | "disconnect";
|
|
58
|
+
/**
|
|
59
|
+
* 事件监听器类型
|
|
60
|
+
*/
|
|
61
|
+
export type WalletEventListener = (data: unknown) => void;
|
|
62
|
+
/**
|
|
63
|
+
* 钱包错误类型
|
|
64
|
+
*/
|
|
65
|
+
export declare class WalletError extends Error {
|
|
66
|
+
code: number;
|
|
67
|
+
data?: unknown;
|
|
68
|
+
constructor(message: string, code: number, data?: unknown);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* 钱包提供者上下文值
|
|
72
|
+
*/
|
|
73
|
+
export interface WalletContextValue {
|
|
74
|
+
state: WalletState;
|
|
75
|
+
connect: (walletId: string) => Promise<void>;
|
|
76
|
+
disconnect: () => Promise<void>;
|
|
77
|
+
switchChain: (chainId: string) => Promise<void>;
|
|
78
|
+
availableWallets: WalletInfo[];
|
|
79
|
+
supportedChains: Chain[];
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* 钱包提供者配置
|
|
83
|
+
*/
|
|
84
|
+
export interface WalletProviderConfig {
|
|
85
|
+
chains: Chain[];
|
|
86
|
+
autoConnect?: boolean;
|
|
87
|
+
appName?: string;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=wallet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../../src/types/wallet.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IAChE,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IAC5E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE;QACd,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB,iBAAiB,GACjB,cAAc,GACd,SAAS,GACT,YAAY,CAAC;AAEjB;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;AAE1D;;GAEG;AACH,qBAAa,WAAY,SAAQ,KAAK;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;gBAEH,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO;CAM1D;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,WAAW,CAAC;IACnB,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,gBAAgB,EAAE,UAAU,EAAE,CAAC;IAC/B,eAAe,EAAE,KAAK,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Chain } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* 以太坊主网
|
|
4
|
+
*/
|
|
5
|
+
export declare const mainnet: Chain;
|
|
6
|
+
/**
|
|
7
|
+
* Sepolia 测试网
|
|
8
|
+
*/
|
|
9
|
+
export declare const sepolia: Chain;
|
|
10
|
+
/**
|
|
11
|
+
* 默认链列表
|
|
12
|
+
*/
|
|
13
|
+
export declare const defaultChains: Chain[];
|
|
14
|
+
/**
|
|
15
|
+
* 根据 chainId 获取链配置
|
|
16
|
+
*/
|
|
17
|
+
export declare function getChainById(chainId: string, chains: Chain[]): Chain | undefined;
|
|
18
|
+
/**
|
|
19
|
+
* 将 chainId 格式化为十六进制字符串
|
|
20
|
+
*/
|
|
21
|
+
export declare function formatChainId(chainId: number | string): string;
|
|
22
|
+
/**
|
|
23
|
+
* 将 chainId 解析为数字
|
|
24
|
+
*/
|
|
25
|
+
export declare function parseChainId(chainId: string): number;
|
|
26
|
+
//# sourceMappingURL=chains.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chains.d.ts","sourceRoot":"","sources":["../../../src/utils/chains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,KAUrB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,KAUrB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,EAAuB,CAAC;AAEzD;;GAEG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,KAAK,EAAE,GACd,KAAK,GAAG,SAAS,CAInB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAQ9D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAKpD"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { WalletError } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* 基于 EIP-1193 的错误代码
|
|
4
|
+
*/
|
|
5
|
+
export declare const ErrorCode: {
|
|
6
|
+
readonly USER_REJECTED: 4001;
|
|
7
|
+
readonly UNAUTHORIZED: 4100;
|
|
8
|
+
readonly UNSUPPORTED_METHOD: 4200;
|
|
9
|
+
readonly DISCONNECTED: 4900;
|
|
10
|
+
readonly CHAIN_DISCONNECTED: 4901;
|
|
11
|
+
readonly UNRECOGNIZED_CHAIN: 4902;
|
|
12
|
+
readonly INVALID_PARAMS: -32602;
|
|
13
|
+
readonly INTERNAL_ERROR: -32603;
|
|
14
|
+
readonly PROVIDER_NOT_FOUND: -32000;
|
|
15
|
+
readonly WALLET_NOT_INSTALLED: -32001;
|
|
16
|
+
readonly ALREADY_CONNECTED: -32002;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* 创建钱包错误
|
|
20
|
+
*/
|
|
21
|
+
export declare function createWalletError(message: string, code: number, data?: unknown): WalletError;
|
|
22
|
+
/**
|
|
23
|
+
* 检查错误是否为用户拒绝
|
|
24
|
+
*/
|
|
25
|
+
export declare function isUserRejectedError(error: unknown): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* 解析提供者错误
|
|
28
|
+
*/
|
|
29
|
+
export declare function parseProviderError(error: unknown): WalletError;
|
|
30
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC;;GAEG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;CAYZ,CAAC;AAEX;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,GACb,WAAW,CAEb;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAQ3D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAwB9D"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Format balance from hex/wei to formatted string
|
|
3
|
+
*/
|
|
4
|
+
export declare function formatBalance(rawBalance: string | undefined): string;
|
|
5
|
+
/**
|
|
6
|
+
* Format address to short form 0x...1234
|
|
7
|
+
*/
|
|
8
|
+
export declare function formatAddress(address: string | null | undefined): string;
|
|
9
|
+
//# sourceMappingURL=format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../src/utils/format.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAwBpE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAGxE"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { EthereumProvider, RequestArguments, Chain, WalletInfo, WalletEventListener } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* 钱包基类(抽象类)
|
|
4
|
+
* 所有钱包实现都应继承此类
|
|
5
|
+
*/
|
|
6
|
+
export declare abstract class BaseWallet {
|
|
7
|
+
protected provider: EthereumProvider | null;
|
|
8
|
+
protected eventListeners: Map<string, Set<WalletEventListener>>;
|
|
9
|
+
/**
|
|
10
|
+
* 获取钱包信息
|
|
11
|
+
*/
|
|
12
|
+
abstract getInfo(): WalletInfo;
|
|
13
|
+
/**
|
|
14
|
+
* 检查钱包是否安装
|
|
15
|
+
*/
|
|
16
|
+
abstract isInstalled(): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* 获取提供者实例
|
|
19
|
+
*/
|
|
20
|
+
abstract getProvider(): EthereumProvider | null;
|
|
21
|
+
/**
|
|
22
|
+
* 连接钱包
|
|
23
|
+
*/
|
|
24
|
+
connect(): Promise<string[]>;
|
|
25
|
+
/**
|
|
26
|
+
* 断开钱包连接
|
|
27
|
+
*/
|
|
28
|
+
disconnect(): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* 获取当前账户
|
|
31
|
+
*/
|
|
32
|
+
getAccounts(): Promise<string[]>;
|
|
33
|
+
/**
|
|
34
|
+
* 获取当前账户余额
|
|
35
|
+
*/
|
|
36
|
+
getBalance(address: string): Promise<string>;
|
|
37
|
+
/**
|
|
38
|
+
* 获取当前链 ID
|
|
39
|
+
*/
|
|
40
|
+
getChainId(): Promise<string>;
|
|
41
|
+
/**
|
|
42
|
+
* 切换到指定链
|
|
43
|
+
*/
|
|
44
|
+
switchChain(chain: Chain): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* 添加事件监听器
|
|
47
|
+
*/
|
|
48
|
+
on(event: string, listener: WalletEventListener): void;
|
|
49
|
+
/**
|
|
50
|
+
* 移除事件监听器
|
|
51
|
+
*/
|
|
52
|
+
off(event: string, listener: WalletEventListener): void;
|
|
53
|
+
/**
|
|
54
|
+
* 发起 JSON-RPC 请求
|
|
55
|
+
*/
|
|
56
|
+
protected request<T = unknown>(args: RequestArguments): Promise<T>;
|
|
57
|
+
/**
|
|
58
|
+
* 设置提供者事件监听
|
|
59
|
+
*/
|
|
60
|
+
protected setupEventListeners(): void;
|
|
61
|
+
/**
|
|
62
|
+
* 清理资源和监听器
|
|
63
|
+
*/
|
|
64
|
+
protected cleanup(): void;
|
|
65
|
+
/**
|
|
66
|
+
* 处理账户变更事件
|
|
67
|
+
*/
|
|
68
|
+
protected handleAccountsChanged: (accounts: unknown) => void;
|
|
69
|
+
/**
|
|
70
|
+
* 处理链变更事件
|
|
71
|
+
*/
|
|
72
|
+
protected handleChainChanged: (chainId: unknown) => void;
|
|
73
|
+
/**
|
|
74
|
+
* 处理断开连接事件
|
|
75
|
+
*/
|
|
76
|
+
protected handleDisconnect: () => void;
|
|
77
|
+
/**
|
|
78
|
+
* 向所有监听器触发事件
|
|
79
|
+
*/
|
|
80
|
+
protected emit(event: string, data: unknown): void;
|
|
81
|
+
/**
|
|
82
|
+
* 检查错误是否为未知链错误
|
|
83
|
+
*/
|
|
84
|
+
protected isUnrecognizedChainError(error: unknown): boolean;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=BaseWallet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseWallet.d.ts","sourceRoot":"","sources":["../../../src/wallets/BaseWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,EACL,UAAU,EACV,mBAAmB,EACpB,MAAM,UAAU,CAAC;AAOlB;;;GAGG;AACH,8BAAsB,UAAU;IAC9B,SAAS,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IACnD,SAAS,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAa;IAE5E;;OAEG;IACH,QAAQ,CAAC,OAAO,IAAI,UAAU;IAE9B;;OAEG;IACH,QAAQ,CAAC,WAAW,IAAI,OAAO;IAE/B;;OAEG;IACH,QAAQ,CAAC,WAAW,IAAI,gBAAgB,GAAG,IAAI;IAE/C;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAgClC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAgBtC;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBlD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAenC;;OAEG;IACG,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAqC9C;;OAEG;IACH,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IAOtD;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IAOvD;;OAEG;cACa,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,CAAC,CAAC;IAaxE;;OAEG;IACH,SAAS,CAAC,mBAAmB,IAAI,IAAI;IAQrC;;OAEG;IACH,SAAS,CAAC,OAAO,IAAI,IAAI;IAazB;;OAEG;IACH,SAAS,CAAC,qBAAqB,aAAc,OAAO,KAAG,IAAI,CAEzD;IAEF;;OAEG;IACH,SAAS,CAAC,kBAAkB,YAAa,OAAO,KAAG,IAAI,CAErD;IAEF;;OAEG;IACH,SAAS,CAAC,gBAAgB,QAAO,IAAI,CAGnC;IAEF;;OAEG;IACH,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;IAalD;;OAEG;IACH,SAAS,CAAC,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;CAM5D"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BaseWallet } from "./BaseWallet";
|
|
2
|
+
import { EthereumProvider, WalletInfo } from "../types";
|
|
3
|
+
declare global {
|
|
4
|
+
interface Window {
|
|
5
|
+
coinbaseWalletExtension?: EthereumProvider;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Coinbase 钱包实现
|
|
10
|
+
*/
|
|
11
|
+
export declare class CoinbaseWallet extends BaseWallet {
|
|
12
|
+
getInfo(): WalletInfo;
|
|
13
|
+
isInstalled(): boolean;
|
|
14
|
+
getProvider(): EthereumProvider | null;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=CoinbaseWallet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CoinbaseWallet.d.ts","sourceRoot":"","sources":["../../../src/wallets/CoinbaseWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAExD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,uBAAuB,CAAC,EAAE,gBAAgB,CAAC;KAC5C;CACF;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,UAAU;IAC5C,OAAO,IAAI,UAAU;IAQrB,WAAW,IAAI,OAAO;IAKtB,WAAW,IAAI,gBAAgB,GAAG,IAAI;CAIvC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BaseWallet } from "./BaseWallet";
|
|
2
|
+
import { EthereumProvider, WalletInfo } from "../types";
|
|
3
|
+
declare global {
|
|
4
|
+
interface Window {
|
|
5
|
+
ethereum?: EthereumProvider;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* MetaMask 钱包实现
|
|
10
|
+
*/
|
|
11
|
+
export declare class MetaMaskWallet extends BaseWallet {
|
|
12
|
+
getInfo(): WalletInfo;
|
|
13
|
+
isInstalled(): boolean;
|
|
14
|
+
getProvider(): EthereumProvider | null;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=MetaMaskWallet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MetaMaskWallet.d.ts","sourceRoot":"","sources":["../../../src/wallets/MetaMaskWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAExD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,QAAQ,CAAC,EAAE,gBAAgB,CAAC;KAC7B;CACF;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,UAAU;IAC5C,OAAO,IAAI,UAAU;IAQrB,WAAW,IAAI,OAAO;IAKtB,WAAW,IAAI,gBAAgB,GAAG,IAAI;CAWvC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BaseWallet } from "./BaseWallet";
|
|
2
|
+
import { EthereumProvider, WalletInfo } from "../types";
|
|
3
|
+
declare global {
|
|
4
|
+
interface Window {
|
|
5
|
+
okxwallet?: EthereumProvider;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* OKX 钱包实现
|
|
10
|
+
*/
|
|
11
|
+
export declare class OKXWallet extends BaseWallet {
|
|
12
|
+
getInfo(): WalletInfo;
|
|
13
|
+
isInstalled(): boolean;
|
|
14
|
+
getProvider(): EthereumProvider | null;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=OKXWallet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OKXWallet.d.ts","sourceRoot":"","sources":["../../../src/wallets/OKXWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAExD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,SAAS,CAAC,EAAE,gBAAgB,CAAC;KAC9B;CACF;AAED;;GAEG;AACH,qBAAa,SAAU,SAAQ,UAAU;IACvC,OAAO,IAAI,UAAU;IAQrB,WAAW,IAAI,OAAO;IAKtB,WAAW,IAAI,gBAAgB,GAAG,IAAI;CAIvC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { BaseWallet } from "./BaseWallet";
|
|
2
|
+
import { EthereumProvider, WalletInfo } from "../types";
|
|
3
|
+
declare global {
|
|
4
|
+
interface Window {
|
|
5
|
+
phantom?: {
|
|
6
|
+
ethereum?: EthereumProvider;
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Phantom 钱包实现
|
|
12
|
+
* Phantom 支持 Solana 和 Ethereum
|
|
13
|
+
* 我们使用 ethereum 属性以兼容 EVM
|
|
14
|
+
*/
|
|
15
|
+
export declare class PhantomWallet extends BaseWallet {
|
|
16
|
+
getInfo(): WalletInfo;
|
|
17
|
+
isInstalled(): boolean;
|
|
18
|
+
getProvider(): EthereumProvider | null;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=PhantomWallet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PhantomWallet.d.ts","sourceRoot":"","sources":["../../../src/wallets/PhantomWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAExD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,OAAO,CAAC,EAAE;YACR,QAAQ,CAAC,EAAE,gBAAgB,CAAC;SAC7B,CAAC;KACH;CACF;AAED;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,UAAU;IAC3C,OAAO,IAAI,UAAU;IAQrB,WAAW,IAAI,OAAO;IAKtB,WAAW,IAAI,gBAAgB,GAAG,IAAI;CAIvC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export { BaseWallet } from "./BaseWallet";
|
|
2
|
+
export { MetaMaskWallet } from "./MetaMaskWallet";
|
|
3
|
+
export { OKXWallet } from "./OKXWallet";
|
|
4
|
+
export { PhantomWallet } from "./PhantomWallet";
|
|
5
|
+
export { CoinbaseWallet } from "./CoinbaseWallet";
|
|
6
|
+
import { BaseWallet } from "./BaseWallet";
|
|
7
|
+
/**
|
|
8
|
+
* 所有可用钱包的注册表
|
|
9
|
+
*/
|
|
10
|
+
export declare const walletRegistry: BaseWallet[];
|
|
11
|
+
/**
|
|
12
|
+
* 根据 ID 获取钱包
|
|
13
|
+
*/
|
|
14
|
+
export declare function getWalletById(id: string): BaseWallet | undefined;
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/wallets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAMlD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,UAAU,EAKtC,CAAC;AAEF;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAEhE"}
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* 基于 EIP-1193 的以太坊提供者接口
|
|
6
|
+
*/
|
|
7
|
+
interface EthereumProvider {
|
|
8
|
+
request(args: RequestArguments): Promise<unknown>;
|
|
9
|
+
on(event: string, listener: (...args: unknown[]) => void): void;
|
|
10
|
+
removeListener(event: string, listener: (...args: unknown[]) => void): void;
|
|
11
|
+
isMetaMask?: boolean;
|
|
12
|
+
isOkxWallet?: boolean;
|
|
13
|
+
isCoinbaseWallet?: boolean;
|
|
14
|
+
isPhantom?: boolean;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* JSON-RPC 调用请求参数
|
|
18
|
+
*/
|
|
19
|
+
interface RequestArguments {
|
|
20
|
+
method: string;
|
|
21
|
+
params?: unknown[] | Record<string, unknown>;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* 链配置
|
|
25
|
+
*/
|
|
26
|
+
interface Chain {
|
|
27
|
+
chainId: string;
|
|
28
|
+
chainName: string;
|
|
29
|
+
nativeCurrency: {
|
|
30
|
+
name: string;
|
|
31
|
+
symbol: string;
|
|
32
|
+
decimals: number;
|
|
33
|
+
};
|
|
34
|
+
rpcUrls: string[];
|
|
35
|
+
blockExplorerUrls?: string[];
|
|
36
|
+
iconUrls?: string[];
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* 钱包信息
|
|
40
|
+
*/
|
|
41
|
+
interface WalletInfo {
|
|
42
|
+
id: string;
|
|
43
|
+
name: string;
|
|
44
|
+
icon?: string;
|
|
45
|
+
downloadUrl?: string;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* 钱包连接状态
|
|
49
|
+
*/
|
|
50
|
+
interface WalletState {
|
|
51
|
+
isConnected: boolean;
|
|
52
|
+
account: string | null;
|
|
53
|
+
chainId: string | null;
|
|
54
|
+
balance: string | null;
|
|
55
|
+
wallet: WalletInfo | null;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* 事件监听器类型
|
|
59
|
+
*/
|
|
60
|
+
type WalletEventListener = (data: unknown) => void;
|
|
61
|
+
/**
|
|
62
|
+
* 钱包提供者上下文值
|
|
63
|
+
*/
|
|
64
|
+
interface WalletContextValue {
|
|
65
|
+
state: WalletState;
|
|
66
|
+
connect: (walletId: string) => Promise<void>;
|
|
67
|
+
disconnect: () => Promise<void>;
|
|
68
|
+
switchChain: (chainId: string) => Promise<void>;
|
|
69
|
+
availableWallets: WalletInfo[];
|
|
70
|
+
supportedChains: Chain[];
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* 钱包提供者配置
|
|
74
|
+
*/
|
|
75
|
+
interface WalletProviderConfig {
|
|
76
|
+
chains: Chain[];
|
|
77
|
+
autoConnect?: boolean;
|
|
78
|
+
appName?: string;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
interface WalletProviderProps {
|
|
82
|
+
children: React.ReactNode;
|
|
83
|
+
config: WalletProviderConfig;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* 钱包提供者组件
|
|
87
|
+
* 管理钱包连接状态并向子组件提供钱包上下文
|
|
88
|
+
*/
|
|
89
|
+
declare function WalletProvider({ children, config }: WalletProviderProps): react_jsx_runtime.JSX.Element;
|
|
90
|
+
|
|
91
|
+
declare function ConnectButton(): react_jsx_runtime.JSX.Element;
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* 访问钱包上下文的 Hook
|
|
95
|
+
*/
|
|
96
|
+
declare function useWallet(): WalletContextValue;
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* 钱包基类(抽象类)
|
|
100
|
+
* 所有钱包实现都应继承此类
|
|
101
|
+
*/
|
|
102
|
+
declare abstract class BaseWallet {
|
|
103
|
+
protected provider: EthereumProvider | null;
|
|
104
|
+
protected eventListeners: Map<string, Set<WalletEventListener>>;
|
|
105
|
+
/**
|
|
106
|
+
* 获取钱包信息
|
|
107
|
+
*/
|
|
108
|
+
abstract getInfo(): WalletInfo;
|
|
109
|
+
/**
|
|
110
|
+
* 检查钱包是否安装
|
|
111
|
+
*/
|
|
112
|
+
abstract isInstalled(): boolean;
|
|
113
|
+
/**
|
|
114
|
+
* 获取提供者实例
|
|
115
|
+
*/
|
|
116
|
+
abstract getProvider(): EthereumProvider | null;
|
|
117
|
+
/**
|
|
118
|
+
* 连接钱包
|
|
119
|
+
*/
|
|
120
|
+
connect(): Promise<string[]>;
|
|
121
|
+
/**
|
|
122
|
+
* 断开钱包连接
|
|
123
|
+
*/
|
|
124
|
+
disconnect(): Promise<void>;
|
|
125
|
+
/**
|
|
126
|
+
* 获取当前账户
|
|
127
|
+
*/
|
|
128
|
+
getAccounts(): Promise<string[]>;
|
|
129
|
+
/**
|
|
130
|
+
* 获取当前账户余额
|
|
131
|
+
*/
|
|
132
|
+
getBalance(address: string): Promise<string>;
|
|
133
|
+
/**
|
|
134
|
+
* 获取当前链 ID
|
|
135
|
+
*/
|
|
136
|
+
getChainId(): Promise<string>;
|
|
137
|
+
/**
|
|
138
|
+
* 切换到指定链
|
|
139
|
+
*/
|
|
140
|
+
switchChain(chain: Chain): Promise<void>;
|
|
141
|
+
/**
|
|
142
|
+
* 添加事件监听器
|
|
143
|
+
*/
|
|
144
|
+
on(event: string, listener: WalletEventListener): void;
|
|
145
|
+
/**
|
|
146
|
+
* 移除事件监听器
|
|
147
|
+
*/
|
|
148
|
+
off(event: string, listener: WalletEventListener): void;
|
|
149
|
+
/**
|
|
150
|
+
* 发起 JSON-RPC 请求
|
|
151
|
+
*/
|
|
152
|
+
protected request<T = unknown>(args: RequestArguments): Promise<T>;
|
|
153
|
+
/**
|
|
154
|
+
* 设置提供者事件监听
|
|
155
|
+
*/
|
|
156
|
+
protected setupEventListeners(): void;
|
|
157
|
+
/**
|
|
158
|
+
* 清理资源和监听器
|
|
159
|
+
*/
|
|
160
|
+
protected cleanup(): void;
|
|
161
|
+
/**
|
|
162
|
+
* 处理账户变更事件
|
|
163
|
+
*/
|
|
164
|
+
protected handleAccountsChanged: (accounts: unknown) => void;
|
|
165
|
+
/**
|
|
166
|
+
* 处理链变更事件
|
|
167
|
+
*/
|
|
168
|
+
protected handleChainChanged: (chainId: unknown) => void;
|
|
169
|
+
/**
|
|
170
|
+
* 处理断开连接事件
|
|
171
|
+
*/
|
|
172
|
+
protected handleDisconnect: () => void;
|
|
173
|
+
/**
|
|
174
|
+
* 向所有监听器触发事件
|
|
175
|
+
*/
|
|
176
|
+
protected emit(event: string, data: unknown): void;
|
|
177
|
+
/**
|
|
178
|
+
* 检查错误是否为未知链错误
|
|
179
|
+
*/
|
|
180
|
+
protected isUnrecognizedChainError(error: unknown): boolean;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
declare global {
|
|
184
|
+
interface Window {
|
|
185
|
+
ethereum?: EthereumProvider;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* MetaMask 钱包实现
|
|
190
|
+
*/
|
|
191
|
+
declare class MetaMaskWallet extends BaseWallet {
|
|
192
|
+
getInfo(): WalletInfo;
|
|
193
|
+
isInstalled(): boolean;
|
|
194
|
+
getProvider(): EthereumProvider | null;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
declare global {
|
|
198
|
+
interface Window {
|
|
199
|
+
okxwallet?: EthereumProvider;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* OKX 钱包实现
|
|
204
|
+
*/
|
|
205
|
+
declare class OKXWallet extends BaseWallet {
|
|
206
|
+
getInfo(): WalletInfo;
|
|
207
|
+
isInstalled(): boolean;
|
|
208
|
+
getProvider(): EthereumProvider | null;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
declare global {
|
|
212
|
+
interface Window {
|
|
213
|
+
phantom?: {
|
|
214
|
+
ethereum?: EthereumProvider;
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Phantom 钱包实现
|
|
220
|
+
* Phantom 支持 Solana 和 Ethereum
|
|
221
|
+
* 我们使用 ethereum 属性以兼容 EVM
|
|
222
|
+
*/
|
|
223
|
+
declare class PhantomWallet extends BaseWallet {
|
|
224
|
+
getInfo(): WalletInfo;
|
|
225
|
+
isInstalled(): boolean;
|
|
226
|
+
getProvider(): EthereumProvider | null;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
declare global {
|
|
230
|
+
interface Window {
|
|
231
|
+
coinbaseWalletExtension?: EthereumProvider;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Coinbase 钱包实现
|
|
236
|
+
*/
|
|
237
|
+
declare class CoinbaseWallet extends BaseWallet {
|
|
238
|
+
getInfo(): WalletInfo;
|
|
239
|
+
isInstalled(): boolean;
|
|
240
|
+
getProvider(): EthereumProvider | null;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* 以太坊主网
|
|
245
|
+
*/
|
|
246
|
+
declare const mainnet: Chain;
|
|
247
|
+
/**
|
|
248
|
+
* Sepolia 测试网
|
|
249
|
+
*/
|
|
250
|
+
declare const sepolia: Chain;
|
|
251
|
+
/**
|
|
252
|
+
* 默认链列表
|
|
253
|
+
*/
|
|
254
|
+
declare const defaultChains: Chain[];
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* 基于 EIP-1193 的错误代码
|
|
258
|
+
*/
|
|
259
|
+
declare const ErrorCode: {
|
|
260
|
+
readonly USER_REJECTED: 4001;
|
|
261
|
+
readonly UNAUTHORIZED: 4100;
|
|
262
|
+
readonly UNSUPPORTED_METHOD: 4200;
|
|
263
|
+
readonly DISCONNECTED: 4900;
|
|
264
|
+
readonly CHAIN_DISCONNECTED: 4901;
|
|
265
|
+
readonly UNRECOGNIZED_CHAIN: 4902;
|
|
266
|
+
readonly INVALID_PARAMS: -32602;
|
|
267
|
+
readonly INTERNAL_ERROR: -32603;
|
|
268
|
+
readonly PROVIDER_NOT_FOUND: -32000;
|
|
269
|
+
readonly WALLET_NOT_INSTALLED: -32001;
|
|
270
|
+
readonly ALREADY_CONNECTED: -32002;
|
|
271
|
+
};
|
|
272
|
+
|
|
273
|
+
export { BaseWallet, type Chain, CoinbaseWallet, ConnectButton, ErrorCode, type EthereumProvider, MetaMaskWallet, OKXWallet, PhantomWallet, type WalletContextValue, type WalletInfo, WalletProvider, type WalletProviderConfig, type WalletState, defaultChains, mainnet, sepolia, useWallet };
|