@toon-protocol/connector 2.0.0 → 2.2.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 (88) hide show
  1. package/dist/btp/btp-claim-types.d.ts +24 -2
  2. package/dist/btp/btp-claim-types.d.ts.map +1 -1
  3. package/dist/btp/btp-claim-types.js +115 -9
  4. package/dist/btp/btp-claim-types.js.map +1 -1
  5. package/dist/btp/inbound-claim-validator.d.ts +5 -1
  6. package/dist/btp/inbound-claim-validator.d.ts.map +1 -1
  7. package/dist/btp/inbound-claim-validator.js +52 -10
  8. package/dist/btp/inbound-claim-validator.js.map +1 -1
  9. package/dist/config/config-loader.d.ts.map +1 -1
  10. package/dist/config/config-loader.js +3 -0
  11. package/dist/config/config-loader.js.map +1 -1
  12. package/dist/config/types.d.ts +15 -0
  13. package/dist/config/types.d.ts.map +1 -1
  14. package/dist/config/types.js +45 -0
  15. package/dist/config/types.js.map +1 -1
  16. package/dist/core/connector-node.d.ts.map +1 -1
  17. package/dist/core/connector-node.js +57 -12
  18. package/dist/core/connector-node.js.map +1 -1
  19. package/dist/core/packet-handler.d.ts +10 -1
  20. package/dist/core/packet-handler.d.ts.map +1 -1
  21. package/dist/core/packet-handler.js +67 -2
  22. package/dist/core/packet-handler.js.map +1 -1
  23. package/dist/settlement/channel-manager.d.ts +3 -2
  24. package/dist/settlement/channel-manager.d.ts.map +1 -1
  25. package/dist/settlement/channel-manager.js +18 -6
  26. package/dist/settlement/channel-manager.js.map +1 -1
  27. package/dist/settlement/claim-receiver.d.ts +16 -3
  28. package/dist/settlement/claim-receiver.d.ts.map +1 -1
  29. package/dist/settlement/claim-receiver.js +434 -117
  30. package/dist/settlement/claim-receiver.js.map +1 -1
  31. package/dist/settlement/claim-sender.d.ts +4 -2
  32. package/dist/settlement/claim-sender.d.ts.map +1 -1
  33. package/dist/settlement/claim-sender.js +38 -0
  34. package/dist/settlement/claim-sender.js.map +1 -1
  35. package/dist/settlement/mina-payment-channel-sdk.d.ts +73 -0
  36. package/dist/settlement/mina-payment-channel-sdk.d.ts.map +1 -0
  37. package/dist/settlement/mina-payment-channel-sdk.js +538 -0
  38. package/dist/settlement/mina-payment-channel-sdk.js.map +1 -0
  39. package/dist/settlement/per-packet-claim-service.d.ts +12 -6
  40. package/dist/settlement/per-packet-claim-service.d.ts.map +1 -1
  41. package/dist/settlement/per-packet-claim-service.js +205 -40
  42. package/dist/settlement/per-packet-claim-service.js.map +1 -1
  43. package/dist/settlement/privacy/index.d.ts +3 -0
  44. package/dist/settlement/privacy/index.d.ts.map +1 -0
  45. package/dist/settlement/privacy/index.js +11 -0
  46. package/dist/settlement/privacy/index.js.map +1 -0
  47. package/dist/settlement/privacy/nip59-claim-wrapper.d.ts +60 -0
  48. package/dist/settlement/privacy/nip59-claim-wrapper.d.ts.map +1 -0
  49. package/dist/settlement/privacy/nip59-claim-wrapper.js +361 -0
  50. package/dist/settlement/privacy/nip59-claim-wrapper.js.map +1 -0
  51. package/dist/settlement/provider/chain-provider-registry.d.ts +20 -0
  52. package/dist/settlement/provider/chain-provider-registry.d.ts.map +1 -0
  53. package/dist/settlement/provider/chain-provider-registry.js +53 -0
  54. package/dist/settlement/provider/chain-provider-registry.js.map +1 -0
  55. package/dist/settlement/provider/evm-payment-channel-provider.d.ts +31 -0
  56. package/dist/settlement/provider/evm-payment-channel-provider.d.ts.map +1 -0
  57. package/dist/settlement/provider/evm-payment-channel-provider.js +207 -0
  58. package/dist/settlement/provider/evm-payment-channel-provider.js.map +1 -0
  59. package/dist/settlement/provider/index.d.ts +6 -0
  60. package/dist/settlement/provider/index.d.ts.map +1 -0
  61. package/dist/settlement/provider/index.js +16 -0
  62. package/dist/settlement/provider/index.js.map +1 -0
  63. package/dist/settlement/provider/mina-payment-channel-provider.d.ts +43 -0
  64. package/dist/settlement/provider/mina-payment-channel-provider.d.ts.map +1 -0
  65. package/dist/settlement/provider/mina-payment-channel-provider.js +330 -0
  66. package/dist/settlement/provider/mina-payment-channel-provider.js.map +1 -0
  67. package/dist/settlement/provider/payment-channel-provider.d.ts +79 -0
  68. package/dist/settlement/provider/payment-channel-provider.d.ts.map +1 -0
  69. package/dist/settlement/provider/payment-channel-provider.js +3 -0
  70. package/dist/settlement/provider/payment-channel-provider.js.map +1 -0
  71. package/dist/settlement/provider/solana-payment-channel-provider.d.ts +38 -0
  72. package/dist/settlement/provider/solana-payment-channel-provider.d.ts.map +1 -0
  73. package/dist/settlement/provider/solana-payment-channel-provider.js +262 -0
  74. package/dist/settlement/provider/solana-payment-channel-provider.js.map +1 -0
  75. package/dist/settlement/settlement-executor.d.ts +11 -7
  76. package/dist/settlement/settlement-executor.d.ts.map +1 -1
  77. package/dist/settlement/settlement-executor.js +74 -65
  78. package/dist/settlement/settlement-executor.js.map +1 -1
  79. package/dist/settlement/settlement-monitor.d.ts.map +1 -1
  80. package/dist/settlement/settlement-monitor.js.map +1 -1
  81. package/dist/settlement/solana-payment-channel-sdk.d.ts +75 -0
  82. package/dist/settlement/solana-payment-channel-sdk.d.ts.map +1 -0
  83. package/dist/settlement/solana-payment-channel-sdk.js +600 -0
  84. package/dist/settlement/solana-payment-channel-sdk.js.map +1 -0
  85. package/dist/settlement/types.d.ts +1 -1
  86. package/dist/settlement/types.d.ts.map +1 -1
  87. package/dist/settlement/types.js.map +1 -1
  88. package/package.json +12 -1
