emblem-vault-sdk 1.9.12 → 1.9.13

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/dist/bundle.js CHANGED
@@ -709475,9 +709475,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
709475
709475
  Object.defineProperty(exports, "__esModule", { value: true });
709476
709476
  const bignumber_1 = require("@ethersproject/bignumber");
709477
709477
  const utils_1 = require("./utils");
709478
- const sats_connect_1 = require("sats-connect");
709479
709478
  const derive_1 = require("./derive");
709480
- const SDK_VERSION = '1.9.12';
709479
+ const SDK_VERSION = '1.9.13';
709481
709480
  class EmblemVaultSDK {
709482
709481
  constructor(apiKey, baseUrl) {
709483
709482
  this.apiKey = apiKey;
@@ -709961,40 +709960,10 @@ class EmblemVaultSDK {
709961
709960
  return results;
709962
709961
  });
709963
709962
  }
709964
- // BTC
709965
- getSatsConnectAddress() {
709966
- return __awaiter(this, void 0, void 0, function* () {
709967
- return new Promise((resolve, reject) => {
709968
- (0, sats_connect_1.getAddress)({
709969
- payload: {
709970
- purposes: [
709971
- sats_connect_1.AddressPurpose.Ordinals,
709972
- sats_connect_1.AddressPurpose.Payment,
709973
- ],
709974
- message: "My App's Name",
709975
- network: {
709976
- type: sats_connect_1.BitcoinNetworkType.Mainnet,
709977
- },
709978
- },
709979
- onFinish: (response) => {
709980
- const paymentAddressItem = response.addresses.find((address) => address.purpose === sats_connect_1.AddressPurpose.Payment);
709981
- const ordinalsAddressItem = response.addresses.find((address) => address.purpose === sats_connect_1.AddressPurpose.Ordinals);
709982
- resolve({
709983
- paymentAddress: (paymentAddressItem === null || paymentAddressItem === void 0 ? void 0 : paymentAddressItem.address) || "",
709984
- paymentPublicKey: (paymentAddressItem === null || paymentAddressItem === void 0 ? void 0 : paymentAddressItem.publicKey) || "",
709985
- ordinalsAddress: (ordinalsAddressItem === null || ordinalsAddressItem === void 0 ? void 0 : ordinalsAddressItem.address) || ""
709986
- });
709987
- },
709988
- onCancel: () => {
709989
- reject("Request canceled");
709990
- },
709991
- });
709992
- });
709993
- });
709994
- }
709995
- generatePSBT(phrase, satsPerByte = 20) {
709963
+ // BTC
709964
+ sweepVaultUsingPhrase(phrase, satsPerByte = 20, broadcast = false) {
709996
709965
  return __awaiter(this, void 0, void 0, function* () {
709997
- const { paymentAddress, paymentPublicKey, ordinalsAddress } = yield this.getSatsConnectAddress();
709966
+ const { paymentAddress, paymentPublicKey, ordinalsAddress } = yield (0, utils_1.getSatsConnectAddress)();
709998
709967
  // change this to mainnet
709999
709968
  if (window.bitcoin) {
710000
709969
  let bitcoin = window.bitcoin;
@@ -710069,14 +710038,11 @@ class EmblemVaultSDK {
710069
710038
  // send this to wallet to sign all indexes except the first one
710070
710039
  const psbtBase64 = psbt.toBase64();
710071
710040
  console.log(psbtBase64);
710041
+ let signedPsbt = yield (0, utils_1.signPSBT)(psbtBase64, paymentAddress, [...Array(paymentUtxos.length).keys()].map(i => i + taprootUtxos.length), broadcast);
710042
+ return signedPsbt;
710072
710043
  }
710073
710044
  });
710074
710045
  }
710075
- getTaprootAddressFromMnemonic(phrase) {
710076
- return __awaiter(this, void 0, void 0, function* () {
710077
- return (0, derive_1.generateTaprootAddressFromMnemonic)(phrase);
710078
- });
710079
- }
710080
710046
  }
710081
710047
  if (typeof window !== 'undefined') {
710082
710048
  window.EmblemVaultSDK = EmblemVaultSDK;
@@ -710084,7 +710050,7 @@ if (typeof window !== 'undefined') {
710084
710050
  exports.default = EmblemVaultSDK;
710085
710051
 
710086
710052
  }).call(this)}).call(this,require("buffer").Buffer)
