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 +20 -1
- package/dist/index.js +17 -1
- package/dist/utils.js +3 -0
- package/docs/DeGods.html +115 -0
- package/docs/bels.html +1 -1
- package/docs/bundle.js +20 -1
- package/package.json +1 -1
- package/src/index.ts +13 -2
- package/src/utils.ts +2 -0
- package/types/index.d.ts +3 -0
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.
|
|
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.
|
|
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
|
}
|
package/docs/DeGods.html
ADDED
|
@@ -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
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.
|
|
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
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>;
|