/**
 * SignerResolver
 * Resolves public keys from signer definitions
 */
import type { PublicKey } from '@mysten/sui/cryptography';
import { type MultisigSigner, type ResolvedSigner, type ResolverContext, type SignerKeyType } from './MultisigTypes.js';
/**
 * Parse base64 public key string to PublicKey object
 * Supports ed25519, secp256k1, secp256r1, and zklogin key types
 */
export declare function parsePublicKey(publicKeyBase64: string, keyType: SignerKeyType): PublicKey;
/**
 * Generate a unique ID for a signer
 */
export declare function generateSignerId(signer: MultisigSigner, index: number): string;
/**
 * SignerResolver class
 * Handles resolution of signer definitions to actual public keys
 */
export declare class SignerResolver {
    /**
     * Check if a signer can be resolved with current context
     */
    canResolve(signer: MultisigSigner, context: ResolverContext): boolean;
    /**
     * Resolve a signer definition to a ResolvedSigner
     */
    resolve(signer: MultisigSigner, index: number, context: ResolverContext): ResolvedSigner;
    /**
     * Resolve passkey signer
     * Uses saved address from signer config if available, falls back to context
     */
    private resolvePasskeySigner;
    /**
     * Resolve zkLogin signer
     * Uses saved address from signer config if available, falls back to context.
     * zkLogin signers are considered "resolved" if we have an address,
     * because the actual signing will be handled by the zkLogin wallet.
     */
    private resolveZkLoginSigner;
    /**
     * Resolve wallet signer by address
     * Note: Wallet signers are considered "resolved" if the wallet is connected,
     * even without public key - the signing will work via wallet adapter.
     */
    private resolveWalletSigner;
    /**
     * Resolve public key signer (inline key)
     * Note: Public key signers are always considered "resolved" because they have
     * the public key inline - we have all info needed to derive multisig address.
     * Wallet connection is only checked when signing.
     */
    private resolvePublicKeySigner;
    /**
     * Infer signer type from public key
     */
    private inferTypeFromPublicKey;
    /**
     * Resolve all signers from a list
     */
    resolveAll(signers: MultisigSigner[], context: ResolverContext): ResolvedSigner[];
}
/**
 * Create a SignerResolver instance
 */
export declare function createSignerResolver(): SignerResolver;
