@hsuite/native-connect-client 1.0.0 → 2.1.1

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 (31) hide show
  1. package/coverage/coverage-summary.json +9 -9
  2. package/coverage/index.html +24 -24
  3. package/coverage/lcov-report/index.html +24 -24
  4. package/coverage/lcov-report/src/handlers/index.html +9 -9
  5. package/coverage/lcov-report/src/handlers/session-handler.ts.html +6 -57
  6. package/coverage/lcov-report/src/handlers/signing-handler.ts.html +6 -57
  7. package/coverage/lcov-report/src/handlers/wallet-handler.ts.html +5 -56
  8. package/coverage/lcov-report/src/harness/index.html +10 -10
  9. package/coverage/lcov-report/src/harness/signing-harness.ts.html +25 -37
  10. package/coverage/lcov-report/src/index.html +15 -15
  11. package/coverage/lcov-report/src/memory-transport.ts.html +23 -44
  12. package/coverage/lcov-report/src/protocol/e2e-harness.ts.html +39 -30
  13. package/coverage/lcov-report/src/protocol/index.html +11 -11
  14. package/coverage/lcov-report/src/query-client.ts.html +17 -53
  15. package/coverage/lcov-report/src/reference-client.ts.html +35 -47
  16. package/coverage/lcov.info +259 -334
  17. package/coverage/src/handlers/index.html +9 -9
  18. package/coverage/src/handlers/session-handler.ts.html +6 -57
  19. package/coverage/src/handlers/signing-handler.ts.html +6 -57
  20. package/coverage/src/handlers/wallet-handler.ts.html +5 -56
  21. package/coverage/src/harness/index.html +10 -10
  22. package/coverage/src/harness/signing-harness.ts.html +25 -37
  23. package/coverage/src/index.html +15 -15
  24. package/coverage/src/memory-transport.ts.html +23 -44
  25. package/coverage/src/protocol/e2e-harness.ts.html +39 -30
  26. package/coverage/src/protocol/index.html +11 -11
  27. package/coverage/src/query-client.ts.html +17 -53
  28. package/coverage/src/reference-client.ts.html +35 -47
  29. package/package.json +3 -3
  30. package/tests/e2e-harness.spec.ts +1 -0
  31. package/tsconfig.build.tsbuildinfo +1 -1
@@ -25,7 +25,7 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>91/91</span>
28
+ <span class='fraction'>84/84</span>
29
29
  </div>
30
30
 
31
31
 
@@ -46,7 +46,7 @@
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>91/91</span>
49
+ <span class='fraction'>84/84</span>
50
50
  </div>
51
51
 
52
52
 
@@ -147,23 +147,12 @@
147
147
  <a name='L82'></a><a href='#L82'>82</a>
148
148
  <a name='L83'></a><a href='#L83'>83</a>
149
149
  <a name='L84'></a><a href='#L84'>84</a>
150
- <a name='L85'></a><a href='#L85'>85</a>
151
- <a name='L86'></a><a href='#L86'>86</a>
152
- <a name='L87'></a><a href='#L87'>87</a>
153
- <a name='L88'></a><a href='#L88'>88</a>
154
- <a name='L89'></a><a href='#L89'>89</a>
155
- <a name='L90'></a><a href='#L90'>90</a>
156
- <a name='L91'></a><a href='#L91'>91</a>
157
- <a name='L92'></a><a href='#L92'>92</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
158
- <span class="cline-any cline-yes">1x</span>
159
- <span class="cline-any cline-yes">1x</span>
160
- <span class="cline-any cline-yes">1x</span>
161
- <span class="cline-any cline-yes">1x</span>
162
- <span class="cline-any cline-yes">1x</span>
163
- <span class="cline-any cline-yes">1x</span>
164
- <span class="cline-any cline-yes">1x</span>
150
+ <a name='L85'></a><a href='#L85'>85</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
165
151
  <span class="cline-any cline-yes">1x</span>
166
152
  <span class="cline-any cline-yes">1x</span>
153
+ <span class="cline-any cline-yes">3x</span>
154
+ <span class="cline-any cline-yes">3x</span>
155
+ <span class="cline-any cline-yes">3x</span>
167
156
  <span class="cline-any cline-yes">1x</span>
168
157
  <span class="cline-any cline-yes">1x</span>
