import { CurveSigningChainType, Wallet } from '@privy-io/api-types';
import { U as User } from './types-D4oWUR5Y.js';
import '@coinbase/wallet-sdk';
import '@simplewebauthn/browser';
import '@solana/kit';
import 'react';
import 'viem';
import '@privy-io/js-sdk-core';
import '@base-org/account';
import '@wallet-standard/base';
import '@solana/wallet-standard-features';
import '@wallet-standard/features';
import '@privy-io/ethereum';
import 'eventemitter3';

interface CreateWalletInput {
    /** The chain type of the wallet to create. */
    chainType: CurveSigningChainType | 'spark';
}
interface CreateWalletOutput {
    user: User;
    wallet: Wallet;
}
interface UseCreateWalletInterface {
    /**
     * Create a new wallet for the user, on an extended chain.
     */
    createWallet: (input: CreateWalletInput) => Promise<CreateWalletOutput>;
}
declare const useCreateWallet: () => UseCreateWalletInterface;

/**
 * Hook to export extended chain wallets.
 * These are wallets built on the unified stack.
 */
interface UseExportWalletInterface {
    /**
     * Shows the user a Privy modal, from which they can copy their embedded wallet's private
     * key for easy export to another wallet client. The private key is loaded
     * on an iframe running on a separate domain from your app, meaning your app cannot access it.
     *
     * This method will error if the user is not authenticated or does not have an embedded wallet
     * for the specified address.
     *
     * @param options {@link {address: string}} wallet address to export the private key for
     * @returns Promise that resolves once the user exits the modal
     */
    exportWallet: (options: {
        address: string;
        uiOptions?: {
            /** When true, hides the wallet address section in the export modal. */
            hideWalletAddress?: boolean;
        };
    }) => Promise<void>;
}
declare function useExportWallet(): UseExportWalletInterface;

interface SignRawHashInput {
    /** The address of the wallet to sign the hash with. */
    address: string;
    /** The chain type of the wallet to sign the hash with. */
    chainType: CurveSigningChainType;
    /** The hash to sign. */
    hash: `0x${string}`;
}
interface SignRawHashOutput {
    /** The signature of the hash. */
    signature: `0x${string}`;
}
interface UseSignRawHashInterface {
    /**
     * Sign a raw hash with a wallet along the blockchain's cryptographic curve.
     * This is only supported for extended chains.
     */
    signRawHash: (input: SignRawHashInput) => Promise<SignRawHashOutput>;
}
declare const useSignRawHash: () => UseSignRawHashInterface;

export { useCreateWallet, useExportWallet, useSignRawHash };
