aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2024-11-22 22:42:35 -0800
committerAdam Soltys <[email protected]>2024-11-22 22:42:35 -0800
commitb82f045fe567f25c7d0a9fbb5163853373cd616c (patch)
tree0630fc14b88c740992bf04be5bfcd4fb4334f129 /lib
parent41ff5eb1261ad0878b080b5a85f6553223108429 (diff)
downloadcoinos-server-b82f045fe567f25c7d0a9fbb5163853373cd616c.tar.gz
coinos-server-b82f045fe567f25c7d0a9fbb5163853373cd616c.zip
ecash receive
Diffstat (limited to 'lib')
-rw-r--r--lib/ecash.ts23
-rw-r--r--lib/invoices.ts4
2 files changed, 27 insertions, 0 deletions
diff --git a/lib/ecash.ts b/lib/ecash.ts
index 7c44bec0..1a214b46 100644
--- a/lib/ecash.ts
+++ b/lib/ecash.ts
@@ -6,11 +6,16 @@ import {
CashuMint,
CashuWallet,
MintQuoteState,
+ PaymentRequest,
+ PaymentRequestTransport,
+ PaymentRequestTransportType,
getDecodedToken,
getEncodedToken,
getEncodedTokenV4,
} from "@cashu/cashu-ts";
+import { v4 } from "uuid";
+const { URL } = process.env;
const m = new CashuMint(config.mintUrl);
const w = new CashuWallet(m);
@@ -92,3 +97,21 @@ export async function init(amount = 100000) {
console.log(e);
}
}
+
+export function request(uuid, amount, memo) {
+ const target = `${URL}/ecash/${uuid}`;
+ const tags = [["n", "17"]];
+
+ const { POST: type } = PaymentRequestTransportType;
+ const transport = [{ type, target, tags }];
+ const unit = "sat";
+
+ return new PaymentRequest(
+ transport,
+ uuid,
+ amount,
+ unit,
+ config.mintUrl,
+ memo,
+ ).toEncodedRequest();
+}
diff --git a/lib/invoices.ts b/lib/invoices.ts
index 30ae8402..5e59fd83 100644
--- a/lib/invoices.ts
+++ b/lib/invoices.ts
@@ -1,5 +1,6 @@
import config from "$config";
import { db, g, s } from "$lib/db";
+import { request } from "$lib/ecash";
import ln from "$lib/ln";
import { types } from "$lib/payments";
import { emit } from "$lib/sockets";
@@ -101,6 +102,9 @@ export const generate = async ({ invoice, user }) => {
text = bip21(hash, invoice);
} else if (type === types.internal) {
hash = id;
+ } else if (type === types.ecash) {
+ hash = id;
+ text = request(id, amount, memo);
} else {
fail(`unrecognized type ${type}`);
}