emblem-vault-sdk 1.7.8 → 1.7.9

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
@@ -709310,7 +709310,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
709310
709310
  Object.defineProperty(exports, "__esModule", { value: true });
709311
709311
  const bignumber_1 = require("@ethersproject/bignumber");
709312
709312
  const utils_1 = require("./utils");
709313
- const SDK_VERSION = '1.7.8';
709313
+ const SDK_VERSION = '1.7.9';
709314
709314
  class EmblemVaultSDK {
709315
709315
  constructor(apiKey, baseUrl) {
709316
709316
  this.apiKey = apiKey;
@@ -709367,9 +709367,9 @@ class EmblemVaultSDK {
709367
709367
  return data;
709368
709368
  });
709369
709369
  }
709370
- fetchCuratedContractByName(name) {
709370
+ fetchCuratedContractByName(name, contracts = false) {
709371
709371
  return __awaiter(this, void 0, void 0, function* () {
709372
- let contracts = yield this.fetchCuratedContracts();
709372
+ !contracts ? contracts = yield this.fetchCuratedContracts() : null;
709373
709373
  let contract = contracts.find((contract) => contract.name === name);
709374
709374
  return contract || null;
709375
709375
  });
@@ -709411,6 +709411,116 @@ class EmblemVaultSDK {
709411
709411
  return vaults;
709412
709412
  });
709413
709413
  }
709414
+ generateJumpReport(address, hideUnMintable = false) {
709415
+ return __awaiter(this, void 0, void 0, function* () {
709416
+ let vaultType = "unclaimed";
709417
+ let curated = yield this.fetchCuratedContracts();
709418
+ return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
709419
+ try {
709420
+ let map = {};
709421
+ let vaults = yield this.fetchVaultsOfType(vaultType, address);
709422
+ for (let vaultIndex = 0; vaultIndex < vaults.length; vaultIndex++) {
709423
+ let item = vaults[vaultIndex];
709424
+ let balances = item.ownership.balances || [];
709425
+ if (item.targetContract) {
709426
+ let vaultTargetContract = yield this.fetchCuratedContractByName(item.targetContract.name, curated);
709427
+ let to = [];
709428
+ for (let contractIndex = 0; contractIndex < curated.length; contractIndex++) {
709429
+ let contract = curated[contractIndex];
709430
+ let allowed = contract.allowed(balances, vaultTargetContract);
709431
+ if (allowed && vaultTargetContract.name != contract.name) {
709432
+ to.push(contract.name);
709433
+ }
709434
+ }
709435
+ if (!hideUnMintable || to.length > 0) {
709436
+ map[item.tokenId] = { from: item.targetContract.name, to: to };
709437
+ }
709438
+ }
709439
+ else if (!hideUnMintable) {
709440
+ map[item.tokenId] = { from: "legacy", to: [] };
709441
+ }
709442
+ }
709443
+ // Resolve the promise with the map
709444
+ resolve(map);
709445
+ }
709446
+ catch (error) {
709447
+ // Reject the promise in case of any error
709448
+ reject(error);
709449
+ }
709450
+ }));
709451
+ });
709452
+ }
709453
+ generateMintReport(address, hideUnMintable = false) {
709454
+ return __awaiter(this, void 0, void 0, function* () {
709455
+ let vaults = yield this.fetchVaultsOfType("created", address);
709456
+ let curated = yield this.fetchCuratedContracts();
709457
+ let map = {};
709458
+ return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
709459
+ try {
709460
+ vaults.forEach((vault) => __awaiter(this, void 0, void 0, function* () {
709461
+ if (vault.targetContract) {
709462
+ let targetVault = yield this.fetchCuratedContractByName(vault.targetContract.name, curated);
709463
+ let balance = vault.balances && vault.balances.length > 0 ? vault.balances : [];
709464
+ let allowed = targetVault.allowed(balance, targetVault);
709465
+ if (allowed || !hideUnMintable) {
709466
+ map[vault.tokenId] = { to: vault.targetContract.name, mintable: allowed };
709467
+ }
709468
+ }
709469
+ else {
709470
+ if (!hideUnMintable) {
709471
+ map[vault.tokenId] = { to: "legacy", mintable: false };
709472
+ }
709473
+ }
709474
+ }));
709475
+ // Resolve the promise with the map
709476
+ resolve(map);
709477
+ }
709478
+ catch (error) {
709479
+ // Reject the promise in case of any error
709480
+ reject(error);
709481
+ }
709482
+ }));
709483
+ });
709484
+ }
709485
+ generateMigrateReport(address, hideUnMintable = false) {
709486
+ return __awaiter(this, void 0, void 0, function* () {
709487
+ let vaultType = "unclaimed";
709488
+ let curated = yield this.fetchCuratedContracts();
709489
+ return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
709490
+ try {
709491
+ let map = {};
709492
+ let vaults = yield this.fetchVaultsOfType(vaultType, address);
709493
+ for (let vaultIndex = 0; vaultIndex < vaults.length; vaultIndex++) {
709494
+ let item = vaults[vaultIndex];
709495
+ let balances = item.ownership.balances || [];
709496
+ if (!item.targetContract) {
709497
+ // let vaultTargetContract: any = await this.fetchCuratedContractByName(item.targetContract.name, curated);
709498
+ let to = [];
709499
+ for (let contractIndex = 0; contractIndex < curated.length; contractIndex++) {
709500
+ let contract = curated[contractIndex];
709501
+ let allowed = contract.allowed(balances, contract);
709502
+ if (allowed) {
709503
+ to.push(contract.name);
709504
+ }
709505
+ }
709506
+ if (!hideUnMintable || to.length > 0) {
709507
+ map[item.tokenId] = { from: "legacy", to: to };
709508
+ }
709509
+ }
709510
+ else if (!hideUnMintable) {
709511
+ map[item.tokenId] = { from: item.targetContract.name, to: [] };
709512
+ }
709513
+ }
709514
+ // Resolve the promise with the map
709515
+ resolve(map);
709516
+ }
709517
+ catch (error) {
709518
+ // Reject the promise in case of any error
709519
+ reject(error);
709520
+ }
709521
+ }));
709522
+ });
709523
+ }
709414
709524
  // ** Web3 **