169
158
  <span class="cline-any cline-yes">1x</span>
@@ -174,9 +163,6 @@
174
163
  <span class="cline-any cline-yes">1x</span>
175
164
  <span class="cline-any cline-yes">1x</span>
176
165
  <span class="cline-any cline-yes">1x</span>
177
- <span class="cline-any cline-yes">3x</span>
178
- <span class="cline-any cline-yes">3x</span>
179
- <span class="cline-any cline-yes">3x</span>
180
166
  <span class="cline-any cline-yes">1x</span>
181
167
  <span class="cline-any cline-yes">1x</span>
182
168
  <span class="cline-any cline-yes">1x</span>
@@ -245,38 +231,31 @@
245
231
  <span class="cline-any cline-yes">1x</span>
246
232
  <span class="cline-any cline-yes">1x</span>
247
233
  <span class="cline-any cline-yes">2x</span>
248
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/**
249
- * HSuite Native Connect
250
- * Copyright 2024-2025 HSuite (https://hsuite.finance)
251
- *
252
- * SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
253
- *
254
- * This file is part of HSuite Native Connect. For commercial licensing,
255
- * visit https://hsuite.finance/licensing
256
- */
257
- &nbsp;
258
- /**
259
- * @file In-memory transport implementation for testing RPC communication.
260
- * Provides isolated message delivery between client and server without network I/O.
261
- *
262
- * @module @hsuite/native-connect-client/memory-transport
263
- */
264
- &nbsp;
265
- import { EventEmitter } from 'eventemitter3';
266
- import type { RpcEnvelope } from '@hsuite/native-connect-types';
234
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { EventEmitter } from 'eventemitter3';
235
+ import type { RpcEnvelope } from '@hsuite/connect-types';
267
236
  &nbsp;
268
237
  function cloneEnvelope(envelope: RpcEnvelope): RpcEnvelope {
269
238
  return JSON.parse(JSON.stringify(envelope)) as RpcEnvelope;
270
239
  }
271
240
  &nbsp;
272
241
  /**
273
- * @class MemoryTransport
274
- * @description In-memory transport for testing RPC communication.
275
- *
242
+ * @description In-memory transport for testing RPC communication
243
+ *
276
244
  * Provides:
277
245
  * - Synchronous message delivery between client and server emitters
278
- * - Message isolation via deep cloning to prevent mutation
246
+ * - Message isolation via deep cloning
279
247
  * - Pending promise queue for ordered delivery
248
+ *
249
+ * @example
250
+ * ```typescript
251
+ * const transport = new MemoryTransport();
252
+ *
253
+ * transport.onMessage((msg) =&gt; console.log('Client received:', msg));
254
+ * transport.onServerMessage((msg) =&gt; console.log('Server received:', msg));
255
+ *
256
+ * await transport.send(envelope, 'client');
257
+ * await transport.drain();
258
+ * ```
280
259
  */
