@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.
Files changed (62) hide show
  1. package/README.md +118 -0
  2. package/dist/errors.d.ts +13 -0
  3. package/dist/errors.d.ts.map +1 -0
  4. package/dist/errors.js +25 -0
  5. package/dist/errors.js.map +1 -0
  6. package/dist/index.d.ts +11 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +11 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/internal/encoding.d.ts +5 -0
  11. package/dist/internal/encoding.d.ts.map +1 -0
  12. package/dist/internal/encoding.js +79 -0
  13. package/dist/internal/encoding.js.map +1 -0
  14. package/dist/internal/http.d.ts +19 -0
  15. package/dist/internal/http.d.ts.map +1 -0
  16. package/dist/internal/http.js +130 -0
  17. package/dist/internal/http.js.map +1 -0
  18. package/dist/internal/polling.d.ts +8 -0
  19. package/dist/internal/polling.d.ts.map +1 -0
  20. package/dist/internal/polling.js +26 -0
  21. package/dist/internal/polling.js.map +1 -0
  22. package/dist/internal/transform.d.ts +10 -0
  23. package/dist/internal/transform.d.ts.map +1 -0
  24. package/dist/internal/transform.js +91 -0
  25. package/dist/internal/transform.js.map +1 -0
  26. package/dist/lnurl.d.ts +13 -0
  27. package/dist/lnurl.d.ts.map +1 -0
  28. package/dist/lnurl.js +156 -0
  29. package/dist/lnurl.js.map +1 -0
  30. package/dist/nodes/blink.d.ts +23 -0
  31. package/dist/nodes/blink.d.ts.map +1 -0
  32. package/dist/nodes/blink.js +292 -0
  33. package/dist/nodes/blink.js.map +1 -0
  34. package/dist/nodes/cln.d.ts +24 -0
  35. package/dist/nodes/cln.d.ts.map +1 -0
  36. package/dist/nodes/cln.js +266 -0
  37. package/dist/nodes/cln.js.map +1 -0
  38. package/dist/nodes/lnd.d.ts +24 -0
  39. package/dist/nodes/lnd.d.ts.map +1 -0
  40. package/dist/nodes/lnd.js +205 -0
  41. package/dist/nodes/lnd.js.map +1 -0
  42. package/dist/nodes/nwc.d.ts +21 -0
  43. package/dist/nodes/nwc.d.ts.map +1 -0
  44. package/dist/nodes/nwc.js +194 -0
  45. package/dist/nodes/nwc.js.map +1 -0
  46. package/dist/nodes/phoenixd.d.ts +22 -0
  47. package/dist/nodes/phoenixd.d.ts.map +1 -0
  48. package/dist/nodes/phoenixd.js +258 -0
  49. package/dist/nodes/phoenixd.js.map +1 -0
  50. package/dist/nodes/speed.d.ts +25 -0
  51. package/dist/nodes/speed.d.ts.map +1 -0
  52. package/dist/nodes/speed.js +170 -0
  53. package/dist/nodes/speed.js.map +1 -0
  54. package/dist/nodes/strike.d.ts +25 -0
  55. package/dist/nodes/strike.d.ts.map +1 -0
  56. package/dist/nodes/strike.js +231 -0
  57. package/dist/nodes/strike.js.map +1 -0
  58. package/dist/types.d.ts +169 -0
  59. package/dist/types.d.ts.map +1 -0
  60. package/dist/types.js +6 -0
  61. package/dist/types.js.map +1 -0
  62. package/package.json +70 -0
