@sunnyln/lni 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +118 -0
- package/dist/errors.d.ts +13 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +25 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/encoding.d.ts +5 -0
- package/dist/internal/encoding.d.ts.map +1 -0
- package/dist/internal/encoding.js +79 -0
- package/dist/internal/encoding.js.map +1 -0
- package/dist/internal/http.d.ts +19 -0
- package/dist/internal/http.d.ts.map +1 -0
- package/dist/internal/http.js +130 -0
- package/dist/internal/http.js.map +1 -0
- package/dist/internal/polling.d.ts +8 -0
- package/dist/internal/polling.d.ts.map +1 -0
- package/dist/internal/polling.js +26 -0
- package/dist/internal/polling.js.map +1 -0
- package/dist/internal/transform.d.ts +10 -0
- package/dist/internal/transform.d.ts.map +1 -0
- package/dist/internal/transform.js +91 -0
- package/dist/internal/transform.js.map +1 -0
- package/dist/lnurl.d.ts +13 -0
- package/dist/lnurl.d.ts.map +1 -0
- package/dist/lnurl.js +156 -0
- package/dist/lnurl.js.map +1 -0
- package/dist/nodes/blink.d.ts +23 -0
- package/dist/nodes/blink.d.ts.map +1 -0
- package/dist/nodes/blink.js +292 -0
- package/dist/nodes/blink.js.map +1 -0
- package/dist/nodes/cln.d.ts +24 -0
- package/dist/nodes/cln.d.ts.map +1 -0
- package/dist/nodes/cln.js +266 -0
- package/dist/nodes/cln.js.map +1 -0
- package/dist/nodes/lnd.d.ts +24 -0
- package/dist/nodes/lnd.d.ts.map +1 -0
- package/dist/nodes/lnd.js +205 -0
- package/dist/nodes/lnd.js.map +1 -0
- package/dist/nodes/nwc.d.ts +21 -0
- package/dist/nodes/nwc.d.ts.map +1 -0
- package/dist/nodes/nwc.js +194 -0
- package/dist/nodes/nwc.js.map +1 -0
- package/dist/nodes/phoenixd.d.ts +22 -0
- package/dist/nodes/phoenixd.d.ts.map +1 -0
- package/dist/nodes/phoenixd.js +258 -0
- package/dist/nodes/phoenixd.js.map +1 -0
- package/dist/nodes/speed.d.ts +25 -0
- package/dist/nodes/speed.d.ts.map +1 -0
- package/dist/nodes/speed.js +170 -0
- package/dist/nodes/speed.js.map +1 -0
- package/dist/nodes/strike.d.ts +25 -0
- package/dist/nodes/strike.d.ts.map +1 -0
- package/dist/nodes/strike.js +231 -0
- package/dist/nodes/strike.js.map +1 -0
- package/dist/types.d.ts +169 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/package.json +70 -0
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
import { LniError } from '../errors.js';
|
|
2
|
+
import { buildUrl, requestJson, requestText, resolveFetch, toTimeoutMs } from '../internal/http.js';
|
|
3
|
+
import { pollInvoiceEvents } from '../internal/polling.js';
|
|
4
|
+
import { emptyNodeInfo, emptyTransaction, parseOptionalNumber } from '../internal/transform.js';
|
|
5
|
+
import { InvoiceType } from '../types.js';
|
|
6
|
+
export class ClnNode {
|
|
7
|
+
config;
|
|
8
|
+
fetchFn;
|
|
9
|
+
timeoutMs;
|
|
10
|
+
constructor(config, options = {}) {
|
|
11
|
+
this.config = config;
|
|
12
|
+
this.fetchFn = resolveFetch(options.fetch);
|
|
13
|
+
this.timeoutMs = toTimeoutMs(config.httpTimeout);
|
|
14
|
+
}
|
|
15
|
+
headers(extra) {
|
|
16
|
+
return {
|
|
17
|
+
rune: this.config.rune,
|
|
18
|
+
'content-type': 'application/json',
|
|
19
|
+
...(extra ?? {}),
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
async postJson(path, json = {}) {
|
|
23
|
+
return requestJson(this.fetchFn, buildUrl(this.config.url, path), {
|
|
24
|
+
method: 'POST',
|
|
25
|
+
headers: this.headers(),
|
|
26
|
+
json,
|
|
27
|
+
timeoutMs: this.timeoutMs,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
async postText(path, json = {}) {
|
|
31
|
+
return requestText(this.fetchFn, buildUrl(this.config.url, path), {
|
|
32
|
+
method: 'POST',
|
|
33
|
+
headers: this.headers(),
|
|
34
|
+
json,
|
|
35
|
+
timeoutMs: this.timeoutMs,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
async fetchInvoiceFromOffer(offer, amountMsats, payerNote) {
|
|
39
|
+
const payload = await this.postJson('/v1/fetchinvoice', {
|
|
40
|
+
offer,
|
|
41
|
+
amount_msat: amountMsats,
|
|
42
|
+
payer_note: payerNote,
|
|
43
|
+
timeout: 60,
|
|
44
|
+
});
|
|
45
|
+
if (!payload.invoice) {
|
|
46
|
+
throw new LniError('Api', 'Missing BOLT12 invoice');
|
|
47
|
+
}
|
|
48
|
+
return payload.invoice;
|
|
49
|
+
}
|
|
50
|
+
invoiceToTransaction(invoice) {
|
|
51
|
+
return emptyTransaction({
|
|
52
|
+
type: 'incoming',
|
|
53
|
+
invoice: invoice.bolt11 ?? invoice.bolt12 ?? '',
|
|
54
|
+
preimage: invoice.payment_preimage ?? '',
|
|
55
|
+
paymentHash: invoice.payment_hash,
|
|
56
|
+
amountMsats: invoice.amount_received_msat ?? invoice.amount_msat ?? 0,
|
|
57
|
+
feesPaid: 0,
|
|
58
|
+
createdAt: 0,
|
|
59
|
+
expiresAt: invoice.expires_at ?? 0,
|
|
60
|
+
settledAt: invoice.paid_at ?? 0,
|
|
61
|
+
description: invoice.description ?? '',
|
|
62
|
+
descriptionHash: '',
|
|
63
|
+
payerNote: invoice.invreq_payer_note ?? '',
|
|
64
|
+
externalId: invoice.label,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
async getInfo() {
|
|
68
|
+
const [info, funds] = await Promise.all([
|
|
69
|
+
this.postJson('/v1/getinfo', {}),
|
|
70
|
+
this.postJson('/v1/listfunds', {}),
|
|
71
|
+
]);
|
|
72
|
+
let sendBalanceMsat = 0;
|
|
73
|
+
let receiveBalanceMsat = 0;
|
|
74
|
+
let unsettledSendBalanceMsat = 0;
|
|
75
|
+
let unsettledReceiveBalanceMsat = 0;
|
|
76
|
+
let pendingOpenSendBalance = 0;
|
|
77
|
+
let pendingOpenReceiveBalance = 0;
|
|
78
|
+
for (const channel of funds.channels) {
|
|
79
|
+
const channelAmount = parseOptionalNumber(channel.amount_msat);
|
|
80
|
+
const localAmount = parseOptionalNumber(channel.our_amount_msat);
|
|
81
|
+
const remoteAmount = channelAmount - localAmount;
|
|
82
|
+
if (channel.state === 'CHANNELD_NORMAL' && channel.connected) {
|
|
83
|
+
sendBalanceMsat += localAmount;
|
|
84
|
+
receiveBalanceMsat += remoteAmount;
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
if (channel.state === 'CHANNELD_NORMAL' && !channel.connected) {
|
|
88
|
+
unsettledSendBalanceMsat += localAmount;
|
|
89
|
+
unsettledReceiveBalanceMsat += remoteAmount;
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
if (channel.state === 'CHANNELD_AWAITING_LOCKIN' ||
|
|
93
|
+
channel.state === 'DUALOPEND_AWAITING_LOCKIN' ||
|
|
94
|
+
channel.state === 'DUALOPEND_OPEN_INIT' ||
|
|
95
|
+
channel.state === 'DUALOPEND_OPEN_COMMITTED' ||
|
|
96
|
+
channel.state === 'DUALOPEND_OPEN_COMMIT_READY' ||
|
|
97
|
+
channel.state === 'OPENINGD') {
|
|
98
|
+
pendingOpenSendBalance += localAmount;
|
|
99
|
+
pendingOpenReceiveBalance += remoteAmount;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return emptyNodeInfo({
|
|
103
|
+
alias: info.alias,
|
|
104
|
+
color: info.color,
|
|
105
|
+
pubkey: info.id,
|
|
106
|
+
network: info.network,
|
|
107
|
+
blockHeight: info.blockheight,
|
|
108
|
+
sendBalanceMsat,
|
|
109
|
+
receiveBalanceMsat,
|
|
110
|
+
unsettledSendBalanceMsat,
|
|
111
|
+
unsettledReceiveBalanceMsat,
|
|
112
|
+
pendingOpenSendBalance,
|
|
113
|
+
pendingOpenReceiveBalance,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
async createInvoice(params) {
|
|
117
|
+
const invoiceType = params.invoiceType ?? InvoiceType.Bolt11;
|
|
118
|
+
if (invoiceType === InvoiceType.Bolt12) {
|
|
119
|
+
if (!params.offer) {
|
|
120
|
+
throw new LniError('InvalidInput', 'Offer is required for BOLT12 invoice creation with CLN.');
|
|
121
|
+
}
|
|
122
|
+
const invoice = await this.fetchInvoiceFromOffer(params.offer, params.amountMsats ?? 0, params.description);
|
|
123
|
+
return emptyTransaction({
|
|
124
|
+
type: 'incoming',
|
|
125
|
+
invoice,
|
|
126
|
+
amountMsats: params.amountMsats ?? 0,
|
|
127
|
+
expiresAt: params.expiry ?? 0,
|
|
128
|
+
description: params.description ?? '',
|
|
129
|
+
descriptionHash: params.descriptionHash ?? '',
|
|
130
|
+
payerNote: '',
|
|
131
|
+
externalId: '',
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
const payload = await this.postJson('/v1/invoice', {
|
|
135
|
+
description: params.description ?? '',
|
|
136
|
+
amount_msat: params.amountMsats !== undefined ? String(params.amountMsats) : 'any',
|
|
137
|
+
expiry: params.expiry,
|
|
138
|
+
label: `lni.${Math.floor(Math.random() * 1_000_000_000)}`,
|
|
139
|
+
});
|
|
140
|
+
return emptyTransaction({
|
|
141
|
+
type: 'incoming',
|
|
142
|
+
invoice: payload.bolt11,
|
|
143
|
+
paymentHash: payload.payment_hash,
|
|
144
|
+
amountMsats: params.amountMsats ?? 0,
|
|
145
|
+
expiresAt: params.expiry ?? 3600,
|
|
146
|
+
description: params.description ?? '',
|
|
147
|
+
descriptionHash: params.descriptionHash ?? '',
|
|
148
|
+
payerNote: '',
|
|
149
|
+
externalId: '',
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
async payInvoice(params) {
|
|
153
|
+
if (params.feeLimitMsat !== undefined && params.feeLimitPercentage !== undefined) {
|
|
154
|
+
throw new LniError('InvalidInput', 'Cannot set both feeLimitMsat and feeLimitPercentage.');
|
|
155
|
+
}
|
|
156
|
+
const body = {
|
|
157
|
+
bolt11: params.invoice,
|
|
158
|
+
};
|
|
159
|
+
if (params.amountMsats !== undefined) {
|
|
160
|
+
body.amount_msat = String(params.amountMsats);
|
|
161
|
+
}
|
|
162
|
+
if (params.feeLimitMsat !== undefined) {
|
|
163
|
+
body.maxfee = String(params.feeLimitMsat);
|
|
164
|
+
}
|
|
165
|
+
if (params.feeLimitPercentage !== undefined) {
|
|
166
|
+
body.maxfeepercent = params.feeLimitPercentage;
|
|
167
|
+
}
|
|
168
|
+
if (params.timeoutSeconds !== undefined) {
|
|
169
|
+
body.retry_for = String(params.timeoutSeconds);
|
|
170
|
+
}
|
|
171
|
+
const payload = await this.postJson('/v1/pay', body);
|
|
172
|
+
return {
|
|
173
|
+
paymentHash: payload.payment_hash,
|
|
174
|
+
preimage: payload.payment_preimage,
|
|
175
|
+
feeMsats: parseOptionalNumber(payload.amount_sent_msat) - parseOptionalNumber(payload.amount_msat),
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
async createOffer(params) {
|
|
179
|
+
const payload = await this.postJson('/v1/offer', {
|
|
180
|
+
amount: params.amountMsats !== undefined ? `${params.amountMsats}msat` : 'any',
|
|
181
|
+
description: params.description,
|
|
182
|
+
});
|
|
183
|
+
return {
|
|
184
|
+
offerId: payload.offer_id ?? '',
|
|
185
|
+
bolt12: payload.bolt12,
|
|
186
|
+
label: params.description,
|
|
187
|
+
active: payload.active,
|
|
188
|
+
singleUse: payload.single_use,
|
|
189
|
+
used: payload.used,
|
|
190
|
+
amountMsats: params.amountMsats,
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
async getOffer(search) {
|
|
194
|
+
const offers = await this.listOffers(search);
|
|
195
|
+
return (offers[0] ?? {
|
|
196
|
+
offerId: '',
|
|
197
|
+
bolt12: '',
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
async listOffers(search) {
|
|
201
|
+
const payload = await this.postJson('/v1/listoffers', {
|
|
202
|
+
...(search ? { offer_id: search } : {}),
|
|
203
|
+
});
|
|
204
|
+
return payload.offers;
|
|
205
|
+
}
|
|
206
|
+
async payOffer(offer, amountMsats, payerNote) {
|
|
207
|
+
const bolt11 = await this.fetchInvoiceFromOffer(offer, amountMsats, payerNote);
|
|
208
|
+
const payload = await this.postJson('/v1/pay', {
|
|
209
|
+
bolt11,
|
|
210
|
+
maxfeepercent: 1,
|
|
211
|
+
retry_for: 60,
|
|
212
|
+
});
|
|
213
|
+
return {
|
|
214
|
+
paymentHash: payload.payment_hash,
|
|
215
|
+
preimage: payload.payment_preimage,
|
|
216
|
+
feeMsats: parseOptionalNumber(payload.amount_sent_msat) - parseOptionalNumber(payload.amount_msat),
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
async lookupInvoice(params) {
|
|
220
|
+
const query = {};
|
|
221
|
+
if (params.paymentHash) {
|
|
222
|
+
query.payment_hash = params.paymentHash;
|
|
223
|
+
}
|
|
224
|
+
else if (params.search) {
|
|
225
|
+
query.payment_hash = params.search;
|
|
226
|
+
}
|
|
227
|
+
const payload = await this.postJson('/v1/listinvoices', query);
|
|
228
|
+
const invoice = payload.invoices[0];
|
|
229
|
+
if (!invoice) {
|
|
230
|
+
throw new LniError('Api', 'No matching invoice found');
|
|
231
|
+
}
|
|
232
|
+
return this.invoiceToTransaction(invoice);
|
|
233
|
+
}
|
|
234
|
+
async listTransactions(params) {
|
|
235
|
+
const payload = await this.postJson('/v1/listinvoices', {
|
|
236
|
+
start: params.from,
|
|
237
|
+
index: 'created',
|
|
238
|
+
limit: params.limit || undefined,
|
|
239
|
+
payment_hash: params.paymentHash,
|
|
240
|
+
});
|
|
241
|
+
const transactions = payload.invoices.map((invoice) => this.invoiceToTransaction(invoice));
|
|
242
|
+
if (params.search) {
|
|
243
|
+
return transactions.filter((tx) => {
|
|
244
|
+
const normalized = params.search?.toLowerCase() ?? '';
|
|
245
|
+
return (tx.paymentHash.toLowerCase().includes(normalized) ||
|
|
246
|
+
tx.description.toLowerCase().includes(normalized) ||
|
|
247
|
+
(tx.payerNote ?? '').toLowerCase().includes(normalized));
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
return transactions;
|
|
251
|
+
}
|
|
252
|
+
async decode(str) {
|
|
253
|
+
return this.postText('/v1/decode', { string: str });
|
|
254
|
+
}
|
|
255
|
+
async onInvoiceEvents(params, callback) {
|
|
256
|
+
await pollInvoiceEvents({
|
|
257
|
+
params,
|
|
258
|
+
callback,
|
|
259
|
+
lookup: () => this.lookupInvoice({
|
|
260
|
+
paymentHash: params.paymentHash,
|
|
261
|
+
search: params.search,
|
|
262
|
+
}),
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
//# sourceMappingURL=cln.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cln.js","sourceRoot":"","sources":["../../src/nodes/cln.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type CreateInvoiceParams, type CreateOfferParams, type InvoiceEventCallback, type LightningNode, type ListTransactionsParams, type LookupInvoiceParams, type LndConfig, type NodeInfo, type NodeRequestOptions, type Offer, type OnInvoiceEventParams, type PayInvoiceParams, type PayInvoiceResponse, type Transaction } from '../types.js';
|
|
2
|
+
export declare class LndNode implements LightningNode {
|
|
3
|
+
private readonly config;
|
|
4
|
+
private readonly fetchFn;
|
|
5
|
+
private readonly timeoutMs?;
|
|
6
|
+
constructor(config: LndConfig, options?: NodeRequestOptions);
|
|
7
|
+
private headers;
|
|
8
|
+
private getJson;
|
|
9
|
+
private postJson;
|
|
10
|
+
private isPermissionDenied;
|
|
11
|
+
private mapInvoice;
|
|
12
|
+
getInfo(): Promise<NodeInfo>;
|
|
13
|
+
createInvoice(params: CreateInvoiceParams): Promise<Transaction>;
|
|
14
|
+
payInvoice(params: PayInvoiceParams): Promise<PayInvoiceResponse>;
|
|
15
|
+
createOffer(_params: CreateOfferParams): Promise<Offer>;
|
|
16
|
+
getOffer(_search?: string): Promise<Offer>;
|
|
17
|
+
listOffers(_search?: string): Promise<Offer[]>;
|
|
18
|
+
payOffer(_offer: string, _amountMsats: number, _payerNote?: string): Promise<PayInvoiceResponse>;
|
|
19
|
+
lookupInvoice(params: LookupInvoiceParams): Promise<Transaction>;
|
|
20
|
+
listTransactions(_params: ListTransactionsParams): Promise<Transaction[]>;
|
|
21
|
+
decode(str: string): Promise<string>;
|
|
22
|
+
onInvoiceEvents(params: OnInvoiceEventParams, callback: InvoiceEventCallback): Promise<void>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=lnd.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lnd.d.ts","sourceRoot":"","sources":["../../src/nodes/lnd.ts"],"names":[],"mappings":"AAIA,OAAO,EAAe,KAAK,mBAAmB,EAAE,KAAK,iBAAiB,EAAE,KAAK,oBAAoB,EAAE,KAAK,aAAa,EAAE,KAAK,sBAAsB,EAAE,KAAK,mBAAmB,EAAE,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,KAAK,kBAAkB,EAAE,KAAK,KAAK,EAAE,KAAK,oBAAoB,EAAE,KAAK,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAsDnW,qBAAa,OAAQ,YAAW,aAAa;IAI/B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAS;gBAEP,MAAM,EAAE,SAAS,EAAE,OAAO,GAAE,kBAAuB;IAKhF,OAAO,CAAC,OAAO;YAOD,OAAO;YAQP,QAAQ;IAStB,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,UAAU;IAkBZ,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;IA4B5B,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC;IA2BhE,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAiEjE,WAAW,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC;IAIvD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAI1C,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAI9C,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAIhG,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC;IAShE,gBAAgB,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAKzE,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQpC,eAAe,CAAC,MAAM,EAAE,oBAAoB,EAAE,QAAQ,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;CAOnG"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import { LniError } from '../errors.js';
|
|
2
|
+
import { buildUrl, requestJson, requestText, resolveFetch, toTimeoutMs } from '../internal/http.js';
|
|
3
|
+
import { pollInvoiceEvents } from '../internal/polling.js';
|
|
4
|
+
import { emptyNodeInfo, emptyTransaction, parseOptionalNumber, rHashToHex } from '../internal/transform.js';
|
|
5
|
+
import { InvoiceType } from '../types.js';
|
|
6
|
+
export class LndNode {
|
|
7
|
+
config;
|
|
8
|
+
fetchFn;
|
|
9
|
+
timeoutMs;
|
|
10
|
+
constructor(config, options = {}) {
|
|
11
|
+
this.config = config;
|
|
12
|
+
this.fetchFn = resolveFetch(options.fetch);
|
|
13
|
+
this.timeoutMs = toTimeoutMs(config.httpTimeout);
|
|
14
|
+
}
|
|
15
|
+
headers(extra) {
|
|
16
|
+
return {
|
|
17
|
+
'grpc-metadata-macaroon': this.config.macaroon,
|
|
18
|
+
...(extra ?? {}),
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
async getJson(path) {
|
|
22
|
+
return requestJson(this.fetchFn, buildUrl(this.config.url, path), {
|
|
23
|
+
method: 'GET',
|
|
24
|
+
headers: this.headers(),
|
|
25
|
+
timeoutMs: this.timeoutMs,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
async postJson(path, json) {
|
|
29
|
+
return requestJson(this.fetchFn, buildUrl(this.config.url, path), {
|
|
30
|
+
method: 'POST',
|
|
31
|
+
headers: this.headers({ 'content-type': 'application/json' }),
|
|
32
|
+
json,
|
|
33
|
+
timeoutMs: this.timeoutMs,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
isPermissionDenied(error) {
|
|
37
|
+
if (!(error instanceof LniError)) {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
if (error.code !== 'Http') {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
const details = `${error.message} ${error.body ?? ''}`.toLowerCase();
|
|
44
|
+
return details.includes('permission denied');
|
|
45
|
+
}
|
|
46
|
+
mapInvoice(invoice) {
|
|
47
|
+
return emptyTransaction({
|
|
48
|
+
type: 'incoming',
|
|
49
|
+
invoice: invoice.payment_request ?? '',
|
|
50
|
+
preimage: rHashToHex(invoice.r_preimage ?? ''),
|
|
51
|
+
paymentHash: rHashToHex(invoice.r_hash ?? ''),
|
|
52
|
+
amountMsats: parseOptionalNumber(invoice.amt_paid_msat),
|
|
53
|
+
feesPaid: parseOptionalNumber(invoice.value_msat),
|
|
54
|
+
createdAt: parseOptionalNumber(invoice.creation_date),
|
|
55
|
+
expiresAt: parseOptionalNumber(invoice.expiry),
|
|
56
|
+
settledAt: parseOptionalNumber(invoice.settle_date),
|
|
57
|
+
description: invoice.memo ?? '',
|
|
58
|
+
descriptionHash: invoice.description_hash ?? '',
|
|
59
|
+
payerNote: '',
|
|
60
|
+
externalId: '',
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
async getInfo() {
|
|
64
|
+
const info = await this.getJson('/v1/getinfo');
|
|
65
|
+
let balances = {};
|
|
66
|
+
try {
|
|
67
|
+
balances = await this.getJson('/v1/balance/channels');
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
if (!this.isPermissionDenied(error)) {
|
|
71
|
+
throw error;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return emptyNodeInfo({
|
|
75
|
+
alias: info.alias,
|
|
76
|
+
color: info.color,
|
|
77
|
+
pubkey: info.identity_pubkey,
|
|
78
|
+
network: info.chains[0]?.network ?? '',
|
|
79
|
+
blockHeight: info.block_height,
|
|
80
|
+
blockHash: info.block_hash,
|
|
81
|
+
sendBalanceMsat: parseOptionalNumber(balances.local_balance?.msat),
|
|
82
|
+
receiveBalanceMsat: parseOptionalNumber(balances.remote_balance?.msat),
|
|
83
|
+
unsettledSendBalanceMsat: parseOptionalNumber(balances.unsettled_local_balance?.msat),
|
|
84
|
+
unsettledReceiveBalanceMsat: parseOptionalNumber(balances.unsettled_remote_balance?.msat),
|
|
85
|
+
pendingOpenSendBalance: parseOptionalNumber(balances.pending_open_local_balance?.msat),
|
|
86
|
+
pendingOpenReceiveBalance: parseOptionalNumber(balances.pending_open_remote_balance?.msat),
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
async createInvoice(params) {
|
|
90
|
+
if ((params.invoiceType ?? InvoiceType.Bolt11) !== InvoiceType.Bolt11) {
|
|
91
|
+
throw new LniError('Api', 'Bolt12 is not implemented for LndNode.');
|
|
92
|
+
}
|
|
93
|
+
const payload = await this.postJson('/v1/invoices', {
|
|
94
|
+
value_msat: params.amountMsats ?? 0,
|
|
95
|
+
memo: params.description ?? '',
|
|
96
|
+
expiry: params.expiry ?? 86400,
|
|
97
|
+
private: params.isPrivate ?? false,
|
|
98
|
+
...(params.rPreimage ? { r_preimage: params.rPreimage } : {}),
|
|
99
|
+
...(params.isBlinded ? { is_blinded: true } : {}),
|
|
100
|
+
});
|
|
101
|
+
return emptyTransaction({
|
|
102
|
+
type: 'incoming',
|
|
103
|
+
invoice: payload.payment_request,
|
|
104
|
+
paymentHash: rHashToHex(payload.r_hash),
|
|
105
|
+
amountMsats: params.amountMsats ?? 0,
|
|
106
|
+
expiresAt: params.expiry ?? 86400,
|
|
107
|
+
description: params.description ?? '',
|
|
108
|
+
descriptionHash: params.descriptionHash ?? '',
|
|
109
|
+
payerNote: '',
|
|
110
|
+
externalId: '',
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
async payInvoice(params) {
|
|
114
|
+
const body = {
|
|
115
|
+
payment_request: params.invoice,
|
|
116
|
+
allow_self_payment: params.allowSelfPayment ?? false,
|
|
117
|
+
timeout_seconds: params.timeoutSeconds ?? 60,
|
|
118
|
+
};
|
|
119
|
+
if (params.feeLimitPercentage !== undefined && params.amountMsats !== undefined) {
|
|
120
|
+
body.fee_limit = {
|
|
121
|
+
fixed_msat: String(params.amountMsats),
|
|
122
|
+
percent: params.feeLimitPercentage,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
const responseText = await requestText(this.fetchFn, buildUrl(this.config.url, '/v2/router/send'), {
|
|
126
|
+
method: 'POST',
|
|
127
|
+
headers: this.headers({ 'content-type': 'application/json' }),
|
|
128
|
+
json: body,
|
|
129
|
+
timeoutMs: this.timeoutMs,
|
|
130
|
+
});
|
|
131
|
+
if (responseText.includes('"error"') && !responseText.includes('"result"')) {
|
|
132
|
+
throw new LniError('Api', `Payment failed: ${responseText}`);
|
|
133
|
+
}
|
|
134
|
+
const finalLine = responseText
|
|
135
|
+
.split('\n')
|
|
136
|
+
.map((line) => line.trim())
|
|
137
|
+
.filter(Boolean)
|
|
138
|
+
.at(-1);
|
|
139
|
+
if (!finalLine) {
|
|
140
|
+
throw new LniError('Json', 'Missing payment response from LND router endpoint.');
|
|
141
|
+
}
|
|
142
|
+
let wrapped;
|
|
143
|
+
try {
|
|
144
|
+
wrapped = JSON.parse(finalLine);
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
throw new LniError('Json', `Failed to parse LND pay response: ${error.message}`);
|
|
148
|
+
}
|
|
149
|
+
if (!wrapped.result) {
|
|
150
|
+
throw new LniError('Json', 'Missing result payload in LND pay response.');
|
|
151
|
+
}
|
|
152
|
+
if (wrapped.result.status === 'FAILED') {
|
|
153
|
+
throw new LniError('Api', `Payment failed: ${wrapped.result.failure_reason ?? 'unknown reason'}`);
|
|
154
|
+
}
|
|
155
|
+
if (wrapped.result.status === 'IN_FLIGHT') {
|
|
156
|
+
throw new LniError('Api', 'Payment is still in-flight. Increase timeoutSeconds and retry.');
|
|
157
|
+
}
|
|
158
|
+
if (wrapped.result.status !== 'SUCCEEDED') {
|
|
159
|
+
throw new LniError('Api', `Unknown payment status: ${wrapped.result.status}`);
|
|
160
|
+
}
|
|
161
|
+
return {
|
|
162
|
+
paymentHash: wrapped.result.payment_hash,
|
|
163
|
+
preimage: wrapped.result.payment_preimage,
|
|
164
|
+
feeMsats: parseOptionalNumber(wrapped.result.fee_msat),
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
async createOffer(_params) {
|
|
168
|
+
throw new LniError('Api', 'Bolt12 is not implemented for LndNode.');
|
|
169
|
+
}
|
|
170
|
+
async getOffer(_search) {
|
|
171
|
+
throw new LniError('Api', 'Bolt12 is not implemented for LndNode.');
|
|
172
|
+
}
|
|
173
|
+
async listOffers(_search) {
|
|
174
|
+
throw new LniError('Api', 'Bolt12 is not implemented for LndNode.');
|
|
175
|
+
}
|
|
176
|
+
async payOffer(_offer, _amountMsats, _payerNote) {
|
|
177
|
+
throw new LniError('Api', 'Bolt12 is not implemented for LndNode.');
|
|
178
|
+
}
|
|
179
|
+
async lookupInvoice(params) {
|
|
180
|
+
if (!params.paymentHash) {
|
|
181
|
+
throw new LniError('InvalidInput', 'lookupInvoice requires paymentHash for LndNode.');
|
|
182
|
+
}
|
|
183
|
+
const payload = await this.getJson(`/v1/invoice/${params.paymentHash}`);
|
|
184
|
+
return this.mapInvoice(payload);
|
|
185
|
+
}
|
|
186
|
+
async listTransactions(_params) {
|
|
187
|
+
const payload = await this.getJson('/v1/invoices');
|
|
188
|
+
return payload.invoices.map((invoice) => this.mapInvoice(invoice)).sort((a, b) => b.createdAt - a.createdAt);
|
|
189
|
+
}
|
|
190
|
+
async decode(str) {
|
|
191
|
+
return requestText(this.fetchFn, buildUrl(this.config.url, `/v1/payreq/${encodeURIComponent(str)}`), {
|
|
192
|
+
method: 'GET',
|
|
193
|
+
headers: this.headers(),
|
|
194
|
+
timeoutMs: this.timeoutMs,
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
async onInvoiceEvents(params, callback) {
|
|
198
|
+
await pollInvoiceEvents({
|
|
199
|
+
params,
|
|
200
|
+
callback,
|
|
201
|
+
lookup: () => this.lookupInvoice({ paymentHash: params.paymentHash, search: params.search }),
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=lnd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lnd.js","sourceRoot":"","sources":["../../src/nodes/lnd.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { CreateInvoiceParams, CreateOfferParams, InvoiceEventCallback, LightningNode, ListTransactionsParams, LookupInvoiceParams, NodeInfo, NodeRequestOptions, NwcConfig, Offer, OnInvoiceEventParams, PayInvoiceParams, PayInvoiceResponse, Transaction } from '../types.js';
|
|
2
|
+
export declare class NwcNode implements LightningNode {
|
|
3
|
+
private readonly config;
|
|
4
|
+
private readonly client;
|
|
5
|
+
constructor(config: NwcConfig, _options?: NodeRequestOptions);
|
|
6
|
+
close(): void;
|
|
7
|
+
getInfo(): Promise<NodeInfo>;
|
|
8
|
+
private mapInfoWithBalance;
|
|
9
|
+
createInvoice(params: CreateInvoiceParams): Promise<Transaction>;
|
|
10
|
+
payInvoice(params: PayInvoiceParams): Promise<PayInvoiceResponse>;
|
|
11
|
+
createOffer(_params: CreateOfferParams): Promise<Offer>;
|
|
12
|
+
getOffer(_search?: string): Promise<Offer>;
|
|
13
|
+
listOffers(_search?: string): Promise<Offer[]>;
|
|
14
|
+
payOffer(_offer: string, _amountMsats: number, _payerNote?: string): Promise<PayInvoiceResponse>;
|
|
15
|
+
lookupInvoice(params: LookupInvoiceParams): Promise<Transaction>;
|
|
16
|
+
listTransactions(params: ListTransactionsParams): Promise<Transaction[]>;
|
|
17
|
+
private filterTransactions;
|
|
18
|
+
decode(str: string): Promise<string>;
|
|
19
|
+
onInvoiceEvents(params: OnInvoiceEventParams, callback: InvoiceEventCallback): Promise<void>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=nwc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nwc.d.ts","sourceRoot":"","sources":["../../src/nodes/nwc.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,aAAa,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,QAAQ,EAAE,kBAAkB,EAAE,SAAS,EAAE,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AA+CrR,qBAAa,OAAQ,YAAW,aAAa;IAG/B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;gBAEN,MAAM,EAAE,SAAS,EAAE,QAAQ,GAAE,kBAAuB;IAMjF,KAAK,IAAI,IAAI;IAIP,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;IAoBlC,OAAO,CAAC,kBAAkB;IAgBpB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC;IAehE,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA6BjE,WAAW,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC;IAIvD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAI1C,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAI9C,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAIhG,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC;IAoBhE,gBAAgB,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAa9E,OAAO,CAAC,kBAAkB;IAwBpB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIpC,eAAe,CAAC,MAAM,EAAE,oBAAoB,EAAE,QAAQ,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;CAWnG"}
|