import { Relay, Event, UnsignedEvent } from "nostr-tools";
import { GetBalanceResponse, KeysendArgs, RequestInvoiceArgs, MakeInvoiceResponse, SendPaymentResponse, SignMessageResponse, WebLNProvider, WebLNRequestMethod, LookupInvoiceArgs, LookupInvoiceResponse } from "@webbtc/webln-types";
import { GetInfoResponse } from "@webbtc/webln-types";
import { GetNWCAuthorizationUrlOptions } from "../types";
interface NostrWebLNOptions {
    authorizationUrl?: string;
    relayUrl: string;
    walletPubkey: string;
    secret?: string;
}
type Nip07Provider = {
    getPublicKey(): Promise<string>;
    signEvent(event: UnsignedEvent): Promise<Event>;
};
export declare class NostrWebLNProvider implements WebLNProvider, Nip07Provider {
    relay: Relay;
    relayUrl: string;
    secret: string | undefined;
    walletPubkey: string;
    options: NostrWebLNOptions;
    subscribers: Record<string, (payload: unknown) => void>;
    static parseWalletConnectUrl(walletConnectUrl: string): NostrWebLNOptions;
    static withNewSecret(options?: ConstructorParameters<typeof NostrWebLNProvider>[0]): NostrWebLNProvider;
    constructor(options?: {
        providerName?: string;
        authorizationUrl?: string;
        relayUrl?: string;
        secret?: string;
        walletPubkey?: string;
        nostrWalletConnectUrl?: string;
    });
    on(name: string, callback: () => void): void;
    notify(name: string, payload?: unknown): void;
    getNostrWalletConnectUrl(includeSecret?: boolean): string;
    get nostrWalletConnectUrl(): string;
    get connected(): boolean;
    get publicKey(): string;
    getPublicKey(): Promise<string>;
    signEvent(event: UnsignedEvent): Promise<Event>;
    getEventHash(event: Event): string;
    enable(): Promise<void>;
    close(): void;
    encrypt(pubkey: string, content: string): Promise<string>;
    decrypt(pubkey: string, content: string): Promise<string>;
    getInfo(): Promise<GetInfoResponse>;
    getBalance(): Promise<GetBalanceResponse>;
    sendPayment(invoice: string): Promise<SendPaymentResponse>;
    keysend(args: KeysendArgs): Promise<SendPaymentResponse>;
    lnurl(lnurl: string): Promise<{
        status: "OK";
    } | {
        status: "ERROR";
        reason: string;
    }>;
    makeInvoice(args: string | number | RequestInvoiceArgs): Promise<MakeInvoiceResponse>;
    lookupInvoice(args: LookupInvoiceArgs): Promise<LookupInvoiceResponse>;
    request(method: WebLNRequestMethod, args?: unknown): Promise<unknown>;
    signMessage(message: string): Promise<SignMessageResponse>;
    verifyMessage(signature: string, message: string): Promise<void>;
    getAuthorizationUrl(options?: GetNWCAuthorizationUrlOptions): URL;
    initNWC(options?: GetNWCAuthorizationUrlOptions): Promise<unknown>;
    private checkConnected;
    private executeNip47Request;
}
export declare const NWC: typeof NostrWebLNProvider;
export {};
//# sourceMappingURL=NostrWeblnProvider.d.ts.map