import { PropsWithChildren } from 'react';
import { networks } from 'bitcoinjs-lib';
import { InscriptionIdentifier, Network, SignPsbtOptions } from '../core/types';
export interface BTCWalletLifecycleCallbacks {
    onConnect?: (address: string, publicKeyNoCoord: string) => void | Promise<void>;
    onDisconnect?: () => void | Promise<void>;
    onAddressChange?: (newAddress: string, newPublicKeyNoCoord: string) => void | Promise<void>;
    onError?: (error: Error, context?: {
        address?: string;
        publicKeyNoCoord?: string;
    }) => void;
}
interface BTCWalletContextProps {
    loading: boolean;
    network?: networks.Network;
    publicKeyNoCoord: string;
    address: string;
    connected: boolean;
    disconnect: () => void;
    open: () => void;
    getAddress: () => Promise<string>;
    getPublicKeyHex: () => Promise<string>;
    signPsbt: (psbtHex: string, options?: SignPsbtOptions) => Promise<string>;
    signPsbts: (psbtsHexes: string[], options?: SignPsbtOptions[]) => Promise<string[]>;
    getNetwork: () => Promise<Network>;
    signMessage: (message: string, type: "ecdsa" | "bip322-simple") => Promise<string>;
    getInscriptions: () => Promise<InscriptionIdentifier[]>;
    /**
     * Derives a deterministic 32-byte value from the wallet per the
     * `deriveContextHash` spec. Throws `WalletError` with code
     * `WALLET_METHOD_NOT_SUPPORTED` for wallets that don't implement
     * the spec — callers should branch on that error code to gate
     * features that require this capability.
     */
    deriveContextHash: (appName: string, context: string) => Promise<string>;
}
export interface BTCWalletProviderProps extends PropsWithChildren {
    callbacks?: BTCWalletLifecycleCallbacks;
}
export declare const BTCWalletProvider: ({ children, callbacks }: BTCWalletProviderProps) => import("react/jsx-runtime").JSX.Element;
export declare const useBTCWallet: () => BTCWalletContextProps;
export {};