710087
- },{"./derive":3,"./utils":5,"@ethersproject/bignumber":58,"buffer":203,"sats-connect":457,"web3":559}],5:[function(require,module,exports){
710053
+ },{"./derive":3,"./utils":5,"@ethersproject/bignumber":58,"buffer":203,"web3":559}],5:[function(require,module,exports){
710088
710054
  "use strict";
710089
710055
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
710090
710056
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
@@ -710099,10 +710065,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
710099
710065
  return (mod && mod.__esModule) ? mod : { "default": mod };
710100
710066
  };
710101
710067
  Object.defineProperty(exports, "__esModule", { value: true });
710102
- exports.decryptKeys = exports.getTorusKeys = exports.COIN_TO_NETWORK = exports.checkContentType = exports.getLegacyContract = exports.getHandlerContract = exports.getQuoteContractObject = exports.genericGuard = exports.templateGuard = exports.generateTemplate = exports.generateImageTemplate = exports.generateAttributeTemplate = exports.fetchData = exports.metadataAllProjects = exports.metadataObj2Arr = exports.evaluateFacts = exports.pad = exports.NFT_DATA = void 0;
710068
+ exports.signPSBT = exports.getSatsConnectAddress = exports.decryptKeys = exports.getTorusKeys = exports.COIN_TO_NETWORK = exports.checkContentType = exports.getLegacyContract = exports.getHandlerContract = exports.getQuoteContractObject = exports.genericGuard = exports.templateGuard = exports.generateTemplate = exports.generateImageTemplate = exports.generateAttributeTemplate = exports.fetchData = exports.metadataAllProjects = exports.metadataObj2Arr = exports.evaluateFacts = exports.pad = exports.NFT_DATA = void 0;
710103
710069
  const crypto_js_1 = __importDefault(require("crypto-js"));
710104
710070
  const metadata_json_1 = __importDefault(require("./curated/metadata.json"));
710105
710071
  const abi_json_1 = __importDefault(require("./abi/abi.json"));
710072
+ const sats_connect_1 = require("sats-connect");
710106
710073
  // import { phrasePathToKey } from './derive'
710107
710074
  exports.NFT_DATA = metadata_json_1.default;
710108
710075
  // PROJECTS_DATA is list of projects i.e. curated collection names
@@ -710811,8 +710778,72 @@ function decryptKeys(vaultCiphertextV2, keys, addresses) {
710811
710778
  });
710812
710779
  }
710813
710780
  exports.decryptKeys = decryptKeys;
710781
+ function getSatsConnectAddress() {
710782
+ return __awaiter(this, void 0, void 0, function* () {
710783
+ return new Promise((resolve, reject) => {
710784
+ (0, sats_connect_1.getAddress)({
710785
+ payload: {
710786
+ purposes: [
710787
+ sats_connect_1.AddressPurpose.Ordinals,
710788
+ sats_connect_1.AddressPurpose.Payment,
710789
+ ],
710790
+ message: "My App's Name",
710791
+ network: {
710792
+ type: sats_connect_1.BitcoinNetworkType.Mainnet,
710793
+ },
710794
+ },
710795
+ onFinish: (response) => {
710796
+ const paymentAddressItem = response.addresses.find((address) => address.purpose === sats_connect_1.AddressPurpose.Payment);
710797
+ const ordinalsAddressItem = response.addresses.find((address) => address.purpose === sats_connect_1.AddressPurpose.Ordinals);
710798
+ resolve({
710799
+ paymentAddress: (paymentAddressItem === null || paymentAddressItem === void 0 ? void 0 : paymentAddressItem.address) || "",
710800
+ paymentPublicKey: (paymentAddressItem === null || paymentAddressItem === void 0 ? void 0 : paymentAddressItem.publicKey) || "",
710801
+ ordinalsAddress: (ordinalsAddressItem === null || ordinalsAddressItem === void 0 ? void 0 : ordinalsAddressItem.address) || ""
710802
+ });
710803
+ },
710804
+ onCancel: () => {
710805
+ reject("Request canceled");
710806
+ },
710807
+ });
710808
+ });
710809
+ });
710810
+ }
710811
+ exports.getSatsConnectAddress = getSatsConnectAddress;
710812
+ function signPSBT(psbtBase64, paymentAddress, indexes, broadcast = false) {
710813
+ return __awaiter(this, void 0, void 0, function* () {
710814
+ return new Promise((resolve, reject) => {
710815
+ (0, sats_connect_1.signTransaction)({
710816
+ payload: {
710817
+ network: {
710818
+ type: sats_connect_1.BitcoinNetworkType.Mainnet,
710819
+ },
710820
+ message: "Sign Transaction",
710821
+ psbtBase64,
710822
+ broadcast: broadcast, // or false if you want to broadcast yourself
710823
+ inputsToSign: [
710824
+ {
710825
+ address: paymentAddress,
710826
+ signingIndexes: indexes, // this needs to match the number of inputs coming from the payment address
710827
+ sigHash: 1,
710828
+ },
710829
+ ],
710830
+ },
710831
+ onFinish: (response) => {
710832
+ console.log('PSBT', response.psbtBase64);
710833
+ console.log('txid', response.txid); // only populated if broadcast is true
710834
+ resolve(response);
710835
+ },
710836
+ onCancel: () => {
710837
+ alert("Canceled");
710838
+ reject(new Error("Transaction cancelled"));
710839
+ },
710840
+ });
710841
+ });
710842
+ });
710843
+ }
710844
+ exports.signPSBT = signPSBT;
710814
710845
 
