UNPKG

sui-svelte-wallet-kit

Version:

Svelte 5 wallet kit for Sui: connect wallets, manage accounts, SuiNS, balance, sign transactions/messages

91 lines (90 loc) 2.93 kB
/** * MultisigService Types * Defines interfaces and types for multisig wallet operations */ import type { PublicKey } from '@mysten/sui/cryptography'; export declare enum MultisigErrorCode { INVALID_CONFIG = "INVALID_CONFIG", INVALID_THRESHOLD = "INVALID_THRESHOLD", INVALID_SIGNER = "INVALID_SIGNER", INSUFFICIENT_SIGNATURES = "INSUFFICIENT_SIGNATURES", SIGNER_NOT_FOUND = "SIGNER_NOT_FOUND", SIGNATURE_FAILED = "SIGNATURE_FAILED", NETWORK_ERROR = "NETWORK_ERROR" } export declare class MultisigError extends Error { code: MultisigErrorCode; cause?: Error | undefined; constructor(code: MultisigErrorCode, message: string, cause?: Error | undefined); } export type SignerType = 'ed25519' | 'secp256k1' | 'secp256r1' | 'zklogin' | 'passkey'; export interface SignerConfig { /** Unique identifier for this signer */ id: string; /** Type of signer */ type: SignerType; /** Weight of this signer (default: 1) */ weight: number; /** Public key (required for ed25519, secp256k1, secp256r1, passkey) */ publicKey?: PublicKey; /** zkLogin address seed (required for zklogin type) */ addressSeed?: string; /** zkLogin issuer (required for zklogin type) */ issuer?: string; /** Display name for UI */ name?: string; } export interface MultisigConfig { /** Threshold required to execute transactions */ threshold: number; /** List of signers */ signers: SignerConfig[]; /** Optional name for this multisig wallet */ name?: string; } export interface SignerStatus { id: string; name?: string; type: SignerType; weight: number; /** Whether this signer is available for signing */ available: boolean; /** Whether signature has been collected */ signed: boolean; /** Error message if signing failed */ error?: string; } export interface SignatureCollectionResult { /** Combined multisig signature */ signature: string; /** Total weight collected */ totalWeight: number; /** Status of each signer */ signerStatuses: SignerStatus[]; /** Whether threshold was met */ thresholdMet: boolean; } export type SignatureProgressCallback = (status: { currentSigner: SignerConfig; collectedWeight: number; threshold: number; signerStatuses: SignerStatus[]; }) => void; export interface CollectSignaturesOptions { /** Transaction bytes to sign */ txBytes: Uint8Array; /** Callback for progress updates */ onProgress?: SignatureProgressCallback; /** Signers to skip (by id) */ skipSigners?: string[]; /** Previously collected signatures (for retry) */ existingSignatures?: Map<string, string>; } export interface MultisigAccountInfo { /** Multisig address */ address: string; /** Current configuration */ config: MultisigConfig; /** Total weight of all signers */ totalWeight: number; }