/**
 * MultisigService
 * Handles multisig wallet operations including address derivation and signature collection
 */
import { MultiSigPublicKey } from '@mysten/sui/multisig';
import { type MultisigConfig, type SignerConfig, type SignerStatus, type MultisigAccountInfo } from './types.js';
/**
 * MultisigService class for multisig wallet operations
 */
export declare class MultisigService {
    private config;
    private multiSigPublicKey;
    constructor(config: MultisigConfig);
    /**
     * Validate multisig configuration
     */
    private validateConfig;
    /**
     * Validate individual signer configuration
     */
    private validateSigner;
    /**
     * Create MultiSigPublicKey from config
     */
    private createMultiSigPublicKey;
    /**
     * Get PublicKey object for a signer
     */
    private getPublicKeyForSigner;
    /**
     * Get the multisig address
     */
    getAddress(): string;
    /**
     * Get the MultiSigPublicKey instance
     */
    getMultiSigPublicKey(): MultiSigPublicKey;
    /**
     * Get current configuration
     */
    getConfig(): MultisigConfig;
    /**
     * Get account info
     */
    getAccountInfo(): MultisigAccountInfo;
    /**
     * Get total weight of all signers
     */
    getTotalWeight(): number;
    /**
     * Get signer by ID
     */
    getSigner(id: string): SignerConfig | undefined;
    /**
     * Get all signers
     */
    getSigners(): SignerConfig[];
    /**
     * Combine partial signatures into a multisig signature
     */
    combineSignatures(signatures: string[]): string;
    /**
     * Verify if collected signatures meet threshold
     */
    verifyThreshold(signerIds: string[]): boolean;
    /**
     * Get initial signer statuses
     */
    getInitialSignerStatuses(): SignerStatus[];
    /**
     * Update configuration (creates new MultiSigPublicKey)
     * Returns the new address
     */
    updateConfig(newConfig: MultisigConfig): string;
    /**
     * Add a signer to the configuration
     * Returns the new address
     */
    addSigner(signer: SignerConfig): string;
    /**
     * Remove a signer from the configuration
     * Returns the new address
     */
    removeSigner(signerId: string): string;
    /**
     * Update threshold
     * Returns the new address (address changes when threshold changes)
     */
    updateThreshold(newThreshold: number): string;
}
/**
 * Create a MultisigService instance
 */
export declare function createMultisigService(config: MultisigConfig): MultisigService;
/**
 * Derive multisig address from config without creating full service
 */
export declare function deriveMultisigAddress(config: MultisigConfig): string;