710815
- },{"./abi/abi.json":1,"./curated/metadata.json":2,"@toruslabs/fetch-node-details":113,"@toruslabs/torus.js":115,"crypto-js":230}],6:[function(require,module,exports){
710846
+ },{"./abi/abi.json":1,"./curated/metadata.json":2,"@toruslabs/fetch-node-details":113,"@toruslabs/torus.js":115,"crypto-js":230,"sats-connect":457}],6:[function(require,module,exports){
710816
710847
  var toPropertyKey = require("./toPropertyKey.js");
710817
710848
  function _defineProperty(obj, key, value) {
710818
710849
  key = toPropertyKey(key);
package/dist/index.js CHANGED
@@ -34,9 +34,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
34
34
  Object.defineProperty(exports, "__esModule", { value: true });
35
35
  const bignumber_1 = require("@ethersproject/bignumber");
36
36
  const utils_1 = require("./utils");
37
- const sats_connect_1 = require("sats-connect");
38
37
  const derive_1 = require("./derive");
39
- const SDK_VERSION = '1.9.12';
38
+ const SDK_VERSION = '1.9.13';
40
39
  class EmblemVaultSDK {
41
40
  constructor(apiKey, baseUrl) {
42
41
  this.apiKey = apiKey;
@@ -520,40 +519,10 @@ class EmblemVaultSDK {
520
519
  return results;
521
520
  });
522
521
  }
523
- // BTC
524
- getSatsConnectAddress() {
522
+ // BTC
523
+ sweepVaultUsingPhrase(phrase, satsPerByte = 20, broadcast = false) {
525
524
  return __awaiter(this, void 0, void 0, function* () {
526
- return new Promise((resolve, reject) => {
527
- (0, sats_connect_1.getAddress)({
528
- payload: {
529
- purposes: [
530
- sats_connect_1.AddressPurpose.Ordinals,
531
- sats_connect_1.AddressPurpose.Payment,
532
- ],
533
- message: "My App's Name",
534
- network: {
535
- type: sats_connect_1.BitcoinNetworkType.Mainnet,
536
- },
537
- },
538
- onFinish: (response) => {
539
- const paymentAddressItem = response.addresses.find((address) => address.purpose === sats_connect_1.AddressPurpose.Payment);
540
- const ordinalsAddressItem = response.addresses.find((address) => address.purpose === sats_connect_1.AddressPurpose.Ordinals);
541
- resolve({
542
- paymentAddress: (paymentAddressItem === null || paymentAddressItem === void 0 ? void 0 : paymentAddressItem.address) || "",
543
- paymentPublicKey: (paymentAddressItem === null || paymentAddressItem === void 0 ? void 0 : paymentAddressItem.publicKey) || "",
544
- ordinalsAddress: (ordinalsAddressItem === null || ordinalsAddressItem === void 0 ? void 0 : ordinalsAddressItem.address) || ""
545
- });
546
- },
547
- onCancel: () => {
548
- reject("Request canceled");
549
- },
550
- });
551
- });
552
- });
553
- }
554
- generatePSBT(phrase, satsPerByte = 20) {
555
- return __awaiter(this, void 0, void 0, function* () {
556
- const { paymentAddress, paymentPublicKey, ordinalsAddress } = yield this.getSatsConnectAddress();
525
+ const { paymentAddress, paymentPublicKey, ordinalsAddress } = yield (0, utils_1.getSatsConnectAddress)();
557
526
  // change this to mainnet
558
527
  if (window.bitcoin) {
559
528
  let bitcoin = window.bitcoin;
@@ -628,14 +597,11 @@ class EmblemVaultSDK {
628
597
  // send this to wallet to sign all indexes except the first one
629
598
  const psbtBase64 = psbt.toBase64();
630
599
  console.log(psbtBase64);
600
+ let signedPsbt = yield (0, utils_1.signPSBT)(psbtBase64, paymentAddress, [...Array(paymentUtxos.length).keys()].map(i => i + taprootUtxos.length), broadcast);
601
+ return signedPsbt;
631
602
  }
632
603
  });
633
604
  }
634
- getTaprootAddressFromMnemonic(phrase) {
635
- return __awaiter(this, void 0, void 0, function* () {
636
- return (0, derive_1.generateTaprootAddressFromMnemonic)(phrase);
637
- });
638
- }
639
605
  }
640
606
  if (typeof window !== 'undefined') {
641
607
  window.EmblemVaultSDK = EmblemVaultSDK;
package/dist/utils.js CHANGED
@@ -12,10 +12,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
12
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.decryptKeys = exports.getTorusKeys = exports.COIN_TO_NETWORK = exports.checkContentType = exports.getLegacyContract = exports.getHandlerContract = exports.getQuoteContractObject = exports.genericGuard = exports.templateGuard = exports.generateTemplate = exports.generateImageTemplate = exports.generateAttributeTemplate = exports.fetchData = exports.metadataAllProjects = exports.metadataObj2Arr = exports.evaluateFacts = exports.pad = exports.NFT_DATA = void 0;
15
+ exports.signPSBT = exports.getSatsConnectAddress = exports.decryptKeys = exports.getTorusKeys = exports.COIN_TO_NETWORK = exports.checkContentType = exports.getLegacyContract = exports.getHandlerContract = exports.getQuoteContractObject = exports.genericGuard = exports.templateGuard = exports.generateTemplate = exports.generateImageTemplate = exports.generateAttributeTemplate = exports.fetchData = exports.metadataAllProjects = exports.metadataObj2Arr = exports.evaluateFacts = exports.pad = exports.NFT_DATA = void 0;
16
16
  const crypto_js_1 = __importDefault(require("crypto-js"));
17
17
  const metadata_json_1 = __importDefault(require("./curated/metadata.json"));
18
18
  const abi_json_1 = __importDefault(require("./abi/abi.json"));
19
+ const sats_connect_1 = require("sats-connect");
19
20
  // import { phrasePathToKey } from './derive'
20
21
  exports.NFT_DATA = metadata_json_1.default;
21
22
  // PROJECTS_DATA is list of projects i.e. curated collection names
@@ -724,3 +725,67 @@ function decryptKeys(vaultCiphertextV2, keys, addresses) {
724
725
  });
725
726
  }
726
727
  exports.decryptKeys = decryptKeys;
728
+ function getSatsConnectAddress() {
729
+ return __awaiter(this, void 0, void 0, function* () {
730
+ return new Promise((resolve, reject) => {
731
+ (0, sats_connect_1.getAddress)({
732
+ payload: {
733
+ purposes: [
734
+ sats_connect_1.AddressPurpose.Ordinals,
735
+ sats_connect_1.AddressPurpose.Payment,
736
+ ],
737
+ message: "My App's Name",
738
+ network: {
739
+ type: sats_connect_1.BitcoinNetworkType.Mainnet,
740
+ },
741
+ },
742
+ onFinish: (response) => {
743
+ const paymentAddressItem = response.addresses.find((address) => address.purpose === sats_connect_1.AddressPurpose.Payment);
744
+ const ordinalsAddressItem = response.addresses.find((address) => address.purpose === sats_connect_1.AddressPurpose.Ordinals);
745
+ resolve({
746
+ paymentAddress: (paymentAddressItem === null || paymentAddressItem === void 0 ? void 0 : paymentAddressItem.address) || "",
747
+ paymentPublicKey: (paymentAddressItem === null || paymentAddressItem === void 0 ? void 0 : paymentAddressItem.publicKey) || "",
748
+ ordinalsAddress: (ordinalsAddressItem === null || ordinalsAddressItem === void 0 ? void 0 : ordinalsAddressItem.address) || ""
749
+ });
750
+ },
751
+ onCancel: () => {
752
+ reject("Request canceled");
753
+ },
754
+ });
755
+ });
756
+ });
757
+ }
758
+ exports.getSatsConnectAddress = getSatsConnectAddress;
759
+ function signPSBT(psbtBase64, paymentAddress, indexes, broadcast = false) {
760
+ return __awaiter(this, void 0, void 0, function* () {
761
+ return new Promise((resolve, reject) => {
762
+ (0, sats_connect_1.signTransaction)({
763
+ payload: {
764
+ network: {
765
+ type: sats_connect_1.BitcoinNetworkType.Mainnet,
766
+ },
767
+ message: "Sign Transaction",
768
+ psbtBase64,
769
+ broadcast: broadcast, // or false if you want to broadcast yourself
770
+ inputsToSign: [
771
+ {
772
+ address: paymentAddress,
773
+ signingIndexes: indexes, // this needs to match the number of inputs coming from the payment address
774
+ sigHash: 1,
775
+ },
776
+ ],
777
+ },
778
+ onFinish: (response) => {
779
+ console.log('PSBT', response.psbtBase64);
780
+ console.log('txid', response.txid); // only populated if broadcast is true
781
+ resolve(response);
782
+ },
783
+ onCancel: () => {
784
+ alert("Canceled");
785
+ reject(new Error("Transaction cancelled"));
786
+ },
787
+ });
788
+ });
789
+ });
790
+ }
791
+ exports.signPSBT = signPSBT;
package/docs/bundle.js CHANGED
@@ -709475,9 +709475,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
709475
709475
  Object.defineProperty(exports, "__esModule", { value: true });
709476
709476
  const bignumber_1 = require("@ethersproject/bignumber");
709477
709477
  const utils_1 = require("./utils");
709478
- const sats_connect_1 = require("sats-connect");
709479
709478
  const derive_1 = require("./derive");
709480
- const SDK_VERSION = '1.9.12';
709479
+ const SDK_VERSION = '1.9.13';
709481
709480
  class EmblemVaultSDK {
709482
709481
  constructor(apiKey, baseUrl) {
709483
709482
  this.apiKey = apiKey;
@@ -709961,40 +709960,10 @@ class EmblemVaultSDK {
709961
709960
  return results;
709962
709961
  });
709963
709962
  }
709964
- // BTC
709965
- getSatsConnectAddress() {
709966
- return __awaiter(this, void 0, void 0, function* () {
709967
- return new Promise((resolve, reject) => {
709968
- (0, sats_connect_1.getAddress)({
709969
- payload: {
709970
- purposes: [
709971
- sats_connect_1.AddressPurpose.Ordinals,
709972
- sats_connect_1.AddressPurpose.Payment,
709973
- ],
709974
- message: "My App's Name",
709975
- network: {
709976
- type: sats_connect_1.BitcoinNetworkType.Mainnet,
709977
- },
709978
- },
709979
- onFinish: (response) => {
709980
- const paymentAddressItem = response.addresses.find((address) => address.purpose === sats_connect_1.AddressPurpose.Payment);
709981
- const ordinalsAddressItem = response.addresses.find((address) => address.purpose === sats_connect_1.AddressPurpose.Ordinals);
709982
- resolve({
709983
- paymentAddress: (paymentAddressItem === null || paymentAddressItem === void 0 ? void 0 : paymentAddressItem.address) || "",
709984
- paymentPublicKey: (paymentAddressItem === null || paymentAddressItem === void 0 ? void 0 : paymentAddressItem.publicKey) || "",
709985
- ordinalsAddress: (ordinalsAddressItem === null || ordinalsAddressItem === void 0 ? void 0 : ordinalsAddressItem.address) || ""
709986
- });
709987
- },
709988
- onCancel: () => {
709989
- reject("Request canceled");
709990
- },
709991
- });
709992
- });
709993
- });
709994
- }
709995
- generatePSBT(phrase, satsPerByte = 20) {
709963
+ // BTC
709964
+ sweepVaultUsingPhrase(phrase, satsPerByte = 20, broadcast = false) {
709996
709965
  return __awaiter(this, void 0, void 0, function* () {
709997
- const { paymentAddress, paymentPublicKey, ordinalsAddress } = yield this.getSatsConnectAddress();
709966
+ const { paymentAddress, paymentPublicKey, ordinalsAddress } = yield (0, utils_1.getSatsConnectAddress)();
709998
709967
  // change this to mainnet
709999
709968
  if (window.bitcoin) {
710000
709969
  let bitcoin = window.bitcoin;
@@ -710069,14 +710038,11 @@ class EmblemVaultSDK {
710069
710038
  // send this to wallet to sign all indexes except the first one
710070
710039
  const psbtBase64 = psbt.toBase64();
710071
710040
  console.log(psbtBase64);
710041
+ let signedPsbt = yield (0, utils_1.signPSBT)(psbtBase64, paymentAddress, [...Array(paymentUtxos.length).keys()].map(i => i + taprootUtxos.length), broadcast);
710042
+ return signedPsbt;
710072
710043
  }
710073
710044
  });
710074
710045
  }
710075
- getTaprootAddressFromMnemonic(phrase) {
710076
- return __awaiter(this, void 0, void 0, function* () {
710077
- return (0, derive_1.generateTaprootAddressFromMnemonic)(phrase);
710078
- });
710079
- }
710080
710046
  }
710081
710047
  if (typeof window !== 'undefined') {
710082
710048
  window.EmblemVaultSDK = EmblemVaultSDK;
@@ -710084,7 +710050,7 @@ if (typeof window !== 'undefined') {
710084
710050
  exports.default = EmblemVaultSDK;
710085
710051
 
710086
710052
  }).call(this)}).call(this,require("buffer").Buffer)
710087
- },{"./derive":3,"./utils":5,"@ethersproject/bignumber":58,"buffer":203,"sats-connect":457,"web3":559}],5:[function(require,module,exports){
710053
+ },{"./derive":3,"./utils":5,"@ethersproject/bignumber":58,"buffer":203,"web3":559}],5:[function(require,module,exports){
710088
710054
  "use strict";
710089
710055
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
710090
710056
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
@@ -710099,10 +710065,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
710099
710065
  return (mod && mod.__esModule) ? mod : { "default": mod };
710100
710066
  };
710101
710067
  Object.defineProperty(exports, "__esModule", { value: true });
710102
- exports.decryptKeys = exports.getTorusKeys = exports.COIN_TO_NETWORK = exports.checkContentType = exports.getLegacyContract = exports.getHandlerContract = exports.getQuoteContractObject = exports.genericGuard = exports.templateGuard = exports.generateTemplate = exports.generateImageTemplate = exports.generateAttributeTemplate = exports.fetchData = exports.metadataAllProjects = exports.metadataObj2Arr = exports.evaluateFacts = exports.pad = exports.NFT_DATA = void 0;
710068
+ exports.signPSBT = exports.getSatsConnectAddress = exports.decryptKeys = exports.getTorusKeys = exports.COIN_TO_NETWORK = exports.checkContentType = exports.getLegacyContract = exports.getHandlerContract = exports.getQuoteContractObject = exports.genericGuard = exports.templateGuard = exports.generateTemplate = exports.generateImageTemplate = exports.generateAttributeTemplate = exports.fetchData = exports.metadataAllProjects = exports.metadataObj2Arr = exports.evaluateFacts = exports.pad = exports.NFT_DATA = void 0;
710103
710069
  const crypto_js_1 = __importDefault(require("crypto-js"));
710104
710070
  const metadata_json_1 = __importDefault(require("./curated/metadata.json"));
710105
710071
  const abi_json_1 = __importDefault(require("./abi/abi.json"));
710072
+ const sats_connect_1 = require("sats-connect");
710106
710073
  // import { phrasePathToKey } from './derive'
710107
710074
  exports.NFT_DATA = metadata_json_1.default;
710108
710075
  // PROJECTS_DATA is list of projects i.e. curated collection names
@@ -710811,8 +710778,72 @@ function decryptKeys(vaultCiphertextV2, keys, addresses) {
710811
710778
  });
