sui-svelte-wallet-kit
Version:
Svelte 5 wallet kit for Sui: connect wallets, manage accounts, SuiNS, balance, sign transactions/messages
67 lines (66 loc) • 2.45 kB
TypeScript
/**
* 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;