709415
709525
  //
709416
709526
  // Function to load web3 dynamically and attach it to the window object
@@ -709732,17 +709842,21 @@ function generateTemplate(record) {
709732
709842
  var _a;
709733
709843
  let allowed = false;
709734
709844
  if (recordName == "Cursed Ordinal") {
709735
- allowed = data ? data[0].content_type != "application/json" : false;
709845
+ allowed = data && data.length > 0 ? data[0].content_type != "application/json" && data[0].coin == "cursedordinalsbtc" : false;
709846
+ }
709847
+ else if (recordName == "BitcoinOrdinals") {
709848
+ data = _this.filterNativeBalances({ balances: data }, _this);
709849
+ allowed = data && data.length > 0 && data[0].coin == _this.collectionChain.toLowerCase();
709736
709850
  }
709737
709851
  else if (recordName == "Ethscription") {
709738
- allowed = data ? true : false;
709852
+ allowed = data && data.length > 0 && data[0].coin == recordName.toLowerCase() ? true : false;
709739
709853
  }
709740
709854
  else if (recordName == "$OXBT" || recordName == "$ORDI") {
709741
- if (data[0].balance == balanceQty) {
709855
+ if (data && data.length > 0 && data[0].balance == balanceQty) {
709742
709856
  msgCallback ? msgCallback("") : null;
709743
709857
  allowed = true;
709744
709858
  }
709745
- else if (data[0].balance != balanceQty && msgCallback) {
709859
+ else if (data && data.length > 0 && data[0].balance != balanceQty && msgCallback) {
709746
709860
  msgCallback ? msgCallback(`Load vault with exactly ${balanceQty} ${recordName}`) : null;
709747
709861
  allowed = false;
709748
709862
  }
@@ -709750,33 +709864,37 @@ function generateTemplate(record) {
709750
709864
  else if (recordName == "Counterparty") {
709751
709865
  let facts = [
709752
709866
  { eval: record.nativeAssets.includes((_a = data[0]) === null || _a === void 0 ? void 0 : _a.coin), msg: `Vaults should only contain assets native to ${recordName}` },
709753
- { eval: data.length == 1, msg: `Vaults should only contain a single item` }
709867
+ { eval: data.length == 1, msg: `Vaults should only contain a single item` },
709868
+ // { eval: data[0].projectName && data[0].projectName == recordName, msg: `Vaults should only contain a single item` }
709754
709869
  ];
709755
709870
  allowed = (0, exports.evaluateFacts)(allowed, facts, msgCallback);
709756
709871
  }
709757
709872
  else if (recordName == "Stamps") {
709758
- allowed = record.nativeAssets.includes(data[0].coin) && (recordName.toLowerCase() == data[0].project.toLowerCase() || data[0].project.toLowerCase() == "stampunks");
709873
+ allowed = data && data.length > 0 && data[0].project && record.nativeAssets.includes(data[0].coin) && (recordName.toLowerCase() == data[0].project.toLowerCase() || data[0].project.toLowerCase() == "stampunks");
709759
709874
  }
709760
709875
  else if (recordName == "EmblemOpen") {
709761
- allowed = data ? true : false;
709876
+ allowed = data && data.length > 0 ? true : false;
709762
709877
  }
709763
709878
  else if (recordName == "Bells") {
709764
- allowed = data[0].name == "Bel" && data[0].balance > 0 && Number.isInteger(data[0].balance);
709879
+ allowed = data && data.length > 0 && data[0].name == "Bel" && data[0].balance > 0 && Number.isInteger(data[0].balance);
709765
709880
  }
709766
709881
  else if (recordName == "Namecoin") {
709767
- allowed = data && record.nativeAssets.includes(data[0].coin) ? true : false;
709882
+ allowed = data && data.length > 0 && record.nativeAssets.includes(data[0].coin) ? true : false;
709768
709883
  }
709769
709884
  else if (recordName == "Embels") {
709770
- allowed = true;
709885
+ allowed = _this.name.toLowerCase() == recordName.toLowerCase();
709886
+ if (allowed && data && data.length > 0 && data[0].coin) {
709887
+ allowed = _this.nativeAssets.includes(data[0].coin);
709888
+ }
709771
709889
  }
709772
709890
  else if (_this.vaultCollectionType && _this.vaultCollectionType == "protocol") {
709773
- allowed = data && data[0].coin.toLowerCase() == _this.collectionChain.toLowerCase();
709891
+ allowed = data && data.length > 0 && data[0].coin.toLowerCase() == _this.collectionChain.toLowerCase() && data[0].project && data[0].project == recordName;
709774
709892
  }
709775
709893
  else if (_this.vaultCollectionType && _this.vaultCollectionType == "collection") {
709776
- allowed = data && data[0].coin.toLowerCase() == _this.collectionChain.toLowerCase() && data[0].project == _this.name;
709894
+ allowed = data && data.length > 0 && data[0].coin.toLowerCase() == _this.collectionChain.toLowerCase() && data[0].project == recordName;
709777
709895
  }
709778
709896
  else { // XCP
709779
- allowed = data[0].project == _this.name && data[0].balance == 1;
709897
+ allowed = data && data.length > 0 && data[0].project == _this.name && data[0].balance == 1;
709780
709898
  }
709781
709899
  return allowed;
709782
709900
  },
package/dist/index.js CHANGED
@@ -34,7 +34,7 @@ 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 SDK_VERSION = '1.7.8';
37
+ const SDK_VERSION = '1.7.9';
38
38
  class EmblemVaultSDK {
39
39
  constructor(apiKey, baseUrl) {
40
40
  this.apiKey = apiKey;
@@ -91,9 +91,9 @@ class EmblemVaultSDK {
91
91
  return data;
92
92
  });
93
93
  }
94
- fetchCuratedContractByName(name) {
94
+ fetchCuratedContractByName(name, contracts = false) {
95
95
  return __awaiter(this, void 0, void 0, function* () {
96
- let contracts = yield this.fetchCuratedContracts();
96
+ !contracts ? contracts = yield this.fetchCuratedContracts() : null;
97
97
  let contract = contracts.find((contract) => contract.name === name);
98
98
  return contract || null;
99
99
  });
@@ -135,6 +135,116 @@ class EmblemVaultSDK {
135
135
  return vaults;
136
136
  });
137
137
  }
138
+ generateJumpReport(address, hideUnMintable = false) {
139
+ return __awaiter(this, void 0, void 0, function* () {
140
+ let vaultType = "unclaimed";
141
+ let curated = yield this.fetchCuratedContracts();
142
+ return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
143
+ try {
144
+ let map = {};
145
+ let vaults = yield this.fetchVaultsOfType(vaultType, address);
146
+ for (let vaultIndex = 0; vaultIndex < vaults.length; vaultIndex++) {
147
+ let item = vaults[vaultIndex];
148
+ let balances = item.ownership.balances || [];
149
+ if (item.targetContract) {
150
+ let vaultTargetContract = yield this.fetchCuratedContractByName(item.targetContract.name, curated);
151
+ let to = [];
152
+ for (let contractIndex = 0; contractIndex < curated.length; contractIndex++) {
153
+ let contract = curated[contractIndex];
154
+ let allowed = contract.allowed(balances, vaultTargetContract);
155
+ if (allowed && vaultTargetContract.name != contract.name) {
156
+ to.push(contract.name);
157
+ }
158
+ }
159
+ if (!hideUnMintable || to.length > 0) {
160
+ map[item.tokenId] = { from: item.targetContract.name, to: to };
161
+ }
162
+ }
163
+ else if (!hideUnMintable) {
164
+ map[item.tokenId] = { from: "legacy", to: [] };
165
+ }
166
+ }
167
+ // Resolve the promise with the map
168
+ resolve(map);
169
+ }
170
+ catch (error) {
171
+ // Reject the promise in case of any error
172
+ reject(error);
173
+ }
174
+ }));
175
+ });
176
+ }
177
+ generateMintReport(address, hideUnMintable = false) {
178
+ return __awaiter(this, void 0, void 0, function* () {
179
+ let vaults = yield this.fetchVaultsOfType("created", address);
180
+ let curated = yield this.fetchCuratedContracts();
181
+ let map = {};
182
+ return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
183
+ try {
184
+ vaults.forEach((vault) => __awaiter(this, void 0, void 0, function* () {
185
+ if (vault.targetContract) {
186
+ let targetVault = yield this.fetchCuratedContractByName(vault.targetContract.name, curated);
187
+ let balance = vault.balances && vault.balances.length > 0 ? vault.balances : [];
188
+ let allowed = targetVault.allowed(balance, targetVault);
189
+ if (allowed || !hideUnMintable) {
190
+ map[vault.tokenId] = { to: vault.targetContract.name, mintable: allowed };
191
+ }
192
+ }
193
+ else {
194
+ if (!hideUnMintable) {
195
+ map[vault.tokenId] = { to: "legacy", mintable: false };
196
+ }
197
+ }
198
+ }));
199
+ // Resolve the promise with the map
200
+ resolve(map);
201
+ }
202
+ catch (error) {
203
+ // Reject the promise in case of any error
204
+ reject(error);
205
+ }
206
+ }));
207
+ });
208
+ }
209
+ generateMigrateReport(address, hideUnMintable = false) {
210
+ return __awaiter(this, void 0, void 0, function* () {
211
+ let vaultType = "unclaimed";
212
+ let curated = yield this.fetchCuratedContracts();
213
+ return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
214
+ try {
215
+ let map = {};
216
+ let vaults = yield this.fetchVaultsOfType(vaultType, address);
217
+ for (let vaultIndex = 0; vaultIndex < vaults.length; vaultIndex++) {
218
+ let item = vaults[vaultIndex];
219
+ let balances = item.ownership.balances || [];
220
+ if (!item.targetContract) {
221
+ // let vaultTargetContract: any = await this.fetchCuratedContractByName(item.targetContract.name, curated);
222
+ let to = [];
223
+ for (let contractIndex = 0; contractIndex < curated.length; contractIndex++) {
224
+ let contract = curated[contractIndex];
225
+ let allowed = contract.allowed(balances, contract);
226
+ if (allowed) {
227
+ to.push(contract.name);
228
+ }
229
+ }
230
+ if (!hideUnMintable || to.length > 0) {
231
+ map[item.tokenId] = { from: "legacy", to: to };
232
+ }
233
+ }
234
+ else if (!hideUnMintable) {
235
+ map[item.tokenId] = { from: item.targetContract.name, to: [] };
236
+ }
237
+ }
238
+ // Resolve the promise with the map
239
+ resolve(map);
240
+ }
241
+ catch (error) {
242
+ // Reject the promise in case of any error
243
+ reject(error);
244
+ }
245
+ }));
246
+ });
247
+ }
138
248
  // ** Web3 **
