emblem-vault-sdk 1.7.14 → 1.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/bundle.js CHANGED
@@ -709329,7 +709329,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
709329
709329
  Object.defineProperty(exports, "__esModule", { value: true });
709330
709330
  const bignumber_1 = require("@ethersproject/bignumber");
709331
709331
  const utils_1 = require("./utils");
709332
- const SDK_VERSION = '1.7.14';
709332
+ const SDK_VERSION = '1.8.1';
709333
709333
  class EmblemVaultSDK {
709334
709334
  constructor(apiKey, baseUrl) {
709335
709335
  this.apiKey = apiKey;
@@ -709337,7 +709337,9 @@ class EmblemVaultSDK {
709337
709337
  if (!apiKey) {
709338
709338
  throw new Error('API key is required');
709339
709339
  }
709340
+ this.v1Url = 'https://api2.emblemvault.io';
709340
709341
  this.baseUrl = baseUrl || 'https://v2.emblemvault.io';
709342
+ this.v3Url = 'https://emblemvault-io-v3-6156a7b1ac82.herokuapp.com';
709341
709343
  }
709342
709344
  // Example method structure
709343
709345
  generateUploadUrl() {
@@ -709421,6 +709423,20 @@ class EmblemVaultSDK {
709421
709423
  return metadata;
709422
709424
  });
709423
709425
  }
709426
+ refreshBalance(tokenId, callback = null) {
709427
+ return __awaiter(this, void 0, void 0, function* () {
709428
+ (0, utils_1.genericGuard)(tokenId, "string", "tokenId");
709429
+ if (callback) {
709430
+ callback('refreshing Balance');
709431
+ }
709432
+ let url = `${this.v1Url}/vault/balance/${tokenId}?live=true`;
709433
+ let balance = yield (0, utils_1.fetchData)(url, this.apiKey);
709434
+ if (callback) {
709435
+ callback('received Balance', balance.balances);
709436
+ }
709437
+ return (balance === null || balance === void 0 ? void 0 : balance.balances) || [];
709438
+ });
709439
+ }
709424
709440
  fetchVaultsOfType(vaultType, address) {
709425
709441
  return __awaiter(this, void 0, void 0, function* () {
709426
709442
  (0, utils_1.genericGuard)(vaultType, "string", "vaultType");
@@ -709926,6 +709942,9 @@ function generateTemplate(record) {
709926
709942
  allowed = _this.nativeAssets.includes(data[0].coin);
709927
709943
  }
709928
709944
  }
709945
+ else if (recordName == "Bitcoin DeGods") {
709946
+ allowed = data && data.length > 0 && data[0].coin == "ordinalsbtc" && data[0].balance == 1 && data[0].project == "DeGods";
709947
+ }
709929
709948
  else if (_this.vaultCollectionType && _this.vaultCollectionType == "protocol") {
709930
709949
  allowed = data && data.length > 0 && data[0].coin.toLowerCase() == _this.collectionChain.toLowerCase() && data[0].project && data[0].project == recordName;
709931
709950
  }
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.14';
37
+ const SDK_VERSION = '1.8.1';
38
38
  class EmblemVaultSDK {
39
39
  constructor(apiKey, baseUrl) {
40
40
  this.apiKey = apiKey;
@@ -42,7 +42,9 @@ class EmblemVaultSDK {
42
42
  if (!apiKey) {
43
43
  throw new Error('API key is required');
44
44
  }
45
+ this.v1Url = 'https://api2.emblemvault.io';
45
46
  this.baseUrl = baseUrl || 'https://v2.emblemvault.io';
47
+ this.v3Url = 'https://emblemvault-io-v3-6156a7b1ac82.herokuapp.com';
46
48
  }
47
49
  // Example method structure
48
50
  generateUploadUrl() {
@@ -126,6 +128,20 @@ class EmblemVaultSDK {
126
128
  return metadata;
127
129
  });
128
130
  }
131
+ refreshBalance(tokenId, callback = null) {
132
+ return __awaiter(this, void 0, void 0, function* () {
133
+ (0, utils_1.genericGuard)(tokenId, "string", "tokenId");
134
+ if (callback) {
135
+ callback('refreshing Balance');
136
+ }
137
+ let url = `${this.v1Url}/vault/balance/${tokenId}?live=true`;
138
+ let balance = yield (0, utils_1.fetchData)(url, this.apiKey);
139
+ if (callback) {
140
+ callback('received Balance', balance.balances);
141
+ }
142
+ return (balance === null || balance === void 0 ? void 0 : balance.balances) || [];
143
+ });
144
+ }
129
145
  fetchVaultsOfType(vaultType, address) {
130
146
  return __awaiter(this, void 0, void 0, function* () {
131
147
  (0, utils_1.genericGuard)(vaultType, "string", "vaultType");
package/dist/utils.js CHANGED
@@ -257,6 +257,9 @@ function generateTemplate(record) {
257
257
  allowed = _this.nativeAssets.includes(data[0].coin);
258
258
  }
259
259
  }
260
+ else if (recordName == "Bitcoin DeGods") {
261
+ allowed = data && data.length > 0 && data[0].coin == "ordinalsbtc" && data[0].balance == 1 && data[0].project == "DeGods";
262
+ }
260
263
  else if (_this.vaultCollectionType && _this.vaultCollectionType == "protocol") {
261
264
  allowed = data && data.length > 0 && data[0].coin.toLowerCase() == _this.collectionChain.toLowerCase() && data[0].project && data[0].project == recordName;
262
265
  }
@@ -0,0 +1,115 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>DeGods
5
+ </title>
6
+ <style>
7
+ input, select, button {
8
+ padding: 10px;
9
+ margin: 5px;
10
+ }
11
+ #tokenImage{
12
+ max-width: 300px;
13
+ }
14
+ </style>
15
+ </head>
16
+ <body>
17
+ <h1>Vault it</h1>
18
+ <script src="./bundle.js"></script>
19
+ <script>
20
+ const sdk = new EmblemVaultSDK('demo'); // Instantiate SDK
21
+
22
+ // Template used for creating vaults
23
+ let contractTemplate = {
24
+ "fromAddress": null,
25
+ "toAddress": null,
26
+ "chainId":1,
27
+ "experimental":true,
28
+ "targetContract":{
29
+ "1":"0x345eF9d7E75aEEb979053AA41BB6330683353B7b",
30
+ "name":"Bitcoin DeGods",
31
+ "description":"Bitcoin DeGods is a collection of 535 Bitcoin Ordinals inscribed in the 77236 to 77770 range. This collection is curated by Emblem Vault. "
32
+ },
33
+ "targetAsset":{
34
+ "image":"https://emblem.finance/btcdegods.jpg",
35
+ "name":"Loading...",
36
+ "xtra": "anything else you need here"
37
+ }
38
+ }
39
+ let defaultAccount, vaultBalance, vaultData;
40
+ </script>
41
+
42
+
43
+ <button id="step1Button" onclick="Step1()">Step 1 (Create Vault)</button>
44
+ <button id="step2Button" onclick="Step2()" disabled>Step 2 (Refresh Vault)</button>
45
+ <button id="step3Button" onclick="Step3()" disabled>Step 3 (Validate Mintability)</button>
46
+ <script>
47
+ async function Step1() {
48
+ if (!defaultAccount) { // Only load web3 if not already loaded
49
+ await sdk.loadWeb3() // Can be any web3 provider
50
+ defaultAccount = await web3.eth.getAccounts().then(accounts => accounts[0]).catch(err=>console) // Minter's address
51
+ }
52
+ if (!vaultData) {
53
+ // populate the template
54
+ contractTemplate.toAddress = defaultAccount;
55
+ contractTemplate.fromAddress = defaultAccount;
56
+
57
+ // Create a vault
58
+ vaultData = await sdk.createCuratedVault(contractTemplate, updateLogCallback).catch(err=>console.log(err));
59
+ if (!vaultData || vaultData.err) { // Temporary fix while I fix a race condition
60
+ setTimeout(Step1, 1000); // should Back off and try again
61
+ } else {
62
+ updateLogCallback("deposit Address", vaultData.addresses.find(address=>{return address.coin == 'TAP'}).address)
63
+ document.getElementById('step1Button').disabled = true;
64
+ document.getElementById('step2Button').disabled = false;
65
+ }
66
+ }
67
+ }
68
+
69
+ async function Step2() {
70
+ if (vaultData) {
71
+ vaultBalance = await sdk.refreshBalance(vaultData.tokenId, updateLogCallback).catch(err=>console); // Refresh the balance
72
+ if (vaultBalance.length > 0) { // We have a balance!!
73
+ updateLogCallback('Step','complete')
74
+ document.getElementById('step2Button').disabled = true;
75
+ document.getElementById('step3Button').disabled = false;
76
+ }
77
+ }
78
+ }
79
+
80
+ async function Step3() {
81
+ if (vaultBalance.length > 0) {
82
+ let contractObject = await sdk.fetchCuratedContractByName(contractTemplate.targetContract.name);
83
+ let mintable = contractObject.allowed(vaultBalance, contractObject);
84
+ if (mintable) {
85
+ performMint();
86
+ }
87
+ } else {
88
+ // Handle error
89
+ }
90
+ }
91
+
92
+ async function performMint() {
93
+ if (vaultData.tokenId) {
94
+ // Perform Mint steps
95
+ sdk.performMintChain(web3, vaultData.tokenId, contractTemplate.targetContract.name, updateLogCallback).then(result => {
96
+ updateLogCallback('Minting success', 'tokenId: ' + vaultData.tokenId)
97
+ })
98
+ .catch(error => {
99
+ updateLogCallback('',error.message)
100
+ });
101
+ } else {
102
+ // Handle error
103
+ }
104
+ }
105
+
106
+ function updateLogCallback(action, result){
107
+ document.getElementById('log').innerHTML += '\r\n' + action + ' ' + (result ? JSON.stringify(result) : '');
108
+ }
109
+ function clearLog(){
110
+ document.getElementById('log').innerHTML = '';
111
+ }
112
+ </script>
113
+ <pre id="log"></pre>
114
+ </body>
115
+ </html>
package/docs/bels.html CHANGED
@@ -77,4 +77,4 @@
77
77
  </script>
78
78
  <pre id="log"></pre>
79
79
  </body>
80
- </html>
80
+ </html>
package/docs/bundle.js CHANGED
@@ -709329,7 +709329,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
709329
709329
  Object.defineProperty(exports, "__esModule", { value: true });
709330
709330
  const bignumber_1 = require("@ethersproject/bignumber");
709331
709331
  const utils_1 = require("./utils");
709332
- const SDK_VERSION = '1.7.14';
709332
+ const SDK_VERSION = '1.8.1';
709333
709333
  class EmblemVaultSDK {
709334
709334
  constructor(apiKey, baseUrl) {
709335
709335
  this.apiKey = apiKey;
@@ -709337,7 +709337,9 @@ class EmblemVaultSDK {
709337
709337
  if (!apiKey) {
709338
709338
  throw new Error('API key is required');
709339
709339
  }
709340
+ this.v1Url = 'https://api2.emblemvault.io';
709340
709341
  this.baseUrl = baseUrl || 'https://v2.emblemvault.io';
709342
+ this.v3Url = 'https://emblemvault-io-v3-6156a7b1ac82.herokuapp.com';
709341
709343
  }
709342
709344
  // Example method structure
709343
709345
  generateUploadUrl() {
@@ -709421,6 +709423,20 @@ class EmblemVaultSDK {
709421
709423
  return metadata;
709422
709424
  });
709423
709425
  }
709426
+ refreshBalance(tokenId, callback = null) {
709427
+ return __awaiter(this, void 0, void 0, function* () {
709428
+ (0, utils_1.genericGuard)(tokenId, "string", "tokenId");
709429
+ if (callback) {
709430
+ callback('refreshing Balance');
709431
+ }
709432
+ let url = `${this.v1Url}/vault/balance/${tokenId}?live=true`;
709433
+ let balance = yield (0, utils_1.fetchData)(url, this.apiKey);
709434
+ if (callback) {
709435
+ callback('received Balance', balance.balances);
709436
+ }
709437
+ return (balance === null || balance === void 0 ? void 0 : balance.balances) || [];
709438
+ });
709439
+ }
709424
709440
  fetchVaultsOfType(vaultType, address) {
709425
709441
  return __awaiter(this, void 0, void 0, function* () {
709426
709442
  (0, utils_1.genericGuard)(vaultType, "string", "vaultType");
@@ -709926,6 +709942,9 @@ function generateTemplate(record) {
709926
709942
  allowed = _this.nativeAssets.includes(data[0].coin);
709927
709943
  }
709928
709944
  }
709945
+ else if (recordName == "Bitcoin DeGods") {
709946
+ allowed = data && data.length > 0 && data[0].coin == "ordinalsbtc" && data[0].balance == 1 && data[0].project == "DeGods";
709947
+ }
709929
709948
  else if (_this.vaultCollectionType && _this.vaultCollectionType == "protocol") {
709930
709949
  allowed = data && data.length > 0 && data[0].coin.toLowerCase() == _this.collectionChain.toLowerCase() && data[0].project && data[0].project == recordName;
709931
709950
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "emblem-vault-sdk",
3
- "version": "1.7.14",
3
+ "version": "1.8.1",
4
4
  "description": "Emblem Vault Software Development Kit",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
package/src/index.ts CHANGED
@@ -5,13 +5,17 @@ import { COIN_TO_NETWORK, NFT_DATA, checkContentType, evaluateFacts, fetchData,
5
5
  const SDK_VERSION = '__SDK_VERSION__';
6
6
  class EmblemVaultSDK {
7
7
  private baseUrl: string;
8
+ private v3Url: string;
9
+ private v1Url: string;
8
10
 
9
11
  constructor(private apiKey: string, baseUrl?: string) {
10
12
  console.log('EmblemVaultSDK version:', SDK_VERSION)
11
13
  if (!apiKey) {
12
14
  throw new Error('API key is required');
13
15
  }
16
+ this.v1Url = 'https://api2.emblemvault.io';
14
17
  this.baseUrl = baseUrl || 'https://v2.emblemvault.io';
18
+ this.v3Url = 'https://emblemvault-io-v3-6156a7b1ac82.herokuapp.com';
15
19
  }
16
20
 
17
21
  // Example method structure
@@ -89,6 +93,15 @@ class EmblemVaultSDK {
89
93
  return metadata;
90
94
  }
91
95
 
96
+ async refreshBalance(tokenId: string, callback: any = null): Promise<MetaData> {
97
+ genericGuard(tokenId, "string", "tokenId");
98
+ if (callback) { callback('refreshing Balance')}
99
+ let url = `${this.v1Url}/vault/balance/${tokenId}?live=true`;
100
+ let balance = await fetchData(url, this.apiKey);
101
+ if (callback) { callback('received Balance', balance.balances)}
102
+ return balance?.balances || [];
103
+ }
104
+
92
105
  async fetchVaultsOfType(vaultType: string, address: string): Promise<any> {
93
106
  genericGuard(vaultType, "string", "vaultType");
94
107
  genericGuard(address, "string", "address");
@@ -199,8 +212,6 @@ class EmblemVaultSDK {
199
212
  }
200
213
  });
201
214
  }
202
-
203
-
204
215
 
205
216
  // ** Web3 **
206
217
  //
package/src/utils.ts CHANGED
@@ -228,6 +228,8 @@ export function generateTemplate(record: any) {
228
228
  if (allowed && data && data.length > 0 && data[0].coin) {
229
229
  allowed = _this.nativeAssets.includes(data[0].coin)
230
230
  }
231
+ } else if (recordName == "Bitcoin DeGods"){
232
+ allowed = data && data.length > 0 && data[0].coin == "ordinalsbtc" && data[0].balance == 1 && data[0].project == "DeGods"
231
233
  } else if (_this.vaultCollectionType && _this.vaultCollectionType == "protocol") {
232
234
  allowed = data && data.length > 0 && data[0].coin.toLowerCase() == _this.collectionChain.toLowerCase() && data[0].project && data[0].project == recordName
233
235
  } else if (_this.vaultCollectionType && _this.vaultCollectionType == "collection" ) {
package/types/index.d.ts CHANGED
@@ -3,6 +3,8 @@ import { Collection, CuratedCollectionsResponse, MetaData, Vault } from './types
3
3
  declare class EmblemVaultSDK {
4
4
  private apiKey;
5
5
  private baseUrl;
6
+ private v3Url;
7
+ private v1Url;
6
8
  constructor(apiKey: string, baseUrl?: string);
7
9
  generateUploadUrl(): void;
8
10
  getAssetMetadata(projectName: string, strict?: boolean): any[];
@@ -12,6 +14,7 @@ declare class EmblemVaultSDK {
12
14
  fetchCuratedContractByName(name: string, contracts?: any): Promise<Collection | null>;
13
15
  createCuratedVault(template: any, callback?: any): Promise<Vault>;
14
16
  fetchMetadata(tokenId: string, callback?: any): Promise<MetaData>;
17
+ refreshBalance(tokenId: string, callback?: any): Promise<MetaData>;
15
18
  fetchVaultsOfType(vaultType: string, address: string): Promise<any>;
16
19
  generateJumpReport(address: string, hideUnMintable?: boolean): Promise<unknown>;
17
20
  generateMintReport(address: string, hideUnMintable?: boolean): Promise<unknown>;