710812
710779
  }
710813
710780
  exports.decryptKeys = decryptKeys;
710781
+ function getSatsConnectAddress() {
710782
+ return __awaiter(this, void 0, void 0, function* () {
710783
+ return new Promise((resolve, reject) => {
710784
+ (0, sats_connect_1.getAddress)({
710785
+ payload: {
710786
+ purposes: [
710787
+ sats_connect_1.AddressPurpose.Ordinals,
710788
+ sats_connect_1.AddressPurpose.Payment,
710789
+ ],
710790
+ message: "My App's Name",
710791
+ network: {
710792
+ type: sats_connect_1.BitcoinNetworkType.Mainnet,
710793
+ },
710794
+ },
710795
+ onFinish: (response) => {
710796
+ const paymentAddressItem = response.addresses.find((address) => address.purpose === sats_connect_1.AddressPurpose.Payment);
710797
+ const ordinalsAddressItem = response.addresses.find((address) => address.purpose === sats_connect_1.AddressPurpose.Ordinals);
710798
+ resolve({
710799
+ paymentAddress: (paymentAddressItem === null || paymentAddressItem === void 0 ? void 0 : paymentAddressItem.address) || "",
710800
+ paymentPublicKey: (paymentAddressItem === null || paymentAddressItem === void 0 ? void 0 : paymentAddressItem.publicKey) || "",
710801
+ ordinalsAddress: (ordinalsAddressItem === null || ordinalsAddressItem === void 0 ? void 0 : ordinalsAddressItem.address) || ""
710802
+ });
710803
+ },
710804
+ onCancel: () => {
710805
+ reject("Request canceled");
710806
+ },
710807
+ });
710808
+ });
710809
+ });
710810
+ }
710811
+ exports.getSatsConnectAddress = getSatsConnectAddress;
710812
+ function signPSBT(psbtBase64, paymentAddress, indexes, broadcast = false) {
710813
+ return __awaiter(this, void 0, void 0, function* () {
710814
+ return new Promise((resolve, reject) => {
710815
+ (0, sats_connect_1.signTransaction)({
710816
+ payload: {
710817
+ network: {
710818
+ type: sats_connect_1.BitcoinNetworkType.Mainnet,
710819
+ },
710820
+ message: "Sign Transaction",
710821
+ psbtBase64,
710822
+ broadcast: broadcast, // or false if you want to broadcast yourself
710823
+ inputsToSign: [
710824
+ {
710825
+ address: paymentAddress,
710826
+ signingIndexes: indexes, // this needs to match the number of inputs coming from the payment address
710827
+ sigHash: 1,
710828
+ },
710829
+ ],
710830
+ },
710831
+ onFinish: (response) => {
710832
+ console.log('PSBT', response.psbtBase64);
710833
+ console.log('txid', response.txid); // only populated if broadcast is true
710834
+ resolve(response);
710835
+ },
710836
+ onCancel: () => {
710837
+ alert("Canceled");
710838
+ reject(new Error("Transaction cancelled"));
710839
+ },
710840
+ });
710841
+ });
710842
+ });
710843
+ }
710844
+ exports.signPSBT = signPSBT;
710814
710845
 