139
249
  //
140
250
  // Function to load web3 dynamically and attach it to the window object
package/dist/utils.js CHANGED
@@ -212,17 +212,21 @@ function generateTemplate(record) {
212
212
  var _a;
213
213
  let allowed = false;
214
214
  if (recordName == "Cursed Ordinal") {
215
- allowed = data ? data[0].content_type != "application/json" : false;
215
+ allowed = data && data.length > 0 ? data[0].content_type != "application/json" && data[0].coin == "cursedordinalsbtc" : false;
216
+ }
217
+ else if (recordName == "BitcoinOrdinals") {
218
+ data = _this.filterNativeBalances({ balances: data }, _this);
219
+ allowed = data && data.length > 0 && data[0].coin == _this.collectionChain.toLowerCase();
216
220
  }
217
221
  else if (recordName == "Ethscription") {
218
- allowed = data ? true : false;
222
+ allowed = data && data.length > 0 && data[0].coin == recordName.toLowerCase() ? true : false;
219
223
  }
220
224
  else if (recordName == "$OXBT" || recordName == "$ORDI") {
221
- if (data[0].balance == balanceQty) {
225
+ if (data && data.length > 0 && data[0].balance == balanceQty) {
222
226
  msgCallback ? msgCallback("") : null;
223
227
  allowed = true;
224
228
  }
225
- else if (data[0].balance != balanceQty && msgCallback) {
229
+ else if (data && data.length > 0 && data[0].balance != balanceQty && msgCallback) {
226
230
  msgCallback ? msgCallback(`Load vault with exactly ${balanceQty} ${recordName}`) : null;
227
231
  allowed = false;
228
232
  }
@@ -230,33 +234,37 @@ function generateTemplate(record) {
230
234
  else if (recordName == "Counterparty") {
231
235
  let facts = [
232
236
  { eval: record.nativeAssets.includes((_a = data[0]) === null || _a === void 0 ? void 0 : _a.coin), msg: `Vaults should only contain assets native to ${recordName}` },
233
- { eval: data.length == 1, msg: `Vaults should only contain a single item` }
237
+ { eval: data.length == 1, msg: `Vaults should only contain a single item` },
238
+ // { eval: data[0].projectName && data[0].projectName == recordName, msg: `Vaults should only contain a single item` }
234
239
  ];
235
240
  allowed = (0, exports.evaluateFacts)(allowed, facts, msgCallback);
236
241
  }
237
242
  else if (recordName == "Stamps") {
238
- allowed = record.nativeAssets.includes(data[0].coin) && (recordName.toLowerCase() == data[0].project.toLowerCase() || data[0].project.toLowerCase() == "stampunks");
243
+ allowed = data && data.length > 0 && data[0].project && record.nativeAssets.includes(data[0].coin) && (recordName.toLowerCase() == data[0].project.toLowerCase() || data[0].project.toLowerCase() == "stampunks");
239
244
  }
240
245
  else if (recordName == "EmblemOpen") {
241
- allowed = data ? true : false;
246
+ allowed = data && data.length > 0 ? true : false;
242
247
  }
243
248
  else if (recordName == "Bells") {
244
- allowed = data[0].name == "Bel" && data[0].balance > 0 && Number.isInteger(data[0].balance);
249
+ allowed = data && data.length > 0 && data[0].name == "Bel" && data[0].balance > 0 && Number.isInteger(data[0].balance);
245
250
  }
246
251
  else if (recordName == "Namecoin") {
247
- allowed = data && record.nativeAssets.includes(data[0].coin) ? true : false;
252
+ allowed = data && data.length > 0 && record.nativeAssets.includes(data[0].coin) ? true : false;
248
253
  }
249
254
  else if (recordName == "Embels") {
250
- allowed = true;
255
+ allowed = _this.name.toLowerCase() == recordName.toLowerCase();
256
+ if (allowed && data && data.length > 0 && data[0].coin) {
257
+ allowed = _this.nativeAssets.includes(data[0].coin);
258
+ }
251
259
  }
252
260
  else if (_this.vaultCollectionType && _this.vaultCollectionType == "protocol") {
253
- allowed = data && data[0].coin.toLowerCase() == _this.collectionChain.toLowerCase();
261
+ allowed = data && data.length > 0 && data[0].coin.toLowerCase() == _this.collectionChain.toLowerCase() && data[0].project && data[0].project == recordName;
254
262
  }
255
263
  else if (_this.vaultCollectionType && _this.vaultCollectionType == "collection") {
256
- allowed = data && data[0].coin.toLowerCase() == _this.collectionChain.toLowerCase() && data[0].project == _this.name;
264
+ allowed = data && data.length > 0 && data[0].coin.toLowerCase() == _this.collectionChain.toLowerCase() && data[0].project == recordName;
257
265
  }
258
266
  else { // XCP
259
- allowed = data[0].project == _this.name && data[0].balance == 1;
267
+ allowed = data && data.length > 0 && data[0].project == _this.name && data[0].balance == 1;
260
268
  }
261
269
  return allowed;
262
270
  },
package/docs/bundle.js CHANGED
@@ -709310,7 +709310,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
709310
709310
  Object.defineProperty(exports, "__esModule", { value: true });
709311
709311
  const bignumber_1 = require("@ethersproject/bignumber");
709312
709312
  const utils_1 = require("./utils");
709313
- const SDK_VERSION = '1.7.8';
709313
+ const SDK_VERSION = '1.7.9';
709314
709314
  class EmblemVaultSDK {
709315
709315
  constructor(apiKey, baseUrl) {
709316
709316
  this.apiKey = apiKey;
@@ -709367,9 +709367,9 @@ class EmblemVaultSDK {
709367
709367
  return data;
709368
709368
  });
709369
709369
  }
709370
- fetchCuratedContractByName(name) {
709370
+ fetchCuratedContractByName(name, contracts = false) {
709371
709371
  return __awaiter(this, void 0, void 0, function* () {
709372
- let contracts = yield this.fetchCuratedContracts();
709372
+ !contracts ? contracts = yield this.fetchCuratedContracts() : null;
709373
709373
  let contract = contracts.find((contract) => contract.name === name);
709374
709374
  return contract || null;
709375
709375
  });
@@ -709411,6 +709411,116 @@ class EmblemVaultSDK {
709411
709411
  return vaults;
709412
709412
  });
709413
709413
  }
709414
+ generateJumpReport(address, hideUnMintable = false) {
709415
+ return __awaiter(this, void 0, void 0, function* () {
709416
+ let vaultType = "unclaimed";
709417
+ let curated = yield this.fetchCuratedContracts();
709418
+ return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
709419
+ try {
709420
+ let map = {};
709421
+ let vaults = yield this.fetchVaultsOfType(vaultType, address);
709422
+ for (let vaultIndex = 0; vaultIndex < vaults.length; vaultIndex++) {
709423
+ let item = vaults[vaultIndex];
709424
+ let balances = item.ownership.balances || [];
709425
+ if (item.targetContract) {
709426
+ let vaultTargetContract = yield this.fetchCuratedContractByName(item.targetContract.name, curated);
709427
+ let to = [];
709428
+ for (let contractIndex = 0; contractIndex < curated.length; contractIndex++) {
709429
+ let contract = curated[contractIndex];
709430
+ let allowed = contract.allowed(balances, vaultTargetContract);
709431
+ if (allowed && vaultTargetContract.name != contract.name) {
709432
+ to.push(contract.name);
709433
+ }
709434
+ }
709435
+ if (!hideUnMintable || to.length > 0) {
709436
+ map[item.tokenId] = { from: item.targetContract.name, to: to };
709437
+ }
709438
+ }
709439
+ else if (!hideUnMintable) {
709440
+ map[item.tokenId] = { from: "legacy", to: [] };
709441
+ }
709442
+ }
709443
+ // Resolve the promise with the map
709444
+ resolve(map);
709445
+ }
709446
+ catch (error) {
709447
+ // Reject the promise in case of any error
709448
+ reject(error);
709449
+ }
709450
+ }));
709451
+ });
709452
+ }
709453
+ generateMintReport(address, hideUnMintable = false) {
709454
+ return __awaiter(this, void 0, void 0, function* () {
709455
+ let vaults = yield this.fetchVaultsOfType("created", address);
709456
+ let curated = yield this.fetchCuratedContracts();
709457
+ let map = {};
709458
+ return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
709459
+ try {
709460
+ vaults.forEach((vault) => __awaiter(this, void 0, void 0, function* () {
709461
+ if (vault.targetContract) {
709462
+ let targetVault = yield this.fetchCuratedContractByName(vault.targetContract.name, curated);
709463
+ let balance = vault.balances && vault.balances.length > 0 ? vault.balances : [];
709464
+ let allowed = targetVault.allowed(balance, targetVault);
709465
+ if (allowed || !hideUnMintable) {
709466
+ map[vault.tokenId] = { to: vault.targetContract.name, mintable: allowed };
709467
+ }
709468
+ }
709469
+ else {
709470
+ if (!hideUnMintable) {
709471
+ map[vault.tokenId] = { to: "legacy", mintable: false };
709472
+ }
709473
+ }
709474
+ }));
709475
+ // Resolve the promise with the map
709476
+ resolve(map);
709477
+ }
709478
+ catch (error) {
709479
+ // Reject the promise in case of any error
709480
+ reject(error);
709481
+ }
709482
+ }));
709483
+ });
709484
+ }
709485
+ generateMigrateReport(address, hideUnMintable = false) {
709486
+ return __awaiter(this, void 0, void 0, function* () {
709487
+ let vaultType = "unclaimed";
709488
+ let curated = yield this.fetchCuratedContracts();
709489
+ return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
709490
+ try {
709491
+ let map = {};
709492
+ let vaults = yield this.fetchVaultsOfType(vaultType, address);
709493
+ for (let vaultIndex = 0; vaultIndex < vaults.length; vaultIndex++) {
709494
+ let item = vaults[vaultIndex];
709495
+ let balances = item.ownership.balances || [];
709496
+ if (!item.targetContract) {
709497
+ // let vaultTargetContract: any = await this.fetchCuratedContractByName(item.targetContract.name, curated);
709498
+ let to = [];
709499
+ for (let contractIndex = 0; contractIndex < curated.length; contractIndex++) {
709500
+ let contract = curated[contractIndex];
709501
+ let allowed = contract.allowed(balances, contract);
709502
+ if (allowed) {
709503
+ to.push(contract.name);
709504
+ }
709505
+ }
709506
+ if (!hideUnMintable || to.length > 0) {
709507
+ map[item.tokenId] = { from: "legacy", to: to };
709508
+ }
709509
+ }
709510
+ else if (!hideUnMintable) {
709511
+ map[item.tokenId] = { from: item.targetContract.name, to: [] };
709512
+ }
709513
+ }
709514
+ // Resolve the promise with the map
709515
+ resolve(map);
709516
+ }
709517
+ catch (error) {
709518
+ // Reject the promise in case of any error
709519
+ reject(error);
709520
+ }
709521
+ }));
709522
+ });
709523
+ }
709414
709524
  // ** Web3 **
