@keccak256-evg/passport-sdk
Version:
T-REX Passport SDK for interacting with Passport and Registry contracts
142 lines (141 loc) • 4.56 kB
TypeScript
import { PublicClient, WalletClient, Chain } from 'viem';
import { ViemPassportSDKConfig, Address, PassportInfo, WalletPassportResult, PendingBindRequest, PassportRequest, RegistryMethods, PassportMethods } from './types';
import { Environment } from './constants';
export declare class ViemPassportSDK implements RegistryMethods, PassportMethods {
readonly config: ViemPassportSDKConfig;
readonly publicClient: PublicClient;
walletClient?: WalletClient;
readonly registryAddress: Address;
constructor(config: ViemPassportSDKConfig);
/**
* 设置 Wallet Client
*/
setWalletClient(walletClient: WalletClient): ViemPassportSDK;
/**
* 获取 Registry 合约实例
*/
private getRegistryContract;
/**
* 获取 Passport 合约实例
*/
private getPassportContract;
/**
* 创建 Passport
*/
createPassport(request: PassportRequest, signature: `0x${string}`): Promise<any>;
/**
* 检查钱包是否有 Passport
*/
checkWalletHasPassport(walletAddress: Address): Promise<WalletPassportResult>;
/**
* 获取 Passport 信息
*/
getPassportInfo(passportAddress: Address): Promise<PassportInfo>;
/**
* 预测 Passport 地址
*/
predictPassportAddress(walletAddress: Address): Promise<Address>;
/**
* 升级我的 Passport
*/
upgradeMyPassport(): Promise<any>;
/**
* 获取 Passport 实现地址
*/
getPassportImplementation(): Promise<Address>;
/**
* 获取 Passport ID 计数器
*/
getPassportIdCounter(): Promise<number>;
/**
* 通过 Passport ID 获取合约地址
*/
getPassportAddressById(passportId: number): Promise<Address>;
/**
* 检查钱包是否被废除
*/
isWalletAbolished(walletAddress: Address): Promise<boolean>;
/**
* 检查钱包是否从特定 Passport 解绑
*/
isWalletUnboundFromPassport(passportId: number, walletAddress: Address): Promise<boolean>;
/**
* 检查钱包是否有特定 Passport
*/
hasPassport(walletAddress: Address, passportContractAddress: Address): Promise<boolean>;
/**
* 解绑钱包
*/
unbindWallet(passportAddress: Address): Promise<any>;
/**
* 请求绑定钱包
*/
requestBindWallet(passportAddress: Address, walletAddress: Address): Promise<any>;
/**
* 获取待处理绑定请求信息
*/
getPendingBindRequest(passportAddress: Address, walletAddress: Address): Promise<PendingBindRequest>;
/**
* 取消绑定请求
*/
cancelBindRequest(passportAddress: Address, walletAddress: Address): Promise<any>;
/**
* 接受绑定请求
*/
acceptBindRequest(passportAddress: Address): Promise<any>;
/**
* 拒绝绑定请求
*/
rejectBindRequest(passportAddress: Address): Promise<any>;
/**
* 获取待处理绑定钱包列表
*/
getPendingBindWallets(passportAddress: Address, account: Address): Promise<readonly Address[]>;
/**
* 检查 Passport 是否需要升级
*/
checkPassportUpgrade(passportAddress: Address): Promise<boolean>;
/**
* 获取 Passport 当前实现地址
*/
getPassportImplementationAddress(passportAddress: Address): Promise<Address>;
/**
* 获取 Passport ID
*/
getPassportId(passportAddress: Address): Promise<number>;
/**
* 获取 PassportRegistry 合约地址
*/
getRegistryAddress(passportAddress: Address): Promise<Address>;
/**
* 检查钱包是否绑定到 Passport
*/
isWalletBound(passportAddress: Address, walletAddress: Address): Promise<boolean>;
/**
* 获取所有绑定钱包
*/
getBoundWallets(passportAddress: Address): Promise<readonly Address[]>;
/**
* 获取钱包数量
*/
getWalletCount(passportAddress: Address): Promise<number>;
/**
* 通过索引获取绑定钱包
*/
getBoundWalletByIndex(passportAddress: Address, index: number): Promise<Address>;
/**
* 检查是否有待处理绑定请求
*/
hasPendingBindRequest(passportAddress: Address, walletAddress: Address): Promise<boolean>;
/**
* 取消过期的绑定请求
*/
cancelExpiredBindRequest(passportAddress: Address, walletAddress: Address): Promise<any>;
}
export declare function createViemPassportSDK(config: {
rpcUrl: string;
chain?: Chain;
env?: Environment;
registryAddress?: Address;
account?: any;
}): ViemPassportSDK;