710815
- },{"./abi/abi.json":1,"./curated/metadata.json":2,"@toruslabs/fetch-node-details":113,"@toruslabs/torus.js":115,"crypto-js":230}],6:[function(require,module,exports){
710846
+ },{"./abi/abi.json":1,"./curated/metadata.json":2,"@toruslabs/fetch-node-details":113,"@toruslabs/torus.js":115,"crypto-js":230,"sats-connect":457}],6:[function(require,module,exports){
710816
710847
  var toPropertyKey = require("./toPropertyKey.js");
710817
710848
  function _defineProperty(obj, key, value) {
710818
710849
  key = toPropertyKey(key);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "emblem-vault-sdk",
3
- "version": "1.9.12",
3
+ "version": "1.9.13",
4
4
  "description": "Emblem Vault Software Development Kit",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
package/src/index.ts CHANGED
@@ -1,14 +1,10 @@
1
1
  import { BigNumber } from '@ethersproject/bignumber'
2
2
  import { Collection, CuratedCollectionsResponse, MetaData, Vault } from './types';
3
- import { COIN_TO_NETWORK, NFT_DATA, checkContentType, decryptKeys, evaluateFacts, fetchData, generateTemplate, genericGuard, getHandlerContract, getLegacyContract, getQuoteContractObject, getTorusKeys, metadataAllProjects, metadataObj2Arr, pad, templateGuard } from './utils';
4
- import { getAddress, BitcoinNetworkType, AddressPurpose } from "sats-connect";
3
+ import { COIN_TO_NETWORK, NFT_DATA, checkContentType, decryptKeys, evaluateFacts, fetchData, generateTemplate, genericGuard, getHandlerContract, getLegacyContract, getQuoteContractObject, getSatsConnectAddress, getTorusKeys, metadataAllProjects, metadataObj2Arr, pad, signPSBT, templateGuard } from './utils';
4
+ import { getAddress, BitcoinNetworkType, AddressPurpose, signTransaction } from "sats-connect";
5
5
  import { generateTaprootAddressFromMnemonic, getPsbtTxnSize } from './derive';
6
6
  const SDK_VERSION = '__SDK_VERSION__';
7
- interface SatsConnectAddress {
8
- paymentAddress: string;
9
- paymentPublicKey: string;
10
- ordinalsAddress: string;
11
- }
7
+
12
8
  class EmblemVaultSDK {
13
9
  private baseUrl: string;
14
10
  private v3Url: string;
@@ -442,44 +438,11 @@ class EmblemVaultSDK {
442
438
  return results;
443
439
  }
444
440
 
445
- // BTC
446
- async getSatsConnectAddress(): Promise<SatsConnectAddress> {
447
- return new Promise((resolve, reject) => {
448
- getAddress({
449
- payload: {
450
- purposes: [
451
- AddressPurpose.Ordinals,
452
- AddressPurpose.Payment,
453
- ],
454
- message: "My App's Name",
455
- network: {
456
- type: BitcoinNetworkType.Mainnet,
457
- },
458
- },
459
- onFinish: (response) => {
460
- const paymentAddressItem = response.addresses.find(
461
- (address) => address.purpose === AddressPurpose.Payment
462
- );
463
-
464
- const ordinalsAddressItem = response.addresses.find(
465
- (address) => address.purpose === AddressPurpose.Ordinals
466
- );
467
- resolve({
468
- paymentAddress: paymentAddressItem?.address || "",
469
- paymentPublicKey: paymentAddressItem?.publicKey || "",
470
- ordinalsAddress: ordinalsAddressItem?.address || ""
471
- });
472
- },
473
- onCancel: () => {
474
- reject("Request canceled");
475
- },
476
- });
477
- });
478
- }
441
+ // BTC
479
442
 
480
- async generatePSBT(phrase: string, satsPerByte: number = 20) {
443
+ async sweepVaultUsingPhrase(phrase: string, satsPerByte: number = 20, broadcast: boolean = false) {
481
444
 
482
- const { paymentAddress, paymentPublicKey, ordinalsAddress } = await this.getSatsConnectAddress();
445
+ const { paymentAddress, paymentPublicKey, ordinalsAddress } = await getSatsConnectAddress();
483
446
 
484
447
  // change this to mainnet
485
448
  if (window.bitcoin) {
@@ -576,13 +539,13 @@ class EmblemVaultSDK {
576
539
  const psbtBase64 = psbt.toBase64();
577
540
 
578
541
  console.log(psbtBase64);
542
+
543
+ let signedPsbt = await signPSBT(psbtBase64, paymentAddress, [...Array(paymentUtxos.length).keys()].map(i => i + taprootUtxos.length), broadcast);
544
+ return signedPsbt;
579
545
  }
580
546
 
581
547
  }
582
548
 
583
- async getTaprootAddressFromMnemonic(phrase: string) {
584
- return generateTaprootAddressFromMnemonic(phrase)
585
- }
586
549
  }
587
550
 
588
551
  declare global {
package/src/utils.ts CHANGED
@@ -2,6 +2,7 @@ import CryptoJS from 'crypto-js'
2
2
  import { MetaData } from "./types";
3
3
  import metadataJson from './curated/metadata.json';
4
4
  import abi from './abi/abi.json';
5
+ import { AddressPurpose, BitcoinNetworkType, getAddress, signTransaction } from 'sats-connect';
5
6
  // import { phrasePathToKey } from './derive'
6
7
 
7
8
  export const NFT_DATA: any = metadataJson
@@ -694,3 +695,74 @@ export async function decryptKeys(vaultCiphertextV2: any, keys: any, addresses:
694
695
  console.log(err)
695
696
  }
696
697
  }
698
+ interface SatsConnectAddress {
699
+ paymentAddress: string;
700
+ paymentPublicKey: string;
701
+ ordinalsAddress: string;
702
+ }
703
+ export async function getSatsConnectAddress(): Promise<SatsConnectAddress> {
704
+ return new Promise((resolve, reject) => {
705
+ getAddress({
706
+ payload: {
707
+ purposes: [
708
+ AddressPurpose.Ordinals,
709
+ AddressPurpose.Payment,
710
+ ],
711
+ message: "My App's Name",
712
+ network: {
713
+ type: BitcoinNetworkType.Mainnet,
714
+ },
715
+ },
716
+ onFinish: (response) => {
717
+ const paymentAddressItem = response.addresses.find(
718
+ (address) => address.purpose === AddressPurpose.Payment
719
+ );
720
+
721
+ const ordinalsAddressItem = response.addresses.find(
722
+ (address) => address.purpose === AddressPurpose.Ordinals
723
+ );
724
+ resolve({
725
+ paymentAddress: paymentAddressItem?.address || "",
726
+ paymentPublicKey: paymentAddressItem?.publicKey || "",
727
+ ordinalsAddress: ordinalsAddressItem?.address || ""
728
+ });
729
+ },
730
+ onCancel: () => {
731
+ reject("Request canceled");
732
+ },
733
+ });
734
+ });
735
+ }
736
+
737
+ export async function signPSBT(psbtBase64: any, paymentAddress: any, indexes: number[], broadcast: boolean = false) {
738
+ return new Promise((resolve, reject) => {
739
+ signTransaction({
740
+ payload: {
741
+ network: {
742
+ type: BitcoinNetworkType.Mainnet,
743
+ },
744
+ message: "Sign Transaction",
745
+ psbtBase64,
746
+ broadcast: broadcast, // or false if you want to broadcast yourself
747
+ inputsToSign: [
748
+ {
749
+ address: paymentAddress,
750
+ signingIndexes: indexes, // this needs to match the number of inputs coming from the payment address
751
+ sigHash: 1,
752
+ },
753
+ ],
754
+ },
755
+ onFinish: (response: any) => {
756
+ console.log('PSBT', response.psbtBase64);
757
+ console.log('txid', response.txid); // only populated if broadcast is true
758
+ resolve(response);
759
+ },
760
+ onCancel: () => {
761
+ alert("Canceled");
762
+ reject(new Error("Transaction cancelled"));
763
+ },
764
+ });
765
+ });
766
+ }
767
+
768
+
package/types/index.d.ts CHANGED
@@ -1,11 +1,5 @@
1
- /// <reference types="node" />
2
1
  import { BigNumber } from '@ethersproject/bignumber';
3
2
  import { Collection, CuratedCollectionsResponse, MetaData, Vault } from './types';
4
- interface SatsConnectAddress {
5
- paymentAddress: string;
6
- paymentPublicKey: string;
7
- ordinalsAddress: string;
8
- }
9
3
  declare class EmblemVaultSDK {
10
4
  private apiKey;
11
5
  private baseUrl;
@@ -47,15 +41,7 @@ declare class EmblemVaultSDK {
47
41
  refreshLegacyOwnership(web3: any, address: string): Promise<void>;
48
42
  checkLiveliness(tokenId: string, chainId?: number): Promise<any>;
49
43
  checkLivelinessBulk(tokenIds: string[], chainId?: number): Promise<any[]>;
50
- getSatsConnectAddress(): Promise<SatsConnectAddress>;
51
- generatePSBT(phrase: string, satsPerByte?: number): Promise<void>;
52
- getTaprootAddressFromMnemonic(phrase: string): Promise<{
53
- p2tr: any;
54
- tweakedSigner: import("bip32/types/bip32").Signer;
55
- pubKey: Buffer;
56
- path: string;
57
- coin: string;
58
- }>;
44
+ sweepVaultUsingPhrase(phrase: string, satsPerByte?: number, broadcast?: boolean): Promise<unknown>;
59
45
  }
60
46
  declare global {
61
47
  interface Window {
package/types/utils.d.ts CHANGED
@@ -33,3 +33,11 @@ export declare function getTorusKeys(verifierId: string, idToken: any, cb?: any)
33
33
  privateKey: any;
34
34
  }>;
35
35
  export declare function decryptKeys(vaultCiphertextV2: any, keys: any, addresses: any[]): Promise<any>;
36
+ interface SatsConnectAddress {
37
+ paymentAddress: string;
38
+ paymentPublicKey: string;
39
+ ordinalsAddress: string;
40
+ }
41
+ export declare function getSatsConnectAddress(): Promise<SatsConnectAddress>;
42
+ export declare function signPSBT(psbtBase64: any, paymentAddress: any, indexes: number[], broadcast?: boolean): Promise<unknown>;
43
+ export {};