import { type Address, type Chain, type WalletClient } from 'viem'; import type { Connector, ConnectorEvents, ConnectorMetadata, ConnectorOptions, ConnectorType } from './types.js'; /** * 连接器基类 * 提供通用的事件处理和基础功能实现 */ export declare abstract class BaseConnector implements Connector { abstract readonly id: string; abstract readonly name: string; abstract readonly type: ConnectorType; readonly icon?: string; protected chains: Chain[]; protected options: ConnectorOptions; private listeners; constructor(options?: ConnectorOptions); /** * 连接器是否准备就绪 */ abstract get ready(): boolean; /** * 连接钱包 */ abstract connect(chainId?: number): Promise<{ address: Address; chainId: number; }>; /** * 断开连接 */ abstract disconnect(): Promise; /** * 获取账户地址 */ abstract getAccount(): Promise
; /** * 获取链 ID */ abstract getChainId(): Promise; /** * 获取 WalletClient 实例 */ abstract getWalletClient(config?: { chainId?: number; }): Promise; /** * 切换链 */ switchChain?(_chainId: number): Promise; /** * 检查是否已授权连接 */ abstract isAuthorized(): Promise; /** * 设置连接器 */ setup?(): Promise; /** * 获取元数据 */ getMetadata(): ConnectorMetadata; /** * 监听事件 */ on(event: K, listener: ConnectorEvents[K]): void; /** * 取消监听 */ off(event: K, listener: ConnectorEvents[K]): void; /** * 触发事件 */ protected emit(event: K, ...args: ConnectorEvents[K] extends (...args: infer P) => void ? P : never): void; /** * 获取支持的链 */ protected getChain(chainId: number): Chain | undefined; /** * 创建 WalletClient 辅助方法 */ protected createWalletClient(provider: unknown, chain?: Chain, account?: Address): WalletClient; /** * 标准化链 ID */ protected normalizeChainId(chainId: string | number | bigint): number; }