import { finishEvent } from './event.ts' import { encrypt } from './nip04.ts' import { Kind } from './event' export function parseConnectionString(connectionString: string) { const { pathname, searchParams } = new URL(connectionString) const pubkey = pathname const relay = searchParams.get('relay') const secret = searchParams.get('secret') if (!pubkey || !relay || !secret) { throw new Error('invalid connection string') } return { pubkey, relay, secret } } export async function makeNwcRequestEvent({ pubkey, secret, invoice, }: { pubkey: string secret: string invoice: string }) { const content = { method: 'pay_invoice', params: { invoice, }, } const encryptedContent = await encrypt(secret, pubkey, JSON.stringify(content)) const eventTemplate = { kind: Kind.NwcRequest, created_at: Math.round(Date.now() / 1000), content: encryptedContent, tags: [['p', pubkey]], } return finishEvent(eventTemplate, secret) }