@@ -0,0 +1,194 @@
1
+ import { NWCClient } from '@getalby/sdk/nwc';
2
+ import { LniError } from '../errors.js';
3
+ import { bytesToHex, hexToBytes } from '../internal/encoding.js';
4
+ import { pollInvoiceEvents } from '../internal/polling.js';
5
+ import { emptyNodeInfo, emptyTransaction, parseOptionalNumber } from '../internal/transform.js';
6
+ function extractPubkeyFromNwcUri(uri) {
7
+ try {
8
+ const parsed = NWCClient.parseWalletConnectUrl(uri);
9
+ return parsed.walletPubkey ?? '';
10
+ }
11
+ catch {
12
+ // ignore
13
+ }
14
+ const withoutParams = uri.split('?')[0] ?? '';
15
+ if (withoutParams.startsWith('nostr+walletconnect://')) {
16
+ return withoutParams.replace('nostr+walletconnect://', '');
17
+ }
18
+ return '';
19
+ }
20
+ async function sha256Hex(bytes) {
21
+ if (!globalThis.crypto?.subtle) {
22
+ throw new LniError('Api', 'Web Crypto API is required to hash NWC preimages.');
23
+ }
24
+ const digestInput = new Uint8Array(bytes.length);
25
+ digestInput.set(bytes);
26
+ const digest = await globalThis.crypto.subtle.digest('SHA-256', digestInput);
27
+ return bytesToHex(new Uint8Array(digest));
28
+ }
29
+ function nwcTransactionToLniTransaction(tx) {
30
+ return emptyTransaction({
31
+ type: tx.type,
32
+ invoice: tx.invoice ?? '',
33
+ description: tx.description ?? '',
34
+ descriptionHash: tx.description_hash ?? '',
35
+ preimage: tx.preimage ?? '',
36
+ paymentHash: tx.payment_hash ?? '',
37
+ amountMsats: parseOptionalNumber(tx.amount),
38
+ feesPaid: parseOptionalNumber(tx.fees_paid),
39
+ createdAt: parseOptionalNumber(tx.created_at),
40
+ expiresAt: parseOptionalNumber(tx.expires_at),
41
+ settledAt: parseOptionalNumber(tx.settled_at),
42
+ payerNote: '',
43
+ externalId: '',
44
+ });
45
+ }
46
+ export class NwcNode {
47
+ config;
48
+ client;
49
+ constructor(config, _options = {}) {
50
+ this.config = config;
51
+ this.client = new NWCClient({
52
+ nostrWalletConnectUrl: config.nwcUri,
53
+ });
54
+ }
55
+ close() {
56
+ this.client.close();
57
+ }
58
+ async getInfo() {
59
+ const balance = await this.client.getBalance().catch((error) => {
60
+ throw new LniError('Api', `Failed to get balance: ${error?.message ?? 'unknown error'}`);
61
+ });
62
+ const pubkeyFallback = extractPubkeyFromNwcUri(this.config.nwcUri);
63
+ try {
64
+ const info = await this.client.getInfo();
65
+ return this.mapInfoWithBalance(info, balance, pubkeyFallback);
66
+ }
67
+ catch {
68
+ return emptyNodeInfo({
69
+ alias: 'NWC Node',
70
+ pubkey: pubkeyFallback,
71
+ network: 'mainnet',
72
+ sendBalanceMsat: parseOptionalNumber(balance.balance),
73
+ });
74
+ }
75
+ }
76
+ mapInfoWithBalance(info, balance, pubkeyFallback) {
77
+ return emptyNodeInfo({
78
+ alias: info.alias ?? 'NWC Node',
79
+ color: info.color ?? '',
80
+ pubkey: info.pubkey ?? pubkeyFallback,
81
+ network: info.network ?? 'mainnet',
82
+ blockHeight: parseOptionalNumber(info.block_height),
83
+ blockHash: info.block_hash ?? '',
84
+ sendBalanceMsat: parseOptionalNumber(balance.balance),
85
+ });
86
+ }
87
+ async createInvoice(params) {
88
+ const tx = await this.client
89
+ .makeInvoice({
90
+ amount: params.amountMsats ?? 0,
91
+ description: params.description,
92
+ description_hash: params.descriptionHash,
93
+ expiry: params.expiry,
94
+ })
95
+ .catch((error) => {
96
+ throw new LniError('Api', `Failed to create invoice: ${error?.message ?? 'unknown error'}`);
97
+ });
98
+ return nwcTransactionToLniTransaction(tx);
99
+ }
100
+ async payInvoice(params) {
101
+ const response = await this.client
102
+ .payInvoice({
103
+ invoice: params.invoice,
104
+ amount: params.amountMsats,
105
+ })
106
+ .catch((error) => {
107
+ throw new LniError('Api', `Failed to pay invoice: ${error?.message ?? 'unknown error'}`);
108
+ });
109
+ let paymentHash = '';
110
+ if (response.preimage) {
111
+ let preimageBytes;
112
+ try {
113
+ preimageBytes = hexToBytes(response.preimage);
114
+ }
115
+ catch (error) {
116
+ throw new LniError('InvalidInput', `Invalid preimage hex: ${error.message}`);
117
+ }
118
+ paymentHash = await sha256Hex(preimageBytes);
119
+ }
120
+ return {
121
+ paymentHash,
122
+ preimage: response.preimage,
123
+ feeMsats: parseOptionalNumber(response.fees_paid),
124
+ };
125
+ }
126
+ async createOffer(_params) {
127
+ throw new LniError('Api', 'NWC does not support offers (BOLT12) yet.');
128
+ }
129
+ async getOffer(_search) {
130
+ throw new LniError('Api', 'NWC does not support offers (BOLT12) yet.');
131
+ }
132
+ async listOffers(_search) {
133
+ throw new LniError('Api', 'NWC does not support offers (BOLT12) yet.');
134
+ }
135
+ async payOffer(_offer, _amountMsats, _payerNote) {
136
+ throw new LniError('Api', 'NWC does not support offers (BOLT12) yet.');
137
+ }
138
+ async lookupInvoice(params) {
139
+ const paymentHash = params.paymentHash;
140
+ const invoice = params.search;
141
+ if (!paymentHash && !invoice) {
142
+ throw new LniError('InvalidInput', 'lookupInvoice requires paymentHash or search (invoice) for NwcNode.');
143
+ }
144
+ const tx = await this.client
145
+ .lookupInvoice({
146
+ payment_hash: paymentHash,
147
+ invoice,
148
+ })
149
+ .catch((error) => {
150
+ throw new LniError('Api', `Failed to lookup invoice: ${error?.message ?? 'unknown error'}`);
151
+ });
152
+ return nwcTransactionToLniTransaction(tx);
153
+ }
154
+ async listTransactions(params) {
155
+ const response = await this.client
156
+ .listTransactions({
157
+ from: params.from > 0 ? params.from : undefined,
158
+ limit: params.limit > 0 ? params.limit : undefined,
159
+ })
160
+ .catch((error) => {
161
+ throw new LniError('Api', `Failed to list transactions: ${error?.message ?? 'unknown error'}`);
162
+ });
163
+ return this.filterTransactions(response, params);
164
+ }
165
+ filterTransactions(response, params) {
166
+ const mapped = response.transactions.map((tx) => nwcTransactionToLniTransaction(tx));
167
+ return mapped.filter((tx) => {
168
+ if (params.paymentHash && tx.paymentHash !== params.paymentHash) {
169
+ return false;
170
+ }
171
+ if (params.search) {
172
+ const search = params.search.toLowerCase();
173
+ return (tx.paymentHash.toLowerCase().includes(search) ||
174
+ tx.invoice.toLowerCase().includes(search) ||
175
+ tx.description.toLowerCase().includes(search));
176
+ }
177
+ return true;
178
+ });
179
+ }
180
+ async decode(str) {
181
+ return str;
182
+ }
183
+ async onInvoiceEvents(params, callback) {
184
+ await pollInvoiceEvents({
185
+ params,
186
+ callback,
187
+ lookup: () => this.lookupInvoice({
188
+ paymentHash: params.paymentHash,
189
+ search: params.search,
190
+ }),
191
+ });
192
+ }
193
+ }
194
+ //# sourceMappingURL=nwc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nwc.js","sourceRoot":"","sources":["../../src/nodes/nwc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { type CreateInvoiceParams, type CreateOfferParams, type InvoiceEventCallback, type LightningNode, type ListTransactionsParams, type LookupInvoiceParams, type NodeRequestOptions, type Offer, type OnInvoiceEventParams, type PayInvoiceParams, type PayInvoiceResponse, type PhoenixdConfig, type Transaction, type NodeInfo } from '../types.js';
2
+ export declare class PhoenixdNode implements LightningNode {
3
+ private readonly config;
4
+ private readonly fetchFn;
5
+ private readonly timeoutMs?;
6
+ constructor(config: PhoenixdConfig, options?: NodeRequestOptions);
7
+ private authHeader;
8
+ private requestJson;
9
+ private requestText;
10
+ getInfo(): Promise<NodeInfo>;
11
+ createInvoice(params: CreateInvoiceParams): Promise<Transaction>;
12
+ payInvoice(params: PayInvoiceParams): Promise<PayInvoiceResponse>;
13
+ createOffer(params: CreateOfferParams): Promise<Offer>;
14
+ getOffer(): Promise<Offer>;
15
+ listOffers(): Promise<Offer[]>;
16
+ payOffer(offer: string, amountMsats: number, payerNote?: string): Promise<PayInvoiceResponse>;
17
+ lookupInvoice(params: LookupInvoiceParams): Promise<Transaction>;
18
+ listTransactions(params: ListTransactionsParams): Promise<Transaction[]>;
19
+ decode(str: string): Promise<string>;
20
+ onInvoiceEvents(params: OnInvoiceEventParams, callback: InvoiceEventCallback): Promise<void>;
21
+ }
22
+ //# sourceMappingURL=phoenixd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phoenixd.d.ts","sourceRoot":"","sources":["../../src/nodes/phoenixd.ts"],"names":[],"mappings":"AAKA,OAAO,EAAe,KAAK,mBAAmB,EAAE,KAAK,iBAAiB,EAAE,KAAK,oBAAoB,EAAE,KAAK,aAAa,EAAE,KAAK,sBAAsB,EAAE,KAAK,mBAAmB,EAAE,KAAK,kBAAkB,EAAE,KAAK,KAAK,EAAE,KAAK,oBAAoB,EAAE,KAAK,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAE,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAmDxW,qBAAa,YAAa,YAAW,aAAa;IAIpC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAS;gBAEP,MAAM,EAAE,cAAc,EAAE,OAAO,GAAE,kBAAuB;IAKrF,OAAO,CAAC,UAAU;YAIJ,WAAW;YAWX,WAAW;IAWnB,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;IAkB5B,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC;IA8ChE,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAgBjE,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC;IAoBtD,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC;IAQ1B,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAI9B,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAiB7F,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC;IA4BhE,gBAAgB,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IA6ExE,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;CAmBnG"}
@@ -0,0 +1,258 @@
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, matchesSearch, satsToMsats, toUnixSeconds } from '../internal/transform.js';
5
+ import { encodeBase64 } from '../internal/encoding.js';
6
+ import { InvoiceType } from '../types.js';
7
+ export class PhoenixdNode {
8
+ config;
9
+ fetchFn;
10
+ timeoutMs;
11
+ constructor(config, options = {}) {
12
+ this.config = config;
13
+ this.fetchFn = resolveFetch(options.fetch);
14
+ this.timeoutMs = toTimeoutMs(config.httpTimeout);
15
+ }
16
+ authHeader() {
17
+ return `Basic ${encodeBase64(`:${this.config.password}`)}`;
18
+ }
19
+ async requestJson(path, args) {
20
+ return requestJson(this.fetchFn, buildUrl(this.config.url, path), {
21
+ ...args,
22
+ timeoutMs: args?.timeoutMs ?? this.timeoutMs,
23
+ headers: {
24
+ authorization: this.authHeader(),
25
+ ...(args?.headers ?? {}),
26
+ },
27
+ });
28
+ }
29
+ async requestText(path, args) {
30
+ return requestText(this.fetchFn, buildUrl(this.config.url, path), {
31
+ ...args,
32
+ timeoutMs: args?.timeoutMs ?? this.timeoutMs,
33
+ headers: {
34
+ authorization: this.authHeader(),
35
+ ...(args?.headers ?? {}),
36
+ },
37
+ });
38
+ }
39
+ async getInfo() {
40
+ const [info, balance] = await Promise.all([
41
+ this.requestJson('/getinfo', { method: 'GET' }),
42
+ this.requestJson('/getbalance', { method: 'GET' }),
43
+ ]);
44
+ const firstChannel = info.channels[0];
45
+ return emptyNodeInfo({
46
+ alias: 'Phoenixd',
47
+ pubkey: info.nodeId,
48
+ network: 'bitcoin',
49
+ sendBalanceMsat: satsToMsats(firstChannel?.balanceSat ?? 0),
50
+ receiveBalanceMsat: satsToMsats(firstChannel?.inboundLiquiditySat ?? 0),
51
+ feeCreditBalanceMsat: satsToMsats(balance.feeCreditSat),
52
+ });
53
+ }
54
+ async createInvoice(params) {
55
+ const invoiceType = params.invoiceType ?? InvoiceType.Bolt11;
56
+ if (invoiceType === InvoiceType.Bolt12) {
57
+ const offer = await this.requestText('/createoffer', {
58
+ method: 'POST',
59
+ form: {
60
+ description: params.description,
61
+ amountSat: params.amountMsats ? Math.floor(params.amountMsats / 1000) : undefined,
62
+ },
63
+ });
64
+ return emptyTransaction({
65
+ type: 'incoming',
66
+ invoice: offer.trim(),
67
+ amountMsats: params.amountMsats ?? 0,
68
+ expiresAt: params.expiry ?? 3600,
69
+ description: params.description ?? '',
70
+ descriptionHash: params.descriptionHash ?? '',
71
+ payerNote: '',
72
+ externalId: '',
73
+ });
74
+ }
75
+ const payload = await this.requestJson('/createinvoice', {
76
+ method: 'POST',
77
+ form: {
78
+ amountSat: params.amountMsats ? Math.floor(params.amountMsats / 1000) : 0,
79
+ expirySeconds: params.expiry ?? 3600,
80
+ description: params.description,
81
+ },
82
+ });
83
+ return emptyTransaction({
84
+ type: 'incoming',
85
+ invoice: payload.serialized,
86
+ paymentHash: payload.paymentHash,
87
+ amountMsats: params.amountMsats ?? 0,
88
+ expiresAt: params.expiry ?? 3600,
89
+ description: params.description ?? '',
90
+ descriptionHash: params.descriptionHash ?? '',
91
+ payerNote: '',
92
+ externalId: '',
93
+ });
94
+ }
95
+ async payInvoice(params) {
96
+ const payload = await this.requestJson('/payinvoice', {
97
+ method: 'POST',
98
+ form: {
99
+ invoice: params.invoice,
100
+ amountSat: params.amountMsats ? Math.floor(params.amountMsats / 1000) : undefined,
101
+ },
102
+ });
103
+ return {
104
+ paymentHash: payload.paymentHash,
105
+ preimage: payload.paymentPreimage,
106
+ feeMsats: satsToMsats(payload.routingFeeSat),
107
+ };
108
+ }
109
+ async createOffer(params) {
110
+ const bolt12 = await this.requestText('/createoffer', {
111
+ method: 'POST',
112
+ form: {
113
+ description: params.description,
114
+ amountSat: params.amountMsats ? Math.floor(params.amountMsats / 1000) : undefined,
115
+ },
116
+ });
117
+ return {
118
+ offerId: '',
119
+ bolt12: bolt12.trim(),
120
+ label: params.description,
121
+ active: true,
122
+ singleUse: false,
123
+ used: false,
124
+ amountMsats: params.amountMsats,
125
+ };
126
+ }
127
+ async getOffer() {
128
+ const bolt12 = await this.requestText('/getoffer', { method: 'GET' });
129
+ return {
130
+ offerId: '',
131
+ bolt12: bolt12.trim(),
132
+ };
133
+ }
134
+ async listOffers() {
135
+ return [];
136
+ }
137
+ async payOffer(offer, amountMsats, payerNote) {
138
+ const payload = await this.requestJson('/payoffer', {
139
+ method: 'POST',
140
+ form: {
141
+ offer,
142
+ amountSat: Math.floor(amountMsats / 1000),
143
+ message: payerNote,
144
+ },
145
+ });
146
+ return {
147
+ paymentHash: payload.paymentHash,
148
+ preimage: payload.paymentPreimage,
149
+ feeMsats: satsToMsats(payload.routingFeeSat),
150
+ };
151
+ }
152
+ async lookupInvoice(params) {
153
+ if (!params.paymentHash) {
154
+ throw new LniError('InvalidInput', 'lookupInvoice requires paymentHash for PhoenixdNode.');
155
+ }
156
+ const invoice = await this.requestJson(`/payments/incoming/${params.paymentHash}`, {
157
+ method: 'GET',
158
+ });
159
+ const settledAt = invoice.completedAt && invoice.isPaid ? toUnixSeconds(invoice.completedAt) : 0;
160
+ return emptyTransaction({
161
+ type: 'incoming',
162
+ invoice: invoice.invoice ?? '',
163
+ preimage: invoice.preimage,
164
+ paymentHash: invoice.paymentHash,
165
+ amountMsats: satsToMsats(invoice.receivedSat),
166
+ feesPaid: satsToMsats(invoice.fees),
167
+ createdAt: toUnixSeconds(invoice.createdAt),
168
+ expiresAt: 0,
169
+ settledAt,
170
+ description: invoice.description ?? '',
171
+ descriptionHash: '',
172
+ payerNote: invoice.payerNote ?? '',
173
+ externalId: invoice.externalId ?? '',
174
+ });
175
+ }
176
+ async listTransactions(params) {
177
+ const query = {
178
+ from: params.from ? params.from * 1000 : undefined,
179
+ limit: params.limit || undefined,
180
+ all: false,
181
+ };
182
+ const incoming = await requestJson(this.fetchFn, buildUrl(this.config.url, '/payments/incoming', query), {
183
+ method: 'GET',
184
+ timeoutMs: this.timeoutMs,
185
+ headers: { authorization: this.authHeader() },
186
+ });
187
+ const outgoing = await requestJson(this.fetchFn, buildUrl(this.config.url, '/payments/outgoing', query), {
188
+ method: 'GET',
189
+ timeoutMs: this.timeoutMs,
190
+ headers: { authorization: this.authHeader() },
191
+ });
192
+ const txs = [];
193
+ for (const item of incoming) {
194
+ const tx = emptyTransaction({
195
+ type: 'incoming',
196
+ preimage: item.preimage,
197
+ paymentHash: item.paymentHash,
198
+ amountMsats: satsToMsats(item.receivedSat),
199
+ feesPaid: satsToMsats(item.fees),
200
+ createdAt: toUnixSeconds(item.createdAt),
201
+ settledAt: item.isPaid && item.completedAt ? toUnixSeconds(item.completedAt) : 0,
202
+ payerNote: item.payerNote ?? '',
203
+ externalId: item.externalId ?? '',
204
+ });
205
+ if (params.paymentHash && tx.paymentHash !== params.paymentHash) {
206
+ continue;
207
+ }
208
+ if (!matchesSearch(tx, params.search)) {
209
+ continue;
210
+ }
211
+ txs.push(tx);
212
+ }
213
+ for (const item of outgoing) {
214
+ const tx = emptyTransaction({
215
+ type: 'outgoing',
216
+ preimage: item.preimage ?? '',
217
+ paymentHash: item.paymentHash ?? '',
218
+ amountMsats: satsToMsats(item.sent),
219
+ feesPaid: satsToMsats(item.fees),
220
+ createdAt: toUnixSeconds(item.createdAt),
221
+ settledAt: item.completedAt ? toUnixSeconds(item.completedAt) : 0,
222
+ payerNote: item.payerNote ?? '',
223
+ externalId: item.externalId ?? item.paymentId ?? '',
224
+ });
225
+ if (params.paymentHash && tx.paymentHash !== params.paymentHash) {
226
+ continue;
227
+ }
228
+ if (!matchesSearch(tx, params.search)) {
229
+ continue;
230
+ }
231
+ txs.push(tx);
232
+ }
233
+ txs.sort((a, b) => b.createdAt - a.createdAt);
234
+ return txs;
235
+ }
236
+ async decode(str) {
237
+ return str;
238
+ }
239
+ async onInvoiceEvents(params, callback) {
240
+ await pollInvoiceEvents({
241
+ params,
242
+ callback,
243
+ lookup: () => {
244
+ if (params.paymentHash) {
245
+ return this.lookupInvoice({ paymentHash: params.paymentHash });
246
+ }
247
+ return this.listTransactions({ from: 0, limit: 2500, search: params.search }).then((txs) => {
248
+ const tx = txs[0];
249
+ if (!tx) {
250
+ throw new LniError('Api', 'No matching transactions');
251
+ }
252
+ return tx;
253
+ });
254
+ },
255
+ });
256
+ }
257
+ }
258
+ //# sourceMappingURL=phoenixd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phoenixd.js","sourceRoot":"","sources":["../../src/nodes/phoenixd.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { type CreateInvoiceParams, type CreateOfferParams, type InvoiceEventCallback, type LightningNode, type ListTransactionsParams, type LookupInvoiceParams, type NodeInfo, type NodeRequestOptions, type Offer, type OnInvoiceEventParams, type PayInvoiceParams, type PayInvoiceResponse, type SpeedConfig, type Transaction } from '../types.js';
2
+ export declare class SpeedNode implements LightningNode {
3
+ private readonly config;
4
+ private readonly fetchFn;
5
+ private readonly timeoutMs?;
6
+ private readonly baseUrl;
7
+ constructor(config: SpeedConfig, options?: NodeRequestOptions);
8
+ private headers;
9
+ private getJson;
10
+ private postJson;
11
+ private fetchSendTransactions;
12
+ private sendToTransaction;
13
+ getInfo(): Promise<NodeInfo>;
14
+ createInvoice(params: CreateInvoiceParams): Promise<Transaction>;
15
+ payInvoice(params: PayInvoiceParams): Promise<PayInvoiceResponse>;
16
+ createOffer(_params: CreateOfferParams): Promise<Offer>;
17
+ getOffer(_search?: string): Promise<Offer>;
18
+ listOffers(_search?: string): Promise<Offer[]>;
19
+ payOffer(_offer: string, _amountMsats: number, _payerNote?: string): Promise<PayInvoiceResponse>;
20
+ lookupInvoice(params: LookupInvoiceParams): Promise<Transaction>;
21
+ listTransactions(params: ListTransactionsParams): Promise<Transaction[]>;
22
+ decode(str: string): Promise<string>;
23
+ onInvoiceEvents(params: OnInvoiceEventParams, callback: InvoiceEventCallback): Promise<void>;
24
+ }
25
+ //# sourceMappingURL=speed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"speed.d.ts","sourceRoot":"","sources":["../../src/nodes/speed.ts"],"names":[],"mappings":"AAKA,OAAO,EAAe,KAAK,mBAAmB,EAAE,KAAK,iBAAiB,EAAE,KAAK,oBAAoB,EAAE,KAAK,aAAa,EAAE,KAAK,sBAAsB,EAAE,KAAK,mBAAmB,EAAE,KAAK,QAAQ,EAAE,KAAK,kBAAkB,EAAE,KAAK,KAAK,EAAE,KAAK,oBAAoB,EAAE,KAAK,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAyCrW,qBAAa,SAAU,YAAW,aAAa;IAKjC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAEJ,MAAM,EAAE,WAAW,EAAE,OAAO,GAAE,kBAAuB;IAMlF,OAAO,CAAC,OAAO;YASD,OAAO;YAQP,QAAQ;YASR,qBAAqB;IASnC,OAAO,CAAC,iBAAiB;IAgBnB,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;IAW5B,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC;IA8BhE,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAsBjE,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;IA2BhE,gBAAgB,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAkBxE,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;CAOnG"}