import { msatsSatsFloor } from '@/lib/format' import { lnAddrOptions } from '@/lib/lnurl' export * from 'wallets/lightning-address' export const testCreateInvoice = async ({ address }) => { return await createInvoice({ msats: 1000 }, { address }) } export const createInvoice = async ( { msats, description }, { address } ) => { const { callback, commentAllowed } = await lnAddrOptions(address) const callbackUrl = new URL(callback) // most lnurl providers suck nards so we have to floor to nearest sat msats = msatsSatsFloor(msats) callbackUrl.searchParams.append('amount', msats) if (commentAllowed >= description?.length) { callbackUrl.searchParams.append('comment', description) } // call callback with amount and conditionally comment const res = await (await fetch(callbackUrl.toString())).json() if (res.status === 'ERROR') { throw new Error(res.reason) } return res.pr }