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
TypeScript
/**
* 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;
}