@@ -0,0 +1,361 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NIP59TransportWrapper = exports.NIP59ClaimWrapper = exports.NIP59WrapError = exports.BTP_WRAPPED_CLAIM_PROTOCOL = void 0;
4
+ exports.serializeWrappedClaim = serializeWrappedClaim;
5
+ exports.deserializeWrappedClaim = deserializeWrappedClaim;
6
+ const crypto_1 = require("crypto");
7
+ const chacha_1 = require("@noble/ciphers/chacha");
8
+ const utils_1 = require("@noble/ciphers/utils");
9
+ const hkdf_1 = require("@noble/hashes/hkdf");
10
+ const sha2_1 = require("@noble/hashes/sha2");
11
+ const secp256k1_1 = require("@noble/curves/secp256k1");
12
+ exports.BTP_WRAPPED_CLAIM_PROTOCOL = {
13
+ NAME: 'claim-wrapped',
14
+ CONTENT_TYPE: 0,
15
+ VERSION: '1.0',
16
+ };
17
+ class NIP59WrapError extends Error {
18
+ name = 'NIP59WrapError';
19
+ constructor(message, options) {
20
+ super(message, options);
21
+ Error.captureStackTrace(this, NIP59WrapError);
22
+ }
23
+ }
24
+ exports.NIP59WrapError = NIP59WrapError;
25
+ const FORTY_EIGHT_HOURS_MS = 48 * 60 * 60 * 1000;
26
+ const CHACHA_NONCE_BYTES = 12;
27
+ const HKDF_KEY_BYTES = 32;
28
+ const SEAL_HKDF_INFO = 'nip59-seal';
29
+ const GIFTWRAP_HKDF_INFO = 'nip59-giftwrap';
30
+ const CONDITION_HKDF_INFO = 'ilp-condition-preimage';
31
+ class NIP59ClaimWrapper {
32
+ _nip59Enabled;
33
+ _logger;
34
+ constructor(options) {
35
+ this._nip59Enabled = options.nip59Enabled;
36
+ this._logger = options.logger.child({ component: 'nip59-claim-wrapper' });
37
+ }
38
+ isEnabled() {
39
+ return this._nip59Enabled;
40
+ }
41
+ wrapClaim(claim, senderPrivateKey, receiverPublicKey) {
42
+ if (!this._nip59Enabled) {
43
+ this._logger.debug({ event: 'nip59_wrap_skip' }, 'NIP-59 wrapping disabled, passing claim through');
44
+ return null;
45
+ }
46
+ try {
47
+ const rumor = JSON.stringify(claim);
48
+ const rumorBytes = (0, utils_1.utf8ToBytes)(rumor);
49
+ const senderPubKey = secp256k1_1.secp256k1.getPublicKey(senderPrivateKey, true);
50
+ const sealCiphertext = this._encryptSeal(rumorBytes, senderPrivateKey, receiverPublicKey, senderPubKey);
51
+ const sealSignature = this._signCiphertext(sealCiphertext, senderPrivateKey);
52
+ const sealPayload = {
53
+ senderPublicKey: Buffer.from(senderPubKey).toString('hex'),
54
+ signature: Buffer.from(sealSignature).toString('base64'),
55
+ sealCiphertext: Buffer.from(sealCiphertext).toString('base64'),
56
+ };
57
+ const sealPayloadBytes = (0, utils_1.utf8ToBytes)(JSON.stringify(sealPayload));
58
+ const ephemeralPrivKey = (0, crypto_1.randomBytes)(32);
59
+ const ephemeralPubKey = secp256k1_1.secp256k1.getPublicKey(ephemeralPrivKey, true);
60
+ const giftWrapCiphertext = this._encryptGiftWrap(sealPayloadBytes, ephemeralPrivKey, receiverPublicKey);
61
+ ephemeralPrivKey.fill(0);
62
+ const wrapped = {
63
+ ephemeralPublicKey: Buffer.from(ephemeralPubKey).toString('hex'),
64
+ encryptedPayload: Buffer.from(giftWrapCiphertext).toString('base64'),
65
+ timestamp: this._randomizeTimestamp(),
66
+ version: '1.0',
67
+ };
68
+ this._logger.info({ event: 'nip59_wrap', claimMessageId: claim.messageId }, 'Wrapping claim with NIP-59 Gift Wrap');
69
+ return wrapped;
70
+ }
71
+ catch (err) {
72
+ throw new NIP59WrapError(`Failed to wrap claim: ${err instanceof Error ? err.message : String(err)}`, { cause: err });
73
+ }
74
+ }
75
+ unwrapClaim(wrappedClaim, receiverPrivateKey) {
76
+ if (!wrappedClaim.ephemeralPublicKey || wrappedClaim.ephemeralPublicKey.length === 0) {
77
+ throw new NIP59WrapError('Invalid wrapped claim: missing ephemeralPublicKey', {
78
+ cause: new Error('Empty ephemeralPublicKey'),
79
+ });
80
+ }
81
+ if (!wrappedClaim.encryptedPayload || wrappedClaim.encryptedPayload.length === 0) {
82
+ throw new NIP59WrapError('Invalid wrapped claim: missing encryptedPayload', {
83
+ cause: new Error('Empty encryptedPayload'),
84
+ });
85
+ }
86
+ let sealPayloadBytes;
87
+ try {
88
+ const ephemeralPubKey = hexToBytes(wrappedClaim.ephemeralPublicKey);
89
+ const encryptedPayload = base64ToBytes(wrappedClaim.encryptedPayload);
90
+ const giftWrapResult = this._decryptGiftWrap(encryptedPayload, receiverPrivateKey, ephemeralPubKey);
91
+ sealPayloadBytes = giftWrapResult.plaintext;
92
+ }
93
+ catch (err) {
94
+ if (err instanceof NIP59WrapError)
95
+ throw err;
96
+ this._logger.warn({
97
+ event: 'nip59_unwrap_failed',
98
+ layer: 'gift_wrap',
99
+ error: err instanceof Error ? err.message : String(err),
100
+ }, 'Failed to unwrap NIP-59 gift wrap layer');
101
+ throw new NIP59WrapError(`Failed to decrypt gift wrap layer: ${err instanceof Error ? err.message : String(err)}`, { cause: err });
102
+ }
103
+ let rumorBytes;
104
+ try {
105
+ const sealPayloadStr = bytesToUtf8(sealPayloadBytes);
106
+ const sealPayload = JSON.parse(sealPayloadStr);
107
+ const senderPubKey = hexToBytes(sealPayload.senderPublicKey);
108
+ const sealSignature = base64ToBytes(sealPayload.signature);
109
+ const sealCiphertext = base64ToBytes(sealPayload.sealCiphertext);
110
+ this._verifyCiphertext(sealCiphertext, sealSignature, senderPubKey);
111
+ rumorBytes = this._decryptSeal(sealCiphertext, receiverPrivateKey, senderPubKey);
112
+ }
113
+ catch (err) {
114
+ if (err instanceof NIP59WrapError)
115
+ throw err;
116
+ this._logger.warn({
117
+ event: 'nip59_unwrap_failed',
118
+ layer: 'seal',
119
+ error: err instanceof Error ? err.message : String(err),
120
+ }, 'Failed to unwrap NIP-59 seal layer');
121
+ throw new NIP59WrapError(`Failed to decrypt seal layer: ${err instanceof Error ? err.message : String(err)}`, { cause: err });
122
+ }
123
+ try {
124
+ const rumorStr = bytesToUtf8(rumorBytes);
125
+ const claim = JSON.parse(rumorStr);
126
+ if (typeof claim !== 'object' ||
127
+ claim === null ||
128
+ typeof claim.version !== 'string' ||
129
+ typeof claim.blockchain !== 'string' ||
130
+ typeof claim.messageId !== 'string' ||
131
+ typeof claim.timestamp !== 'string' ||
132
+ typeof claim.senderId !== 'string') {
133
+ throw new NIP59WrapError('Rumor payload is not a valid BTPClaimMessage: missing required base fields', { cause: new Error('Invalid BTPClaimMessage structure') });
134
+ }
135
+ this._logger.info({ event: 'nip59_unwrap', claimMessageId: claim.messageId }, 'Successfully unwrapped NIP-59 claim');
136
+ return claim;
137
+ }
138
+ catch (err) {
139
+ this._logger.warn({
140
+ event: 'nip59_unwrap_failed',
141
+ layer: 'rumor',
142
+ error: err instanceof Error ? err.message : String(err),
143
+ }, 'Failed to parse NIP-59 rumor layer');
144
+ throw new NIP59WrapError(`Failed to parse rumor layer: ${err instanceof Error ? err.message : String(err)}`, { cause: err });
145
+ }
146
+ }
147
+ wrapClaimWithCondition(claim, senderPrivateKey, receiverPublicKey) {
148
+ if (!this._nip59Enabled) {
149
+ this._logger.debug({ event: 'nip59_wrap_condition_skip' }, 'NIP-59 wrapping disabled, skipping condition derivation');
150
+ return null;
151
+ }
152
+ try {
153
+ const rumor = JSON.stringify(claim);
154
+ const rumorBytes = (0, utils_1.utf8ToBytes)(rumor);
155
+ const senderPubKey = secp256k1_1.secp256k1.getPublicKey(senderPrivateKey, true);
156
+ const sealCiphertext = this._encryptSeal(rumorBytes, senderPrivateKey, receiverPublicKey, senderPubKey);
157
+ const sealSignature = this._signCiphertext(sealCiphertext, senderPrivateKey);
158
+ const sealPayload = {
159
+ senderPublicKey: Buffer.from(senderPubKey).toString('hex'),
160
+ signature: Buffer.from(sealSignature).toString('base64'),
161
+ sealCiphertext: Buffer.from(sealCiphertext).toString('base64'),
162
+ };
163
+ const sealPayloadBytes = (0, utils_1.utf8ToBytes)(JSON.stringify(sealPayload));
164
+ const ephemeralPrivKey = (0, crypto_1.randomBytes)(32);
165
+ const ephemeralPubKey = secp256k1_1.secp256k1.getPublicKey(ephemeralPrivKey, true);
166
+ const sharedSecret = this._computeSharedSecret(ephemeralPrivKey, receiverPublicKey);
167
+ const giftWrapKey = (0, hkdf_1.hkdf)(sha2_1.sha256, sharedSecret, undefined, GIFTWRAP_HKDF_INFO, HKDF_KEY_BYTES);
168
+ const nonce = (0, crypto_1.randomBytes)(CHACHA_NONCE_BYTES);
169
+ const cipher = (0, chacha_1.chacha20poly1305)(giftWrapKey, nonce);
170
+ const giftWrapCiphertext = cipher.encrypt(sealPayloadBytes);
171
+ const encryptedResult = new Uint8Array(CHACHA_NONCE_BYTES + giftWrapCiphertext.length);
172
+ encryptedResult.set(nonce, 0);
173
+ encryptedResult.set(giftWrapCiphertext, CHACHA_NONCE_BYTES);
174
+ const preimage = (0, hkdf_1.hkdf)(sha2_1.sha256, sharedSecret, undefined, CONDITION_HKDF_INFO, HKDF_KEY_BYTES);
175
+ const executionCondition = (0, sha2_1.sha256)(preimage);
176
+ ephemeralPrivKey.fill(0);
177
+ const wrapped = {
178
+ ephemeralPublicKey: Buffer.from(ephemeralPubKey).toString('hex'),
179
+ encryptedPayload: Buffer.from(encryptedResult).toString('base64'),
180
+ timestamp: this._randomizeTimestamp(),
181
+ version: '1.0',
182
+ };
183
+ this._logger.info({ event: 'nip59_wrap_condition', claimMessageId: claim.messageId }, 'Wrapping claim with NIP-59 Gift Wrap and condition derivation');
184
+ return { wrapped, executionCondition: new Uint8Array(executionCondition) };
185
+ }
186
+ catch (err) {
187
+ throw new NIP59WrapError(`Failed to wrap claim with condition: ${err instanceof Error ? err.message : String(err)}`, { cause: err });
188
+ }
189
+ }
190
+ unwrapClaimWithPreimage(wrappedClaim, receiverPrivateKey) {
191
+ if (!wrappedClaim.ephemeralPublicKey || wrappedClaim.ephemeralPublicKey.length === 0) {
192
+ throw new NIP59WrapError('Invalid wrapped claim: missing ephemeralPublicKey', {
193
+ cause: new Error('Empty ephemeralPublicKey'),
194
+ });
195
+ }
196
+ if (!wrappedClaim.encryptedPayload || wrappedClaim.encryptedPayload.length === 0) {
197
+ throw new NIP59WrapError('Invalid wrapped claim: missing encryptedPayload', {
198
+ cause: new Error('Empty encryptedPayload'),
199
+ });
200
+ }
201
+ let sealPayloadBytes;
202
+ let sharedSecret;
203
+ try {
204
+ const ephemeralPubKey = hexToBytes(wrappedClaim.ephemeralPublicKey);
205
+ const encryptedPayload = base64ToBytes(wrappedClaim.encryptedPayload);
206
+ const giftWrapResult = this._decryptGiftWrap(encryptedPayload, receiverPrivateKey, ephemeralPubKey);
207
+ sealPayloadBytes = giftWrapResult.plaintext;
208
+ sharedSecret = giftWrapResult.sharedSecret;
209
+ }
210
+ catch (err) {
211
+ if (err instanceof NIP59WrapError)
212
+ throw err;
213
+ throw new NIP59WrapError(`Failed to decrypt gift wrap layer: ${err instanceof Error ? err.message : String(err)}`, { cause: err });
214
+ }
215
+ const fulfillmentPreimage = new Uint8Array((0, hkdf_1.hkdf)(sha2_1.sha256, sharedSecret, undefined, CONDITION_HKDF_INFO, HKDF_KEY_BYTES));
216
+ let rumorBytes;
217
+ try {
218
+ const sealPayloadStr = bytesToUtf8(sealPayloadBytes);
219
+ const sealPayload = JSON.parse(sealPayloadStr);
220
+ const senderPubKey = hexToBytes(sealPayload.senderPublicKey);
221
+ const sealSignature = base64ToBytes(sealPayload.signature);
222
+ const sealCiphertext = base64ToBytes(sealPayload.sealCiphertext);
223
+ this._verifyCiphertext(sealCiphertext, sealSignature, senderPubKey);
224
+ rumorBytes = this._decryptSeal(sealCiphertext, receiverPrivateKey, senderPubKey);
225
+ }
226
+ catch (err) {
227
+ if (err instanceof NIP59WrapError)
228
+ throw err;
229
+ throw new NIP59WrapError(`Failed to decrypt seal layer: ${err instanceof Error ? err.message : String(err)}`, { cause: err });
230
+ }
231
+ try {
232
+ const rumorStr = bytesToUtf8(rumorBytes);
233
+ const claim = JSON.parse(rumorStr);
234
+ if (typeof claim !== 'object' ||
235
+ claim === null ||
236
+ typeof claim.version !== 'string' ||
237
+ typeof claim.blockchain !== 'string' ||
238
+ typeof claim.messageId !== 'string' ||
239
+ typeof claim.timestamp !== 'string' ||
240
+ typeof claim.senderId !== 'string') {
241
+ throw new NIP59WrapError('Rumor payload is not a valid BTPClaimMessage: missing required base fields', { cause: new Error('Invalid BTPClaimMessage structure') });
242
+ }
243
+ this._logger.info({ event: 'nip59_unwrap_preimage', claimMessageId: claim.messageId }, 'Successfully unwrapped NIP-59 claim with preimage derivation');
244
+ return { claim, fulfillmentPreimage };
245
+ }
246
+ catch (err) {
247
+ if (err instanceof NIP59WrapError)
248
+ throw err;
249
+ throw new NIP59WrapError(`Failed to parse rumor layer: ${err instanceof Error ? err.message : String(err)}`, { cause: err });
250
+ }
251
+ }
252
+ _encryptSeal(rumorBytes, senderPrivateKey, receiverPublicKey, senderPublicKey) {
253
+ const sharedSecret = this._computeSharedSecret(senderPrivateKey, receiverPublicKey);
254
+ const key = (0, hkdf_1.hkdf)(sha2_1.sha256, sharedSecret, undefined, SEAL_HKDF_INFO, HKDF_KEY_BYTES);
255
+ const nonce = (0, crypto_1.randomBytes)(CHACHA_NONCE_BYTES);
256
+ const cipher = (0, chacha_1.chacha20poly1305)(key, nonce, senderPublicKey);
257
+ const ciphertext = cipher.encrypt(rumorBytes);
258
+ const result = new Uint8Array(CHACHA_NONCE_BYTES + ciphertext.length);
259
+ result.set(nonce, 0);
260
+ result.set(ciphertext, CHACHA_NONCE_BYTES);
261
+ return result;
262
+ }
263
+ _decryptSeal(sealCiphertext, receiverPrivateKey, senderPublicKey) {
264
+ const sharedSecret = this._computeSharedSecret(receiverPrivateKey, senderPublicKey);
265
+ const key = (0, hkdf_1.hkdf)(sha2_1.sha256, sharedSecret, undefined, SEAL_HKDF_INFO, HKDF_KEY_BYTES);
266
+ const nonce = sealCiphertext.slice(0, CHACHA_NONCE_BYTES);
267
+ const ciphertext = sealCiphertext.slice(CHACHA_NONCE_BYTES);
268
+ const cipher = (0, chacha_1.chacha20poly1305)(key, nonce, senderPublicKey);
269
+ return cipher.decrypt(ciphertext);
270
+ }
271
+ _encryptGiftWrap(sealPayloadBytes, ephemeralPrivateKey, receiverPublicKey) {
272
+ const sharedSecret = this._computeSharedSecret(ephemeralPrivateKey, receiverPublicKey);
273
+ const key = (0, hkdf_1.hkdf)(sha2_1.sha256, sharedSecret, undefined, GIFTWRAP_HKDF_INFO, HKDF_KEY_BYTES);
274
+ const nonce = (0, crypto_1.randomBytes)(CHACHA_NONCE_BYTES);
275
+ const cipher = (0, chacha_1.chacha20poly1305)(key, nonce);
276
+ const ciphertext = cipher.encrypt(sealPayloadBytes);
277
+ const result = new Uint8Array(CHACHA_NONCE_BYTES + ciphertext.length);
278
+ result.set(nonce, 0);
279
+ result.set(ciphertext, CHACHA_NONCE_BYTES);
280
+ return result;
281
+ }
282
+ _decryptGiftWrap(giftWrapCiphertext, receiverPrivateKey, ephemeralPublicKey) {
283
+ const sharedSecret = this._computeSharedSecret(receiverPrivateKey, ephemeralPublicKey);
284
+ const key = (0, hkdf_1.hkdf)(sha2_1.sha256, sharedSecret, undefined, GIFTWRAP_HKDF_INFO, HKDF_KEY_BYTES);
285
+ const nonce = giftWrapCiphertext.slice(0, CHACHA_NONCE_BYTES);
286
+ const ciphertext = giftWrapCiphertext.slice(CHACHA_NONCE_BYTES);
287
+ const cipher = (0, chacha_1.chacha20poly1305)(key, nonce);
288
+ const plaintext = cipher.decrypt(ciphertext);
289
+ return { plaintext, sharedSecret };
290
+ }
291
+ _computeSharedSecret(privateKey, publicKey) {
292
+ const sharedPoint = secp256k1_1.secp256k1.getSharedSecret(privateKey, publicKey, true);
293
+ return sharedPoint.slice(1);
294
+ }
295
+ _signCiphertext(ciphertext, privateKey) {
296
+ const messageHash = (0, sha2_1.sha256)(ciphertext);
297
+ const sig = secp256k1_1.secp256k1.sign(messageHash, privateKey);
298
+ return sig.toCompactRawBytes();
299
+ }
300
+ _verifyCiphertext(ciphertext, signature, publicKey) {
301
+ const messageHash = (0, sha2_1.sha256)(ciphertext);
302
+ const isValid = secp256k1_1.secp256k1.verify(signature, messageHash, publicKey);
303
+ if (!isValid) {
304
+ throw new NIP59WrapError('Seal signature verification failed: sender signature is invalid', {
305
+ cause: new Error('Invalid secp256k1 signature'),
306
+ });
307
+ }
308
+ }
309
+ _randomizeTimestamp() {
310
+ const now = Date.now();
311
+ const offsetBytes = (0, crypto_1.randomBytes)(4);
312
+ const offsetRaw = offsetBytes.readUInt32BE(0);
313
+ const offset = (offsetRaw / 0xffffffff) * 2 * FORTY_EIGHT_HOURS_MS - FORTY_EIGHT_HOURS_MS;
314
+ return Math.round(now + offset);
315
+ }
316
+ }
317
+ exports.NIP59ClaimWrapper = NIP59ClaimWrapper;
318
+ exports.NIP59TransportWrapper = NIP59ClaimWrapper;
319
+ function serializeWrappedClaim(wrapped) {
320
+ return Buffer.from(JSON.stringify(wrapped), 'utf8');
321
+ }
322
+ function deserializeWrappedClaim(data) {
323
+ let parsed;
324
+ try {
325
+ const str = data.toString('utf8');
326
+ parsed = JSON.parse(str);
327
+ }
328
+ catch (err) {
329
+ throw new NIP59WrapError(`Failed to deserialize WrappedClaim: ${err instanceof Error ? err.message : String(err)}`, { cause: err });
330
+ }
331
+ if (typeof parsed.ephemeralPublicKey !== 'string' ||
332
+ typeof parsed.encryptedPayload !== 'string' ||
333
+ typeof parsed.timestamp !== 'number' ||
334
+ parsed.version !== '1.0') {
335
+ throw new NIP59WrapError('Invalid WrappedClaim structure', {
336
+ cause: new Error('Missing or invalid required fields'),
337
+ });
338
+ }
339
+ return parsed;
340
+ }
341
+ function hexToBytes(hex) {
342
+ if (hex.length % 2 !== 0) {
343
+ throw new Error(`Invalid hex string length: ${hex.length}`);
344
+ }
345
+ const bytes = new Uint8Array(hex.length / 2);
346
+ for (let i = 0; i < hex.length; i += 2) {
347
+ const byte = parseInt(hex.substring(i, i + 2), 16);
348
+ if (isNaN(byte)) {
349
+ throw new Error(`Invalid hex character at position ${i}`);
350
+ }
351
+ bytes[i / 2] = byte;
352
+ }
353
+ return bytes;
354
+ }
355
+ function base64ToBytes(base64) {
356
+ return new Uint8Array(Buffer.from(base64, 'base64'));
357
+ }
358
+ function bytesToUtf8(bytes) {
359
+ return Buffer.from(bytes).toString('utf8');
360
+ }
361
+ //# sourceMappingURL=nip59-claim-wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nip59-claim-wrapper.js","sourceRoot":"","sources":["../../../src/settlement/privacy/nip59-claim-wrapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { BlockchainType } from '../../btp/btp-claim-types';
2
+ import type { PaymentChannelProvider, ProviderConfig } from './payment-channel-provider';
3
+ export declare class ChainProviderAlreadyRegisteredError extends Error {
4
+ constructor(chainId: string);
5
+ }
6
+ export interface RegistryPeerConfig {
7
+ peerId: string;
8
+ chain?: string;
9
+ }
10
+ export type ChainProviderFactory = (config: ProviderConfig) => PaymentChannelProvider;
11
+ export declare class ChainProviderRegistry {
12
+ private readonly providers;
13
+ register(provider: PaymentChannelProvider): void;
14
+ getProvider(chainType: BlockchainType, chainId: string): PaymentChannelProvider | undefined;
15
+ getAllProviders(): PaymentChannelProvider[];
16
+ deregister(chainId: string): void;
17
+ getProviderForPeer(peerConfig: RegistryPeerConfig): PaymentChannelProvider | undefined;
18
+ static fromConfig(providerConfigs: ProviderConfig[], factories: Map<BlockchainType, ChainProviderFactory>): ChainProviderRegistry;
19
+ }
20
+ //# sourceMappingURL=chain-provider-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain-provider-registry.d.ts","sourceRoot":"","sources":["../../../src/settlement/provider/chain-provider-registry.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAUzF,qBAAa,mCAAoC,SAAQ,KAAK;gBAChD,OAAO,EAAE,MAAM;CAI5B;AAYD,MAAM,WAAW,kBAAkB;IAEjC,MAAM,EAAE,MAAM,CAAC;IAEf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAUD,MAAM,MAAM,oBAAoB,GAAG,CAAC,MAAM,EAAE,cAAc,KAAK,sBAAsB,CAAC;AAgBtF,qBAAa,qBAAqB;IAEhC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6C;IASvE,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,GAAG,IAAI;IAkBhD,WAAW,CAAC,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,sBAAsB,GAAG,SAAS;IAa3F,eAAe,IAAI,sBAAsB,EAAE;IAW3C,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAajC,kBAAkB,CAAC,UAAU,EAAE,kBAAkB,GAAG,sBAAsB,GAAG,SAAS;IAgBtF,MAAM,CAAC,UAAU,CACf,eAAe,EAAE,cAAc,EAAE,EACjC,SAAS,EAAE,GAAG,CAAC,cAAc,EAAE,oBAAoB,CAAC,GACnD,qBAAqB;CAczB"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChainProviderRegistry = exports.ChainProviderAlreadyRegisteredError = void 0;
4
+ class ChainProviderAlreadyRegisteredError extends Error {
5
+ constructor(chainId) {
6
+ super(`Provider already registered for chain: ${chainId}`);
7
+ this.name = 'ChainProviderAlreadyRegisteredError';
8
+ }
9
+ }
10
+ exports.ChainProviderAlreadyRegisteredError = ChainProviderAlreadyRegisteredError;
11
+ class ChainProviderRegistry {
12
+ providers = new Map();
13
+ register(provider) {
14
+ const { chainId } = provider;
15
+ if (this.providers.has(chainId)) {
16
+ throw new ChainProviderAlreadyRegisteredError(chainId);
17
+ }
18
+ this.providers.set(chainId, provider);
19
+ }
20
+ getProvider(chainType, chainId) {
21
+ const provider = this.providers.get(chainId);
22
+ if (provider && provider.chainType !== chainType) {
23
+ return undefined;
24
+ }
25
+ return provider;
26
+ }
27
+ getAllProviders() {
28
+ return [...this.providers.values()];
29
+ }
30
+ deregister(chainId) {
31
+ this.providers.delete(chainId);
32
+ }
33
+ getProviderForPeer(peerConfig) {
34
+ if (!peerConfig.chain) {
35
+ return undefined;
36
+ }
37
+ return this.providers.get(peerConfig.chain);
38
+ }
39
+ static fromConfig(providerConfigs, factories) {
40
+ const registry = new ChainProviderRegistry();
41
+ for (const config of providerConfigs) {
42
+ const factory = factories.get(config.chainType);
43
+ if (!factory) {
44
+ throw new Error(`No factory registered for chain type: ${config.chainType}`);
45
+ }
46
+ const provider = factory(config);
47
+ registry.register(provider);
48
+ }
49
+ return registry;
50
+ }
51
+ }
52
+ exports.ChainProviderRegistry = ChainProviderRegistry;
53
+ //# sourceMappingURL=chain-provider-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain-provider-registry.js","sourceRoot":"","sources":["../../../src/settlement/provider/chain-provider-registry.ts"],"names":[],"mappings":";;;AAuBA,MAAa,mCAAoC,SAAQ,KAAK;IAC5D,YAAY,OAAe;QACzB,KAAK,CAAC,0CAA0C,OAAO,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,GAAG,qCAAqC,CAAC;IACpD,CAAC;CACF;AALD,kFAKC;AA2CD,MAAa,qBAAqB;IAEf,SAAS,GAAG,IAAI,GAAG,EAAkC,CAAC;IASvE,QAAQ,CAAC,QAAgC;QACvC,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;QAC7B,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,mCAAmC,CAAC,OAAO,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC;IAYD,WAAW,CAAC,SAAyB,EAAE,OAAe;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,QAAQ,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACjD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAOD,eAAe;QACb,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IACtC,CAAC;IASD,UAAU,CAAC,OAAe;QACxB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAWD,kBAAkB,CAAC,UAA8B;QAC/C,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IAWD,MAAM,CAAC,UAAU,CACf,eAAiC,EACjC,SAAoD;QAEpD,MAAM,QAAQ,GAAG,IAAI,qBAAqB,EAAE,CAAC;QAE7C,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAChD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,yCAAyC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;YAC/E,CAAC;YACD,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;YACjC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AAnGD,sDAmGC"}
@@ -0,0 +1,31 @@
1
+ import type { Logger } from '../../utils/logger';
2
+ import type { BlockchainType } from '../../btp/btp-claim-types';
3
+ import type { PaymentChannelProvider, ProviderChannelState, ProviderEventCallback, ProviderEventSubscription, OpenChannelResult, TxResult, BalanceProofParams, VerifyBalanceProofParams } from './payment-channel-provider';
4
+ import type { ChainProviderFactory } from './chain-provider-registry';
5
+ import type { PaymentChannelSDK } from '../payment-channel-sdk';
6
+ export declare class EVMPaymentChannelProvider implements PaymentChannelProvider {
7
+ private readonly _sdk;
8
+ private readonly _tokenAddress;
9
+ private readonly _logger;
10
+ readonly chainType: BlockchainType;
11
+ readonly chainId: string;
12
+ constructor(_sdk: PaymentChannelSDK, chainId: string, _tokenAddress: string, _logger: Logger);
13
+ openChannel(participant: string, settlementTimeout: number): Promise<OpenChannelResult>;
14
+ deposit(channelId: string, amount: string): Promise<TxResult>;
15
+ claimFromChannel(channelId: string, balanceProof: BalanceProofParams, signature: string): Promise<TxResult>;
16
+ closeChannel(channelId: string): Promise<TxResult>;
17
+ settleChannel(channelId: string): Promise<TxResult>;
18
+ signBalanceProof(params: BalanceProofParams): Promise<string>;
19
+ verifyBalanceProof(params: VerifyBalanceProofParams): Promise<boolean>;
20
+ getChannelState(channelId: string): Promise<ProviderChannelState>;
21
+ subscribeToEvents(channelId: string, callback: ProviderEventCallback): ProviderEventSubscription;
22
+ getSigningContext(): Promise<{
23
+ chainId: number;
24
+ tokenNetworkAddress: string;
25
+ signerAddress: string;
26
+ }>;
27
+ private toSdkBalanceProof;
28
+ private toProviderChannelState;
29
+ }
30
+ export declare function createEVMProviderFactory(sdk: PaymentChannelSDK, logger: Logger): ChainProviderFactory;
31
+ //# sourceMappingURL=evm-payment-channel-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evm-payment-channel-provider.d.ts","sourceRoot":"","sources":["../../../src/settlement/provider/evm-payment-channel-provider.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EACV,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EAGzB,iBAAiB,EACjB,QAAQ,EACR,kBAAkB,EAClB,wBAAwB,EAEzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAoChE,qBAAa,yBAA0B,YAAW,sBAAsB;IAgBpE,OAAO,CAAC,QAAQ,CAAC,IAAI;IAErB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAjB1B,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAS;IAG3C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;gBAWN,IAAI,EAAE,iBAAiB,EACxC,OAAO,EAAE,MAAM,EACE,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM;IAqB5B,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA0BvF,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IA0B7D,gBAAgB,CACpB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,kBAAkB,EAChC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,QAAQ,CAAC;IAsBd,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAoBlD,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAuBnD,gBAAgB,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;IAwB7D,kBAAkB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;IAqBtE,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAoBvE,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,qBAAqB,GAAG,yBAAyB;IAkG1F,iBAAiB,IAAI,OAAO,CAAC;QACjC,OAAO,EAAE,MAAM,CAAC;QAChB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IAiBF,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,sBAAsB;CAQ/B;AAiBD,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,iBAAiB,EACtB,MAAM,EAAE,MAAM,GACb,oBAAoB,CAkBtB"}