import type { DynamicWalletClient, GetWalletResponse, ThresholdSignatureScheme, WalletRecoveryState } from '@dynamic-labs-wallet/browser-wallet-client';
import type { Chain } from '../chain';
import type { LogoutReason } from '../auth/logoutReason';
import type { WalletAccount } from '../wallets/walletAccount';
import type { WalletProvider } from '../wallets/walletProvider';
export type { ThresholdSignatureScheme } from '@dynamic-labs-wallet/browser-wallet-client';
/**
 * User-facing Bitcoin configuration type for wallet creation.
 * Uses strings to allow flexibility in user input, which gets cast
 * to the proper BitcoinConfig type internally.
 */
export type WalletCreationBitcoinConfig = {
    addressType?: string;
    network?: string;
};
export type WalletCreationRequirement = {
    bitcoinConfig?: WalletCreationBitcoinConfig;
    chain: Chain;
};
export type WaasProvider = {
    backupKeySharesToGoogleDrive: (args: {
        password?: string;
        walletAccount: WalletAccount;
    }) => Promise<void>;
    createWalletAccount(args?: {
        bitcoinConfig?: WalletCreationBitcoinConfig;
        password?: string;
        thresholdSignatureScheme?: ThresholdSignatureScheme;
    }): Promise<{
        accountAddress: string;
        publicKeyHex: string;
        rawPublicKey: string | Uint8Array | undefined;
    }>;
    delegateKeyShares: (args: {
        password?: string;
        walletAccount: WalletAccount;
    }) => Promise<void>;
    exportClientKeyshares: (args: {
        password?: string;
        walletAccount: WalletAccount;
    }) => Promise<void>;
    exportPrivateKey: (args: {
        displayContainer: HTMLElement;
        password?: string;
        walletAccount: WalletAccount;
    }) => Promise<void>;
    getWaasClient: () => Promise<DynamicWalletClient>;
    getWalletRecoveryState: (args: {
        walletAccount: WalletAccount;
    }) => Promise<WalletRecoveryState>;
    importPrivateKey(args: {
        privateKey: string;
        thresholdSignatureScheme?: ThresholdSignatureScheme;
    }): Promise<void>;
    refreshWalletAccountShares: (args: {
        password?: string;
        walletAccount: WalletAccount;
    }) => Promise<void>;
    restoreUserShareForWalletAccount: (args: {
        walletAccount: WalletAccount;
    }) => Promise<void>;
    revokeDelegation: (args: {
        password?: string;
        walletAccount: WalletAccount;
    }) => Promise<void>;
    setWaasWalletAccountPassword: (args: {
        password: string;
        walletAccount: WalletAccount;
    }) => Promise<void>;
    signMessage: (args: {
        message: string;
        walletAccount: WalletAccount;
    }) => Promise<{
        signature: string;
    }>;
    signRawMessage: (args: {
        message: string;
        password?: string;
        walletAccount: WalletAccount;
    }) => Promise<{
        signature: string;
    }>;
    signSerializedTransaction: (args: {
        chainId?: string;
        serializedTransaction: string;
        walletAccount: WalletAccount;
    }) => Promise<{
        signature: string;
    }>;
    terminate: (args?: {
        reason?: LogoutReason;
    }) => Promise<void>;
    unlockWallet: (args: {
        password: string;
        walletAccount: WalletAccount;
    }) => Promise<GetWalletResponse>;
    updatePassword: (args: {
        currentPassword: string;
        newPassword: string;
        walletAccount: WalletAccount;
    }) => Promise<void>;
};
export type WaasWalletProvider = WalletProvider & Omit<WaasProvider, 'signMessage'>;
//# sourceMappingURL=waas.types.d.ts.map