import { BackupLocation, type KeyShareBackupInfo, type ThresholdSignatureScheme, type WalletOperation } from '@dynamic-labs-wallet/core';
import type { ClientKeyShare } from './mpc/types.js';
export interface WalletProperties {
    chainName: string;
    walletId: string;
    accountAddress: string;
    clientKeySharesBackupInfo: KeyShareBackupInfo;
    thresholdSignatureScheme: ThresholdSignatureScheme;
    derivationPath?: string;
    addressType?: string;
}
export type WalletBusyOperation = WalletOperation.REFRESH | WalletOperation.RESHARE;
export declare class WalletBusyError extends Error {
    readonly operation: WalletBusyOperation;
    readonly accountAddress: string;
    constructor(accountAddress: string, operation: WalletBusyOperation);
}
export type ShareDistribution = {
    clientShares: ClientKeyShare[];
    cloudProviderShares: Partial<Record<BackupLocation, ClientKeyShare[]>>;
    delegatedShare?: ClientKeyShare;
};
/**
 * Creates distribution where shares go to specified cloud providers
 * Last share goes to cloud providers, rest to Dynamic backend
 * @param providers - Array of cloud providers to backup to
 * @param allShares - All key shares to distribute
 */
export declare const createCloudProviderDistribution: ({ providers, allShares, }: {
    providers: BackupLocation[];
    allShares: ClientKeyShare[];
}) => ShareDistribution;
/**
 * Creates distribution with delegation + cloud backup
 * Client shares backed up to Dynamic AND cloud providers
 * Delegated share goes to webhook
 */
export declare const createDelegationWithCloudProviderDistribution: ({ providers, existingShares, delegatedShare, }: {
    providers: BackupLocation[];
    existingShares: ClientKeyShare[];
    delegatedShare: ClientKeyShare;
}) => ShareDistribution;
/**
 * Creates distribution for adding cloud backup to existing delegation
 * Client shares go to both Dynamic AND cloud providers
 * delegatedShare is undefined - we don't re-publish, but preserve the location
 */
export declare const createAddCloudProviderToExistingDelegationDistribution: ({ providers, clientShares, }: {
    providers: BackupLocation[];
    clientShares: ClientKeyShare[];
}) => ShareDistribution;
/**
 * Checks if wallet has backup on any of the specified providers
 */
export declare const hasCloudProviderBackup: (backupInfo: KeyShareBackupInfo | undefined, providers: BackupLocation[]) => boolean;
/**
 * Gets all cloud providers that have backups for this wallet
 */
export declare const getActiveCloudProviders: (backupInfo?: KeyShareBackupInfo) => BackupLocation[];
export declare const createDelegationOnlyDistribution: ({ existingShares, delegatedShare, }: {
    existingShares: ClientKeyShare[];
    delegatedShare: ClientKeyShare;
}) => ShareDistribution;
export declare const createDynamicOnlyDistribution: ({ allShares, }: {
    allShares: ClientKeyShare[];
}) => ShareDistribution;
export declare const hasDelegatedBackup: (backupInfo?: KeyShareBackupInfo) => boolean;
export type Room = {
    roomId: string;
    createdAt: number;
    expiresAt: number;
};
//# sourceMappingURL=types.d.ts.map