From 66b1ceedef6b3e824e979fbea7ab2af1a184bb47 Mon Sep 17 00:00:00 2001 From: Patrick Mulligan Date: Fri, 13 Feb 2026 15:02:16 -0500 Subject: [PATCH] feat(extensions): add getLnurlPayInfo to ExtensionContext Enables extensions to get LNURL-pay info for users by pubkey, supporting Lightning Address (LUD-16) and zap (NIP-57) functionality. Co-Authored-By: Claude Opus 4.5 --- src/extensions/context.ts | 23 ++++++++++++++++++++++- src/extensions/types.ts | 23 +++++++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/src/extensions/context.ts b/src/extensions/context.ts index 3916eb1e..b1c6e8d6 100644 --- a/src/extensions/context.ts +++ b/src/extensions/context.ts @@ -8,7 +8,8 @@ import { PaymentReceivedData, NostrEvent, UnsignedNostrEvent, - RpcMethodHandler + RpcMethodHandler, + LnurlPayInfo } from './types.js' /** @@ -44,6 +45,15 @@ export interface MainHandlerInterface { paymentHash: string feeSats: number }> + + /** + * Get LNURL-pay info for a user by their Nostr pubkey + * This enables Lightning Address (LUD-16) and zap (NIP-57) support + */ + getLnurlPayInfoByPubkey(pubkeyHex: string, options?: { + metadata?: string + description?: string + }): Promise } // Nostr operations @@ -177,6 +187,17 @@ export class ExtensionContextImpl implements ExtensionContext { return this.mainHandler.sendNostrEvent(event) } + /** + * Get LNURL-pay info for a user by pubkey + * Enables Lightning Address and zap support + */ + async getLnurlPayInfo(pubkeyHex: string, options?: { + metadata?: string + description?: string + }): Promise { + return this.mainHandler.paymentManager.getLnurlPayInfoByPubkey(pubkeyHex, options) + } + /** * Subscribe to payment received callbacks */ diff --git a/src/extensions/types.ts b/src/extensions/types.ts index 86b5ebee..62abf5df 100644 --- a/src/extensions/types.ts +++ b/src/extensions/types.ts @@ -77,6 +77,20 @@ export interface PaymentReceivedData { metadata?: Record } +/** + * LNURL-pay info response (LUD-06/LUD-16) + * Used for Lightning Address and zap support + */ +export interface LnurlPayInfo { + tag: 'payRequest' + callback: string // URL to call with amount + minSendable: number // Minimum msats + maxSendable: number // Maximum msats + metadata: string // JSON-encoded metadata array + allowsNostr?: boolean // Whether zaps are supported + nostrPubkey?: string // Pubkey for zap receipts (hex) +} + /** * Nostr event structure (minimal) */ @@ -142,6 +156,15 @@ export interface ExtensionContext { */ publishNostrEvent(event: UnsignedNostrEvent): Promise + /** + * Get LNURL-pay info for a user (by pubkey) + * Used to enable Lightning Address support (LUD-16) and zaps (NIP-57) + */ + getLnurlPayInfo(pubkeyHex: string, options?: { + metadata?: string // Custom metadata JSON + description?: string // Human-readable description + }): Promise + /** * Subscribe to payment received callbacks */