709415
709525
  //
709416
709526
  // Function to load web3 dynamically and attach it to the window object
@@ -709732,17 +709842,21 @@ function generateTemplate(record) {
709732
709842
  var _a;
709733
709843
  let allowed = false;
709734
709844
  if (recordName == "Cursed Ordinal") {
709735
- allowed = data ? data[0].content_type != "application/json" : false;
709845
+ allowed = data && data.length > 0 ? data[0].content_type != "application/json" && data[0].coin == "cursedordinalsbtc" : false;
709846
+ }
709847
+ else if (recordName == "BitcoinOrdinals") {
709848
+ data = _this.filterNativeBalances({ balances: data }, _this);
709849
+ allowed = data && data.length > 0 && data[0].coin == _this.collectionChain.toLowerCase();
709736
709850
  }
709737
709851
  else if (recordName == "Ethscription") {
709738
- allowed = data ? true : false;
709852
+ allowed = data && data.length > 0 && data[0].coin == recordName.toLowerCase() ? true : false;
709739
709853
  }
709740
709854
  else if (recordName == "$OXBT" || recordName == "$ORDI") {
709741
- if (data[0].balance == balanceQty) {
709855
+ if (data && data.length > 0 && data[0].balance == balanceQty) {
709742
709856
  msgCallback ? msgCallback("") : null;
709743
709857
  allowed = true;
709744
709858
  }
709745
- else if (data[0].balance != balanceQty && msgCallback) {
709859
+ else if (data && data.length > 0 && data[0].balance != balanceQty && msgCallback) {
709746
709860
  msgCallback ? msgCallback(`Load vault with exactly ${balanceQty} ${recordName}`) : null;
709747
709861
  allowed = false;
709748
709862
  }
@@ -709750,33 +709864,37 @@ function generateTemplate(record) {
709750
709864
  else if (recordName == "Counterparty") {
709751
709865
  let facts = [
709752
709866
  { eval: record.nativeAssets.includes((_a = data[0]) === null || _a === void 0 ? void 0 : _a.coin), msg: `Vaults should only contain assets native to ${recordName}` },
709753
- { eval: data.length == 1, msg: `Vaults should only contain a single item` }
709867
+ { eval: data.length == 1, msg: `Vaults should only contain a single item` },
709868
+ // { eval: data[0].projectName && data[0].projectName == recordName, msg: `Vaults should only contain a single item` }
709754
709869
  ];
709755
709870
  allowed = (0, exports.evaluateFacts)(allowed, facts, msgCallback);
709756
709871
  }
709757
709872
  else if (recordName == "Stamps") {
709758
- allowed = record.nativeAssets.includes(data[0].coin) && (recordName.toLowerCase() == data[0].project.toLowerCase() || data[0].project.toLowerCase() == "stampunks");
709873
+ allowed = data && data.length > 0 && data[0].project && record.nativeAssets.includes(data[0].coin) && (recordName.toLowerCase() == data[0].project.toLowerCase() || data[0].project.toLowerCase() == "stampunks");
709759
709874
  }
709760
709875
  else if (recordName == "EmblemOpen") {
709761
- allowed = data ? true : false;
709876
+ allowed = data && data.length > 0 ? true : false;
709762
709877
  }
709763
709878
  else if (recordName == "Bells") {
709764
- allowed = data[0].name == "Bel" && data[0].balance > 0 && Number.isInteger(data[0].balance);
709879
+ allowed = data && data.length > 0 && data[0].name == "Bel" && data[0].balance > 0 && Number.isInteger(data[0].balance);
709765
709880
  }
709766
709881
  else if (recordName == "Namecoin") {
709767
- allowed = data && record.nativeAssets.includes(data[0].coin) ? true : false;
709882
+ allowed = data && data.length > 0 && record.nativeAssets.includes(data[0].coin) ? true : false;
709768
709883
  }
709769
709884
  else if (recordName == "Embels") {
709770
- allowed = true;
709885
+ allowed = _this.name.toLowerCase() == recordName.toLowerCase();
709886
+ if (allowed && data && data.length > 0 && data[0].coin) {
709887
+ allowed = _this.nativeAssets.includes(data[0].coin);
709888
+ }
709771
709889
  }
709772
709890
  else if (_this.vaultCollectionType && _this.vaultCollectionType == "protocol") {
709773
- allowed = data && data[0].coin.toLowerCase() == _this.collectionChain.toLowerCase();
709891
+ allowed = data && data.length > 0 && data[0].coin.toLowerCase() == _this.collectionChain.toLowerCase() && data[0].project && data[0].project == recordName;
709774
709892
  }
709775
709893
  else if (_this.vaultCollectionType && _this.vaultCollectionType == "collection") {
709776
- allowed = data && data[0].coin.toLowerCase() == _this.collectionChain.toLowerCase() && data[0].project == _this.name;
709894
+ allowed = data && data.length > 0 && data[0].coin.toLowerCase() == _this.collectionChain.toLowerCase() && data[0].project == recordName;
709777
709895
  }
709778
709896
  else { // XCP
709779
- allowed = data[0].project == _this.name && data[0].balance == 1;
709897
+ allowed = data && data.length > 0 && data[0].project == _this.name && data[0].balance == 1;
709780
709898
  }
709781
709899
  return allowed;
709782
709900
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "emblem-vault-sdk",
3
- "version": "1.7.8",
3
+ "version": "1.7.9",
4
4
  "description": "Emblem Vault Software Development Kit",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
package/src/index.ts CHANGED
@@ -65,8 +65,8 @@ class EmblemVaultSDK {
65
65
  return data
66
66
  }
67
67
 
68
- async fetchCuratedContractByName(name: string): Promise<Collection | null> {
69
- let contracts = await this.fetchCuratedContracts();
68
+ async fetchCuratedContractByName(name: string, contracts: any = false): Promise<Collection | null> {
69
+ !contracts ? contracts = await this.fetchCuratedContracts(): null
70
70
  let contract = contracts.find((contract: Collection) => contract.name === name);
71
71
  return contract || null;
72
72
  }
@@ -97,6 +97,111 @@ class EmblemVaultSDK {
97
97
  return vaults;
98
98
  }
99
99
 
100
+ async generateJumpReport(address: string, hideUnMintable: boolean = false) {
101
+ let vaultType = "unclaimed"
102
+ let curated = await this.fetchCuratedContracts();
103
+ return new Promise(async (resolve, reject) => {
104
+ try {
105
+ let map: { [key: string]: any } = {};
106
+ let vaults = await this.fetchVaultsOfType(vaultType, address);
107
+ for (let vaultIndex = 0; vaultIndex < vaults.length; vaultIndex++) {
108
+ let item = vaults[vaultIndex];
109
+ let balances = item.ownership.balances || [];
110
+ if (item.targetContract) {
111
+ let vaultTargetContract: any = await this.fetchCuratedContractByName(item.targetContract.name, curated);
112
+ let to = [];
113
+ for (let contractIndex = 0; contractIndex < curated.length; contractIndex++) {
114
+ let contract: any = curated[contractIndex];
115
+ let allowed = contract.allowed(balances, vaultTargetContract);
116
+ if (allowed && vaultTargetContract.name != contract.name) {
117
+ to.push(contract.name);
118
+ }
119
+ }
120
+ if (!hideUnMintable || to.length > 0) {
121
+ map[item.tokenId] = { from: item.targetContract.name, to: to };
122
+ }
123
+ } else if (!hideUnMintable) {
124
+ map[item.tokenId] = { from: "legacy", to: [] };
125
+ }
126
+ }
127
+
128
+ // Resolve the promise with the map
129
+ resolve(map);
130
+ } catch (error) {
131
+ // Reject the promise in case of any error
132
+ reject(error);
133
+ }
134
+ });
135
+ }
136
+
137
+ async generateMintReport(address: string, hideUnMintable: boolean = false) {
138
+ let vaults = await this.fetchVaultsOfType("created", address)
139
+ let curated = await this.fetchCuratedContracts();
140
+ let map: { [key: string]: any } = {};
141
+ return new Promise(async (resolve, reject) => {
142
+ try {
143
+ vaults.forEach(async (vault: any) => {
144
+ if (vault.targetContract) {
145
+ let targetVault: any = await this.fetchCuratedContractByName(vault.targetContract.name, curated);
146
+ let balance = vault.balances && vault.balances.length > 0 ? vault.balances : []
147
+ let allowed = targetVault.allowed(balance, targetVault)
148
+ if (allowed || !hideUnMintable) {
149
+ map[vault.tokenId] = { to: vault.targetContract.name, mintable: allowed};
150
+ }
151
+ } else {
152
+ if (!hideUnMintable) {
153
+ map[vault.tokenId] = { to: "legacy", mintable: false };
154
+ }
155
+ }
156
+ })
157
+ // Resolve the promise with the map
158
+ resolve(map);
159
+ } catch (error) {
160
+ // Reject the promise in case of any error
161
+ reject(error);
162
+ }
163
+ });
164
+ }
165
+
166
+ async generateMigrateReport(address: string, hideUnMintable: boolean = false) {
167
+ let vaultType = "unclaimed"
168
+ let curated = await this.fetchCuratedContracts();
169
+ return new Promise(async (resolve, reject) => {
170
+ try {
171
+ let map: { [key: string]: any } = {};
172
+ let vaults = await this.fetchVaultsOfType(vaultType, address);
173
+ for (let vaultIndex = 0; vaultIndex < vaults.length; vaultIndex++) {
174
+ let item = vaults[vaultIndex];
175
+ let balances = item.ownership.balances || [];
176
+ if (!item.targetContract) {
177
+ // let vaultTargetContract: any = await this.fetchCuratedContractByName(item.targetContract.name, curated);
178
+ let to = [];
179
+ for (let contractIndex = 0; contractIndex < curated.length; contractIndex++) {
180
+ let contract: any = curated[contractIndex];
181
+ let allowed = contract.allowed(balances, contract);
182
+ if (allowed) {
183
+ to.push(contract.name);
184
+ }
185
+ }
186
+ if (!hideUnMintable || to.length > 0) {
187
+ map[item.tokenId] = { from: "legacy", to: to };
188
+ }
189
+ } else if (!hideUnMintable) {
190
+ map[item.tokenId] = { from: item.targetContract.name, to: [] };
191
+ }
192
+ }
193
+
194
+ // Resolve the promise with the map
195
+ resolve(map);
196
+ } catch (error) {
197
+ // Reject the promise in case of any error
198
+ reject(error);
199
+ }
200
+ });
201
+ }
202
+
203
+
204
+
100
205
  // ** Web3 **
101
206
  //
102
207
  // Function to load web3 dynamically and attach it to the window object
package/src/utils.ts CHANGED
@@ -194,39 +194,46 @@ export function generateTemplate(record: any) {
194
194
  allowed: (data: any[], _this: any, msgCallback: any = null) => {
195
195
  let allowed = false
196
196
  if (recordName == "Cursed Ordinal") {
197
- allowed = data ? data[0].content_type != "application/json" : false
197
+ allowed = data && data.length > 0 ? data[0].content_type != "application/json" && data[0].coin == "cursedordinalsbtc" : false
198
+ } else if (recordName == "BitcoinOrdinals") {
199
+ data = _this.filterNativeBalances({balances: data}, _this)
200
+ allowed = data && data.length > 0 && data[0].coin == _this.collectionChain.toLowerCase()
198
201
  } else if (recordName == "Ethscription") {
199
- allowed = data ? true : false
202
+ allowed = data && data.length > 0 && data[0].coin == recordName.toLowerCase()? true : false
200
203
  } else if (recordName == "$OXBT" || recordName == "$ORDI") {
201
- if (data[0].balance == balanceQty) {
204
+ if (data && data.length > 0 && data[0].balance == balanceQty) {
202
205
  msgCallback ? msgCallback("") : null
203
206
  allowed = true
204
- } else if (data[0].balance != balanceQty && msgCallback) {
207
+ } else if (data && data.length > 0 && data[0].balance != balanceQty && msgCallback) {
205
208
  msgCallback ? msgCallback(`Load vault with exactly ${balanceQty} ${recordName}`) : null
206
209
  allowed = false
207
210
  }
208
211
  } else if (recordName == "Counterparty") {
209
212
  let facts = [
210
213
  { eval: record.nativeAssets.includes(data[0]?.coin), msg: `Vaults should only contain assets native to ${recordName}` },
211
- { eval: data.length == 1, msg: `Vaults should only contain a single item` }
214
+ { eval: data.length == 1, msg: `Vaults should only contain a single item` },
215
+ // { eval: data[0].projectName && data[0].projectName == recordName, msg: `Vaults should only contain a single item` }
212
216
  ]
213
217
  allowed = evaluateFacts(allowed, facts, msgCallback)
214
218
  } else if (recordName == "Stamps") {
215
- allowed = record.nativeAssets.includes(data[0].coin) && (recordName.toLowerCase() == data[0].project.toLowerCase() || data[0].project.toLowerCase() == "stampunks")
219
+ allowed = data && data.length > 0 && data[0].project && record.nativeAssets.includes(data[0].coin) && (recordName.toLowerCase() == data[0].project.toLowerCase() || data[0].project.toLowerCase() == "stampunks")
216
220
  } else if (recordName == "EmblemOpen") {
217
- allowed = data ? true : false
221
+ allowed = data && data.length > 0 ? true : false
218
222
  } else if (recordName == "Bells") {
219
- allowed = data[0].name == "Bel" && data[0].balance > 0 && Number.isInteger(data[0].balance)
223
+ allowed = data && data.length > 0 && data[0].name == "Bel" && data[0].balance > 0 && Number.isInteger(data[0].balance)
220
224
  } else if (recordName == "Namecoin") {
221
- allowed = data && record.nativeAssets.includes(data[0].coin) ? true: false
222
- } else if (recordName == "Embels"){
223
- allowed = true
224
- } else if (_this.vaultCollectionType && _this.vaultCollectionType == "protocol") {
225
- allowed = data && data[0].coin.toLowerCase() ==_this.collectionChain.toLowerCase()
225
+ allowed = data && data.length > 0 && record.nativeAssets.includes(data[0].coin) ? true: false
226
+ } else if (recordName == "Embels") {
227
+ allowed = _this.name.toLowerCase() == recordName.toLowerCase()
228
+ if (allowed && data && data.length > 0 && data[0].coin) {
229
+ allowed = _this.nativeAssets.includes(data[0].coin)
230
+ }
231
+ } else if (_this.vaultCollectionType && _this.vaultCollectionType == "protocol") {
232
+ allowed = data && data.length > 0 && data[0].coin.toLowerCase() == _this.collectionChain.toLowerCase() && data[0].project && data[0].project == recordName
226
233
  } else if (_this.vaultCollectionType && _this.vaultCollectionType == "collection" ) {
227
- allowed = data && data[0].coin.toLowerCase() == _this.collectionChain.toLowerCase() && data[0].project == _this.name
234
+ allowed = data && data.length > 0 && data[0].coin.toLowerCase() == _this.collectionChain.toLowerCase() && data[0].project == recordName
228
235
  } else { // XCP
229
- allowed = data[0].project == _this.name && data[0].balance == 1;
236
+ allowed = data && data.length > 0 && data[0].project == _this.name && data[0].balance == 1;
230
237
  }
231
238
  return allowed
232
239
  },
package/types/index.d.ts CHANGED
@@ -9,10 +9,13 @@ declare class EmblemVaultSDK {
9
9
  getAllAssetMetadata(): any[];
10
10
  getAllProjects(): any[];
11
11
  fetchCuratedContracts(hideUnMintable?: boolean, overrideFunc?: Function | boolean): Promise<CuratedCollectionsResponse>;
12
- fetchCuratedContractByName(name: string): Promise<Collection | null>;
12
+ fetchCuratedContractByName(name: string, contracts?: any): Promise<Collection | null>;
13
13
  createCuratedVault(template: any, callback?: any): Promise<Vault>;
14
14
  fetchMetadata(tokenId: string, callback?: any): Promise<MetaData>;
15
15
  fetchVaultsOfType(vaultType: string, address: string): Promise<any>;
16
+ generateJumpReport(address: string, hideUnMintable?: boolean): Promise<unknown>;
17
+ generateMintReport(address: string, hideUnMintable?: boolean): Promise<unknown>;
18
+ generateMigrateReport(address: string, hideUnMintable?: boolean): Promise<unknown>;
16
19
  loadWeb3(): Promise<any | undefined>;
17
20
  performMintChain(web3: any, tokenId: string, collectionName: string, callback?: any): Promise<{
18
21
  mintResponse: any;