@keccak256-evg/passport-sdk
Version:
T-REX Passport SDK for interacting with Passport and Registry contracts
93 lines (92 loc) • 2.63 kB
TypeScript
import { UnifiedPassportSDKConfig } from './types/provider';
import { Address, WalletPassportResult, PassportInfo, PendingBindRequest, PassportRequest } from './types';
/**
* 统一的 Passport SDK - 支持任何 EIP-1193 兼容的 provider
*
* 兼容的 provider 包括:
* - MetaMask (window.ethereum)
* - WalletConnect
* - Coinbase Wallet
* - Trust Wallet
* - 任何实现 EIP-1193 标准的钱包
*/
export declare class UnifiedPassportSDK {
private config;
private publicClient;
private walletClient;
private registryAddress;
constructor(config: UnifiedPassportSDKConfig);
/**
* 获取当前使用的 provider 信息
*/
getProviderInfo(): {
isMetaMask: boolean;
isCoinbaseWallet: boolean;
chainId: string | undefined;
selectedAddress: string | undefined;
};
/**
* 请求连接钱包
*/
connectWallet(): Promise<string[]>;
/**
* 获取当前账户
*/
getAccounts(): Promise<string[]>;
/**
* 切换网络
*/
switchChain(): Promise<void>;
/**
* 添加网络到钱包
*/
addChain(): Promise<void>;
/**
* 创建 Passport
*/
createPassport(request: PassportRequest, signature: `0x${string}`): Promise<string>;
/**
* 检查钱包是否有 Passport
*/
checkWalletHasPassport(walletAddress: Address): Promise<WalletPassportResult>;
/**
* 获取 Passport 信息
*/
getPassportInfo(passportAddress: Address): Promise<PassportInfo>;
/**
* 请求绑定钱包
*/
requestBindWallet(passportAddress: Address, walletAddress: Address): Promise<string>;
/**
* 接受绑定请求
*/
acceptBindRequest(passportAddress: Address): Promise<string>;
/**
* 拒绝绑定请求
*/
rejectBindRequest(passportAddress: Address): Promise<string>;
/**
* 解绑钱包
*/
unbindWallet(passportAddress: Address): Promise<string>;
/**
* 取消绑定请求
*/
cancelBindRequest(passportAddress: Address, walletAddress: Address): Promise<string>;
/**
* 获取待处理绑定请求信息
*/
getPendingBindRequest(passportAddress: Address, walletAddress: Address): Promise<PendingBindRequest>;
/**
* 监听 provider 事件
*/
onAccountsChanged(callback: (accounts: string[]) => void): void;
/**
* 监听链切换事件
*/
onChainChanged(callback: (chainId: string) => void): void;
/**
* 移除事件监听器
*/
removeListener(eventName: string, callback: (...args: any[]) => void): void;
}