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;
