- Add window.webln API for web app Lightning wallet integration
- Implement webln.enable(), getInfo(), sendPayment(), makeInvoice() methods
- Add WebLN permission prompts with proper amount display for payments
- Dispatch webln:ready and webln:enabled events per WebLN standard
- Add NWC client caching for persistent wallet connections
- Implement inline BOLT11 invoice amount parsing
- Always prompt for sendPayment (security-critical, irreversible)
- Add signMessage/verifyMessage stubs that return "not supported"
- Fix response handling for undefined returns in content script
Files modified:
- projects/common/src/lib/models/nostr.ts (WeblnMethod, ExtensionMethod types)
- projects/common/src/lib/models/webln.ts (new - WebLN response types)
- projects/common/src/public-api.ts (export webln types)
- projects/{chrome,firefox}/src/plebian-signer-extension.ts (window.webln)
- projects/{chrome,firefox}/src/background.ts (WebLN handlers)
- projects/{chrome,firefox}/src/background-common.ts (WebLN permissions)
- projects/{chrome,firefox}/public/prompt.html (WebLN cards)
- projects/{chrome,firefox}/src/prompt.ts (WebLN method handling)
- projects/common/src/lib/services/storage/types.ts (ExtensionMethod type)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
42 lines
766 B
TypeScript
42 lines
766 B
TypeScript
/**
|
|
* WebLN API Types
|
|
* Based on the WebLN specification: https://webln.dev/
|
|
*/
|
|
|
|
export interface WebLNNode {
|
|
alias?: string;
|
|
pubkey?: string;
|
|
color?: string;
|
|
}
|
|
|
|
export interface GetInfoResponse {
|
|
node: WebLNNode;
|
|
}
|
|
|
|
export interface SendPaymentResponse {
|
|
preimage: string;
|
|
}
|
|
|
|
export interface RequestInvoiceArgs {
|
|
amount?: string | number;
|
|
defaultAmount?: string | number;
|
|
minimumAmount?: string | number;
|
|
maximumAmount?: string | number;
|
|
defaultMemo?: string;
|
|
}
|
|
|
|
export interface RequestInvoiceResponse {
|
|
paymentRequest: string;
|
|
}
|
|
|
|
export interface KeysendArgs {
|
|
destination: string;
|
|
amount: string | number;
|
|
customRecords?: Record<string, string>;
|
|
}
|
|
|
|
export interface SignMessageResponse {
|
|
message: string;
|
|
signature: string;
|
|
}
|