@dynamic-labs-wallet/node-ton 0.0.354 → 1.0.0-beta

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/index.cjs CHANGED
@@ -273,13 +273,13 @@ var DynamicTonWalletClient = /*#__PURE__*/ function(DynamicWalletClient) {
273
273
  * @param thresholdSignatureScheme - The threshold signature scheme to use for the wallet.
274
274
  * @param password - The password to use for the wallet.
275
275
  * @param onError - The function to call if an error occurs.
276
- * @param backUpToClientShareService - Whether to back up the external server key shares to the client share service. By default, it is false.
277
- * @returns The account address, public key hex, raw public key, external server key shares, and wallet id.
276
+ * @param backUpToDynamic - Whether to back up the external server key shares to the client share service. By default, it is false.
277
+ * @returns The walletMetadata, public key hex, raw public key, and external server key shares.
278
278
  */ function createWalletAccount(param) {
279
- var thresholdSignatureScheme = param.thresholdSignatureScheme, _param_password = param.password, password = _param_password === void 0 ? undefined : _param_password, onError = param.onError, _param_backUpToClientShareService = param.backUpToClientShareService, backUpToClientShareService = _param_backUpToClientShareService === void 0 ? false : _param_backUpToClientShareService;
279
+ var thresholdSignatureScheme = param.thresholdSignatureScheme, password = param.password, onError = param.onError, _param_backUpToDynamic = param.backUpToDynamic, backUpToDynamic = _param_backUpToDynamic === void 0 ? false : _param_backUpToDynamic;
280
280
  var _this = this;
281
281
  return _async_to_generator(function() {
282
- var _this_walletMap_accountAddress, ceremonyCeremonyCompleteResolver, ceremonyCompletePromise, _ref, rawPublicKey, externalServerKeyShares, publicKeyHex, accountAddress, externalKeySharesWithBackupStatus, _this_walletMap_accountAddress_walletId, error;
282
+ var resolvedWalletId, ceremonyCeremonyCompleteResolver, ceremonyCompletePromise, _ref, rawPublicKey, externalServerKeyShares, publicKeyHex, accountAddress, chainConfig, walletMetadata, _ref1, keySharesWithBackupStatus, backupInfo, error;
283
283
  return _ts_generator(this, function(_state) {
284
284
  switch(_state.label){
285
285
  case 0:
@@ -297,21 +297,11 @@ var DynamicTonWalletClient = /*#__PURE__*/ function(DynamicWalletClient) {
297
297
  _this.keyGen({
298
298
  thresholdSignatureScheme: thresholdSignatureScheme,
299
299
  chainName: _this.chainName,
300
+ password: password,
301
+ backUpToDynamic: backUpToDynamic,
300
302
  onError: onError,
301
- onCeremonyComplete: function(accountAddress, walletId) {
302
- var chainConfig = node.getMPCChainConfig(_this.chainName);
303
- _this.initializeWalletMapEntry({
304
- accountAddress: accountAddress,
305
- walletId: walletId,
306
- chainName: _this.chainName,
307
- thresholdSignatureScheme: thresholdSignatureScheme,
308
- derivationPath: JSON.stringify(Object.fromEntries(chainConfig.derivationPath.map(function(value, index) {
309
- return [
310
- index,
311
- value
312
- ];
313
- })))
314
- });
303
+ onCeremonyComplete: function(_accountAddress, walletId) {
304
+ resolvedWalletId = walletId;
315
305
  ceremonyCeremonyCompleteResolver(undefined);
316
306
  }
317
307
  })
@@ -325,7 +315,7 @@ var DynamicTonWalletClient = /*#__PURE__*/ function(DynamicWalletClient) {
325
315
  ];
326
316
  case 2:
327
317
  _state.sent();
328
- if (!rawPublicKey || !externalServerKeyShares || !(typeof rawPublicKey === 'string' || _instanceof(rawPublicKey, Uint8Array))) {
318
+ if (!rawPublicKey || !externalServerKeyShares || !resolvedWalletId || !(typeof rawPublicKey === 'string' || _instanceof(rawPublicKey, Uint8Array))) {
329
319
  throw new Error(ERROR_KEYGEN_FAILED);
330
320
  }
331
321
  publicKeyHex = typeof rawPublicKey === 'string' ? rawPublicKey : Buffer.from(rawPublicKey).toString('hex');
@@ -333,26 +323,40 @@ var DynamicTonWalletClient = /*#__PURE__*/ function(DynamicWalletClient) {
333
323
  publicKeyHex: publicKeyHex,
334
324
  workchain: 0
335
325
  });
326
+ chainConfig = node.getMPCChainConfig(_this.chainName);
327
+ walletMetadata = {
328
+ walletId: resolvedWalletId,
329
+ accountAddress: accountAddress,
330
+ chainName: _this.chainName,
331
+ thresholdSignatureScheme: thresholdSignatureScheme,
332
+ derivationPath: JSON.stringify(Object.fromEntries(chainConfig.derivationPath.map(function(value, index) {
333
+ return [
334
+ index,
335
+ value
336
+ ];
337
+ })))
338
+ };
336
339
  return [
337
340
  4,
338
341
  _this.storeEncryptedBackupByWalletWithRetry({
339
342
  accountAddress: accountAddress,
340
343
  externalServerKeyShares: externalServerKeyShares,
341
344
  password: password,
342
- backUpToClientShareService: backUpToClientShareService
345
+ backUpToDynamic: backUpToDynamic,
346
+ walletMetadata: walletMetadata
343
347
  })
344
348
  ];
345
349
  case 3:
346
- externalKeySharesWithBackupStatus = _state.sent();
350
+ _ref1 = _state.sent(), keySharesWithBackupStatus = _ref1.keySharesWithBackupStatus, backupInfo = _ref1.backupInfo;
351
+ walletMetadata.externalServerKeySharesBackupInfo = backupInfo;
347
352
  return [
348
353
  2,
349
354
  {
350
- walletId: (_this_walletMap_accountAddress_walletId = (_this_walletMap_accountAddress = _this.walletMap[accountAddress]) === null || _this_walletMap_accountAddress === void 0 ? void 0 : _this_walletMap_accountAddress.walletId) !== null && _this_walletMap_accountAddress_walletId !== void 0 ? _this_walletMap_accountAddress_walletId : '',
351
- accountAddress: accountAddress,
355
+ walletMetadata: walletMetadata,
352
356
  publicKeyHex: publicKeyHex,
353
357
  rawPublicKey: rawPublicKey,
354
358
  externalServerKeyShares: externalServerKeyShares,
355
- externalKeySharesWithBackupStatus: externalKeySharesWithBackupStatus
359
+ externalKeySharesWithBackupStatus: keySharesWithBackupStatus
356
360
  }
357
361
  ];
358
362
  case 4:
@@ -377,19 +381,20 @@ var DynamicTonWalletClient = /*#__PURE__*/ function(DynamicWalletClient) {
377
381
  value: /**
378
382
  * Signs a message using MPC
379
383
  * @param message - The message to sign
380
- * @param accountAddress - The account address to sign with
384
+ * @param walletMetadata - Wallet metadata (the full object returned by createWalletAccount/importPrivateKey, with backupInfo merged from any subsequent updatePassword/refresh/reshare)
381
385
  * @param password - The password for encrypted backup shares
382
386
  * @param externalServerKeyShares - The external server key shares
383
387
  * @param onError - The function to call if an error occurs
384
388
  * @returns The signature as a base64 string
385
389
  */ function signMessage(param) {
386
- var message = param.message, accountAddress = param.accountAddress, _param_password = param.password, password = _param_password === void 0 ? undefined : _param_password, externalServerKeyShares = param.externalServerKeyShares, onError = param.onError;
390
+ var message = param.message, walletMetadata = param.walletMetadata, _param_password = param.password, password = _param_password === void 0 ? undefined : _param_password, externalServerKeyShares = param.externalServerKeyShares, onError = param.onError;
387
391
  var _this = this;
388
392
  return _async_to_generator(function() {
389
- var signatureEd25519, formattedSignature, error;
393
+ var accountAddress, signatureEd25519, formattedSignature, error;
390
394
  return _ts_generator(this, function(_state) {
391
395
  switch(_state.label){
392
396
  case 0:
397
+ accountAddress = walletMetadata.accountAddress;
393
398
  if (!accountAddress) {
394
399
  throw new Error(ERROR_ACCOUNT_ADDRESS_REQUIRED);
395
400
  }
@@ -397,23 +402,10 @@ var DynamicTonWalletClient = /*#__PURE__*/ function(DynamicWalletClient) {
397
402
  case 1:
398
403
  _state.trys.push([
399
404
  1,
400
- 4,
405
+ 3,
401
406
  ,
402
- 5
407
+ 4
403
408
  ]);
404
- // Attempt to recover key shares from backup if not provided
405
- return [
406
- 4,
407
- _this.ensureKeySharesRecovered({
408
- accountAddress: accountAddress,
409
- password: password,
410
- walletOperation: node.WalletOperation.SIGN_MESSAGE,
411
- externalServerKeyShares: externalServerKeyShares,
412
- errorMessage: 'External server key shares are required to sign a message. No backup shares available for recovery.'
413
- })
414
- ];
415
- case 2:
416
- _state.sent();
417
409
  return [
418
410
  4,
419
411
  _this.sign({
@@ -422,17 +414,18 @@ var DynamicTonWalletClient = /*#__PURE__*/ function(DynamicWalletClient) {
422
414
  chainName: _this.chainName,
423
415
  password: password,
424
416
  externalServerKeyShares: externalServerKeyShares,
425
- onError: onError
417
+ onError: onError,
418
+ walletMetadata: walletMetadata
426
419
  })
427
420
  ];
428
- case 3:
421
+ case 2:
429
422
  signatureEd25519 = _state.sent();
430
423
  formattedSignature = Buffer.from(signatureEd25519).toString('base64');
431
424
  return [
432
425
  2,
433
426
  formattedSignature
434
427
  ];
435
- case 4:
428
+ case 3:
436
429
  error = _state.sent();
437
430
  logError({
438
431
  message: ERROR_SIGN_MESSAGE,
@@ -441,8 +434,10 @@ var DynamicTonWalletClient = /*#__PURE__*/ function(DynamicWalletClient) {
441
434
  accountAddress: accountAddress
442
435
  }
443
436
  });
444
- throw new Error(ERROR_SIGN_MESSAGE);
445
- case 5:
437
+ throw new Error(ERROR_SIGN_MESSAGE, {
438
+ cause: error
439
+ });
440
+ case 4:
446
441
  return [
447
442
  2
448
443
  ];
@@ -455,82 +450,68 @@ var DynamicTonWalletClient = /*#__PURE__*/ function(DynamicWalletClient) {
455
450
  key: "signTransaction",
456
451
  value: /**
457
452
  * Signs a transaction using MPC
458
- * @param senderAddress - The sender address
453
+ * @param walletMetadata - Wallet metadata (the full object returned by createWalletAccount/importPrivateKey, with backupInfo merged from any subsequent updatePassword/refresh/reshare)
459
454
  * @param transaction - The serialized transaction to sign
460
455
  * @param password - The password for encrypted backup shares
461
456
  * @param externalServerKeyShares - The external server key shares
462
457
  * @param onError - The function to call if an error occurs
463
458
  * @returns The signature as a base64 string
464
459
  */ function signTransaction(param) {
465
- var senderAddress = param.senderAddress, transaction = param.transaction, _param_password = param.password, password = _param_password === void 0 ? undefined : _param_password, externalServerKeyShares = param.externalServerKeyShares, onError = param.onError;
460
+ var walletMetadata = param.walletMetadata, transaction = param.transaction, _param_password = param.password, password = _param_password === void 0 ? undefined : _param_password, externalServerKeyShares = param.externalServerKeyShares, onError = param.onError;
466
461
  var _this = this;
467
462
  return _async_to_generator(function() {
468
- var signatureEd25519, formattedSignature, error;
463
+ var accountAddress, signatureEd25519, formattedSignature, error;
469
464
  return _ts_generator(this, function(_state) {
470
465
  switch(_state.label){
471
466
  case 0:
472
- if (!senderAddress) {
467
+ accountAddress = walletMetadata.accountAddress;
468
+ if (!accountAddress) {
473
469
  throw new Error(ERROR_ACCOUNT_ADDRESS_REQUIRED);
474
470
  }
475
- return [
476
- 4,
477
- _this.verifyPassword({
478
- accountAddress: senderAddress,
479
- password: password
480
- })
481
- ];
471
+ _state.label = 1;
482
472
  case 1:
483
- _state.sent();
484
- _state.label = 2;
485
- case 2:
486
473
  _state.trys.push([
487
- 2,
488
- 5,
474
+ 1,
475
+ 3,
489
476
  ,
490
- 6
477
+ 4
491
478
  ]);
492
- // Attempt to recover key shares from backup if not provided
493
- return [
494
- 4,
495
- _this.ensureKeySharesRecovered({
496
- accountAddress: senderAddress,
497
- password: password,
498
- walletOperation: node.WalletOperation.SIGN_TRANSACTION,
499
- externalServerKeyShares: externalServerKeyShares,
500
- errorMessage: 'External server key shares are required to sign a transaction. No backup shares available for recovery.'
501
- })
502
- ];
503
- case 3:
504
- _state.sent();
505
479
  return [
506
480
  4,
507
481
  _this.sign({
508
482
  message: transaction,
509
- accountAddress: senderAddress,
483
+ accountAddress: accountAddress,
510
484
  chainName: _this.chainName,
511
485
  password: password,
512
486
  externalServerKeyShares: externalServerKeyShares,
513
- onError: onError
487
+ onError: onError,
488
+ walletMetadata: walletMetadata,
489
+ walletOperation: node.WalletOperation.SIGN_TRANSACTION
514
490
  })
515
491
  ];
516
- case 4:
492
+ case 2:
517
493
  signatureEd25519 = _state.sent();
494
+ if (!_instanceof(signatureEd25519, Uint8Array)) {
495
+ throw new TypeError('Invalid signature format returned from MPC signing');
496
+ }
518
497
  formattedSignature = Buffer.from(signatureEd25519).toString('base64');
519
498
  return [
520
499
  2,
521
500
  formattedSignature
522
501
  ];
523
- case 5:
502
+ case 3:
524
503
  error = _state.sent();
525
504
  logError({
526
505
  message: ERROR_SIGN_TRANSACTION,
527
506
  error: error,
528
507
  context: {
529
- senderAddress: senderAddress
508
+ accountAddress: accountAddress
530
509
  }
531
510
  });
532
- throw new Error(ERROR_SIGN_TRANSACTION);
533
- case 6:
511
+ throw new Error(ERROR_SIGN_TRANSACTION, {
512
+ cause: error
513
+ });
514
+ case 4:
534
515
  return [
535
516
  2
536
517
  ];
@@ -542,57 +523,39 @@ var DynamicTonWalletClient = /*#__PURE__*/ function(DynamicWalletClient) {
542
523
  {
543
524
  key: "exportPrivateKey",
544
525
  value: /**
545
- * Exports the private key for a given account address
546
- * @param accountAddress - The account address to export the private key for
526
+ * Exports the private key for a given wallet
527
+ * @param walletMetadata - Wallet metadata (the full object returned by createWalletAccount/importPrivateKey, with backupInfo merged from any subsequent updatePassword/refresh/reshare)
547
528
  * @param password - The password for encrypted backup shares
548
529
  * @param externalServerKeyShares - The external server key shares
549
530
  * @returns The private key as a hex string
550
531
  */ function exportPrivateKey(param) {
551
- var accountAddress = param.accountAddress, _param_password = param.password, password = _param_password === void 0 ? undefined : _param_password, externalServerKeyShares = param.externalServerKeyShares;
532
+ var walletMetadata = param.walletMetadata, _param_password = param.password, password = _param_password === void 0 ? undefined : _param_password, externalServerKeyShares = param.externalServerKeyShares;
552
533
  var _this = this;
553
534
  return _async_to_generator(function() {
554
- var derivedPrivateKey, privateScalarHex, error;
535
+ var accountAddress, derivedPrivateKey, privateScalarHex, error;
555
536
  return _ts_generator(this, function(_state) {
556
537
  switch(_state.label){
557
538
  case 0:
539
+ accountAddress = walletMetadata.accountAddress;
540
+ _state.label = 1;
541
+ case 1:
558
542
  _state.trys.push([
559
- 0,
560
- 4,
543
+ 1,
544
+ 3,
561
545
  ,
562
- 5
546
+ 4
563
547
  ]);
564
- return [
565
- 4,
566
- _this.verifyPassword({
567
- accountAddress: accountAddress,
568
- password: password
569
- })
570
- ];
571
- case 1:
572
- _state.sent();
573
- // Attempt to recover key shares from backup if not provided
574
- return [
575
- 4,
576
- _this.ensureKeySharesRecovered({
577
- accountAddress: accountAddress,
578
- password: password,
579
- walletOperation: node.WalletOperation.EXPORT_PRIVATE_KEY,
580
- externalServerKeyShares: externalServerKeyShares,
581
- errorMessage: 'External server key shares are required to export private key. No backup shares available for recovery.'
582
- })
583
- ];
584
- case 2:
585
- _state.sent();
586
548
  return [
587
549
  4,
588
550
  _this.exportKey({
589
551
  accountAddress: accountAddress,
590
552
  chainName: _this.chainName,
591
553
  password: password,
592
- externalServerKeyShares: externalServerKeyShares
554
+ externalServerKeyShares: externalServerKeyShares,
555
+ walletMetadata: walletMetadata
593
556
  })
594
557
  ];
595
- case 3:
558
+ case 2:
596
559
  derivedPrivateKey = _state.sent().derivedPrivateKey;
597
560
  if (!derivedPrivateKey) {
598
561
  throw new Error('Derived private key is undefined');
@@ -603,7 +566,7 @@ var DynamicTonWalletClient = /*#__PURE__*/ function(DynamicWalletClient) {
603
566
  2,
604
567
  privateScalarHex
605
568
  ];
606
- case 4:
569
+ case 3:
607
570
  error = _state.sent();
608
571
  logError({
609
572
  message: ERROR_EXPORT_PRIVATE_KEY,
@@ -613,7 +576,7 @@ var DynamicTonWalletClient = /*#__PURE__*/ function(DynamicWalletClient) {
613
576
  }
614
577
  });
615
578
  throw new Error(ERROR_EXPORT_PRIVATE_KEY);
616
- case 5:
579
+ case 4:
617
580
  return [
618
581
  2
619
582
  ];
@@ -667,14 +630,14 @@ var DynamicTonWalletClient = /*#__PURE__*/ function(DynamicWalletClient) {
667
630
  * @param thresholdSignatureScheme - The threshold signature scheme to use for the wallet.
668
631
  * @param password - The password to use for the wallet.
669
632
  * @param onError - The function to call if an error occurs.
670
- * @param backUpToClientShareService - Whether to back up the external server key shares to the client share service.
633
+ * @param backUpToDynamic - Whether to back up the external server key shares to the client share service.
671
634
  * @param publicAddressCheck - Optional public address to verify against the derived address.
672
- * @returns The account address, public key hex, raw public key, and external server key shares.
635
+ * @returns The walletMetadata, public key hex, raw public key, and external server key shares.
673
636
  */ function importPrivateKey(param) {
674
- var privateKey = param.privateKey, chainName = param.chainName, thresholdSignatureScheme = param.thresholdSignatureScheme, _param_password = param.password, password = _param_password === void 0 ? undefined : _param_password, onError = param.onError, _param_backUpToClientShareService = param.backUpToClientShareService, backUpToClientShareService = _param_backUpToClientShareService === void 0 ? false : _param_backUpToClientShareService, publicAddressCheck = param.publicAddressCheck;
637
+ var privateKey = param.privateKey, chainName = param.chainName, thresholdSignatureScheme = param.thresholdSignatureScheme, password = param.password, onError = param.onError, _param_backUpToDynamic = param.backUpToDynamic, backUpToDynamic = _param_backUpToDynamic === void 0 ? false : _param_backUpToDynamic, publicAddressCheck = param.publicAddressCheck;
675
638
  var _this = this;
676
639
  return _async_to_generator(function() {
677
- var ceremonyCeremonyCompleteResolver, ceremonyCompletePromise, formattedPrivateKey, publicKeyHex, derivedAddress, _ref, rawPublicKey, externalServerKeyShares, resultPublicKeyHex, accountAddress, externalKeySharesWithBackupStatus, error;
640
+ var resolvedWalletId, ceremonyCeremonyCompleteResolver, ceremonyCompletePromise, formattedPrivateKey, publicKeyHex, derivedAddress, _ref, rawPublicKey, externalServerKeyShares, resultPublicKeyHex, accountAddress, chainConfig, walletMetadata, _ref1, keySharesWithBackupStatus, backupInfo, error;
678
641
  return _ts_generator(this, function(_state) {
679
642
  switch(_state.label){
680
643
  case 0:
@@ -702,20 +665,10 @@ var DynamicTonWalletClient = /*#__PURE__*/ function(DynamicWalletClient) {
702
665
  chainName: chainName,
703
666
  thresholdSignatureScheme: thresholdSignatureScheme,
704
667
  privateKey: formattedPrivateKey,
705
- onCeremonyComplete: function(accountAddress, walletId) {
706
- var chainConfig = node.getMPCChainConfig(_this.chainName);
707
- _this.initializeWalletMapEntry({
708
- accountAddress: accountAddress,
709
- walletId: walletId,
710
- chainName: _this.chainName,
711
- thresholdSignatureScheme: thresholdSignatureScheme,
712
- derivationPath: JSON.stringify(Object.fromEntries(chainConfig.derivationPath.map(function(value, index) {
713
- return [
714
- index,
715
- value
716
- ];
717
- })))
718
- });
668
+ password: password,
669
+ backUpToDynamic: backUpToDynamic,
670
+ onCeremonyComplete: function(_accountAddress, walletId) {
671
+ resolvedWalletId = walletId;
719
672
  ceremonyCeremonyCompleteResolver(undefined);
720
673
  },
721
674
  onError: function(e) {
@@ -736,7 +689,7 @@ var DynamicTonWalletClient = /*#__PURE__*/ function(DynamicWalletClient) {
736
689
  ];
737
690
  case 2:
738
691
  _state.sent();
739
- if (!rawPublicKey || !externalServerKeyShares || !(typeof rawPublicKey === 'string' || _instanceof(rawPublicKey, Uint8Array))) {
692
+ if (!rawPublicKey || !externalServerKeyShares || !resolvedWalletId || !(typeof rawPublicKey === 'string' || _instanceof(rawPublicKey, Uint8Array))) {
740
693
  throw new Error(ERROR_IMPORT_PRIVATE_KEY);
741
694
  }
742
695
  resultPublicKeyHex = typeof rawPublicKey === 'string' ? rawPublicKey : Buffer.from(rawPublicKey).toString('hex');
@@ -747,25 +700,40 @@ var DynamicTonWalletClient = /*#__PURE__*/ function(DynamicWalletClient) {
747
700
  if (accountAddress !== derivedAddress) {
748
701
  throw new Error("Public key mismatch: derived address ".concat(accountAddress, " !== expected ").concat(derivedAddress));
749
702
  }
703
+ chainConfig = node.getMPCChainConfig(_this.chainName);
704
+ walletMetadata = {
705
+ walletId: resolvedWalletId,
706
+ accountAddress: accountAddress,
707
+ chainName: _this.chainName,
708
+ thresholdSignatureScheme: thresholdSignatureScheme,
709
+ derivationPath: JSON.stringify(Object.fromEntries(chainConfig.derivationPath.map(function(value, index) {
710
+ return [
711
+ index,
712
+ value
713
+ ];
714
+ })))
715
+ };
750
716
  return [
751
717
  4,
752
718
  _this.storeEncryptedBackupByWalletWithRetry({
753
719
  accountAddress: accountAddress,
754
720
  externalServerKeyShares: externalServerKeyShares,
755
721
  password: password,
756
- backUpToClientShareService: backUpToClientShareService
722
+ backUpToDynamic: backUpToDynamic,
723
+ walletMetadata: walletMetadata
757
724
  })
758
725
  ];
759
726
  case 3:
760
- externalKeySharesWithBackupStatus = _state.sent();
727
+ _ref1 = _state.sent(), keySharesWithBackupStatus = _ref1.keySharesWithBackupStatus, backupInfo = _ref1.backupInfo;
728
+ walletMetadata.externalServerKeySharesBackupInfo = backupInfo;
761
729
  return [
762
730
  2,
763
731
  {
764
- accountAddress: accountAddress,
732
+ walletMetadata: walletMetadata,
765
733
  publicKeyHex: resultPublicKeyHex,
766
734
  rawPublicKey: rawPublicKey,
767
735
  externalServerKeyShares: externalServerKeyShares,
768
- externalKeySharesWithBackupStatus: externalKeySharesWithBackupStatus
736
+ externalKeySharesWithBackupStatus: keySharesWithBackupStatus
769
737
  }
770
738
  ];
771
739
  case 4:
package/index.esm.js CHANGED
@@ -271,13 +271,13 @@ var DynamicTonWalletClient = /*#__PURE__*/ function(DynamicWalletClient) {
271
271
  * @param thresholdSignatureScheme - The threshold signature scheme to use for the wallet.
272
272
  * @param password - The password to use for the wallet.
273
273
  * @param onError - The function to call if an error occurs.
274
- * @param backUpToClientShareService - Whether to back up the external server key shares to the client share service. By default, it is false.
275
- * @returns The account address, public key hex, raw public key, external server key shares, and wallet id.
274
+ * @param backUpToDynamic - Whether to back up the external server key shares to the client share service. By default, it is false.
275
+ * @returns The walletMetadata, public key hex, raw public key, and external server key shares.
276
276
  */ function createWalletAccount(param) {
277
- var thresholdSignatureScheme = param.thresholdSignatureScheme, _param_password = param.password, password = _param_password === void 0 ? undefined : _param_password, onError = param.onError, _param_backUpToClientShareService = param.backUpToClientShareService, backUpToClientShareService = _param_backUpToClientShareService === void 0 ? false : _param_backUpToClientShareService;
277
+ var thresholdSignatureScheme = param.thresholdSignatureScheme, password = param.password, onError = param.onError, _param_backUpToDynamic = param.backUpToDynamic, backUpToDynamic = _param_backUpToDynamic === void 0 ? false : _param_backUpToDynamic;
278
278
  var _this = this;
279
279
  return _async_to_generator(function() {
280
- var _this_walletMap_accountAddress, ceremonyCeremonyCompleteResolver, ceremonyCompletePromise, _ref, rawPublicKey, externalServerKeyShares, publicKeyHex, accountAddress, externalKeySharesWithBackupStatus, _this_walletMap_accountAddress_walletId, error;
280
+ var resolvedWalletId, ceremonyCeremonyCompleteResolver, ceremonyCompletePromise, _ref, rawPublicKey, externalServerKeyShares, publicKeyHex, accountAddress, chainConfig, walletMetadata, _ref1, keySharesWithBackupStatus, backupInfo, error;
281
281
  return _ts_generator(this, function(_state) {
282
282
  switch(_state.label){
283
283
  case 0:
@@ -295,21 +295,11 @@ var DynamicTonWalletClient = /*#__PURE__*/ function(DynamicWalletClient) {
295
295
  _this.keyGen({
296
296
  thresholdSignatureScheme: thresholdSignatureScheme,
297
297
  chainName: _this.chainName,
298
+ password: password,
299
+ backUpToDynamic: backUpToDynamic,
298
300
  onError: onError,
299
- onCeremonyComplete: function(accountAddress, walletId) {
300
- var chainConfig = getMPCChainConfig(_this.chainName);
301
- _this.initializeWalletMapEntry({
302
- accountAddress: accountAddress,
303
- walletId: walletId,
304
- chainName: _this.chainName,
305
- thresholdSignatureScheme: thresholdSignatureScheme,
306
- derivationPath: JSON.stringify(Object.fromEntries(chainConfig.derivationPath.map(function(value, index) {
307
- return [
308
- index,
309
- value
310
- ];
311
- })))
312
- });
301
+ onCeremonyComplete: function(_accountAddress, walletId) {
302
+ resolvedWalletId = walletId;
313
303
  ceremonyCeremonyCompleteResolver(undefined);
314
304
  }
315
305
  })
@@ -323,7 +313,7 @@ var DynamicTonWalletClient = /*#__PURE__*/ function(DynamicWalletClient) {
323
313
  ];
324
314
  case 2:
325
315
  _state.sent();
326
- if (!rawPublicKey || !externalServerKeyShares || !(typeof rawPublicKey === 'string' || _instanceof(rawPublicKey, Uint8Array))) {
316
+ if (!rawPublicKey || !externalServerKeyShares || !resolvedWalletId || !(typeof rawPublicKey === 'string' || _instanceof(rawPublicKey, Uint8Array))) {
327
317
  throw new Error(ERROR_KEYGEN_FAILED);
328
318
  }
329
319
  publicKeyHex = typeof rawPublicKey === 'string' ? rawPublicKey : Buffer.from(rawPublicKey).toString('hex');
@@ -331,26 +321,40 @@ var DynamicTonWalletClient = /*#__PURE__*/ function(DynamicWalletClient) {
331
321
  publicKeyHex: publicKeyHex,
332
322
  workchain: 0
333
323
  });
324
+ chainConfig = getMPCChainConfig(_this.chainName);
325
+ walletMetadata = {
326
+ walletId: resolvedWalletId,
327
+ accountAddress: accountAddress,
328
+ chainName: _this.chainName,
329
+ thresholdSignatureScheme: thresholdSignatureScheme,
330
+ derivationPath: JSON.stringify(Object.fromEntries(chainConfig.derivationPath.map(function(value, index) {
331
+ return [
332
+ index,
333
+ value
334
+ ];
335
+ })))
336
+ };
334
337
  return [
335
338
  4,
336
339
  _this.storeEncryptedBackupByWalletWithRetry({
337
340
  accountAddress: accountAddress,
338
341
  externalServerKeyShares: externalServerKeyShares,
339
342
  password: password,
340
- backUpToClientShareService: backUpToClientShareService
343
+ backUpToDynamic: backUpToDynamic,
344
+ walletMetadata: walletMetadata
341
345
  })
342
346
  ];
343
347
  case 3:
344
- externalKeySharesWithBackupStatus = _state.sent();
348
+ _ref1 = _state.sent(), keySharesWithBackupStatus = _ref1.keySharesWithBackupStatus, backupInfo = _ref1.backupInfo;
349
+ walletMetadata.externalServerKeySharesBackupInfo = backupInfo;
345
350
  return [
346
351
  2,
347
352
  {
348
- walletId: (_this_walletMap_accountAddress_walletId = (_this_walletMap_accountAddress = _this.walletMap[accountAddress]) === null || _this_walletMap_accountAddress === void 0 ? void 0 : _this_walletMap_accountAddress.walletId) !== null && _this_walletMap_accountAddress_walletId !== void 0 ? _this_walletMap_accountAddress_walletId : '',
349
- accountAddress: accountAddress,
353
+ walletMetadata: walletMetadata,
350
354
  publicKeyHex: publicKeyHex,
351
355
  rawPublicKey: rawPublicKey,
352
356
  externalServerKeyShares: externalServerKeyShares,
353
- externalKeySharesWithBackupStatus: externalKeySharesWithBackupStatus
357
+ externalKeySharesWithBackupStatus: keySharesWithBackupStatus
354
358
  }
355
359
  ];
356
360
  case 4:
@@ -375,19 +379,20 @@ var DynamicTonWalletClient = /*#__PURE__*/ function(DynamicWalletClient) {
375
379
  value: /**
376
380
  * Signs a message using MPC
377
381
  * @param message - The message to sign
378
- * @param accountAddress - The account address to sign with
382
+ * @param walletMetadata - Wallet metadata (the full object returned by createWalletAccount/importPrivateKey, with backupInfo merged from any subsequent updatePassword/refresh/reshare)
379
383
  * @param password - The password for encrypted backup shares
380
384
  * @param externalServerKeyShares - The external server key shares
381
385
  * @param onError - The function to call if an error occurs
382
386
  * @returns The signature as a base64 string
383
387
  */ function signMessage(param) {
384
- var message = param.message, accountAddress = param.accountAddress, _param_password = param.password, password = _param_password === void 0 ? undefined : _param_password, externalServerKeyShares = param.externalServerKeyShares, onError = param.onError;
388
+ var message = param.message, walletMetadata = param.walletMetadata, _param_password = param.password, password = _param_password === void 0 ? undefined : _param_password, externalServerKeyShares = param.externalServerKeyShares, onError = param.onError;
385
389
  var _this = this;
386
390
  return _async_to_generator(function() {
387
- var signatureEd25519, formattedSignature, error;
391
+ var accountAddress, signatureEd25519, formattedSignature, error;
388
392
  return _ts_generator(this, function(_state) {
389
393
  switch(_state.label){
390
394
  case 0:
395
+ accountAddress = walletMetadata.accountAddress;
391
396
  if (!accountAddress) {
392
397
  throw new Error(ERROR_ACCOUNT_ADDRESS_REQUIRED);
393
398
  }
@@ -395,23 +400,10 @@ var DynamicTonWalletClient = /*#__PURE__*/ function(DynamicWalletClient) {
395
400
  case 1:
396
401
  _state.trys.push([
397
402
  1,
398
- 4,
403
+ 3,
399
404
  ,
400
- 5
405
+ 4
401
406
  ]);
402
- // Attempt to recover key shares from backup if not provided
403
- return [
404
- 4,
405
- _this.ensureKeySharesRecovered({
406
- accountAddress: accountAddress,
407
- password: password,
408
- walletOperation: WalletOperation.SIGN_MESSAGE,
409
- externalServerKeyShares: externalServerKeyShares,
410
- errorMessage: 'External server key shares are required to sign a message. No backup shares available for recovery.'
411
- })
412
- ];
413
- case 2:
414
- _state.sent();
415
407
  return [
416
408
  4,
417
409
  _this.sign({
@@ -420,17 +412,18 @@ var DynamicTonWalletClient = /*#__PURE__*/ function(DynamicWalletClient) {
420
412
  chainName: _this.chainName,
421
413
  password: password,
422
414
  externalServerKeyShares: externalServerKeyShares,
423
- onError: onError
415
+ onError: onError,
416
+ walletMetadata: walletMetadata
424
417
  })
425
418
  ];
426
- case 3:
419
+ case 2:
427
420
  signatureEd25519 = _state.sent();
428
421
  formattedSignature = Buffer.from(signatureEd25519).toString('base64');
429
422
  return [
430
423
  2,
431
424
  formattedSignature
432
425
  ];
433
- case 4:
426
+ case 3:
434
427
  error = _state.sent();
435
428
  logError({
436
429
  message: ERROR_SIGN_MESSAGE,
@@ -439,8 +432,10 @@ var DynamicTonWalletClient = /*#__PURE__*/ function(DynamicWalletClient) {
439
432
  accountAddress: accountAddress
440
433
  }
441
434
  });
442
- throw new Error(ERROR_SIGN_MESSAGE);
443
- case 5:
435
+ throw new Error(ERROR_SIGN_MESSAGE, {
436
+ cause: error
437
+ });
438
+ case 4:
444
439
  return [
445
440
  2
446
441
  ];
@@ -453,82 +448,68 @@ var DynamicTonWalletClient = /*#__PURE__*/ function(DynamicWalletClient) {
453
448
  key: "signTransaction",
454
449
  value: /**
455
450
  * Signs a transaction using MPC
456
- * @param senderAddress - The sender address
451
+ * @param walletMetadata - Wallet metadata (the full object returned by createWalletAccount/importPrivateKey, with backupInfo merged from any subsequent updatePassword/refresh/reshare)
457
452
  * @param transaction - The serialized transaction to sign
458
453
  * @param password - The password for encrypted backup shares
459
454
  * @param externalServerKeyShares - The external server key shares
460
455
  * @param onError - The function to call if an error occurs
461
456
  * @returns The signature as a base64 string
462
457
  */ function signTransaction(param) {
463
- var senderAddress = param.senderAddress, transaction = param.transaction, _param_password = param.password, password = _param_password === void 0 ? undefined : _param_password, externalServerKeyShares = param.externalServerKeyShares, onError = param.onError;
458
+ var walletMetadata = param.walletMetadata, transaction = param.transaction, _param_password = param.password, password = _param_password === void 0 ? undefined : _param_password, externalServerKeyShares = param.externalServerKeyShares, onError = param.onError;
464
459
  var _this = this;
465
460
  return _async_to_generator(function() {
466
- var signatureEd25519, formattedSignature, error;
461
+ var accountAddress, signatureEd25519, formattedSignature, error;
467
462
  return _ts_generator(this, function(_state) {
468
463
  switch(_state.label){
469
464
  case 0:
470
- if (!senderAddress) {
465
+ accountAddress = walletMetadata.accountAddress;
466
+ if (!accountAddress) {
471
467
  throw new Error(ERROR_ACCOUNT_ADDRESS_REQUIRED);
472
468
  }
473
- return [
474
- 4,
475
- _this.verifyPassword({
476
- accountAddress: senderAddress,
477
- password: password
478
- })
479
- ];
469
+ _state.label = 1;
480
470
  case 1:
481
- _state.sent();
482
- _state.label = 2;
483
- case 2:
484
471
  _state.trys.push([
485
- 2,
486
- 5,
472
+ 1,
473
+ 3,
487
474
  ,
488
- 6
475
+ 4
489
476
  ]);
490
- // Attempt to recover key shares from backup if not provided
491
- return [
492
- 4,
493
- _this.ensureKeySharesRecovered({
494
- accountAddress: senderAddress,
495
- password: password,
496
- walletOperation: WalletOperation.SIGN_TRANSACTION,
497
- externalServerKeyShares: externalServerKeyShares,
498
- errorMessage: 'External server key shares are required to sign a transaction. No backup shares available for recovery.'
499
- })
500
- ];
501
- case 3:
502
- _state.sent();
503
477
  return [
504
478
  4,
505
479
  _this.sign({
506
480
  message: transaction,
507
- accountAddress: senderAddress,
481
+ accountAddress: accountAddress,
508
482
  chainName: _this.chainName,
509
483
  password: password,
510
484
  externalServerKeyShares: externalServerKeyShares,
511
- onError: onError
485
+ onError: onError,
486
+ walletMetadata: walletMetadata,
487
+ walletOperation: WalletOperation.SIGN_TRANSACTION
512
488
  })
513
489
  ];
514
- case 4:
490
+ case 2:
515
491
  signatureEd25519 = _state.sent();
492
+ if (!_instanceof(signatureEd25519, Uint8Array)) {
493
+ throw new TypeError('Invalid signature format returned from MPC signing');
494
+ }
516
495
  formattedSignature = Buffer.from(signatureEd25519).toString('base64');
517
496
  return [
518
497
  2,
519
498
  formattedSignature
520
499
  ];
521
- case 5:
500
+ case 3:
522
501
  error = _state.sent();
523
502
  logError({
524
503
  message: ERROR_SIGN_TRANSACTION,
525
504
  error: error,
526
505
  context: {
527
- senderAddress: senderAddress
506
+ accountAddress: accountAddress
528
507
  }
529
508
  });
530
- throw new Error(ERROR_SIGN_TRANSACTION);
531
- case 6:
509
+ throw new Error(ERROR_SIGN_TRANSACTION, {
510
+ cause: error
511
+ });
512
+ case 4:
532
513
  return [
533
514
  2
534
515
  ];
@@ -540,57 +521,39 @@ var DynamicTonWalletClient = /*#__PURE__*/ function(DynamicWalletClient) {
540
521
  {
541
522
  key: "exportPrivateKey",
542
523
  value: /**
543
- * Exports the private key for a given account address
544
- * @param accountAddress - The account address to export the private key for
524
+ * Exports the private key for a given wallet
525
+ * @param walletMetadata - Wallet metadata (the full object returned by createWalletAccount/importPrivateKey, with backupInfo merged from any subsequent updatePassword/refresh/reshare)
545
526
  * @param password - The password for encrypted backup shares
546
527
  * @param externalServerKeyShares - The external server key shares
547
528
  * @returns The private key as a hex string
548
529
  */ function exportPrivateKey(param) {
549
- var accountAddress = param.accountAddress, _param_password = param.password, password = _param_password === void 0 ? undefined : _param_password, externalServerKeyShares = param.externalServerKeyShares;
530
+ var walletMetadata = param.walletMetadata, _param_password = param.password, password = _param_password === void 0 ? undefined : _param_password, externalServerKeyShares = param.externalServerKeyShares;
550
531
  var _this = this;
551
532
  return _async_to_generator(function() {
552
- var derivedPrivateKey, privateScalarHex, error;
533
+ var accountAddress, derivedPrivateKey, privateScalarHex, error;
553
534
  return _ts_generator(this, function(_state) {
554
535
  switch(_state.label){
555
536
  case 0:
537
+ accountAddress = walletMetadata.accountAddress;
538
+ _state.label = 1;
539
+ case 1:
556
540
  _state.trys.push([
557
- 0,
558
- 4,
541
+ 1,
542
+ 3,
559
543
  ,
560
- 5
544
+ 4
561
545
  ]);
562
- return [
563
- 4,
564
- _this.verifyPassword({
565
- accountAddress: accountAddress,
566
- password: password
567
- })
568
- ];
569
- case 1:
570
- _state.sent();
571
- // Attempt to recover key shares from backup if not provided
572
- return [
573
- 4,
574
- _this.ensureKeySharesRecovered({
575
- accountAddress: accountAddress,
576
- password: password,
577
- walletOperation: WalletOperation.EXPORT_PRIVATE_KEY,
578
- externalServerKeyShares: externalServerKeyShares,
579
- errorMessage: 'External server key shares are required to export private key. No backup shares available for recovery.'
580
- })
581
- ];
582
- case 2:
583
- _state.sent();
584
546
  return [
585
547
  4,
586
548
  _this.exportKey({
587
549
  accountAddress: accountAddress,
588
550
  chainName: _this.chainName,
589
551
  password: password,
590
- externalServerKeyShares: externalServerKeyShares
552
+ externalServerKeyShares: externalServerKeyShares,
553
+ walletMetadata: walletMetadata
591
554
  })
592
555
  ];
593
- case 3:
556
+ case 2:
594
557
  derivedPrivateKey = _state.sent().derivedPrivateKey;
595
558
  if (!derivedPrivateKey) {
596
559
  throw new Error('Derived private key is undefined');
@@ -601,7 +564,7 @@ var DynamicTonWalletClient = /*#__PURE__*/ function(DynamicWalletClient) {
601
564
  2,
602
565
  privateScalarHex
603
566
  ];
604
- case 4:
567
+ case 3:
605
568
  error = _state.sent();
606
569
  logError({
607
570
  message: ERROR_EXPORT_PRIVATE_KEY,
@@ -611,7 +574,7 @@ var DynamicTonWalletClient = /*#__PURE__*/ function(DynamicWalletClient) {
611
574
  }
612
575
  });
613
576
  throw new Error(ERROR_EXPORT_PRIVATE_KEY);
614
- case 5:
577
+ case 4:
615
578
  return [
616
579
  2
617
580
  ];
@@ -665,14 +628,14 @@ var DynamicTonWalletClient = /*#__PURE__*/ function(DynamicWalletClient) {
665
628
  * @param thresholdSignatureScheme - The threshold signature scheme to use for the wallet.
666
629
  * @param password - The password to use for the wallet.
667
630
  * @param onError - The function to call if an error occurs.
668
- * @param backUpToClientShareService - Whether to back up the external server key shares to the client share service.
631
+ * @param backUpToDynamic - Whether to back up the external server key shares to the client share service.
669
632
  * @param publicAddressCheck - Optional public address to verify against the derived address.
670
- * @returns The account address, public key hex, raw public key, and external server key shares.
633
+ * @returns The walletMetadata, public key hex, raw public key, and external server key shares.
671
634
  */ function importPrivateKey(param) {
672
- var privateKey = param.privateKey, chainName = param.chainName, thresholdSignatureScheme = param.thresholdSignatureScheme, _param_password = param.password, password = _param_password === void 0 ? undefined : _param_password, onError = param.onError, _param_backUpToClientShareService = param.backUpToClientShareService, backUpToClientShareService = _param_backUpToClientShareService === void 0 ? false : _param_backUpToClientShareService, publicAddressCheck = param.publicAddressCheck;
635
+ var privateKey = param.privateKey, chainName = param.chainName, thresholdSignatureScheme = param.thresholdSignatureScheme, password = param.password, onError = param.onError, _param_backUpToDynamic = param.backUpToDynamic, backUpToDynamic = _param_backUpToDynamic === void 0 ? false : _param_backUpToDynamic, publicAddressCheck = param.publicAddressCheck;
673
636
  var _this = this;
674
637
  return _async_to_generator(function() {
675
- var ceremonyCeremonyCompleteResolver, ceremonyCompletePromise, formattedPrivateKey, publicKeyHex, derivedAddress, _ref, rawPublicKey, externalServerKeyShares, resultPublicKeyHex, accountAddress, externalKeySharesWithBackupStatus, error;
638
+ var resolvedWalletId, ceremonyCeremonyCompleteResolver, ceremonyCompletePromise, formattedPrivateKey, publicKeyHex, derivedAddress, _ref, rawPublicKey, externalServerKeyShares, resultPublicKeyHex, accountAddress, chainConfig, walletMetadata, _ref1, keySharesWithBackupStatus, backupInfo, error;
676
639
  return _ts_generator(this, function(_state) {
677
640
  switch(_state.label){
678
641
  case 0:
@@ -700,20 +663,10 @@ var DynamicTonWalletClient = /*#__PURE__*/ function(DynamicWalletClient) {
700
663
  chainName: chainName,
701
664
  thresholdSignatureScheme: thresholdSignatureScheme,
702
665
  privateKey: formattedPrivateKey,
703
- onCeremonyComplete: function(accountAddress, walletId) {
704
- var chainConfig = getMPCChainConfig(_this.chainName);
705
- _this.initializeWalletMapEntry({
706
- accountAddress: accountAddress,
707
- walletId: walletId,
708
- chainName: _this.chainName,
709
- thresholdSignatureScheme: thresholdSignatureScheme,
710
- derivationPath: JSON.stringify(Object.fromEntries(chainConfig.derivationPath.map(function(value, index) {
711
- return [
712
- index,
713
- value
714
- ];
715
- })))
716
- });
666
+ password: password,
667
+ backUpToDynamic: backUpToDynamic,
668
+ onCeremonyComplete: function(_accountAddress, walletId) {
669
+ resolvedWalletId = walletId;
717
670
  ceremonyCeremonyCompleteResolver(undefined);
718
671
  },
719
672
  onError: function(e) {
@@ -734,7 +687,7 @@ var DynamicTonWalletClient = /*#__PURE__*/ function(DynamicWalletClient) {
734
687
  ];
735
688
  case 2:
736
689
  _state.sent();
737
- if (!rawPublicKey || !externalServerKeyShares || !(typeof rawPublicKey === 'string' || _instanceof(rawPublicKey, Uint8Array))) {
690
+ if (!rawPublicKey || !externalServerKeyShares || !resolvedWalletId || !(typeof rawPublicKey === 'string' || _instanceof(rawPublicKey, Uint8Array))) {
738
691
  throw new Error(ERROR_IMPORT_PRIVATE_KEY);
739
692
  }
740
693
  resultPublicKeyHex = typeof rawPublicKey === 'string' ? rawPublicKey : Buffer.from(rawPublicKey).toString('hex');
@@ -745,25 +698,40 @@ var DynamicTonWalletClient = /*#__PURE__*/ function(DynamicWalletClient) {
745
698
  if (accountAddress !== derivedAddress) {
746
699
  throw new Error("Public key mismatch: derived address ".concat(accountAddress, " !== expected ").concat(derivedAddress));
747
700
  }
701
+ chainConfig = getMPCChainConfig(_this.chainName);
702
+ walletMetadata = {
703
+ walletId: resolvedWalletId,
704
+ accountAddress: accountAddress,
705
+ chainName: _this.chainName,
706
+ thresholdSignatureScheme: thresholdSignatureScheme,
707
+ derivationPath: JSON.stringify(Object.fromEntries(chainConfig.derivationPath.map(function(value, index) {
708
+ return [
709
+ index,
710
+ value
711
+ ];
712
+ })))
713
+ };
748
714
  return [
749
715
  4,
750
716
  _this.storeEncryptedBackupByWalletWithRetry({
751
717
  accountAddress: accountAddress,
752
718
  externalServerKeyShares: externalServerKeyShares,
753
719
  password: password,
754
- backUpToClientShareService: backUpToClientShareService
720
+ backUpToDynamic: backUpToDynamic,
721
+ walletMetadata: walletMetadata
755
722
  })
756
723
  ];
757
724
  case 3:
758
- externalKeySharesWithBackupStatus = _state.sent();
725
+ _ref1 = _state.sent(), keySharesWithBackupStatus = _ref1.keySharesWithBackupStatus, backupInfo = _ref1.backupInfo;
726
+ walletMetadata.externalServerKeySharesBackupInfo = backupInfo;
759
727
  return [
760
728
  2,
761
729
  {
762
- accountAddress: accountAddress,
730
+ walletMetadata: walletMetadata,
763
731
  publicKeyHex: resultPublicKeyHex,
764
732
  rawPublicKey: rawPublicKey,
765
733
  externalServerKeyShares: externalServerKeyShares,
766
- externalKeySharesWithBackupStatus: externalKeySharesWithBackupStatus
734
+ externalKeySharesWithBackupStatus: keySharesWithBackupStatus
767
735
  }
768
736
  ];
769
737
  case 4:
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@dynamic-labs-wallet/node-ton",
3
- "version": "0.0.354",
3
+ "version": "1.0.0-beta",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "dependencies": {
7
- "@dynamic-labs-wallet/node": "0.0.354",
7
+ "@dynamic-labs-wallet/node": "1.0.0-beta",
8
8
  "@ton/crypto": "^3.3.0",
9
9
  "@ton/ton": "^16.0.0"
10
10
  },
@@ -1,4 +1,4 @@
1
- import { DynamicWalletClient, type DynamicWalletClientProps, type Ed25519KeygenResult, type ServerKeyShare, type ThresholdSignatureScheme } from '@dynamic-labs-wallet/node';
1
+ import { DynamicWalletClient, type DynamicWalletClientProps, type Ed25519KeygenResult, type ServerKeyShare, type ThresholdSignatureScheme, type WalletMetadata } from '@dynamic-labs-wallet/node';
2
2
  export declare class DynamicTonWalletClient extends DynamicWalletClient {
3
3
  readonly chainName = "TON";
4
4
  constructor({ environmentId, baseApiUrl, baseMPCRelayApiUrl, debug, enableMPCAccelerator, logger, }: DynamicWalletClientProps);
@@ -7,20 +7,18 @@ export declare class DynamicTonWalletClient extends DynamicWalletClient {
7
7
  * @param thresholdSignatureScheme - The threshold signature scheme to use for the wallet.
8
8
  * @param password - The password to use for the wallet.
9
9
  * @param onError - The function to call if an error occurs.
10
- * @param backUpToClientShareService - Whether to back up the external server key shares to the client share service. By default, it is false.
11
- * @returns The account address, public key hex, raw public key, external server key shares, and wallet id.
10
+ * @param backUpToDynamic - Whether to back up the external server key shares to the client share service. By default, it is false.
11
+ * @returns The walletMetadata, public key hex, raw public key, and external server key shares.
12
12
  */
13
- createWalletAccount({ thresholdSignatureScheme, password, onError, backUpToClientShareService, }: {
13
+ createWalletAccount({ thresholdSignatureScheme, password, onError, backUpToDynamic, }: {
14
14
  thresholdSignatureScheme: ThresholdSignatureScheme;
15
15
  password?: string;
16
16
  onError?: (error: Error) => void;
17
- backUpToClientShareService?: boolean;
17
+ backUpToDynamic?: boolean;
18
18
  }): Promise<{
19
- accountAddress: string;
19
+ walletMetadata: WalletMetadata;
20
20
  publicKeyHex: string;
21
21
  rawPublicKey: Uint8Array | string;
22
- walletId: string;
23
- /** @deprecated Use externalKeySharesWithBackupStatus instead */
24
22
  externalServerKeyShares: ServerKeyShare[];
25
23
  externalKeySharesWithBackupStatus: Array<{
26
24
  share: ServerKeyShare;
@@ -30,44 +28,44 @@ export declare class DynamicTonWalletClient extends DynamicWalletClient {
30
28
  /**
31
29
  * Signs a message using MPC
32
30
  * @param message - The message to sign
33
- * @param accountAddress - The account address to sign with
31
+ * @param walletMetadata - Wallet metadata (the full object returned by createWalletAccount/importPrivateKey, with backupInfo merged from any subsequent updatePassword/refresh/reshare)
34
32
  * @param password - The password for encrypted backup shares
35
33
  * @param externalServerKeyShares - The external server key shares
36
34
  * @param onError - The function to call if an error occurs
37
35
  * @returns The signature as a base64 string
38
36
  */
39
- signMessage({ message, accountAddress, password, externalServerKeyShares, onError, }: {
37
+ signMessage({ message, walletMetadata, password, externalServerKeyShares, onError, }: {
40
38
  message: string;
41
- accountAddress: string;
39
+ walletMetadata: WalletMetadata;
42
40
  password?: string;
43
41
  externalServerKeyShares?: ServerKeyShare[];
44
42
  onError?: (error: Error) => void;
45
43
  }): Promise<string>;
46
44
  /**
47
45
  * Signs a transaction using MPC
48
- * @param senderAddress - The sender address
46
+ * @param walletMetadata - Wallet metadata (the full object returned by createWalletAccount/importPrivateKey, with backupInfo merged from any subsequent updatePassword/refresh/reshare)
49
47
  * @param transaction - The serialized transaction to sign
50
48
  * @param password - The password for encrypted backup shares
51
49
  * @param externalServerKeyShares - The external server key shares
52
50
  * @param onError - The function to call if an error occurs
53
51
  * @returns The signature as a base64 string
54
52
  */
55
- signTransaction({ senderAddress, transaction, password, externalServerKeyShares, onError, }: {
56
- senderAddress: string;
53
+ signTransaction({ walletMetadata, transaction, password, externalServerKeyShares, onError, }: {
54
+ walletMetadata: WalletMetadata;
57
55
  transaction: string;
58
56
  password?: string;
59
57
  externalServerKeyShares?: ServerKeyShare[];
60
58
  onError?: (error: Error) => void;
61
59
  }): Promise<string>;
62
60
  /**
63
- * Exports the private key for a given account address
64
- * @param accountAddress - The account address to export the private key for
61
+ * Exports the private key for a given wallet
62
+ * @param walletMetadata - Wallet metadata (the full object returned by createWalletAccount/importPrivateKey, with backupInfo merged from any subsequent updatePassword/refresh/reshare)
65
63
  * @param password - The password for encrypted backup shares
66
64
  * @param externalServerKeyShares - The external server key shares
67
65
  * @returns The private key as a hex string
68
66
  */
69
- exportPrivateKey({ accountAddress, password, externalServerKeyShares, }: {
70
- accountAddress: string;
67
+ exportPrivateKey({ walletMetadata, password, externalServerKeyShares, }: {
68
+ walletMetadata: WalletMetadata;
71
69
  password?: string;
72
70
  externalServerKeyShares?: ServerKeyShare[];
73
71
  }): Promise<string>;
@@ -90,23 +88,22 @@ export declare class DynamicTonWalletClient extends DynamicWalletClient {
90
88
  * @param thresholdSignatureScheme - The threshold signature scheme to use for the wallet.
91
89
  * @param password - The password to use for the wallet.
92
90
  * @param onError - The function to call if an error occurs.
93
- * @param backUpToClientShareService - Whether to back up the external server key shares to the client share service.
91
+ * @param backUpToDynamic - Whether to back up the external server key shares to the client share service.
94
92
  * @param publicAddressCheck - Optional public address to verify against the derived address.
95
- * @returns The account address, public key hex, raw public key, and external server key shares.
93
+ * @returns The walletMetadata, public key hex, raw public key, and external server key shares.
96
94
  */
97
- importPrivateKey({ privateKey, chainName, thresholdSignatureScheme, password, onError, backUpToClientShareService, publicAddressCheck, }: {
95
+ importPrivateKey({ privateKey, chainName, thresholdSignatureScheme, password, onError, backUpToDynamic, publicAddressCheck, }: {
98
96
  privateKey: string;
99
97
  chainName: string;
100
98
  thresholdSignatureScheme: ThresholdSignatureScheme;
101
99
  password?: string;
102
100
  onError?: (error: Error) => void;
103
- backUpToClientShareService?: boolean;
101
+ backUpToDynamic?: boolean;
104
102
  publicAddressCheck?: string;
105
103
  }): Promise<{
106
- accountAddress: string;
104
+ walletMetadata: WalletMetadata;
107
105
  publicKeyHex: string;
108
106
  rawPublicKey: Uint8Array | string | undefined;
109
- /** @deprecated Use externalKeySharesWithBackupStatus instead */
110
107
  externalServerKeyShares: ServerKeyShare[];
111
108
  externalKeySharesWithBackupStatus: Array<{
112
109
  share: ServerKeyShare;
@@ -131,6 +128,14 @@ export declare class DynamicTonWalletClient extends DynamicWalletClient {
131
128
  * Gets all TON wallets
132
129
  * @returns Array of TON wallets
133
130
  */
134
- getTonWallets(): Promise<import("@dynamic-labs-wallet/node").WalletProperties[]>;
131
+ getTonWallets(): Promise<{
132
+ walletId: string;
133
+ chainName: string;
134
+ accountAddress: string;
135
+ externalServerKeySharesBackupInfo: import("@dynamic-labs-wallet/core").KeyShareBackupInfo;
136
+ externalServerKeyShares: never[];
137
+ derivationPath: string | undefined;
138
+ thresholdSignatureScheme: ThresholdSignatureScheme;
139
+ }[]>;
135
140
  }
136
141
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"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"}