import { BTCConfig, IBTCProvider, InscriptionIdentifier, SignPsbtOptions, Network } from '../../../types';
export declare class AppKitBTCProvider implements IBTCProvider {
    private config;
    private address?;
    private publicKey?;
    private eventHandlers;
    private listeningForChanges;
    private boundHandleAccountChange;
    /**
     * The {@link EventTarget} we currently have a persistent listener on.
     * Captured at registration time so we always remove the listener from
     * the same target we added it to, even if the shared config singleton
     * is replaced mid-session.
     */
    private boundConnectionEventsTarget;
    constructor(config: BTCConfig);
    /**
     * Emit an event to all registered handlers for the given event name.
     */
    private emit;
    /**
     * Start listening for account changes from the bridge hook.
     *
     * The listener is attached to the private `connectionEvents`
     * {@link EventTarget} held inside {@link SharedBtcAppKitConfig}, NOT on
     * `window`. The previous implementation listened on `window` for
     * `APPKIT_BTC_CONNECTED_EVENT` and adopted `event.detail.{address, publicKey}`
     * as truth. Any same-origin script (XSS, malicious extension content
     * script) could `window.dispatchEvent` a forged event with attacker-chosen
     * values and overwrite this provider's cached address/pubkey, which then
     * propagated through `accountsChanged` into `BTCWalletProvider` React
     * state and downstream consumers. Listening on a private `EventTarget`
     * instance closes that channel — there is no global handle for an attacker
     * to dispatch on.
     */
    private startListeningForAccountChanges;
    private stopListeningForAccountChanges;
    /**
     * Get the shared AppKit config
     */
    private getAppKitConfig;
    connectWallet(): Promise<void>;
    disconnect(): Promise<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: "bip322-simple" | "ecdsa"): Promise<string>;
    on(eventName: string, callBack: () => void): void;
    off(eventName: string, callBack: () => void): void;
    getWalletProviderName(): Promise<string>;
    getWalletProviderIcon(): Promise<string>;
    getInscriptions(): Promise<InscriptionIdentifier[]>;
    deriveContextHash: (appName: string, context: string) => Promise<string>;
    destroy(): void;
}
