emblem-vault-sdk 2.3.6 → 3.0.0-experimental
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/.traces/blockchain-provider-abstraction-plan.md +302 -0
- package/.traces/notes.md +43 -0
- package/.traces/readme-verification-trace.md +988 -0
- package/.traces/test-migration-status.md +227 -0
- package/.traces/tests-consolidated-trace.md +667 -0
- package/dist/abi/abi.json +53 -0
- package/dist/bundle.js +21602 -17419
- package/dist/clients/emblemVaultSolanaWalletClient.d.ts +74 -0
- package/dist/clients/emblemVaultSolanaWalletClient.js +149 -0
- package/dist/clients/emblemVaultSolanaWalletClient.js.map +1 -0
- package/dist/clients/emblemVaultWalletClient.d.ts +52 -0
- package/dist/clients/emblemVaultWalletClient.js +110 -0
- package/dist/clients/emblemVaultWalletClient.js.map +1 -0
- package/dist/derive.js +7 -0
- package/dist/derive.js.map +1 -0
- package/dist/index.js +319 -114
- package/dist/index.js.map +1 -0
- package/dist/providers/ProviderManager.d.ts +57 -0
- package/dist/providers/ProviderManager.js +283 -0
- package/dist/providers/ProviderManager.js.map +1 -0
- package/dist/providers.d.ts +101 -0
- package/dist/providers.js +96 -0
- package/dist/providers.js.map +1 -0
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.js +61 -58
- package/dist/utils.js.map +1 -0
- package/docs/bundle.js +21602 -17419
- package/docs/index.html +150 -13
- package/docs/local.html +385 -0
- package/docs/steps.html +420 -53
- package/package.json +22 -13
- package/readme.md +795 -21
- package/src/abi/abi.json +54 -1
- package/src/clients/emblemVaultSolanaWalletClient.ts +257 -0
- package/src/clients/emblemVaultWalletClient.ts +159 -0
- package/src/derive.ts +5 -5
- package/src/index.ts +320 -102
- package/src/providers/ProviderManager.ts +254 -0
- package/src/providers.ts +163 -0
- package/src/types.ts +50 -0
- package/src/utils.ts +63 -62
- package/test/.mocharc.js +8 -0
- package/test/README.md +212 -0
- package/test/fixtures/ethscriptions/balance-with-native-first.json +24 -0
- package/test/fixtures/ethscriptions/balance-with-native.json +23 -0
- package/test/fixtures/ethscriptions/balance.json +18 -0
- package/test/helpers/sdkLoader.js +88 -0
- package/test/helpers/setup.js +55 -0
- package/test/integration/ApiOperations.spec.js +102 -0
- package/test/integration/VaultAI.spec.js +57 -0
- package/test/integration/VaultCreation.spec.js +95 -0
- package/test/mocks.js +127 -0
- package/test/tsconfig.json +25 -0
- package/test/unit/AllowedBells.spec.js +53 -0
- package/test/unit/AllowedBitcoinDeGods.spec.js +53 -0
- package/test/unit/AllowedBitcoinOrdinals.spec.js +46 -0
- package/test/unit/AllowedCounterparty.spec.js +66 -0
- package/test/unit/AllowedCursedOrdinals.spec.js +68 -0
- package/test/unit/AllowedEmbells.spec.js +11 -0
- package/test/unit/AllowedEmbels.spec.js +11 -0
- package/test/unit/AllowedEmblemOpen.spec.js +20 -0
- package/test/unit/AllowedEthscriptions.spec.js +53 -0
- package/test/unit/AllowedHardcodedNfts.spec.js +77 -0
- package/test/unit/AllowedNamecoin.spec.js +33 -0
- package/test/unit/AllowedOrdi.spec.js +46 -0
- package/test/unit/AllowedOxbt.spec.js +46 -0
- package/test/unit/AllowedProjectCollection.spec.js +51 -0
- package/test/unit/AllowedProtocolCollection.spec.js +44 -0
- package/test/unit/AllowedStamps.spec.js +78 -0
- package/test/unit/DarkfarmsMetadata.spec.js +10 -0
- package/test/unit/EmblemVaultSdk.spec.js +188 -0
- package/test/unit/Providers.spec.js +290 -0
- package/test/unit/ResourceMonitor.spec.js +111 -0
- package/test/unit/SDKMemoryLeaks.spec.js +176 -0
- package/test/unit/Signing.spec.js +321 -0
- package/test/unit/VaultAI.spec.js +140 -0
- package/test/unit/clients/EmblemVaultSolanaWalletClient.spec.js +296 -0
- package/test/unit/clients/EmblemVaultWalletClient.spec.js +246 -0
- package/test/utils/ResourceMonitor.js +169 -0
- package/test/windsurf-rules.md +68 -0
- package/tsconfig.json +7 -3
- package/types/derive.d.ts +0 -5
- package/types/index.d.ts +152 -32
- package/types/types.d.ts +43 -0
- package/types/utils.d.ts +7 -1
- package/dist/abi/quote.js +0 -29
- package/dist/abi/quote.json +0 -26
- package/jest.config.js +0 -6
- package/tests/AllowedBells.test.ts +0 -53
- package/tests/AllowedBitcoinDeGods.test.ts +0 -53
- package/tests/AllowedBitcoinOrdinals.test.ts +0 -46
- package/tests/AllowedCounterparty.test.ts +0 -45
- package/tests/AllowedCursedOrdinals.test.ts +0 -68
- package/tests/AllowedEmbells.test.ts +0 -12
- package/tests/AllowedEmbels.test.ts +0 -16
- package/tests/AllowedEmblemOpen.test.ts +0 -20
- package/tests/AllowedEthscriptions.test.ts +0 -39
- package/tests/AllowedHardcodedNfts.test.ts +0 -78
- package/tests/AllowedNamecoin.test.ts +0 -33
- package/tests/AllowedOrdi.test.ts +0 -47
- package/tests/AllowedOxbt.test.ts +0 -47
- package/tests/AllowedProjectlCollection.test.ts +0 -51
- package/tests/AllowedProtocolCollection.test.ts +0 -44
- package/tests/AllowedStamps.test.ts +0 -73
- package/tests/DarkfarmsMetadata.test.ts +0 -10
- package/tests/EmblemVaultSdk.test.ts +0 -124
- package/tests/fixtures/embels/balance.json +0 -10
- package/tests/fixtures/ethscriptions/balance-with-native-first.json +0 -69
- package/tests/fixtures/ethscriptions/balance-with-native.json +0 -37
- package/tests/fixtures/ethscriptions/balance.json +0 -64
- /package/{tests → test}/fixtures/bells/balance-with-non-bell-first.json +0 -0
- /package/{tests → test}/fixtures/bells/balance-with-non-bell.json +0 -0
- /package/{tests → test}/fixtures/bells/balance.json +0 -0
- /package/{tests → test}/fixtures/bitcoin-degods/balance-with-non-degods-first.json +0 -0
- /package/{tests → test}/fixtures/bitcoin-degods/balance-with-non-degods.json +0 -0
- /package/{tests → test}/fixtures/bitcoin-degods/balance.json +0 -0
- /package/{tests → test}/fixtures/bitcoin-ordinals/balance-with-native-first.json +0 -0
- /package/{tests → test}/fixtures/bitcoin-ordinals/balance-with-only-native.json +0 -0
- /package/{tests → test}/fixtures/bitcoin-ordinals/balance.json +0 -0
- /package/{tests → test}/fixtures/counterparty/balance-with-multiple.json +0 -0
- /package/{tests → test}/fixtures/counterparty/balance.json +0 -0
- /package/{tests → test}/fixtures/cursed-ordinals/balance-with-native-first.json +0 -0
- /package/{tests → test}/fixtures/cursed-ordinals/balance-with-native.json +0 -0
- /package/{tests → test}/fixtures/cursed-ordinals/balance.json +0 -0
- /package/{tests → test}/fixtures/dogeparty/balance-with-non-dogeparty-first.json +0 -0
- /package/{tests → test}/fixtures/dogeparty/balance-with-non-dogeparty.json +0 -0
- /package/{tests → test}/fixtures/dogeparty/balance.json +0 -0
- /package/{tests → test}/fixtures/emblem-open/balance.json +0 -0
- /package/{tests → test}/fixtures/hardcoded-nfts/balance-witn-non-hardcoded-first.json +0 -0
- /package/{tests → test}/fixtures/hardcoded-nfts/balance-witn-non-hardcoded.json +0 -0
- /package/{tests → test}/fixtures/hardcoded-nfts/balance.json +0 -0
- /package/{tests → test}/fixtures/megapunks/balance-with-non-megapunk-first.json +0 -0
- /package/{tests → test}/fixtures/megapunks/balance-with-non-megapunk.json +0 -0
- /package/{tests → test}/fixtures/megapunks/balance.json +0 -0
- /package/{tests → test}/fixtures/namecoin/balance-with-native-first.json +0 -0
- /package/{tests → test}/fixtures/namecoin/balance-with-native.json +0 -0
- /package/{tests → test}/fixtures/namecoin/balance.json +0 -0
- /package/{tests → test}/fixtures/ordi/balance-with-native-first.json +0 -0
- /package/{tests → test}/fixtures/ordi/balance-with-native.json +0 -0
- /package/{tests → test}/fixtures/ordi/balance.json +0 -0
- /package/{tests → test}/fixtures/oxbt/balance-with-native-first.json +0 -0
- /package/{tests → test}/fixtures/oxbt/balance-with-native.json +0 -0
- /package/{tests → test}/fixtures/oxbt/balance.json +0 -0
- /package/{tests → test}/fixtures/stamps/balance-with-non-stamps-first.json +0 -0
- /package/{tests → test}/fixtures/stamps/balance-with-non-stamps.json +0 -0
- /package/{tests → test}/fixtures/stamps/balance.json +0 -0
package/dist/index.js
CHANGED
|
@@ -1,27 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
2
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
3
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
4
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -32,59 +9,177 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
32
9
|
});
|
|
33
10
|
};
|
|
34
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.EmblemVaultSDK = void 0;
|
|
35
13
|
const bignumber_1 = require("@ethersproject/bignumber");
|
|
36
14
|
const utils_1 = require("./utils");
|
|
37
15
|
const derive_1 = require("./derive");
|
|
38
|
-
const
|
|
16
|
+
const providers_1 = require("./providers");
|
|
17
|
+
const ProviderManager_1 = require("./providers/ProviderManager");
|
|
18
|
+
const emblemVaultWalletClient_1 = require("./clients/emblemVaultWalletClient");
|
|
19
|
+
const emblemVaultSolanaWalletClient_1 = require("./clients/emblemVaultSolanaWalletClient");
|
|
20
|
+
const SDK_VERSION = '3.0.0-experimental';
|
|
39
21
|
class EmblemVaultSDK {
|
|
40
|
-
constructor(apiKey, baseUrl, v3Url, sigUrl) {
|
|
22
|
+
constructor(apiKey, baseUrl, v3Url, sigUrl, aiUrl, aiApiKey, byoKey) {
|
|
41
23
|
this.apiKey = apiKey;
|
|
42
|
-
console.log('EmblemVaultSDK version:', SDK_VERSION)
|
|
24
|
+
// console.log('EmblemVaultSDK version:', SDK_VERSION)
|
|
43
25
|
if (!apiKey) {
|
|
44
26
|
throw new Error('API key is required');
|
|
45
27
|
}
|
|
46
28
|
this.baseUrl = baseUrl || 'https://v2.emblemvault.io';
|
|
47
29
|
this.v3Url = v3Url || 'https://v3.emblemvault.io';
|
|
48
30
|
this.sigUrl = sigUrl || 'https://tor-us-signer-coval.vercel.app';
|
|
31
|
+
this.aiUrl = aiUrl || 'https://api.emblemvault.ai';
|
|
32
|
+
this.aiApiKey = aiApiKey || undefined;
|
|
33
|
+
this.byoKey = byoKey || undefined;
|
|
34
|
+
this.version = SDK_VERSION;
|
|
35
|
+
this.providerManager = new ProviderManager_1.ProviderManager();
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Register a blockchain provider for a specific blockchain type
|
|
39
|
+
* @param type The blockchain type
|
|
40
|
+
* @param provider The provider instance
|
|
41
|
+
*/
|
|
42
|
+
registerProvider(type, provider) {
|
|
43
|
+
this.providerManager.registerProvider(type, provider);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Get a registered provider for a specific blockchain type
|
|
47
|
+
* @param type The blockchain type
|
|
48
|
+
* @returns The provider instance or undefined if not registered
|
|
49
|
+
*/
|
|
50
|
+
getProvider(type) {
|
|
51
|
+
return this.providerManager.getProvider(type);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Check if a provider is registered for a specific blockchain type
|
|
55
|
+
* @param type The blockchain type
|
|
56
|
+
* @returns True if a provider is registered for the specified type
|
|
57
|
+
*/
|
|
58
|
+
hasProvider(type) {
|
|
59
|
+
return this.providerManager.hasProvider(type);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Get or detect a provider for a specific blockchain type
|
|
63
|
+
* If a provider is registered, it will be returned
|
|
64
|
+
* Otherwise, it will try to detect a provider in the environment
|
|
65
|
+
* @param type The blockchain type
|
|
66
|
+
* @returns A promise that resolves to the provider instance
|
|
67
|
+
* @throws Error if no provider is available
|
|
68
|
+
*/
|
|
69
|
+
getOrDetectProvider(type) {
|
|
70
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
71
|
+
return this.providerManager.getOrDetectProvider(type);
|
|
72
|
+
});
|
|
49
73
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
74
|
+
/**
|
|
75
|
+
* Creates a Wallet Client instance powered by the Emblem Vault TEE signer.
|
|
76
|
+
*
|
|
77
|
+
* @param config - Configuration specific to the wallet client, like the walletId.
|
|
78
|
+
* @returns An EmblemVaultWalletClient instance.
|
|
79
|
+
*/
|
|
80
|
+
createWalletClient(config) {
|
|
81
|
+
if (!this.apiKey) {
|
|
82
|
+
throw new Error("SDK must be initialized with an API key before creating a wallet client.");
|
|
83
|
+
}
|
|
84
|
+
return (0, emblemVaultWalletClient_1.createEmblemVaultWalletClient)(Object.assign(Object.assign({}, config), { sdk: this }));
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Creates a Solana Wallet Client instance powered by the Emblem Vault TEE signer.
|
|
88
|
+
*
|
|
89
|
+
* @param config - Configuration specific to the Solana wallet client, like the walletId.
|
|
90
|
+
* @returns An EmblemVaultSolanaWalletClient instance.
|
|
91
|
+
*/
|
|
92
|
+
createSolanaWalletClient(config) {
|
|
93
|
+
if (!this.apiKey) {
|
|
94
|
+
throw new Error("SDK must be initialized with an API key before creating a wallet client.");
|
|
95
|
+
}
|
|
96
|
+
return (0, emblemVaultSolanaWalletClient_1.createEmblemVaultSolanaWalletClient)(Object.assign(Object.assign({}, config), { sdk: this }));
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Ethereum Convenience
|
|
100
|
+
*
|
|
101
|
+
* @param config - Configuration specific to the Solana wallet client, like the walletId.
|
|
102
|
+
* @returns An EmblemVaultSolanaWalletClient instance.
|
|
103
|
+
*/
|
|
104
|
+
getConnectedEthAccount() {
|
|
105
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
106
|
+
if (!this.hasProvider("ethereum")) {
|
|
107
|
+
yield this.getOrDetectProvider("ethereum");
|
|
108
|
+
}
|
|
109
|
+
return (yield this.getProvider("ethereum").eth.getAccounts())[0];
|
|
110
|
+
});
|
|
53
111
|
}
|
|
54
112
|
// ** Asset Metadata **
|
|
55
113
|
//
|
|
56
|
-
|
|
114
|
+
getCuratedAssetMetadata(projectName, strict = false, overrideFunc = null) {
|
|
115
|
+
return this.getAssetMetadata(projectName, strict, overrideFunc);
|
|
116
|
+
}
|
|
117
|
+
// @deprecated
|
|
118
|
+
getAssetMetadata(projectName, strict = false, overrideFunc = null) {
|
|
57
119
|
(0, utils_1.genericGuard)(projectName, "string", "projectName");
|
|
58
|
-
const NFT_DATA_ARR = (0, utils_1.metadataObj2Arr)(utils_1.NFT_DATA);
|
|
120
|
+
const NFT_DATA_ARR = overrideFunc && typeof overrideFunc === 'function' ? (0, utils_1.metadataObj2Arr)(overrideFunc()) : (0, utils_1.metadataObj2Arr)(utils_1.NFT_DATA);
|
|
59
121
|
let filtered = strict ?
|
|
60
|
-
NFT_DATA_ARR.filter(item => item.projectName === projectName) :
|
|
61
|
-
NFT_DATA_ARR.filter(item => item.projectName.toLowerCase() === projectName.toLowerCase());
|
|
122
|
+
NFT_DATA_ARR.filter((item) => item.projectName === projectName) :
|
|
123
|
+
NFT_DATA_ARR.filter((item) => item.projectName.toLowerCase() === projectName.toLowerCase());
|
|
62
124
|
return filtered;
|
|
63
125
|
}
|
|
64
|
-
|
|
65
|
-
return
|
|
126
|
+
getAllCuratedAssetMetadata(overrideFunc = null) {
|
|
127
|
+
return this.getAllAssetMetadata(overrideFunc);
|
|
128
|
+
}
|
|
129
|
+
// @deprecated
|
|
130
|
+
getAllAssetMetadata(overrideFunc = null) {
|
|
131
|
+
if (overrideFunc && typeof overrideFunc === 'function') {
|
|
132
|
+
return overrideFunc();
|
|
133
|
+
}
|
|
134
|
+
const NFT_DATA_ARR = (0, utils_1.metadataObj2Arr)(utils_1.NFT_DATA);
|
|
135
|
+
return NFT_DATA_ARR;
|
|
66
136
|
}
|
|
137
|
+
/**
|
|
138
|
+
* @deprecated
|
|
139
|
+
* This method is deprecated and will be removed in a future version.
|
|
140
|
+
* Please use `getInventoryAssetMetadataProject` instead.
|
|
141
|
+
*/
|
|
67
142
|
getRemoteAssetMetadataProjectList() {
|
|
68
|
-
return (0,
|
|
143
|
+
return __awaiter(this, arguments, void 0, function* (overrideFunc = null) {
|
|
144
|
+
const url = `${this.v3Url}/asset_metadata/projects`;
|
|
145
|
+
const NFT_DATA_ARR = overrideFunc && typeof overrideFunc === 'function' ? overrideFunc(this.apiKey) : yield (0, utils_1.fetchData)(url, this.apiKey);
|
|
146
|
+
return NFT_DATA_ARR;
|
|
147
|
+
});
|
|
69
148
|
}
|
|
70
|
-
|
|
71
|
-
return (0,
|
|
149
|
+
getInventoryAssetMetadataProject(projectName_1) {
|
|
150
|
+
return __awaiter(this, arguments, void 0, function* (projectName, overrideFunc = null) {
|
|
151
|
+
const url = `${this.v3Url}/asset_metadata/projects`;
|
|
152
|
+
const NFT_DATA_ARR = overrideFunc && typeof overrideFunc === 'function' ? overrideFunc(this.apiKey, { project: projectName }) : yield (0, utils_1.fetchData)(url, this.apiKey, projectName ? 'POST' : undefined, projectName ? { project: projectName } : undefined);
|
|
153
|
+
NFT_DATA_ARR && (yield NFT_DATA_ARR).map((item) => { item.asset_name = item.assetName; }); // Backward compatibility
|
|
154
|
+
return NFT_DATA_ARR;
|
|
155
|
+
});
|
|
72
156
|
}
|
|
73
|
-
|
|
74
|
-
return (0,
|
|
157
|
+
getInventoryAssetMetadata(asset_name_1) {
|
|
158
|
+
return __awaiter(this, arguments, void 0, function* (asset_name, overrideFunc = null) {
|
|
159
|
+
const url = `${this.v3Url}/asset_metadata/${asset_name}`;
|
|
160
|
+
const NFT_DATA_ARR = overrideFunc && typeof overrideFunc === 'function' ? overrideFunc(this.apiKey) : yield (0, utils_1.fetchData)(url, this.apiKey);
|
|
161
|
+
return NFT_DATA_ARR;
|
|
162
|
+
});
|
|
75
163
|
}
|
|
76
|
-
|
|
77
|
-
|
|
164
|
+
getInventoryAssetMetadataVaultedProjectList() {
|
|
165
|
+
return __awaiter(this, arguments, void 0, function* (overrideFunc = null) {
|
|
166
|
+
const url = `${this.v3Url}/asset_metadata/projects/vaulted`;
|
|
167
|
+
const NFT_DATA_ARR = overrideFunc && typeof overrideFunc === 'function' ? overrideFunc(this.apiKey) : yield (0, utils_1.fetchData)(url, this.apiKey);
|
|
168
|
+
return NFT_DATA_ARR;
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
getAllCuratedProjects(overrideFunc = null) {
|
|
172
|
+
const NFT_DATA_ARR = overrideFunc && typeof overrideFunc === 'function' ? (0, utils_1.metadataObj2Arr)(overrideFunc()) : (0, utils_1.metadataObj2Arr)(utils_1.NFT_DATA);
|
|
78
173
|
const projects = (0, utils_1.metadataAllProjects)(NFT_DATA_ARR);
|
|
79
174
|
return projects;
|
|
80
175
|
}
|
|
81
176
|
// ** Curated **
|
|
82
177
|
//
|
|
83
178
|
fetchCuratedContracts() {
|
|
84
|
-
return __awaiter(this, arguments, void 0, function* (hideUnMintable = false, overrideFunc =
|
|
179
|
+
return __awaiter(this, arguments, void 0, function* (hideUnMintable = false, overrideFunc = null) {
|
|
85
180
|
let url = `${this.baseUrl}/curated`;
|
|
86
181
|
// Fetch using URL or override function
|
|
87
|
-
let data =
|
|
182
|
+
let data = overrideFunc ? yield overrideFunc(this.apiKey) : yield (0, utils_1.fetchData)(url, this.apiKey);
|
|
88
183
|
// Filter out collections that are not mintable
|
|
89
184
|
data = hideUnMintable ? data.filter((collection) => collection.mintable) : data;
|
|
90
185
|
// Sort the data by the name property in ascending order
|
|
@@ -97,28 +192,28 @@ class EmblemVaultSDK {
|
|
|
97
192
|
item[key] = template[key];
|
|
98
193
|
});
|
|
99
194
|
// Return a new object that combines the properties of the item and the template
|
|
100
|
-
|
|
101
|
-
return item;
|
|
195
|
+
return Object.assign(Object.assign(Object.assign({}, item), template), { mintTemplate: template.generateCreateTemplate(item) });
|
|
196
|
+
// return item;
|
|
102
197
|
});
|
|
103
198
|
return data;
|
|
104
199
|
});
|
|
105
200
|
}
|
|
106
201
|
fetchCuratedContractByName(name_1) {
|
|
107
|
-
return __awaiter(this, arguments, void 0, function* (name, contracts = false) {
|
|
108
|
-
!contracts ? contracts = yield this.fetchCuratedContracts() : null;
|
|
202
|
+
return __awaiter(this, arguments, void 0, function* (name, contracts = false, overrideFunc = null) {
|
|
203
|
+
!contracts ? contracts = overrideFunc ? yield overrideFunc(this.apiKey, { name }) : yield this.fetchCuratedContracts() : null;
|
|
109
204
|
let contract = contracts.find((contract) => contract.name === name);
|
|
110
205
|
return contract || null;
|
|
111
206
|
});
|
|
112
207
|
}
|
|
113
208
|
createCuratedVault(template_1) {
|
|
114
|
-
return __awaiter(this, arguments, void 0, function* (template, callback = null) {
|
|
209
|
+
return __awaiter(this, arguments, void 0, function* (template, callback = null, overrideFunc = null) {
|
|
115
210
|
(0, utils_1.templateGuard)(template);
|
|
116
211
|
template.chainId == 1 ? delete template.targetContract[5] : delete template.targetContract[1];
|
|
117
212
|
let url = `${this.baseUrl}/create-curated`;
|
|
118
213
|
if (callback) {
|
|
119
214
|
callback(`creating Vault for user`, template.toAddress);
|
|
120
215
|
}
|
|
121
|
-
let vaultCreationResponse = yield (0, utils_1.fetchData)(url, this.apiKey, 'POST', template);
|
|
216
|
+
let vaultCreationResponse = overrideFunc ? yield overrideFunc(this.apiKey, template) : yield (0, utils_1.fetchData)(url, this.apiKey, 'POST', template);
|
|
122
217
|
if (callback) {
|
|
123
218
|
callback(`created Vault tokenId`, vaultCreationResponse.data.tokenId);
|
|
124
219
|
}
|
|
@@ -126,10 +221,10 @@ class EmblemVaultSDK {
|
|
|
126
221
|
});
|
|
127
222
|
}
|
|
128
223
|
refreshOwnershipForTokenId(tokenId_1) {
|
|
129
|
-
return __awaiter(this, arguments, void 0, function* (tokenId, callback = null) {
|
|
224
|
+
return __awaiter(this, arguments, void 0, function* (tokenId, callback = null, overrideFunc = null) {
|
|
130
225
|
(0, utils_1.genericGuard)(tokenId, "string", "tokenId");
|
|
131
226
|
let url = `${this.baseUrl}/refreshBalanceForTokenId`;
|
|
132
|
-
let response = yield (0, utils_1.fetchData)(url, this.apiKey, 'POST', { tokenId });
|
|
227
|
+
let response = overrideFunc ? yield overrideFunc(this.apiKey, { tokenId }) : yield (0, utils_1.fetchData)(url, this.apiKey, 'POST', { tokenId });
|
|
133
228
|
if (callback) {
|
|
134
229
|
callback(`Refreshed ownership for`, tokenId);
|
|
135
230
|
}
|
|
@@ -137,10 +232,10 @@ class EmblemVaultSDK {
|
|
|
137
232
|
});
|
|
138
233
|
}
|
|
139
234
|
refreshOwnershipForAccount(account_1) {
|
|
140
|
-
return __awaiter(this, arguments, void 0, function* (account, callback = null) {
|
|
235
|
+
return __awaiter(this, arguments, void 0, function* (account, callback = null, overrideFunc = null) {
|
|
141
236
|
(0, utils_1.genericGuard)(account, "string", "account");
|
|
142
237
|
let url = `${this.baseUrl}/refreshBalanceForAccount`;
|
|
143
|
-
let response = yield (0, utils_1.fetchData)(url, this.apiKey, 'POST', { account });
|
|
238
|
+
let response = overrideFunc ? yield overrideFunc(this.apiKey, { account }) : yield (0, utils_1.fetchData)(url, this.apiKey, 'POST', { account });
|
|
144
239
|
if (callback) {
|
|
145
240
|
callback(`Refreshed ownership for`, account);
|
|
146
241
|
}
|
|
@@ -148,13 +243,13 @@ class EmblemVaultSDK {
|
|
|
148
243
|
});
|
|
149
244
|
}
|
|
150
245
|
fetchMetadata(tokenId_1) {
|
|
151
|
-
return __awaiter(this, arguments, void 0, function* (tokenId, callback = null) {
|
|
246
|
+
return __awaiter(this, arguments, void 0, function* (tokenId, callback = null, overrideFunc = null) {
|
|
152
247
|
(0, utils_1.genericGuard)(tokenId, "string", "tokenId");
|
|
153
248
|
if (callback) {
|
|
154
249
|
callback('getting Metadata');
|
|
155
250
|
}
|
|
156
251
|
let url = `${this.baseUrl}/meta/${tokenId}`;
|
|
157
|
-
let metadata = yield (0, utils_1.fetchData)(url, this.apiKey);
|
|
252
|
+
let metadata = overrideFunc ? yield overrideFunc(this.apiKey, { tokenId }) : yield (0, utils_1.fetchData)(url, this.apiKey);
|
|
158
253
|
if (callback) {
|
|
159
254
|
callback('received Metadata', metadata.tokenId);
|
|
160
255
|
}
|
|
@@ -162,41 +257,41 @@ class EmblemVaultSDK {
|
|
|
162
257
|
});
|
|
163
258
|
}
|
|
164
259
|
refreshBalance(tokenId_1) {
|
|
165
|
-
return __awaiter(this, arguments, void 0, function* (tokenId, callback = null) {
|
|
260
|
+
return __awaiter(this, arguments, void 0, function* (tokenId, callback = null, overrideFunc = null) {
|
|
166
261
|
(0, utils_1.genericGuard)(tokenId, "string", "tokenId");
|
|
167
262
|
if (callback) {
|
|
168
263
|
callback('refreshing Balance');
|
|
169
264
|
}
|
|
170
265
|
let url = `${this.v3Url}/vault/balance/${tokenId}?live=true`;
|
|
171
|
-
let balance = yield (0, utils_1.fetchData)(url, this.apiKey);
|
|
266
|
+
let balance = overrideFunc ? yield overrideFunc(this.apiKey, { tokenId }) : yield (0, utils_1.fetchData)(url, this.apiKey);
|
|
172
267
|
if (callback) {
|
|
173
|
-
callback('received Balance', balance.
|
|
268
|
+
callback('received Balance', balance.values);
|
|
174
269
|
}
|
|
175
|
-
return (balance === null || balance === void 0 ? void 0 : balance.
|
|
270
|
+
return (balance === null || balance === void 0 ? void 0 : balance.values) || [];
|
|
176
271
|
});
|
|
177
272
|
}
|
|
178
|
-
fetchVaultsOfType(
|
|
179
|
-
return __awaiter(this,
|
|
273
|
+
fetchVaultsOfType(vaultType_1, address_1) {
|
|
274
|
+
return __awaiter(this, arguments, void 0, function* (vaultType, address, overrideFunc = null) {
|
|
180
275
|
(0, utils_1.genericGuard)(vaultType, "string", "vaultType");
|
|
181
276
|
(0, utils_1.genericGuard)(address, "string", "address");
|
|
182
277
|
let url = `${this.baseUrl}/myvaults/${address}?vaultType=${vaultType}`;
|
|
183
|
-
let vaults = yield (0, utils_1.fetchData)(url, this.apiKey);
|
|
278
|
+
let vaults = overrideFunc ? yield overrideFunc(this.apiKey, { vaultType, address }) : yield (0, utils_1.fetchData)(url, this.apiKey);
|
|
184
279
|
return vaults;
|
|
185
280
|
});
|
|
186
281
|
}
|
|
187
282
|
generateJumpReport(address_1) {
|
|
188
|
-
return __awaiter(this, arguments, void 0, function* (address, hideUnMintable = false) {
|
|
283
|
+
return __awaiter(this, arguments, void 0, function* (address, hideUnMintable = false, overrideFunc = null) {
|
|
189
284
|
let vaultType = "unclaimed";
|
|
190
285
|
let curated = yield this.fetchCuratedContracts();
|
|
191
286
|
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
192
287
|
try {
|
|
193
288
|
let map = {};
|
|
194
|
-
let vaults = yield this.fetchVaultsOfType(vaultType, address);
|
|
289
|
+
let vaults = overrideFunc ? yield overrideFunc('vaults_of_type', this.apiKey, { vaultType, address }) : yield this.fetchVaultsOfType(vaultType, address);
|
|
195
290
|
for (let vaultIndex = 0; vaultIndex < vaults.length; vaultIndex++) {
|
|
196
291
|
let item = vaults[vaultIndex];
|
|
197
292
|
let balances = item.ownership.balances || [];
|
|
198
293
|
if (item.targetContract) {
|
|
199
|
-
let vaultTargetContract = yield this.fetchCuratedContractByName(item.targetContract.name, curated);
|
|
294
|
+
let vaultTargetContract = overrideFunc ? yield overrideFunc('curated_contract_by_name', this.apiKey, { name: item.targetContract.name }) : yield this.fetchCuratedContractByName(item.targetContract.name, curated);
|
|
200
295
|
let to = [];
|
|
201
296
|
for (let contractIndex = 0; contractIndex < curated.length; contractIndex++) {
|
|
202
297
|
let contract = curated[contractIndex];
|
|
@@ -224,15 +319,15 @@ class EmblemVaultSDK {
|
|
|
224
319
|
});
|
|
225
320
|
}
|
|
226
321
|
generateMintReport(address_1) {
|
|
227
|
-
return __awaiter(this, arguments, void 0, function* (address, hideUnMintable = false) {
|
|
228
|
-
let vaults = yield this.fetchVaultsOfType("created", address);
|
|
322
|
+
return __awaiter(this, arguments, void 0, function* (address, hideUnMintable = false, overrideFunc = null) {
|
|
323
|
+
let vaults = yield this.fetchVaultsOfType("created", address, overrideFunc);
|
|
229
324
|
let curated = yield this.fetchCuratedContracts();
|
|
230
325
|
let map = {};
|
|
231
326
|
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
232
327
|
try {
|
|
233
328
|
vaults.forEach((vault) => __awaiter(this, void 0, void 0, function* () {
|
|
234
329
|
if (vault.targetContract) {
|
|
235
|
-
let targetVault = yield this.fetchCuratedContractByName(vault.targetContract.name, curated);
|
|
330
|
+
let targetVault = overrideFunc ? yield overrideFunc(this.apiKey, { name: vault.targetContract.name }) : yield this.fetchCuratedContractByName(vault.targetContract.name, curated);
|
|
236
331
|
let balance = vault.balances && vault.balances.length > 0 ? vault.balances : vault.ownership && vault.ownership.balances && vault.ownership.balances.length > 0 ? vault.ownership.balances : [];
|
|
237
332
|
let allowed = targetVault.allowed(balance, targetVault);
|
|
238
333
|
if (allowed || !hideUnMintable) {
|
|
@@ -256,18 +351,18 @@ class EmblemVaultSDK {
|
|
|
256
351
|
});
|
|
257
352
|
}
|
|
258
353
|
generateMigrateReport(address_1) {
|
|
259
|
-
return __awaiter(this, arguments, void 0, function* (address, hideUnMintable = false) {
|
|
354
|
+
return __awaiter(this, arguments, void 0, function* (address, hideUnMintable = false, overrideFunc = null) {
|
|
260
355
|
let vaultType = "unclaimed";
|
|
261
356
|
let curated = yield this.fetchCuratedContracts();
|
|
262
357
|
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
263
358
|
try {
|
|
264
359
|
let map = {};
|
|
265
|
-
let vaults = yield this.fetchVaultsOfType(vaultType, address);
|
|
360
|
+
let vaults = overrideFunc ? yield overrideFunc(this.apiKey, { vaultType, address }) : yield this.fetchVaultsOfType(vaultType, address);
|
|
266
361
|
for (let vaultIndex = 0; vaultIndex < vaults.length; vaultIndex++) {
|
|
267
362
|
let item = vaults[vaultIndex];
|
|
268
363
|
let balances = item.ownership.balances || [];
|
|
269
364
|
if (!item.targetContract) {
|
|
270
|
-
// let vaultTargetContract: any = await this.fetchCuratedContractByName(item.targetContract.name
|
|
365
|
+
// let vaultTargetContract: any = await this.fetchCuratedContractByName(item.targetContract.name);
|
|
271
366
|
let to = [];
|
|
272
367
|
for (let contractIndex = 0; contractIndex < curated.length; contractIndex++) {
|
|
273
368
|
let contract = curated[contractIndex];
|
|
@@ -300,39 +395,49 @@ class EmblemVaultSDK {
|
|
|
300
395
|
loadWeb3() {
|
|
301
396
|
return __awaiter(this, void 0, void 0, function* () {
|
|
302
397
|
try {
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
yield window.ethereum.request({ method: 'eth_requestAccounts' });
|
|
308
|
-
// Initialize Web3 with MetaMask's provider
|
|
309
|
-
const web3 = new Web3(window.ethereum);
|
|
310
|
-
// Attach Web3 to the window object
|
|
311
|
-
window.web3 = web3;
|
|
312
|
-
return web3;
|
|
313
|
-
}
|
|
314
|
-
else {
|
|
315
|
-
console.error('MetaMask is not installed!');
|
|
316
|
-
return undefined;
|
|
398
|
+
const provider = yield this.getOrDetectProvider('ethereum');
|
|
399
|
+
// Check if it's our adapter and return the raw Web3 instance
|
|
400
|
+
if (provider instanceof providers_1.Web3ProviderAdapter) {
|
|
401
|
+
return provider.getRawWeb3();
|
|
317
402
|
}
|
|
403
|
+
// If it's a generic EIP-1193 provider, we might need to wrap it if direct Web3 usage is required
|
|
404
|
+
// For now, let's assume the adapter covers the primary case (MetaMask)
|
|
405
|
+
console.warn('loadWeb3: Detected Ethereum provider is not a Web3 instance. Returning the provider object itself.');
|
|
406
|
+
return provider;
|
|
318
407
|
}
|
|
319
408
|
catch (error) {
|
|
320
|
-
console.error('
|
|
409
|
+
console.error('Could not load or detect Ethereum provider:', error);
|
|
321
410
|
return undefined;
|
|
322
411
|
}
|
|
323
412
|
});
|
|
324
413
|
}
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
414
|
+
/**
|
|
415
|
+
* Performs a mint operation on the blockchain.
|
|
416
|
+
* @param web3 - The web3 instance to use for the transaction.
|
|
417
|
+
* @param tokenId - The ID of the token to mint.
|
|
418
|
+
* @param callback - Optional callback function to handle the transaction.
|
|
419
|
+
* @returns A promise that resolves to the mint response.
|
|
420
|
+
* @deprecated Use `performMintHelper` instead.
|
|
421
|
+
*/
|
|
422
|
+
performMintChain(web3_1, tokenId_1) {
|
|
423
|
+
return __awaiter(this, arguments, void 0, function* (web3, tokenId, callback = null) {
|
|
328
424
|
let mintRequestSig = yield this.requestLocalMintSignature(web3, tokenId, callback);
|
|
329
425
|
let remoteMintSig = yield this.requestRemoteMintSignature(web3, tokenId, mintRequestSig, callback);
|
|
330
|
-
let
|
|
331
|
-
let ethToSend = quote.mul(bignumber_1.BigNumber.from(10).pow(6));
|
|
332
|
-
let mintResponse = yield this.performMint(web3, ethToSend, remoteMintSig, callback);
|
|
426
|
+
let mintResponse = yield this.performMint(web3, remoteMintSig, callback);
|
|
333
427
|
return { mintResponse };
|
|
334
428
|
});
|
|
335
429
|
}
|
|
430
|
+
/**
|
|
431
|
+
* Stub for new mint chain helper
|
|
432
|
+
* @param amount - The amount of tokens to mint.
|
|
433
|
+
* @param callback - Optional callback function to handle the transaction.
|
|
434
|
+
* @returns A promise that resolves to the mint response.
|
|
435
|
+
*/
|
|
436
|
+
performMintHelper(amount, callback) {
|
|
437
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
438
|
+
throw new Error('Not implemented');
|
|
439
|
+
});
|
|
440
|
+
}
|
|
336
441
|
performClaimChain(web3_1, tokenId_1, serialNumber_1) {
|
|
337
442
|
return __awaiter(this, arguments, void 0, function* (web3, tokenId, serialNumber, callback = null) {
|
|
338
443
|
let sig = yield this.requestLocalClaimSignature(web3, tokenId, serialNumber, callback);
|
|
@@ -341,6 +446,14 @@ class EmblemVaultSDK {
|
|
|
341
446
|
return yield this.decryptVaultKeys(tokenId, dkeys, callback);
|
|
342
447
|
});
|
|
343
448
|
}
|
|
449
|
+
/**
|
|
450
|
+
* Stub for new mint signature request
|
|
451
|
+
* @param web3 - The web3 instance to use for the transaction.
|
|
452
|
+
* @param tokenId - The ID of the token to mint.
|
|
453
|
+
* @param callback - Optional callback function to handle the transaction.
|
|
454
|
+
* @returns A promise that resolves to the mint signature.
|
|
455
|
+
* @deprecated Use `requestV3LocalMintSignature` instead.
|
|
456
|
+
*/
|
|
344
457
|
requestLocalMintSignature(web3_1, tokenId_1) {
|
|
345
458
|
return __awaiter(this, arguments, void 0, function* (web3, tokenId, callback = null) {
|
|
346
459
|
if (callback) {
|
|
@@ -355,28 +468,51 @@ class EmblemVaultSDK {
|
|
|
355
468
|
return signature;
|
|
356
469
|
});
|
|
357
470
|
}
|
|
358
|
-
|
|
359
|
-
|
|
471
|
+
/**
|
|
472
|
+
* Requests a signature for a curated minting operation. (ONLY ETHEREUM FOR NOW)
|
|
473
|
+
* @param tokenId - The ID of the token to mint.
|
|
474
|
+
* @param callback - Optional callback function to handle the transaction.
|
|
475
|
+
* @param overrideFunc - Optional function to override the default behavior.
|
|
476
|
+
* @returns A promise that resolves to the mint signature.
|
|
477
|
+
*/
|
|
478
|
+
requestV3LocalMintSignature(tokenId_1) {
|
|
479
|
+
return __awaiter(this, arguments, void 0, function* (tokenId, callback = null, overrideFunc = null) {
|
|
360
480
|
if (callback) {
|
|
361
|
-
callback('requesting
|
|
481
|
+
callback('requesting Owner Mint Signature');
|
|
362
482
|
}
|
|
363
|
-
const
|
|
364
|
-
const
|
|
365
|
-
const
|
|
483
|
+
const provider = yield this.getOrDetectProvider('ethereum');
|
|
484
|
+
const rawBlockNumber = yield provider.eth.getBlockNumber();
|
|
485
|
+
const blockNumber = Number(rawBlockNumber).toString();
|
|
486
|
+
const message = `Curated Minting: ${tokenId.toString()} \n\nat Block# ${blockNumber}`;
|
|
487
|
+
const account = yield this.getConnectedEthAccount();
|
|
488
|
+
if (!account) {
|
|
489
|
+
throw new Error('No connected wallet found');
|
|
490
|
+
}
|
|
491
|
+
const signature = overrideFunc ? yield overrideFunc(message, account) : yield provider.eth.personal.sign(message, account, callback ? callback : '');
|
|
366
492
|
if (callback) {
|
|
367
493
|
callback(`signature`, signature);
|
|
368
494
|
}
|
|
369
|
-
return signature;
|
|
495
|
+
return { message, signature };
|
|
370
496
|
});
|
|
371
497
|
}
|
|
498
|
+
/**
|
|
499
|
+
* Requests a signature for a curated minting operation. (ONLY ETHEREUM FOR NOW)
|
|
500
|
+
* @param tokenId - The ID of the token to mint.
|
|
501
|
+
* @param signature - The signature for the curated minting operation.
|
|
502
|
+
* @param callback - Optional callback function to handle the transaction.
|
|
503
|
+
* @param overrideFunc - Optional function to override the default behavior.
|
|
504
|
+
* @returns A promise that resolves to the remote mint signature.
|
|
505
|
+
* @deprecated Use `requestV3RemoteMintSignature` instead.
|
|
506
|
+
*/
|
|
372
507
|
requestRemoteMintSignature(web3_1, tokenId_1, signature_1) {
|
|
373
|
-
return __awaiter(this, arguments, void 0, function* (web3, tokenId, signature, callback = null) {
|
|
508
|
+
return __awaiter(this, arguments, void 0, function* (web3, tokenId, signature, callback = null, overrideFunc = null) {
|
|
374
509
|
if (callback) {
|
|
375
510
|
callback('requesting Remote Mint signature');
|
|
376
511
|
}
|
|
377
512
|
const chainId = yield web3.eth.getChainId();
|
|
378
513
|
let url = `${this.baseUrl}/mint-curated`;
|
|
379
|
-
let
|
|
514
|
+
let mintRequestBody = { method: 'buyWithSignedPrice', tokenId: tokenId, signature: signature, chainId: chainId.toString() };
|
|
515
|
+
let remoteMintResponse = overrideFunc ? yield overrideFunc(url, this.apiKey, 'POST', mintRequestBody) : yield (0, utils_1.fetchData)(url, this.apiKey, 'POST', mintRequestBody);
|
|
380
516
|
if (remoteMintResponse.error) {
|
|
381
517
|
throw new Error(remoteMintResponse.error);
|
|
382
518
|
}
|
|
@@ -386,14 +522,54 @@ class EmblemVaultSDK {
|
|
|
386
522
|
return remoteMintResponse;
|
|
387
523
|
});
|
|
388
524
|
}
|
|
525
|
+
/**
|
|
526
|
+
* Requests a signature for a curated minting operation. (ONLY ETHEREUM FOR NOW)
|
|
527
|
+
* @param tokenId - The ID of the token to mint.
|
|
528
|
+
* @param signature - The signature for the curated minting operation.
|
|
529
|
+
* @param callback - Optional callback function to handle the transaction.
|
|
530
|
+
* @param overrideFunc - Optional function to override the default behavior.
|
|
531
|
+
* @returns A promise that resolves to the remote mint signature.
|
|
532
|
+
*/
|
|
533
|
+
requestV3RemoteMintSignature(tokenId_1, signature_1) {
|
|
534
|
+
return __awaiter(this, arguments, void 0, function* (tokenId, signature, callback = null, overrideFunc = null) {
|
|
535
|
+
if (callback) {
|
|
536
|
+
callback('requesting Remote Mint signature');
|
|
537
|
+
}
|
|
538
|
+
const chainId = (yield this.getOrDetectProvider('ethereum')).eth.getChainId();
|
|
539
|
+
let url = `${this.baseUrl}/mint-curated`;
|
|
540
|
+
const mintRequestBody = { method: 'buyWithSignedPrice', tokenId: tokenId, signature: signature, chainId: chainId.toString(), enhanced: true };
|
|
541
|
+
let remoteMintResponse = overrideFunc ? yield overrideFunc(url, this.apiKey, 'POST', mintRequestBody) : yield (0, utils_1.fetchData)(url, this.apiKey, 'POST', mintRequestBody);
|
|
542
|
+
if (remoteMintResponse.error) {
|
|
543
|
+
throw new Error(remoteMintResponse.error);
|
|
544
|
+
}
|
|
545
|
+
if (callback) {
|
|
546
|
+
callback(`remote Mint signature`, remoteMintResponse);
|
|
547
|
+
}
|
|
548
|
+
return remoteMintResponse;
|
|
549
|
+
});
|
|
550
|
+
}
|
|
551
|
+
requestLocalClaimSignature(web3_1, tokenId_1, serialNumber_1) {
|
|
552
|
+
return __awaiter(this, arguments, void 0, function* (web3, tokenId, serialNumber, callback = null) {
|
|
553
|
+
if (callback) {
|
|
554
|
+
callback('requesting User Claim Signature');
|
|
555
|
+
}
|
|
556
|
+
const message = `Claim: ${serialNumber ? serialNumber.toString() : tokenId.toString()}`;
|
|
557
|
+
const accounts = yield web3.eth.getAccounts();
|
|
558
|
+
const signature = yield web3.eth.personal.sign(message, accounts[0], '');
|
|
559
|
+
if (callback) {
|
|
560
|
+
callback(`signature`, signature);
|
|
561
|
+
}
|
|
562
|
+
return signature;
|
|
563
|
+
});
|
|
564
|
+
}
|
|
389
565
|
requestRemoteClaimToken(web3_1, tokenId_1, signature_1) {
|
|
390
|
-
return __awaiter(this, arguments, void 0, function* (web3, tokenId, signature, callback = null) {
|
|
566
|
+
return __awaiter(this, arguments, void 0, function* (web3, tokenId, signature, callback = null, overrideFunc = null) {
|
|
391
567
|
if (callback) {
|
|
392
568
|
callback('requesting Remote Claim token');
|
|
393
569
|
}
|
|
394
570
|
const chainId = yield web3.eth.getChainId();
|
|
395
571
|
let url = `${this.sigUrl}/sign`;
|
|
396
|
-
let remoteClaimResponse = yield (0, utils_1.fetchData)(url, this.apiKey, 'POST', { signature: signature, tokenId: tokenId }, { chainid: chainId.toString() });
|
|
572
|
+
let remoteClaimResponse = overrideFunc ? yield overrideFunc(this.apiKey, { signature: signature, tokenId: tokenId, chainid: chainId.toString() }) : yield (0, utils_1.fetchData)(url, this.apiKey, 'POST', { signature: signature, tokenId: tokenId }, { chainid: chainId.toString() });
|
|
397
573
|
if (callback) {
|
|
398
574
|
callback(`remote Claim token`, remoteClaimResponse);
|
|
399
575
|
}
|
|
@@ -401,11 +577,11 @@ class EmblemVaultSDK {
|
|
|
401
577
|
});
|
|
402
578
|
}
|
|
403
579
|
requestRemoteKey(tokenId_1, jwt_1) {
|
|
404
|
-
return __awaiter(this, arguments, void 0, function* (tokenId, jwt, callback = null) {
|
|
580
|
+
return __awaiter(this, arguments, void 0, function* (tokenId, jwt, callback = null, overrideFunc = null) {
|
|
405
581
|
if (callback) {
|
|
406
582
|
callback('requesting Remote Key');
|
|
407
583
|
}
|
|
408
|
-
let dkeys = yield (0, utils_1.getTorusKeys)(tokenId, jwt.token);
|
|
584
|
+
let dkeys = overrideFunc ? yield overrideFunc(this.apiKey, { tokenId: tokenId, jwt: jwt.token }) : yield (0, utils_1.getTorusKeys)(tokenId, jwt.token);
|
|
409
585
|
if (callback) {
|
|
410
586
|
callback(`remote Key`, dkeys);
|
|
411
587
|
}
|
|
@@ -413,11 +589,11 @@ class EmblemVaultSDK {
|
|
|
413
589
|
});
|
|
414
590
|
}
|
|
415
591
|
decryptVaultKeys(tokenId_1, dkeys_1) {
|
|
416
|
-
return __awaiter(this, arguments, void 0, function* (tokenId, dkeys, callback = null) {
|
|
592
|
+
return __awaiter(this, arguments, void 0, function* (tokenId, dkeys, callback = null, overrideFunc = null) {
|
|
417
593
|
if (callback) {
|
|
418
594
|
callback('decrypting Vault Keys');
|
|
419
595
|
}
|
|
420
|
-
let metadata = yield this.fetchMetadata(tokenId);
|
|
596
|
+
let metadata = overrideFunc ? yield overrideFunc(this.apiKey, { tokenId: tokenId }) : yield this.fetchMetadata(tokenId);
|
|
421
597
|
let ukeys = yield (0, utils_1.decryptKeys)(metadata.ciphertextV2, dkeys, metadata.addresses);
|
|
422
598
|
if (callback) {
|
|
423
599
|
callback(`remote Key`, ukeys);
|
|
@@ -425,6 +601,33 @@ class EmblemVaultSDK {
|
|
|
425
601
|
return ukeys;
|
|
426
602
|
});
|
|
427
603
|
}
|
|
604
|
+
recoverSignerFromMessage(message_1, signature_1) {
|
|
605
|
+
return __awaiter(this, arguments, void 0, function* (message, signature, overrideFunc = null) {
|
|
606
|
+
const provider = yield this.getOrDetectProvider('ethereum');
|
|
607
|
+
return overrideFunc ? yield overrideFunc(message, signature) : yield provider.eth.personal.recover(message, signature);
|
|
608
|
+
});
|
|
609
|
+
}
|
|
610
|
+
/**
|
|
611
|
+
* ** Emblem Vault AI **
|
|
612
|
+
*
|
|
613
|
+
* Be sure to allow api key requests, or api_key_hash and auth sig (wallet, socialAuth, oAuth)
|
|
614
|
+
* Here we will begin using the aiApiKey and the aiUrl to communicate with the ai vault system
|
|
615
|
+
*
|
|
616
|
+
*/
|
|
617
|
+
vaultInfoFromApiKey(aiApiKey_1, full_1) {
|
|
618
|
+
return __awaiter(this, arguments, void 0, function* (aiApiKey, full, overrideFunc = null) {
|
|
619
|
+
const url = `${this.aiUrl}/vault/${full ? 'info-complete' : 'info'}`;
|
|
620
|
+
const selectedKey = aiApiKey ? aiApiKey : this.aiApiKey ? this.aiApiKey : '';
|
|
621
|
+
const actionFunction = overrideFunc && typeof overrideFunc === 'function' ? overrideFunc : utils_1.fetchData;
|
|
622
|
+
const vaultDetails = yield actionFunction(url, selectedKey, 'POST', null);
|
|
623
|
+
// vaultDetails.computedEthAddress = ethers.utils.computeAddress(vaultDetails.pkp.pub_key.replace('0x',''));
|
|
624
|
+
return vaultDetails;
|
|
625
|
+
});
|
|
626
|
+
}
|
|
627
|
+
/**
|
|
628
|
+
* @deprecated This method is deprecated and will be removed in a future version.
|
|
629
|
+
* Please use alternative methods for price quotation.
|
|
630
|
+
*/
|
|
428
631
|
getQuote(web3_1, amount_1) {
|
|
429
632
|
return __awaiter(this, arguments, void 0, function* (web3, amount, callback = null) {
|
|
430
633
|
if (callback) {
|
|
@@ -439,8 +642,9 @@ class EmblemVaultSDK {
|
|
|
439
642
|
return quote;
|
|
440
643
|
});
|
|
441
644
|
}
|
|
442
|
-
|
|
443
|
-
|
|
645
|
+
// todo add contract overrides
|
|
646
|
+
performMint(web3_1, remoteMintSig_1) {
|
|
647
|
+
return __awaiter(this, arguments, void 0, function* (web3, remoteMintSig, callback = undefined) {
|
|
444
648
|
// async performMint(web3, quote, remoteMintSig, callback = null) {
|
|
445
649
|
if (callback) {
|
|
446
650
|
callback('performing Mint');
|
|
@@ -449,13 +653,13 @@ class EmblemVaultSDK {
|
|
|
449
653
|
let handlerContract = yield (0, utils_1.getHandlerContract)(web3);
|
|
450
654
|
// Get current gas price from the network
|
|
451
655
|
const gasPrice = yield web3.eth.getGasPrice();
|
|
452
|
-
let createdTxObject = handlerContract.methods.
|
|
656
|
+
let createdTxObject = handlerContract.methods.buyWithSignedPrice(remoteMintSig._nftAddress, '0x0000000000000000000000000000000000000000', remoteMintSig._price.hex, remoteMintSig._to, remoteMintSig._tokenId, remoteMintSig._nonce, remoteMintSig._signature, remoteMintSig.serialNumber, 1);
|
|
453
657
|
// Estimate gas limit for the transaction
|
|
454
|
-
const gasLimit = yield createdTxObject.estimateGas({ from: accounts[0], value:
|
|
658
|
+
const gasLimit = yield createdTxObject.estimateGas({ from: accounts[0], value: remoteMintSig._price.hex });
|
|
455
659
|
// Execute the transaction with the specified gas price and estimated gas limit
|
|
456
660
|
let mintResponse = yield createdTxObject.send({
|
|
457
661
|
from: accounts[0],
|
|
458
|
-
value:
|
|
662
|
+
value: remoteMintSig._price.hex,
|
|
459
663
|
gasPrice: gasPrice, // Use the current gas price
|
|
460
664
|
gas: gasLimit // Use the estimated gas limit
|
|
461
665
|
}).on('transactionHash', (hash) => {
|
|
@@ -655,7 +859,8 @@ class EmblemVaultSDK {
|
|
|
655
859
|
});
|
|
656
860
|
}
|
|
657
861
|
}
|
|
862
|
+
exports.EmblemVaultSDK = EmblemVaultSDK;
|
|
658
863
|
if (typeof window !== 'undefined') {
|
|
659
864
|
window.EmblemVaultSDK = EmblemVaultSDK;
|
|
660
865
|
}
|
|
661
|
-
|
|
866
|
+
//# sourceMappingURL=index.js.map
|