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