281
260
  export class MemoryTransport {
282
261
  private readonly clientEmitter = new EventEmitter();
@@ -343,7 +322,7 @@ export class MemoryTransport {
343
322
  <div class='footer quiet pad2 space-top1 center small'>
344
323
  Code coverage generated by
345
324
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
346
- at 2026-06-02T14:29:49.177Z
325
+ at 2026-01-12T14:27:06.757Z
347
326
  </div>
348
327
  <script src="../prettify.js"></script>
349
328
  <script>
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">81.98% </span>
26
+ <span class="strong">82.31% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>132/161</span>
28
+ <span class='fraction'>135/164</span>
29
29
  </div>
30
30
 
31
31
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">81.98% </span>
47
+ <span class="strong">82.31% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>132/161</span>
49
+ <span class='fraction'>135/164</span>
50
50
  </div>
51
51
 
52
52
 
@@ -224,7 +224,13 @@
224
224
  <a name='L159'></a><a href='#L159'>159</a>
225
225
  <a name='L160'></a><a href='#L160'>160</a>
226
226
  <a name='L161'></a><a href='#L161'>161</a>
227
- <a name='L162'></a><a href='#L162'>162</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
227
+ <a name='L162'></a><a href='#L162'>162</a>
228
+ <a name='L163'></a><a href='#L163'>163</a>
229
+ <a name='L164'></a><a href='#L164'>164</a>
230
+ <a name='L165'></a><a href='#L165'>165</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
231
+ <span class="cline-any cline-yes">1x</span>
232
+ <span class="cline-any cline-yes">1x</span>
233
+ <span class="cline-any cline-yes">1x</span>
228
234
  <span class="cline-any cline-yes">1x</span>
229
235
  <span class="cline-any cline-yes">1x</span>
230
236
  <span class="cline-any cline-yes">1x</span>
@@ -385,25 +391,7 @@
385
391
  <span class="cline-any cline-yes">1x</span>
386
392
  <span class="cline-any cline-yes">1x</span>
387
393
  <span class="cline-any cline-yes">1x</span>
388
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/**
389
- * HSuite Native Connect
390
- * Copyright 2024-2025 HSuite (https://hsuite.finance)
391
- *
392
- * SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
393
- *
394
- * This file is part of HSuite Native Connect. For commercial licensing,
395
- * visit https://hsuite.finance/licensing
396
- */
397
- &nbsp;
398
- /**
399
- * @file End-to-end test harness with full wallet SDK integration.
400
- * Provides complete WalletCore, ledger registration, and session management
401
- * for comprehensive integration testing.
402
- *
403
- * @module @hsuite/native-connect-client/protocol/e2e-harness
404
- */
405
- &nbsp;
406
- import { ReferenceClient } from '../reference-client';
394
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { ReferenceClient } from '../reference-client';
407
395
  import { MemoryTransport } from '../memory-transport';
408
396
  import {
409
397
  WalletCore,
@@ -412,9 +400,9 @@ import {
412
400
  KeyVaultService,
413
401
  CryptoService,
414
402
  createChannelInvite,
415
- } from '@hsuite/native-connect-sdk';
403
+ } from '@hsuite/connect-sdk';
416
404
  import { base64 } from '@scure/base';
417
- import type { LedgerAdapter, ChannelInvite } from '@hsuite/native-connect-sdk';
405
+ import type { LedgerAdapter, ChannelInvite } from '@hsuite/connect-sdk';
418
406
  &nbsp;
419
407
  /**
420
408
  * @description Configuration options for end-to-end test harness
@@ -431,14 +419,35 @@ export interface HarnessOptions {
431
419
  }
432
420
  &nbsp;
433
421
  /**
434
- * @class EndToEndHarness
435
- * @description End-to-end test harness with full wallet SDK integration.
436
- *
422
+ * @description End-to-end test harness with full wallet SDK integration
423
+ *
437
424
  * Provides:
438
425
  * - Complete WalletCore instance with ledger registration
439
426
  * - Reference client for RPC communication
440
427
  * - In-memory transport for isolated testing
441
428
  * - Session establishment utilities
429
+ *
430
+ * @example
431
+ * ```typescript
432
+ * import { createChannelInvite } from '@hsuite/connect-sdk';
433
+ *
434
+ * const invite = createChannelInvite({
435
+ * type: 'session',
436
+ * app: { id: 'my-dapp', name: 'My DApp' },
437
+ * context: { ledgerId: 'hedera', networkId: 'hedera:testnet' },
438
+ * permissions: [],
439
+ * });
440
+ *
441
+ * const harness = new EndToEndHarness({
442
+ * ledgerAdapter: new HederaLedgerAdapter(),
443
+ * session: {
444
+ * request: invite,
445
+ * }
446
+ * });
447
+ *
448
+ * const sessionId = await harness.establishSession();
449
+ * await harness.teardown();
450
+ * ```
442
451
  */
443
452
  export class EndToEndHarness {
444
453
  readonly client: ReferenceClient;
@@ -553,7 +562,7 @@ export class EndToEndHarness {
553
562
  <div class='footer quiet pad2 space-top1 center small'>
554
563
  Code coverage generated by
555
564
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
556
- at 2026-06-02T14:29:49.177Z
565
+ at 2026-01-12T14:27:06.757Z
557
566
  </div>
558
567
  <script src="../../prettify.js"></script>
559
568
  <script>
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">81.98% </span>
26
+ <span class="strong">82.31% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>132/161</span>
28
+ <span class='fraction'>135/164</span>
29
29
  </div>
30
30
 
31
31
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">81.98% </span>
47
+ <span class="strong">82.31% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>132/161</span>
49
+ <span class='fraction'>135/164</span>
50
50
  </div>
51
51
 
52
52
 
@@ -80,17 +80,17 @@
80
80
  </thead>
81
81
  <tbody><tr>
82
82
  <td class="file high" data-value="e2e-harness.ts"><a href="e2e-harness.ts.html">e2e-harness.ts</a></td>
83
- <td data-value="81.98" class="pic high">
84
- <div class="chart"><div class="cover-fill" style="width: 81%"></div><div class="cover-empty" style="width: 19%"></div></div>
83
+ <td data-value="82.31" class="pic high">
84
+ <div class="chart"><div class="cover-fill" style="width: 82%"></div><div class="cover-empty" style="width: 18%"></div></div>
85
85
  </td>
86
- <td data-value="81.98" class="pct high">81.98%</td>
87
- <td data-value="161" class="abs high">132/161</td>
86
+ <td data-value="82.31" class="pct high">82.31%</td>
87
+ <td data-value="164" class="abs high">135/164</td>
88
88
  <td data-value="66.66" class="pct medium">66.66%</td>
89
89
  <td data-value="6" class="abs medium">4/6</td>
90
90
  <td data-value="21.05" class="pct low">21.05%</td>
91
91
  <td data-value="19" class="abs low">4/19</td>
92
- <td data-value="81.98" class="pct high">81.98%</td>
93
- <td data-value="161" class="abs high">132/161</td>
92
+ <td data-value="82.31" class="pct high">82.31%</td>
93
+ <td data-value="164" class="abs high">135/164</td>
94
94
  </tr>
95
95
 
96
96
  </tbody>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2026-06-02T14:29:49.177Z
104
+ at 2026-01-12T14:27:06.757Z
105
105
  </div>
106
106
  <script src="../../prettify.js"></script>
107
107
  <script>
@@ -25,7 +25,7 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">0% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>0/64</span>
28
+ <span class='fraction'>0/52</span>
29
29
  </div>
30
30
 
31
31
 
@@ -46,7 +46,7 @@
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">0% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>0/64</span>
49
+ <span class='fraction'>0/52</span>
50
50
  </div>
51
51
 
52
52
 
@@ -115,19 +115,7 @@
115
115
  <a name='L50'></a><a href='#L50'>50</a>
116
116
  <a name='L51'></a><a href='#L51'>51</a>
117
117
  <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a>
119
- <a name='L54'></a><a href='#L54'>54</a>
120
- <a name='L55'></a><a href='#L55'>55</a>
121
- <a name='L56'></a><a href='#L56'>56</a>
122
- <a name='L57'></a><a href='#L57'>57</a>
123
- <a name='L58'></a><a href='#L58'>58</a>
124
- <a name='L59'></a><a href='#L59'>59</a>
125
- <a name='L60'></a><a href='#L60'>60</a>
126
- <a name='L61'></a><a href='#L61'>61</a>
127
- <a name='L62'></a><a href='#L62'>62</a>
128
- <a name='L63'></a><a href='#L63'>63</a>
129
- <a name='L64'></a><a href='#L64'>64</a>
130
- <a name='L65'></a><a href='#L65'>65</a></td><td class="line-coverage quiet"><span class="cline-any cline-no">&nbsp;</span>
118
+ <a name='L53'></a><a href='#L53'>53</a></td><td class="line-coverage quiet"><span class="cline-any cline-no">&nbsp;</span>
131
119
  <span class="cline-any cline-no">&nbsp;</span>
132
120
  <span class="cline-any cline-no">&nbsp;</span>
133
121
  <span class="cline-any cline-no">&nbsp;</span>
@@ -179,46 +167,22 @@
179
167
  <span class="cline-any cline-no">&nbsp;</span>
180
168
  <span class="cline-any cline-no">&nbsp;</span>
181
169
  <span class="cline-any cline-no">&nbsp;</span>
182
- <span class="cline-any cline-no">&nbsp;</span>
183
- <span class="cline-any cline-no">&nbsp;</span>
184
- <span class="cline-any cline-no">&nbsp;</span>
185
- <span class="cline-any cline-no">&nbsp;</span>
186
- <span class="cline-any cline-no">&nbsp;</span>
187
- <span class="cline-any cline-no">&nbsp;</span>
188
- <span class="cline-any cline-no">&nbsp;</span>
189
- <span class="cline-any cline-no">&nbsp;</span>
190
- <span class="cline-any cline-no">&nbsp;</span>
191
- <span class="cline-any cline-no">&nbsp;</span>
192
- <span class="cline-any cline-no">&nbsp;</span>
193
- <span class="cline-any cline-no">&nbsp;</span>
194
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js"><span class="cstat-no" title="statement not covered" >/**<span class="fstat-no" title="function not covered" ><span class="branch-0 cbranch-no" title="branch not covered" ></span></span></span>
195
- <span class="cstat-no" title="statement not covered" > * HSuite Native Connect</span>
196
- <span class="cstat-no" title="statement not covered" > * Copyright 2024-2025 HSuite (https://hsuite.finance)</span>
197
- <span class="cstat-no" title="statement not covered" > *</span>
198
- <span class="cstat-no" title="statement not covered" > * SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0</span>
199
- <span class="cstat-no" title="statement not covered" > *</span>
200
- <span class="cstat-no" title="statement not covered" > * This file is part of HSuite Native Connect. For commercial licensing,</span>
201
- <span class="cstat-no" title="statement not covered" > * visit https://hsuite.finance/licensing</span>
202
- <span class="cstat-no" title="statement not covered" > */</span>
203
- <span class="cstat-no" title="statement not covered" ></span>
204
- <span class="cstat-no" title="statement not covered" >/**</span>
205
- <span class="cstat-no" title="statement not covered" > * @file High-level query client for common wallet RPC methods.</span>
206
- <span class="cstat-no" title="statement not covered" > * Provides convenience methods wrapping ReferenceClient for typical</span>
207
- <span class="cstat-no" title="statement not covered" > * wallet operations like account discovery and configuration retrieval.</span>
208
- <span class="cstat-no" title="statement not covered" > *</span>
209
- <span class="cstat-no" title="statement not covered" > * @module @hsuite/native-connect-client/query-client</span>
210
- <span class="cstat-no" title="statement not covered" > */</span>
211
- <span class="cstat-no" title="statement not covered" ></span>
212
- <span class="cstat-no" title="statement not covered" >import { ReferenceClient } from './reference-client';</span>
213
- <span class="cstat-no" title="statement not covered" >import type { RpcRequest, RpcResponse } from '@hsuite/native-connect-types';</span>
170
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js"><span class="cstat-no" title="statement not covered" >import { ReferenceClient } from './reference-client';<span class="fstat-no" title="function not covered" ><span class="branch-0 cbranch-no" title="branch not covered" ></span></span></span>
171
+ <span class="cstat-no" title="statement not covered" >import type { RpcRequest, RpcResponse } from '@hsuite/connect-types';</span>
214
172
  <span class="cstat-no" title="statement not covered" ></span>
215
173
  <span class="cstat-no" title="statement not covered" >/**</span>
216
- <span class="cstat-no" title="statement not covered" > * @class QueryClient</span>
217
- <span class="cstat-no" title="statement not covered" > * @description High-level query client for common wallet RPC methods.</span>
218
- <span class="cstat-no" title="statement not covered" > *</span>
174
+ <span class="cstat-no" title="statement not covered" > * @description High-level query client for common wallet RPC methods</span>
175
+ <span class="cstat-no" title="statement not covered" > * </span>
219
176
  <span class="cstat-no" title="statement not covered" > * Provides convenience methods for:</span>
220
- <span class="cstat-no" title="statement not covered" > * - Account discovery via `wallet/accounts` RPC method</span>
221
- <span class="cstat-no" title="statement not covered" > * - Configuration retrieval via `wallet/get-config` RPC method</span>
177
+ <span class="cstat-no" title="statement not covered" > * - Account discovery</span>
178
+ <span class="cstat-no" title="statement not covered" > * - Configuration retrieval</span>
179
+ <span class="cstat-no" title="statement not covered" > * </span>
180
+ <span class="cstat-no" title="statement not covered" > * @example</span>
181
+ <span class="cstat-no" title="statement not covered" > * ```typescript</span>
182
+ <span class="cstat-no" title="statement not covered" > * const queryClient = new QueryClient(referenceClient);</span>
183
+ <span class="cstat-no" title="statement not covered" > * const accounts = await queryClient.getAccounts();</span>
184
+ <span class="cstat-no" title="statement not covered" > * const config = await queryClient.getConfig();</span>
185
+ <span class="cstat-no" title="statement not covered" > * ```</span>
222
186
  <span class="cstat-no" title="statement not covered" > */</span>
223
187
  <span class="cstat-no" title="statement not covered" >export class QueryClient {</span>
224
188
  <span class="cstat-no" title="statement not covered" > constructor(private readonly client: ReferenceClient) {}</span>
@@ -262,7 +226,7 @@
262
226
  <div class='footer quiet pad2 space-top1 center small'>
263
227
  Code coverage generated by
264
228
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
265
- at 2026-06-02T14:29:49.177Z
229
+ at 2026-01-12T14:27:06.757Z
266
230
  </div>
267
231
  <script src="../prettify.js"></script>
268
232
  <script>
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">99% </span>
26
+ <span class="strong">98.98% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>200/202</span>
28
+ <span class='fraction'>196/198</span>
29
29
  </div>
30
30
 
31
31
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">99% </span>
47
+ <span class="strong">98.98% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>200/202</span>
49
+ <span class='fraction'>196/198</span>
50
50
  </div>
51
51
 
52
52
 
@@ -261,14 +261,7 @@
261
261
  <a name='L196'></a><a href='#L196'>196</a>
262
262
  <a name='L197'></a><a href='#L197'>197</a>
263
263
  <a name='L198'></a><a href='#L198'>198</a>
264
- <a name='L199'></a><a href='#L199'>199</a>
265
- <a name='L200'></a><a href='#L200'>200</a>
266
- <a name='L201'></a><a href='#L201'>201</a>
267
- <a name='L202'></a><a href='#L202'>202</a>
268
- <a name='L203'></a><a href='#L203'>203</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
269
- <span class="cline-any cline-yes">1x</span>
270
- <span class="cline-any cline-yes">1x</span>
271
- <span class="cline-any cline-yes">1x</span>
264
+ <a name='L199'></a><a href='#L199'>199</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
272
265
  <span class="cline-any cline-yes">1x</span>
273
266
  <span class="cline-any cline-yes">1x</span>
274
267
  <span class="cline-any cline-yes">1x</span>
@@ -434,7 +427,6 @@
434
427
  <span class="cline-any cline-yes">3x</span>
435
428
  <span class="cline-any cline-yes">8x</span>
436
429
  <span class="cline-any cline-yes">8x</span>
437
- <span class="cline-any cline-yes">8x</span>
438
430
  <span class="cline-any cline-yes">12x</span>
439
431
  <span class="cline-any cline-yes">12x</span>
440
432
  <span class="cline-any cline-yes">12x</span>
@@ -467,28 +459,16 @@
467
459
  <span class="cline-any cline-no">&nbsp;</span>
468
460
  <span class="cline-any cline-no">&nbsp;</span>
469
461
  <span class="cline-any cline-yes">19x</span>
470
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/**
471
- * HSuite Native Connect
472
- * Copyright 2024-2025 HSuite (https://hsuite.finance)
473
- *
474
- * SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
475
- *
476
- * This file is part of HSuite Native Connect. For commercial licensing,
477
- * visit https://hsuite.finance/licensing
478
- */
479
- &nbsp;
480
- /**
481
- * @file Reference client implementation for dApp developers.
482
- * Provides a complete RPC client with bidirectional message routing,
483
- * timeout protection, and event-driven lifecycle hooks.
484
- *
485
- * @module @hsuite/native-connect-client/reference-client
486
- */
487
- &nbsp;
488
- import EventEmitter from 'eventemitter3';
489
- import { RpcClient, RpcCodec, RpcServer, RpcRouter, getLogger } from '@hsuite/native-connect-sdk';
490
- import type { RpcRequest, RpcResponse, RpcEnvelope } from '@hsuite/native-connect-types';
491
- import { RpcRequestSchema, RpcErrorSchema, RpcSuccessSchema } from '@hsuite/native-connect-types';
462
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import EventEmitter from 'eventemitter3';
463
+ import {
464
+ RpcClient,
465
+ RpcCodec,
466
+ RpcServer,
467
+ RpcRouter,
468
+ getLogger,
469
+ } from '@hsuite/connect-sdk';
470
+ import type { RpcRequest, RpcResponse, RpcEnvelope } from '@hsuite/connect-types';
471
+ import { RpcRequestSchema, RpcErrorSchema, RpcSuccessSchema } from '@hsuite/connect-types';
492
472
  &nbsp;
493
473
  /**
494
474
  * @description Transport abstraction for RPC message exchange
@@ -526,19 +506,28 @@ export interface ReferenceClientOptions {
526
506
  export type ReferenceClientEvent = 'request' | 'response' | 'response:error' | 'error';
527
507
  &nbsp;
528
508
  /**
529
- * @class ReferenceClient
530
- * @augments EventEmitter
531
- * @description Developer-facing RPC client for HSuite SDK integration testing.
532
- *
533
- * This is a reference implementation designed for dApp developers to understand
534
- * and test wallet communication patterns. It demonstrates the complete RPC
535
- * request/response lifecycle with proper timeout handling and error recovery.
536
- *
537
- * Features:
509
+ * @description Developer-facing RPC client for HSuite SDK integration testing
510
+ *
511
+ * Provides:
538
512
  * - Request/response RPC communication with timeout protection
539
513
  * - Bidirectional message routing for client-server scenarios
540
514
  * - Event emission for request/response lifecycle hooks
541
515
  * - Handler registration for incoming RPC methods
516
+ *
517
+ * @example
518
+ * ```typescript
519
+ * const client = new ReferenceClient({
520
+ * transport: new MemoryTransport(),
521
+ * timeoutMs: 5000
522
+ * });
523
+ *
524
+ * const response = await client.send({
525
+ * id: '1',
526
+ * jsonrpc: '2.0',
527
+ * method: 'wallet/accounts',
528
+ * params: {}
529
+ * });
530
+ * ```
542
531
  */
543
532
  export class ReferenceClient extends EventEmitter&lt;ReferenceClientEvent | string&gt; {
544
533
  private readonly rpc: RpcClient;
@@ -636,8 +625,7 @@ export class ReferenceClient extends EventEmitter&lt;ReferenceClientEvent | stri
636
625
  }
637
626
  &nbsp;
638
627
  const result = payload as RpcResponse;
639
- const id =
640
- typeof result.id === <span class="branch-0 cbranch-no" title="branch not covered" >'string' || typeof result.id === 'number' ? r</span>esult.<span class="branch-0 cbranch-no" title="branch not covered" >id : 'unknown';</span>
628
+ const id = typeof result.id === <span class="branch-0 cbranch-no" title="branch not covered" >'string' || typeof result.id === 'number' ? r</span>esult.<span class="branch-0 cbranch-no" title="branch not covered" >id : 'unknown';</span>
641
629
  const callback = this.pending.get(id);
642
630
  &nbsp;
643
631
  if (callback) {
@@ -676,7 +664,7 @@ export class ReferenceClient extends EventEmitter&lt;ReferenceClientEvent | stri
676
664
  <div class='footer quiet pad2 space-top1 center small'>
677
665
  Code coverage generated by
678
666
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
679
- at 2026-06-02T14:29:49.177Z
667
+ at 2026-01-12T14:27:06.757Z
680
668
  </div>
681
669
  <script src="../prettify.js"></script>
682
670
  <script>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hsuite/native-connect-client",
3
- "version": "1.0.0",
3
+ "version": "2.1.1",
4
4
  "license": "PolyForm-Noncommercial-1.0.0",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -16,8 +16,8 @@
16
16
  "docs": "compodoc -p tsconfig.build.json -c ../../compodoc.tier3.json -d dist/docs --name 'Reference Client API' --includes docs"
17
17
  },
18
18
  "dependencies": {
19
- "@hsuite/native-connect-sdk": "^1.0.0",
20
- "@hsuite/native-connect-types": "^1.0.0",
19
+ "@hsuite/native-connect-sdk": "^2.1.1",
20
+ "@hsuite/native-connect-types": "^2.1.1",
21
21
  "eventemitter3": "^5.0.1",
22
22
  "@scure/base": "^1.2.6"
23
23
  },
@@ -9,6 +9,7 @@ const mockAdapter = {
9
9
  displayName: 'Mock Ledger',
10
10
  description: 'Test ledger adapter',
11
11
  defaultNetworkId: 'mock:testnet',
12
+ nativeDecimals: 8,
12
13
  capabilities: {
13
14
  supportsMultiSign: false,
14
15
  supportsScheduledTx: false,