emblem-vault-sdk 2.3.6 → 3.0.1-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/rule-types.md +22 -0
- package/.traces/test-migration-status.md +227 -0
- package/.traces/tests-consolidated-trace.md +667 -0
- package/bun.lock +1713 -0
- package/dist/abi/abi.json +53 -0
- package/dist/bundle.js +30166 -25851
- 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 +335 -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 +71 -84
- package/dist/utils.js.map +1 -0
- package/docs/bundle.js +30166 -25851
- package/docs/index.html +150 -13
- package/docs/local.html +385 -0
- package/docs/steps.html +420 -53
- package/package.json +22 -12
- 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 +334 -102
- package/src/providers/ProviderManager.ts +254 -0
- package/src/providers.ts +163 -0
- package/src/types.ts +50 -0
- package/src/utils.ts +73 -91
- package/test/.mocharc.js +8 -0
- package/test/README.md +212 -0
- package/{tests → test}/fixtures/dogeparty/balance-with-non-dogeparty-first.json +2 -2
- package/test/fixtures/ethscriptions/balance-with-native-first.json +31 -0
- package/test/fixtures/ethscriptions/balance-with-native.json +23 -0
- package/test/fixtures/ethscriptions/balance.json +18 -0
- package/{tests → test}/fixtures/stamps/balance-with-non-stamps-first.json +9 -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/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 +154 -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.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.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,191 @@ 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.1-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);
|
|
66
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;
|
|
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
|
}
|
|
176
|
+
getBalanceCheckers() {
|
|
177
|
+
return __awaiter(this, arguments, void 0, function* (overrideFunc = null) {
|
|
178
|
+
let url = `${this.v3Url}/v3/balanceCheckers`;
|
|
179
|
+
const balanceCheckers = overrideFunc && typeof overrideFunc === 'function' ? overrideFunc(this.apiKey) : yield (0, utils_1.fetchData)(url, this.apiKey);
|
|
180
|
+
return balanceCheckers;
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
checkBalanceAtAddress(address_1, symbol_1) {
|
|
184
|
+
return __awaiter(this, arguments, void 0, function* (address, symbol, overrideFunc = null) {
|
|
185
|
+
let url = `${this.v3Url}/balance/${symbol}/${address}`;
|
|
186
|
+
const balance = overrideFunc && typeof overrideFunc === 'function' ? overrideFunc(this.apiKey) : yield (0, utils_1.fetchData)(url, this.apiKey);
|
|
187
|
+
return balance;
|
|
188
|
+
});
|
|
189
|
+
}
|
|
81
190
|
// ** Curated **
|
|
82
191
|
//
|
|
83
192
|
fetchCuratedContracts() {
|
|
84
|
-
return __awaiter(this, arguments, void 0, function* (hideUnMintable = false, overrideFunc =
|
|
193
|
+
return __awaiter(this, arguments, void 0, function* (hideUnMintable = false, overrideFunc = null) {
|
|
85
194
|
let url = `${this.baseUrl}/curated`;
|
|
86
195
|
// Fetch using URL or override function
|
|
87
|
-
let data =
|
|
196
|
+
let data = overrideFunc ? yield overrideFunc(this.apiKey) : yield (0, utils_1.fetchData)(url, this.apiKey);
|
|
88
197
|
// Filter out collections that are not mintable
|
|
89
198
|
data = hideUnMintable ? data.filter((collection) => collection.mintable) : data;
|
|
90
199
|
// Sort the data by the name property in ascending order
|
|
@@ -97,28 +206,28 @@ class EmblemVaultSDK {
|
|
|
97
206
|
item[key] = template[key];
|
|
98
207
|
});
|
|
99
208
|
// Return a new object that combines the properties of the item and the template
|
|
100
|
-
|
|
101
|
-
return item;
|
|
209
|
+
return Object.assign(Object.assign(Object.assign({}, item), template), { mintTemplate: template.generateCreateTemplate(item) });
|
|
210
|
+
// return item;
|
|
102
211
|
});
|
|
103
212
|
return data;
|
|
104
213
|
});
|
|
105
214
|
}
|
|
106
215
|
fetchCuratedContractByName(name_1) {
|
|
107
|
-
return __awaiter(this, arguments, void 0, function* (name, contracts = false) {
|
|
108
|
-
!contracts ? contracts = yield this.fetchCuratedContracts() : null;
|
|
216
|
+
return __awaiter(this, arguments, void 0, function* (name, contracts = false, overrideFunc = null) {
|
|
217
|
+
!contracts ? contracts = overrideFunc ? yield overrideFunc(this.apiKey, { name }) : yield this.fetchCuratedContracts() : null;
|
|
109
218
|
let contract = contracts.find((contract) => contract.name === name);
|
|
110
219
|
return contract || null;
|
|
111
220
|
});
|
|
112
221
|
}
|
|
113
222
|
createCuratedVault(template_1) {
|
|
114
|
-
return __awaiter(this, arguments, void 0, function* (template, callback = null) {
|
|
223
|
+
return __awaiter(this, arguments, void 0, function* (template, callback = null, overrideFunc = null) {
|
|
115
224
|
(0, utils_1.templateGuard)(template);
|
|
116
225
|
template.chainId == 1 ? delete template.targetContract[5] : delete template.targetContract[1];
|
|
117
226
|
let url = `${this.baseUrl}/create-curated`;
|
|
118
227
|
if (callback) {
|
|
119
228
|
callback(`creating Vault for user`, template.toAddress);
|
|
120
229
|
}
|
|
121
|
-
let vaultCreationResponse = yield (0, utils_1.fetchData)(url, this.apiKey, 'POST', template);
|
|
230
|
+
let vaultCreationResponse = overrideFunc ? yield overrideFunc(this.apiKey, template) : yield (0, utils_1.fetchData)(url, this.apiKey, 'POST', template);
|
|
122
231
|
if (callback) {
|
|
123
232
|
callback(`created Vault tokenId`, vaultCreationResponse.data.tokenId);
|
|
124
233
|
}
|
|
@@ -126,10 +235,10 @@ class EmblemVaultSDK {
|
|
|
126
235
|
});
|
|
127
236
|
}
|
|
128
237
|
refreshOwnershipForTokenId(tokenId_1) {
|
|
129
|
-
return __awaiter(this, arguments, void 0, function* (tokenId, callback = null) {
|
|
238
|
+
return __awaiter(this, arguments, void 0, function* (tokenId, callback = null, overrideFunc = null) {
|
|
130
239
|
(0, utils_1.genericGuard)(tokenId, "string", "tokenId");
|
|
131
240
|
let url = `${this.baseUrl}/refreshBalanceForTokenId`;
|
|
132
|
-
let response = yield (0, utils_1.fetchData)(url, this.apiKey, 'POST', { tokenId });
|
|
241
|
+
let response = overrideFunc ? yield overrideFunc(this.apiKey, { tokenId }) : yield (0, utils_1.fetchData)(url, this.apiKey, 'POST', { tokenId });
|
|
133
242
|
if (callback) {
|
|
134
243
|
callback(`Refreshed ownership for`, tokenId);
|
|
135
244
|
}
|
|
@@ -137,10 +246,10 @@ class EmblemVaultSDK {
|
|
|
137
246
|
});
|
|
138
247
|
}
|
|
139
248
|
refreshOwnershipForAccount(account_1) {
|
|
140
|
-
return __awaiter(this, arguments, void 0, function* (account, callback = null) {
|
|
249
|
+
return __awaiter(this, arguments, void 0, function* (account, callback = null, overrideFunc = null) {
|
|
141
250
|
(0, utils_1.genericGuard)(account, "string", "account");
|
|
142
251
|
let url = `${this.baseUrl}/refreshBalanceForAccount`;
|
|
143
|
-
let response = yield (0, utils_1.fetchData)(url, this.apiKey, 'POST', { account });
|
|
252
|
+
let response = overrideFunc ? yield overrideFunc(this.apiKey, { account }) : yield (0, utils_1.fetchData)(url, this.apiKey, 'POST', { account });
|
|
144
253
|
if (callback) {
|
|
145
254
|
callback(`Refreshed ownership for`, account);
|
|
146
255
|
}
|
|
@@ -148,13 +257,13 @@ class EmblemVaultSDK {
|
|
|
148
257
|
});
|
|
149
258
|
}
|
|
150
259
|
fetchMetadata(tokenId_1) {
|
|
151
|
-
return __awaiter(this, arguments, void 0, function* (tokenId, callback = null) {
|
|
260
|
+
return __awaiter(this, arguments, void 0, function* (tokenId, callback = null, overrideFunc = null) {
|
|
152
261
|
(0, utils_1.genericGuard)(tokenId, "string", "tokenId");
|
|
153
262
|
if (callback) {
|
|
154
263
|
callback('getting Metadata');
|
|
155
264
|
}
|
|
156
265
|
let url = `${this.baseUrl}/meta/${tokenId}`;
|
|
157
|
-
let metadata = yield (0, utils_1.fetchData)(url, this.apiKey);
|
|
266
|
+
let metadata = overrideFunc ? yield overrideFunc(this.apiKey, { tokenId }) : yield (0, utils_1.fetchData)(url, this.apiKey);
|
|
158
267
|
if (callback) {
|
|
159
268
|
callback('received Metadata', metadata.tokenId);
|
|
160
269
|
}
|
|
@@ -162,41 +271,41 @@ class EmblemVaultSDK {
|
|
|
162
271
|
});
|
|
163
272
|
}
|
|
164
273
|
refreshBalance(tokenId_1) {
|
|
165
|
-
return __awaiter(this, arguments, void 0, function* (tokenId, callback = null) {
|
|
274
|
+
return __awaiter(this, arguments, void 0, function* (tokenId, callback = null, overrideFunc = null) {
|
|
166
275
|
(0, utils_1.genericGuard)(tokenId, "string", "tokenId");
|
|
167
276
|
if (callback) {
|
|
168
277
|
callback('refreshing Balance');
|
|
169
278
|
}
|
|
170
279
|
let url = `${this.v3Url}/vault/balance/${tokenId}?live=true`;
|
|
171
|
-
let balance = yield (0, utils_1.fetchData)(url, this.apiKey);
|
|
280
|
+
let balance = overrideFunc ? yield overrideFunc(this.apiKey, { tokenId }) : yield (0, utils_1.fetchData)(url, this.apiKey);
|
|
172
281
|
if (callback) {
|
|
173
|
-
callback('received Balance', balance.
|
|
282
|
+
callback('received Balance', balance.values);
|
|
174
283
|
}
|
|
175
|
-
return (balance === null || balance === void 0 ? void 0 : balance.
|
|
284
|
+
return (balance === null || balance === void 0 ? void 0 : balance.values) || [];
|
|
176
285
|
});
|
|
177
286
|
}
|
|
178
|
-
fetchVaultsOfType(
|
|
179
|
-
return __awaiter(this,
|
|
287
|
+
fetchVaultsOfType(vaultType_1, address_1) {
|
|
288
|
+
return __awaiter(this, arguments, void 0, function* (vaultType, address, overrideFunc = null) {
|
|
180
289
|
(0, utils_1.genericGuard)(vaultType, "string", "vaultType");
|
|
181
290
|
(0, utils_1.genericGuard)(address, "string", "address");
|
|
182
291
|
let url = `${this.baseUrl}/myvaults/${address}?vaultType=${vaultType}`;
|
|
183
|
-
let vaults = yield (0, utils_1.fetchData)(url, this.apiKey);
|
|
292
|
+
let vaults = overrideFunc ? yield overrideFunc(this.apiKey, { vaultType, address }) : yield (0, utils_1.fetchData)(url, this.apiKey);
|
|
184
293
|
return vaults;
|
|
185
294
|
});
|
|
186
295
|
}
|
|
187
296
|
generateJumpReport(address_1) {
|
|
188
|
-
return __awaiter(this, arguments, void 0, function* (address, hideUnMintable = false) {
|
|
297
|
+
return __awaiter(this, arguments, void 0, function* (address, hideUnMintable = false, overrideFunc = null) {
|
|
189
298
|
let vaultType = "unclaimed";
|
|
190
299
|
let curated = yield this.fetchCuratedContracts();
|
|
191
300
|
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
192
301
|
try {
|
|
193
302
|
let map = {};
|
|
194
|
-
let vaults = yield this.fetchVaultsOfType(vaultType, address);
|
|
303
|
+
let vaults = overrideFunc ? yield overrideFunc('vaults_of_type', this.apiKey, { vaultType, address }) : yield this.fetchVaultsOfType(vaultType, address);
|
|
195
304
|
for (let vaultIndex = 0; vaultIndex < vaults.length; vaultIndex++) {
|
|
196
305
|
let item = vaults[vaultIndex];
|
|
197
306
|
let balances = item.ownership.balances || [];
|
|
198
307
|
if (item.targetContract) {
|
|
199
|
-
let vaultTargetContract = yield this.fetchCuratedContractByName(item.targetContract.name, curated);
|
|
308
|
+
let vaultTargetContract = overrideFunc ? yield overrideFunc('curated_contract_by_name', this.apiKey, { name: item.targetContract.name }) : yield this.fetchCuratedContractByName(item.targetContract.name, curated);
|
|
200
309
|
let to = [];
|
|
201
310
|
for (let contractIndex = 0; contractIndex < curated.length; contractIndex++) {
|
|
202
311
|
let contract = curated[contractIndex];
|
|
@@ -224,15 +333,15 @@ class EmblemVaultSDK {
|
|
|
224
333
|
});
|
|
225
334
|
}
|
|
226
335
|
generateMintReport(address_1) {
|
|
227
|
-
return __awaiter(this, arguments, void 0, function* (address, hideUnMintable = false) {
|
|
228
|
-
let vaults = yield this.fetchVaultsOfType("created", address);
|
|
336
|
+
return __awaiter(this, arguments, void 0, function* (address, hideUnMintable = false, overrideFunc = null) {
|
|
337
|
+
let vaults = yield this.fetchVaultsOfType("created", address, overrideFunc);
|
|
229
338
|
let curated = yield this.fetchCuratedContracts();
|
|
230
339
|
let map = {};
|
|
231
340
|
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
232
341
|
try {
|
|
233
342
|
vaults.forEach((vault) => __awaiter(this, void 0, void 0, function* () {
|
|
234
343
|
if (vault.targetContract) {
|
|
235
|
-
let targetVault = yield this.fetchCuratedContractByName(vault.targetContract.name, curated);
|
|
344
|
+
let targetVault = overrideFunc ? yield overrideFunc(this.apiKey, { name: vault.targetContract.name }) : yield this.fetchCuratedContractByName(vault.targetContract.name, curated);
|
|
236
345
|
let balance = vault.balances && vault.balances.length > 0 ? vault.balances : vault.ownership && vault.ownership.balances && vault.ownership.balances.length > 0 ? vault.ownership.balances : [];
|
|
237
346
|
let allowed = targetVault.allowed(balance, targetVault);
|
|
238
347
|
if (allowed || !hideUnMintable) {
|
|
@@ -256,18 +365,18 @@ class EmblemVaultSDK {
|
|
|
256
365
|
});
|
|
257
366
|
}
|
|
258
367
|
generateMigrateReport(address_1) {
|
|
259
|
-
return __awaiter(this, arguments, void 0, function* (address, hideUnMintable = false) {
|
|
368
|
+
return __awaiter(this, arguments, void 0, function* (address, hideUnMintable = false, overrideFunc = null) {
|
|
260
369
|
let vaultType = "unclaimed";
|
|
261
370
|
let curated = yield this.fetchCuratedContracts();
|
|
262
371
|
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
263
372
|
try {
|
|
264
373
|
let map = {};
|
|
265
|
-
let vaults = yield this.fetchVaultsOfType(vaultType, address);
|
|
374
|
+
let vaults = overrideFunc ? yield overrideFunc(this.apiKey, { vaultType, address }) : yield this.fetchVaultsOfType(vaultType, address);
|
|
266
375
|
for (let vaultIndex = 0; vaultIndex < vaults.length; vaultIndex++) {
|
|
267
376
|
let item = vaults[vaultIndex];
|
|
268
377
|
let balances = item.ownership.balances || [];
|
|
269
378
|
if (!item.targetContract) {
|
|
270
|
-
// let vaultTargetContract: any = await this.fetchCuratedContractByName(item.targetContract.name
|
|
379
|
+
// let vaultTargetContract: any = await this.fetchCuratedContractByName(item.targetContract.name);
|
|
271
380
|
let to = [];
|
|
272
381
|
for (let contractIndex = 0; contractIndex < curated.length; contractIndex++) {
|
|
273
382
|
let contract = curated[contractIndex];
|
|
@@ -300,39 +409,51 @@ class EmblemVaultSDK {
|
|
|
300
409
|
loadWeb3() {
|
|
301
410
|
return __awaiter(this, void 0, void 0, function* () {
|
|
302
411
|
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;
|
|
412
|
+
const provider = yield this.getOrDetectProvider('ethereum');
|
|
413
|
+
// Check if it's our adapter and return the raw Web3 instance
|
|
414
|
+
if (provider instanceof providers_1.Web3ProviderAdapter) {
|
|
415
|
+
return provider.getRawWeb3();
|
|
317
416
|
}
|
|
417
|
+
// If it's a generic EIP-1193 provider, we might need to wrap it if direct Web3 usage is required
|
|
418
|
+
// For now, let's assume the adapter covers the primary case (MetaMask)
|
|
419
|
+
console.warn('loadWeb3: Detected Ethereum provider is not a Web3 instance. Returning the provider object itself.');
|
|
420
|
+
return provider;
|
|
318
421
|
}
|
|
319
422
|
catch (error) {
|
|
320
|
-
console.error('
|
|
423
|
+
console.error('Could not load or detect Ethereum provider:', error);
|
|
321
424
|
return undefined;
|
|
322
425
|
}
|
|
323
426
|
});
|
|
324
427
|
}
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
428
|
+
/**
|
|
429
|
+
* Performs a mint operation on the blockchain.
|
|
430
|
+
* @param web3 - The web3 instance to use for the transaction.
|
|
431
|
+
* @param tokenId - The ID of the token to mint.
|
|
432
|
+
* @param callback - Optional callback function to handle the transaction.
|
|
433
|
+
* @returns A promise that resolves to the mint response.
|
|
434
|
+
* @deprecated Use `performMintHelper` instead.
|
|
435
|
+
*/
|
|
436
|
+
performMintChain(web3_1, tokenId_1) {
|
|
437
|
+
return __awaiter(this, arguments, void 0, function* (web3, tokenId, callback = null) {
|
|
328
438
|
let mintRequestSig = yield this.requestLocalMintSignature(web3, tokenId, callback);
|
|
329
439
|
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);
|
|
440
|
+
let mintResponse = yield this.performMint(web3, remoteMintSig, callback);
|
|
333
441
|
return { mintResponse };
|
|
334
442
|
});
|
|
335
443
|
}
|
|
444
|
+
/**
|
|
445
|
+
* Stub for new mint chain helper
|
|
446
|
+
* @param amount - The amount of tokens to mint.
|
|
447
|
+
* @param callback - Optional callback function to handle the transaction.
|
|
448
|
+
* @returns A promise that resolves to the mint response.
|
|
449
|
+
*/
|
|
450
|
+
performMintHelper(amount, callback) {
|
|
451
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
452
|
+
const v3LocalMintSignature = yield this.requestV3LocalMintSignature(amount.toString(), callback);
|
|
453
|
+
const v3RemoteMintSignature = yield this.requestV3RemoteMintSignature(v3LocalMintSignature.signature, callback);
|
|
454
|
+
return bignumber_1.BigNumber.from(v3RemoteMintSignature);
|
|
455
|
+
});
|
|
456
|
+
}
|
|
336
457
|
performClaimChain(web3_1, tokenId_1, serialNumber_1) {
|
|
337
458
|
return __awaiter(this, arguments, void 0, function* (web3, tokenId, serialNumber, callback = null) {
|
|
338
459
|
let sig = yield this.requestLocalClaimSignature(web3, tokenId, serialNumber, callback);
|
|
@@ -341,6 +462,14 @@ class EmblemVaultSDK {
|
|
|
341
462
|
return yield this.decryptVaultKeys(tokenId, dkeys, callback);
|
|
342
463
|
});
|
|
343
464
|
}
|
|
465
|
+
/**
|
|
466
|
+
* Stub for new mint signature request
|
|
467
|
+
* @param web3 - The web3 instance to use for the transaction.
|
|
468
|
+
* @param tokenId - The ID of the token to mint.
|
|
469
|
+
* @param callback - Optional callback function to handle the transaction.
|
|
470
|
+
* @returns A promise that resolves to the mint signature.
|
|
471
|
+
* @deprecated Use `requestV3LocalMintSignature` instead.
|
|
472
|
+
*/
|
|
344
473
|
requestLocalMintSignature(web3_1, tokenId_1) {
|
|
345
474
|
return __awaiter(this, arguments, void 0, function* (web3, tokenId, callback = null) {
|
|
346
475
|
if (callback) {
|
|
@@ -355,28 +484,51 @@ class EmblemVaultSDK {
|
|
|
355
484
|
return signature;
|
|
356
485
|
});
|
|
357
486
|
}
|
|
358
|
-
|
|
359
|
-
|
|
487
|
+
/**
|
|
488
|
+
* Requests a signature for a curated minting operation. (ONLY ETHEREUM FOR NOW)
|
|
489
|
+
* @param tokenId - The ID of the token to mint.
|
|
490
|
+
* @param callback - Optional callback function to handle the transaction.
|
|
491
|
+
* @param overrideFunc - Optional function to override the default behavior.
|
|
492
|
+
* @returns A promise that resolves to the mint signature.
|
|
493
|
+
*/
|
|
494
|
+
requestV3LocalMintSignature(tokenId_1) {
|
|
495
|
+
return __awaiter(this, arguments, void 0, function* (tokenId, callback = null, overrideFunc = null) {
|
|
360
496
|
if (callback) {
|
|
361
|
-
callback('requesting
|
|
497
|
+
callback('requesting Owner Mint Signature');
|
|
362
498
|
}
|
|
363
|
-
const
|
|
364
|
-
const
|
|
365
|
-
const
|
|
499
|
+
const provider = yield this.getOrDetectProvider('ethereum');
|
|
500
|
+
const rawBlockNumber = yield provider.eth.getBlockNumber();
|
|
501
|
+
const blockNumber = Number(rawBlockNumber).toString();
|
|
502
|
+
const message = `Curated Minting: ${tokenId.toString()} \n\nat Block# ${blockNumber}`;
|
|
503
|
+
const account = yield this.getConnectedEthAccount();
|
|
504
|
+
if (!account) {
|
|
505
|
+
throw new Error('No connected wallet found');
|
|
506
|
+
}
|
|
507
|
+
const signature = overrideFunc ? yield overrideFunc(message, account) : yield provider.eth.personal.sign(message, account, callback ? callback : '');
|
|
366
508
|
if (callback) {
|
|
367
509
|
callback(`signature`, signature);
|
|
368
510
|
}
|
|
369
|
-
return signature;
|
|
511
|
+
return { message, signature };
|
|
370
512
|
});
|
|
371
513
|
}
|
|
514
|
+
/**
|
|
515
|
+
* Requests a signature for a curated minting operation. (ONLY ETHEREUM FOR NOW)
|
|
516
|
+
* @param tokenId - The ID of the token to mint.
|
|
517
|
+
* @param signature - The signature for the curated minting operation.
|
|
518
|
+
* @param callback - Optional callback function to handle the transaction.
|
|
519
|
+
* @param overrideFunc - Optional function to override the default behavior.
|
|
520
|
+
* @returns A promise that resolves to the remote mint signature.
|
|
521
|
+
* @deprecated Use `requestV3RemoteMintSignature` instead.
|
|
522
|
+
*/
|
|
372
523
|
requestRemoteMintSignature(web3_1, tokenId_1, signature_1) {
|
|
373
|
-
return __awaiter(this, arguments, void 0, function* (web3, tokenId, signature, callback = null) {
|
|
524
|
+
return __awaiter(this, arguments, void 0, function* (web3, tokenId, signature, callback = null, overrideFunc = null) {
|
|
374
525
|
if (callback) {
|
|
375
526
|
callback('requesting Remote Mint signature');
|
|
376
527
|
}
|
|
377
528
|
const chainId = yield web3.eth.getChainId();
|
|
378
529
|
let url = `${this.baseUrl}/mint-curated`;
|
|
379
|
-
let
|
|
530
|
+
let mintRequestBody = { method: 'buyWithSignedPrice', tokenId: tokenId, signature: signature, chainId: chainId.toString() };
|
|
531
|
+
let remoteMintResponse = overrideFunc ? yield overrideFunc(url, this.apiKey, 'POST', mintRequestBody) : yield (0, utils_1.fetchData)(url, this.apiKey, 'POST', mintRequestBody);
|
|
380
532
|
if (remoteMintResponse.error) {
|
|
381
533
|
throw new Error(remoteMintResponse.error);
|
|
382
534
|
}
|
|
@@ -386,14 +538,54 @@ class EmblemVaultSDK {
|
|
|
386
538
|
return remoteMintResponse;
|
|
387
539
|
});
|
|
388
540
|
}
|
|
541
|
+
/**
|
|
542
|
+
* Requests a signature for a curated minting operation. (ONLY ETHEREUM FOR NOW)
|
|
543
|
+
* @param tokenId - The ID of the token to mint.
|
|
544
|
+
* @param signature - The signature for the curated minting operation.
|
|
545
|
+
* @param callback - Optional callback function to handle the transaction.
|
|
546
|
+
* @param overrideFunc - Optional function to override the default behavior.
|
|
547
|
+
* @returns A promise that resolves to the remote mint signature.
|
|
548
|
+
*/
|
|
549
|
+
requestV3RemoteMintSignature(tokenId_1, signature_1) {
|
|
550
|
+
return __awaiter(this, arguments, void 0, function* (tokenId, signature, callback = null, overrideFunc = null) {
|
|
551
|
+
if (callback) {
|
|
552
|
+
callback('requesting Remote Mint signature');
|
|
553
|
+
}
|
|
554
|
+
const chainId = (yield this.getOrDetectProvider('ethereum')).eth.getChainId();
|
|
555
|
+
let url = `${this.baseUrl}/mint-curated`;
|
|
556
|
+
const mintRequestBody = { method: 'buyWithSignedPrice', tokenId: tokenId, signature: signature, chainId: chainId.toString(), enhanced: true };
|
|
557
|
+
let remoteMintResponse = overrideFunc ? yield overrideFunc(url, this.apiKey, 'POST', mintRequestBody) : yield (0, utils_1.fetchData)(url, this.apiKey, 'POST', mintRequestBody);
|
|
558
|
+
if (remoteMintResponse.error) {
|
|
559
|
+
throw new Error(remoteMintResponse.error);
|
|
560
|
+
}
|
|
561
|
+
if (callback) {
|
|
562
|
+
callback(`remote Mint signature`, remoteMintResponse);
|
|
563
|
+
}
|
|
564
|
+
return remoteMintResponse;
|
|
565
|
+
});
|
|
566
|
+
}
|
|
567
|
+
requestLocalClaimSignature(web3_1, tokenId_1, serialNumber_1) {
|
|
568
|
+
return __awaiter(this, arguments, void 0, function* (web3, tokenId, serialNumber, callback = null) {
|
|
569
|
+
if (callback) {
|
|
570
|
+
callback('requesting User Claim Signature');
|
|
571
|
+
}
|
|
572
|
+
const message = `Claim: ${serialNumber ? serialNumber.toString() : tokenId.toString()}`;
|
|
573
|
+
const accounts = yield web3.eth.getAccounts();
|
|
574
|
+
const signature = yield web3.eth.personal.sign(message, accounts[0], '');
|
|
575
|
+
if (callback) {
|
|
576
|
+
callback(`signature`, signature);
|
|
577
|
+
}
|
|
578
|
+
return signature;
|
|
579
|
+
});
|
|
580
|
+
}
|
|
389
581
|
requestRemoteClaimToken(web3_1, tokenId_1, signature_1) {
|
|
390
|
-
return __awaiter(this, arguments, void 0, function* (web3, tokenId, signature, callback = null) {
|
|
582
|
+
return __awaiter(this, arguments, void 0, function* (web3, tokenId, signature, callback = null, overrideFunc = null) {
|
|
391
583
|
if (callback) {
|
|
392
584
|
callback('requesting Remote Claim token');
|
|
393
585
|
}
|
|
394
586
|
const chainId = yield web3.eth.getChainId();
|
|
395
587
|
let url = `${this.sigUrl}/sign`;
|
|
396
|
-
let remoteClaimResponse = yield (0, utils_1.fetchData)(url, this.apiKey, 'POST', { signature: signature, tokenId: tokenId }, { chainid: chainId.toString() });
|
|
588
|
+
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
589
|
if (callback) {
|
|
398
590
|
callback(`remote Claim token`, remoteClaimResponse);
|
|
399
591
|
}
|
|
@@ -401,11 +593,11 @@ class EmblemVaultSDK {
|
|
|
401
593
|
});
|
|
402
594
|
}
|
|
403
595
|
requestRemoteKey(tokenId_1, jwt_1) {
|
|
404
|
-
return __awaiter(this, arguments, void 0, function* (tokenId, jwt, callback = null) {
|
|
596
|
+
return __awaiter(this, arguments, void 0, function* (tokenId, jwt, callback = null, overrideFunc = null) {
|
|
405
597
|
if (callback) {
|
|
406
598
|
callback('requesting Remote Key');
|
|
407
599
|
}
|
|
408
|
-
let dkeys = yield (0, utils_1.getTorusKeys)(tokenId, jwt.token);
|
|
600
|
+
let dkeys = overrideFunc ? yield overrideFunc(this.apiKey, { tokenId: tokenId, jwt: jwt.token }) : yield (0, utils_1.getTorusKeys)(tokenId, jwt.token);
|
|
409
601
|
if (callback) {
|
|
410
602
|
callback(`remote Key`, dkeys);
|
|
411
603
|
}
|
|
@@ -413,11 +605,11 @@ class EmblemVaultSDK {
|
|
|
413
605
|
});
|
|
414
606
|
}
|
|
415
607
|
decryptVaultKeys(tokenId_1, dkeys_1) {
|
|
416
|
-
return __awaiter(this, arguments, void 0, function* (tokenId, dkeys, callback = null) {
|
|
608
|
+
return __awaiter(this, arguments, void 0, function* (tokenId, dkeys, callback = null, overrideFunc = null) {
|
|
417
609
|
if (callback) {
|
|
418
610
|
callback('decrypting Vault Keys');
|
|
419
611
|
}
|
|
420
|
-
let metadata = yield this.fetchMetadata(tokenId);
|
|
612
|
+
let metadata = overrideFunc ? yield overrideFunc(this.apiKey, { tokenId: tokenId }) : yield this.fetchMetadata(tokenId);
|
|
421
613
|
let ukeys = yield (0, utils_1.decryptKeys)(metadata.ciphertextV2, dkeys, metadata.addresses);
|
|
422
614
|
if (callback) {
|
|
423
615
|
callback(`remote Key`, ukeys);
|
|
@@ -425,6 +617,33 @@ class EmblemVaultSDK {
|
|
|
425
617
|
return ukeys;
|
|
426
618
|
});
|
|
427
619
|
}
|
|
620
|
+
recoverSignerFromMessage(message_1, signature_1) {
|
|
621
|
+
return __awaiter(this, arguments, void 0, function* (message, signature, overrideFunc = null) {
|
|
622
|
+
const provider = yield this.getOrDetectProvider('ethereum');
|
|
623
|
+
return overrideFunc ? yield overrideFunc(message, signature) : yield provider.eth.personal.recover(message, signature);
|
|
624
|
+
});
|
|
625
|
+
}
|
|
626
|
+
/**
|
|
627
|
+
* ** Emblem Vault AI **
|
|
628
|
+
*
|
|
629
|
+
* Be sure to allow api key requests, or api_key_hash and auth sig (wallet, socialAuth, oAuth)
|
|
630
|
+
* Here we will begin using the aiApiKey and the aiUrl to communicate with the ai vault system
|
|
631
|
+
*
|
|
632
|
+
*/
|
|
633
|
+
vaultInfoFromApiKey(aiApiKey_1, full_1) {
|
|
634
|
+
return __awaiter(this, arguments, void 0, function* (aiApiKey, full, overrideFunc = null) {
|
|
635
|
+
const url = `${this.aiUrl}/vault/${full ? 'info-complete' : 'info'}`;
|
|
636
|
+
const selectedKey = aiApiKey ? aiApiKey : this.aiApiKey ? this.aiApiKey : '';
|
|
637
|
+
const actionFunction = overrideFunc && typeof overrideFunc === 'function' ? overrideFunc : utils_1.fetchData;
|
|
638
|
+
const vaultDetails = yield actionFunction(url, selectedKey, 'POST', null);
|
|
639
|
+
// vaultDetails.computedEthAddress = ethers.utils.computeAddress(vaultDetails.pkp.pub_key.replace('0x',''));
|
|
640
|
+
return vaultDetails;
|
|
641
|
+
});
|
|
642
|
+
}
|
|
643
|
+
/**
|
|
644
|
+
* @deprecated This method is deprecated and will be removed in a future version.
|
|
645
|
+
* Please use alternative methods for price quotation.
|
|
646
|
+
*/
|
|
428
647
|
getQuote(web3_1, amount_1) {
|
|
429
648
|
return __awaiter(this, arguments, void 0, function* (web3, amount, callback = null) {
|
|
430
649
|
if (callback) {
|
|
@@ -439,8 +658,9 @@ class EmblemVaultSDK {
|
|
|
439
658
|
return quote;
|
|
440
659
|
});
|
|
441
660
|
}
|
|
442
|
-
|
|
443
|
-
|
|
661
|
+
// todo add contract overrides
|
|
662
|
+
performMint(web3_1, remoteMintSig_1) {
|
|
663
|
+
return __awaiter(this, arguments, void 0, function* (web3, remoteMintSig, callback = undefined) {
|
|
444
664
|
// async performMint(web3, quote, remoteMintSig, callback = null) {
|
|
445
665
|
if (callback) {
|
|
446
666
|
callback('performing Mint');
|
|
@@ -449,13 +669,13 @@ class EmblemVaultSDK {
|
|
|
449
669
|
let handlerContract = yield (0, utils_1.getHandlerContract)(web3);
|
|
450
670
|
// Get current gas price from the network
|
|
451
671
|
const gasPrice = yield web3.eth.getGasPrice();
|
|
452
|
-
let createdTxObject = handlerContract.methods.
|
|
672
|
+
let createdTxObject = handlerContract.methods.buyWithSignedPrice(remoteMintSig._nftAddress, '0x0000000000000000000000000000000000000000', remoteMintSig._price.hex, remoteMintSig._to, remoteMintSig._tokenId, remoteMintSig._nonce, remoteMintSig._signature, remoteMintSig.serialNumber, 1);
|
|
453
673
|
// Estimate gas limit for the transaction
|
|
454
|
-
const gasLimit = yield createdTxObject.estimateGas({ from: accounts[0], value:
|
|
674
|
+
const gasLimit = yield createdTxObject.estimateGas({ from: accounts[0], value: remoteMintSig._price.hex });
|
|
455
675
|
// Execute the transaction with the specified gas price and estimated gas limit
|
|
456
676
|
let mintResponse = yield createdTxObject.send({
|
|
457
677
|
from: accounts[0],
|
|
458
|
-
value:
|
|
678
|
+
value: remoteMintSig._price.hex,
|
|
459
679
|
gasPrice: gasPrice, // Use the current gas price
|
|
460
680
|
gas: gasLimit // Use the estimated gas limit
|
|
461
681
|
}).on('transactionHash', (hash) => {
|
|
@@ -655,7 +875,8 @@ class EmblemVaultSDK {
|
|
|
655
875
|
});
|
|
656
876
|
}
|
|
657
877
|
}
|
|
878
|
+
exports.EmblemVaultSDK = EmblemVaultSDK;
|
|
658
879
|
if (typeof window !== 'undefined') {
|
|
659
880
|
window.EmblemVaultSDK = EmblemVaultSDK;
|
|
660
881
|
}
|
|
661
|
-
|
|
882
|
+
//# sourceMappingURL=index.js.map
|