emblem-vault-sdk 2.3.5 → 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 +21604 -17422
- 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 +321 -117
- 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 +21604 -17422
- 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 +322 -106
- 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 -33
- 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,60 +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) {
|
|
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
|
-
this.v1Url = 'https://api2.emblemvault.io';
|
|
47
28
|
this.baseUrl = baseUrl || 'https://v2.emblemvault.io';
|
|
48
|
-
this.v3Url = 'https://v3.emblemvault.io';
|
|
49
|
-
this.sigUrl = 'https://tor-us-signer-coval.vercel.app';
|
|
29
|
+
this.v3Url = v3Url || 'https://v3.emblemvault.io';
|
|
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
|
+
});
|
|
50
73
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
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
|
+
});
|
|
54
111
|
}
|
|
55
112
|
// ** Asset Metadata **
|
|
56
113
|
//
|
|
57
|
-
|
|
114
|
+
getCuratedAssetMetadata(projectName, strict = false, overrideFunc = null) {
|
|
115
|
+
return this.getAssetMetadata(projectName, strict, overrideFunc);
|
|
116
|
+
}
|
|
117
|
+
// @deprecated
|
|
118
|
+
getAssetMetadata(projectName, strict = false, overrideFunc = null) {
|
|
58
119
|
(0, utils_1.genericGuard)(projectName, "string", "projectName");
|
|
59
|
-
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);
|
|
60
121
|
let filtered = strict ?
|
|
61
|
-
NFT_DATA_ARR.filter(item => item.projectName === projectName) :
|
|
62
|
-
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());
|
|
63
124
|
return filtered;
|
|
64
125
|
}
|
|
65
|
-
|
|
66
|
-
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;
|
|
67
136
|
}
|
|
137
|
+
/**
|
|
138
|
+
* @deprecated
|
|
139
|
+
* This method is deprecated and will be removed in a future version.
|
|
140
|
+
* Please use `getInventoryAssetMetadataProject` instead.
|
|
141
|
+
*/
|
|
68
142
|
getRemoteAssetMetadataProjectList() {
|
|
69
|
-
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
|
+
});
|
|
70
148
|
}
|
|
71
|
-
|
|
72
|
-
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
|
+
});
|
|
73
156
|
}
|
|
74
|
-
|
|
75
|
-
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
|
+
});
|
|
76
163
|
}
|
|
77
|
-
|
|
78
|
-
|
|
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);
|
|
79
173
|
const projects = (0, utils_1.metadataAllProjects)(NFT_DATA_ARR);
|
|
80
174
|
return projects;
|
|
81
175
|
}
|
|
82
176
|
// ** Curated **
|
|
83
177
|
//
|
|
84
178
|
fetchCuratedContracts() {
|
|
85
|
-
return __awaiter(this, arguments, void 0, function* (hideUnMintable = false, overrideFunc =
|
|
179
|
+
return __awaiter(this, arguments, void 0, function* (hideUnMintable = false, overrideFunc = null) {
|
|
86
180
|
let url = `${this.baseUrl}/curated`;
|
|
87
181
|
// Fetch using URL or override function
|
|
88
|
-
let data =
|
|
182
|
+
let data = overrideFunc ? yield overrideFunc(this.apiKey) : yield (0, utils_1.fetchData)(url, this.apiKey);
|
|
89
183
|
// Filter out collections that are not mintable
|
|
90
184
|
data = hideUnMintable ? data.filter((collection) => collection.mintable) : data;
|
|
91
185
|
// Sort the data by the name property in ascending order
|
|
@@ -98,28 +192,28 @@ class EmblemVaultSDK {
|
|
|
98
192
|
item[key] = template[key];
|
|
99
193
|
});
|
|
100
194
|
// Return a new object that combines the properties of the item and the template
|
|
101
|
-
|
|
102
|
-
return item;
|
|
195
|
+
return Object.assign(Object.assign(Object.assign({}, item), template), { mintTemplate: template.generateCreateTemplate(item) });
|
|
196
|
+
// return item;
|
|
103
197
|
});
|
|
104
198
|
return data;
|
|
105
199
|
});
|
|
106
200
|
}
|
|
107
201
|
fetchCuratedContractByName(name_1) {
|
|
108
|
-
return __awaiter(this, arguments, void 0, function* (name, contracts = false) {
|
|
109
|
-
!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;
|
|
110
204
|
let contract = contracts.find((contract) => contract.name === name);
|
|
111
205
|
return contract || null;
|
|
112
206
|
});
|
|
113
207
|
}
|
|
114
208
|
createCuratedVault(template_1) {
|
|
115
|
-
return __awaiter(this, arguments, void 0, function* (template, callback = null) {
|
|
209
|
+
return __awaiter(this, arguments, void 0, function* (template, callback = null, overrideFunc = null) {
|
|
116
210
|
(0, utils_1.templateGuard)(template);
|
|
117
211
|
template.chainId == 1 ? delete template.targetContract[5] : delete template.targetContract[1];
|
|
118
212
|
let url = `${this.baseUrl}/create-curated`;
|
|
119
213
|
if (callback) {
|
|
120
214
|
callback(`creating Vault for user`, template.toAddress);
|
|
121
215
|
}
|
|
122
|
-
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);
|
|
123
217
|
if (callback) {
|
|
124
218
|
callback(`created Vault tokenId`, vaultCreationResponse.data.tokenId);
|
|
125
219
|
}
|
|
@@ -127,10 +221,10 @@ class EmblemVaultSDK {
|
|
|
127
221
|
});
|
|
128
222
|
}
|
|
129
223
|
refreshOwnershipForTokenId(tokenId_1) {
|
|
130
|
-
return __awaiter(this, arguments, void 0, function* (tokenId, callback = null) {
|
|
224
|
+
return __awaiter(this, arguments, void 0, function* (tokenId, callback = null, overrideFunc = null) {
|
|
131
225
|
(0, utils_1.genericGuard)(tokenId, "string", "tokenId");
|
|
132
226
|
let url = `${this.baseUrl}/refreshBalanceForTokenId`;
|
|
133
|
-
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 });
|
|
134
228
|
if (callback) {
|
|
135
229
|
callback(`Refreshed ownership for`, tokenId);
|
|
136
230
|
}
|
|
@@ -138,10 +232,10 @@ class EmblemVaultSDK {
|
|
|
138
232
|
});
|
|
139
233
|
}
|
|
140
234
|
refreshOwnershipForAccount(account_1) {
|
|
141
|
-
return __awaiter(this, arguments, void 0, function* (account, callback = null) {
|
|
235
|
+
return __awaiter(this, arguments, void 0, function* (account, callback = null, overrideFunc = null) {
|
|
142
236
|
(0, utils_1.genericGuard)(account, "string", "account");
|
|
143
237
|
let url = `${this.baseUrl}/refreshBalanceForAccount`;
|
|
144
|
-
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 });
|
|
145
239
|
if (callback) {
|
|
146
240
|
callback(`Refreshed ownership for`, account);
|
|
147
241
|
}
|
|
@@ -149,13 +243,13 @@ class EmblemVaultSDK {
|
|
|
149
243
|
});
|
|
150
244
|
}
|
|
151
245
|
fetchMetadata(tokenId_1) {
|
|
152
|
-
return __awaiter(this, arguments, void 0, function* (tokenId, callback = null) {
|
|
246
|
+
return __awaiter(this, arguments, void 0, function* (tokenId, callback = null, overrideFunc = null) {
|
|
153
247
|
(0, utils_1.genericGuard)(tokenId, "string", "tokenId");
|
|
154
248
|
if (callback) {
|
|
155
249
|
callback('getting Metadata');
|
|
156
250
|
}
|
|
157
251
|
let url = `${this.baseUrl}/meta/${tokenId}`;
|
|
158
|
-
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);
|
|
159
253
|
if (callback) {
|
|
160
254
|
callback('received Metadata', metadata.tokenId);
|
|
161
255
|
}
|
|
@@ -163,41 +257,41 @@ class EmblemVaultSDK {
|
|
|
163
257
|
});
|
|
164
258
|
}
|
|
165
259
|
refreshBalance(tokenId_1) {
|
|
166
|
-
return __awaiter(this, arguments, void 0, function* (tokenId, callback = null) {
|
|
260
|
+
return __awaiter(this, arguments, void 0, function* (tokenId, callback = null, overrideFunc = null) {
|
|
167
261
|
(0, utils_1.genericGuard)(tokenId, "string", "tokenId");
|
|
168
262
|
if (callback) {
|
|
169
263
|
callback('refreshing Balance');
|
|
170
264
|
}
|
|
171
265
|
let url = `${this.v3Url}/vault/balance/${tokenId}?live=true`;
|
|
172
|
-
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);
|
|
173
267
|
if (callback) {
|
|
174
|
-
callback('received Balance', balance.
|
|
268
|
+
callback('received Balance', balance.values);
|
|
175
269
|
}
|
|
176
|
-
return (balance === null || balance === void 0 ? void 0 : balance.
|
|
270
|
+
return (balance === null || balance === void 0 ? void 0 : balance.values) || [];
|
|
177
271
|
});
|
|
178
272
|
}
|
|
179
|
-
fetchVaultsOfType(
|
|
180
|
-
return __awaiter(this,
|
|
273
|
+
fetchVaultsOfType(vaultType_1, address_1) {
|
|
274
|
+
return __awaiter(this, arguments, void 0, function* (vaultType, address, overrideFunc = null) {
|
|
181
275
|
(0, utils_1.genericGuard)(vaultType, "string", "vaultType");
|
|
182
276
|
(0, utils_1.genericGuard)(address, "string", "address");
|
|
183
277
|
let url = `${this.baseUrl}/myvaults/${address}?vaultType=${vaultType}`;
|
|
184
|
-
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);
|
|
185
279
|
return vaults;
|
|
186
280
|
});
|
|
187
281
|
}
|
|
188
282
|
generateJumpReport(address_1) {
|
|
189
|
-
return __awaiter(this, arguments, void 0, function* (address, hideUnMintable = false) {
|
|
283
|
+
return __awaiter(this, arguments, void 0, function* (address, hideUnMintable = false, overrideFunc = null) {
|
|
190
284
|
let vaultType = "unclaimed";
|
|
191
285
|
let curated = yield this.fetchCuratedContracts();
|
|
192
286
|
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
193
287
|
try {
|
|
194
288
|
let map = {};
|
|
195
|
-
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);
|
|
196
290
|
for (let vaultIndex = 0; vaultIndex < vaults.length; vaultIndex++) {
|
|
197
291
|
let item = vaults[vaultIndex];
|
|
198
292
|
let balances = item.ownership.balances || [];
|
|
199
293
|
if (item.targetContract) {
|
|
200
|
-
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);
|
|
201
295
|
let to = [];
|
|
202
296
|
for (let contractIndex = 0; contractIndex < curated.length; contractIndex++) {
|
|
203
297
|
let contract = curated[contractIndex];
|
|
@@ -225,15 +319,15 @@ class EmblemVaultSDK {
|
|
|
225
319
|
});
|
|
226
320
|
}
|
|
227
321
|
generateMintReport(address_1) {
|
|
228
|
-
return __awaiter(this, arguments, void 0, function* (address, hideUnMintable = false) {
|
|
229
|
-
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);
|
|
230
324
|
let curated = yield this.fetchCuratedContracts();
|
|
231
325
|
let map = {};
|
|
232
326
|
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
233
327
|
try {
|
|
234
328
|
vaults.forEach((vault) => __awaiter(this, void 0, void 0, function* () {
|
|
235
329
|
if (vault.targetContract) {
|
|
236
|
-
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);
|
|
237
331
|
let balance = vault.balances && vault.balances.length > 0 ? vault.balances : vault.ownership && vault.ownership.balances && vault.ownership.balances.length > 0 ? vault.ownership.balances : [];
|
|
238
332
|
let allowed = targetVault.allowed(balance, targetVault);
|
|
239
333
|
if (allowed || !hideUnMintable) {
|
|
@@ -257,18 +351,18 @@ class EmblemVaultSDK {
|
|
|
257
351
|
});
|
|
258
352
|
}
|
|
259
353
|
generateMigrateReport(address_1) {
|
|
260
|
-
return __awaiter(this, arguments, void 0, function* (address, hideUnMintable = false) {
|
|
354
|
+
return __awaiter(this, arguments, void 0, function* (address, hideUnMintable = false, overrideFunc = null) {
|
|
261
355
|
let vaultType = "unclaimed";
|
|
262
356
|
let curated = yield this.fetchCuratedContracts();
|
|
263
357
|
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
264
358
|
try {
|
|
265
359
|
let map = {};
|
|
266
|
-
let vaults = yield this.fetchVaultsOfType(vaultType, address);
|
|
360
|
+
let vaults = overrideFunc ? yield overrideFunc(this.apiKey, { vaultType, address }) : yield this.fetchVaultsOfType(vaultType, address);
|
|
267
361
|
for (let vaultIndex = 0; vaultIndex < vaults.length; vaultIndex++) {
|
|
268
362
|
let item = vaults[vaultIndex];
|
|
269
363
|
let balances = item.ownership.balances || [];
|
|
270
364
|
if (!item.targetContract) {
|
|
271
|
-
// let vaultTargetContract: any = await this.fetchCuratedContractByName(item.targetContract.name
|
|
365
|
+
// let vaultTargetContract: any = await this.fetchCuratedContractByName(item.targetContract.name);
|
|
272
366
|
let to = [];
|
|
273
367
|
for (let contractIndex = 0; contractIndex < curated.length; contractIndex++) {
|
|
274
368
|
let contract = curated[contractIndex];
|
|
@@ -301,39 +395,49 @@ class EmblemVaultSDK {
|
|
|
301
395
|
loadWeb3() {
|
|
302
396
|
return __awaiter(this, void 0, void 0, function* () {
|
|
303
397
|
try {
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
yield window.ethereum.request({ method: 'eth_requestAccounts' });
|
|
309
|
-
// Initialize Web3 with MetaMask's provider
|
|
310
|
-
const web3 = new Web3(window.ethereum);
|
|
311
|
-
// Attach Web3 to the window object
|
|
312
|
-
window.web3 = web3;
|
|
313
|
-
return web3;
|
|
314
|
-
}
|
|
315
|
-
else {
|
|
316
|
-
console.error('MetaMask is not installed!');
|
|
317
|
-
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();
|
|
318
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;
|
|
319
407
|
}
|
|
320
408
|
catch (error) {
|
|
321
|
-
console.error('
|
|
409
|
+
console.error('Could not load or detect Ethereum provider:', error);
|
|
322
410
|
return undefined;
|
|
323
411
|
}
|
|
324
412
|
});
|
|
325
413
|
}
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
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) {
|
|
329
424
|
let mintRequestSig = yield this.requestLocalMintSignature(web3, tokenId, callback);
|
|
330
425
|
let remoteMintSig = yield this.requestRemoteMintSignature(web3, tokenId, mintRequestSig, callback);
|
|
331
|
-
let
|
|
332
|
-
let ethToSend = quote.mul(bignumber_1.BigNumber.from(10).pow(6));
|
|
333
|
-
let mintResponse = yield this.performMint(web3, ethToSend, remoteMintSig, callback);
|
|
426
|
+
let mintResponse = yield this.performMint(web3, remoteMintSig, callback);
|
|
334
427
|
return { mintResponse };
|
|
335
428
|
});
|
|
336
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
|
+
}
|
|
337
441
|
performClaimChain(web3_1, tokenId_1, serialNumber_1) {
|
|
338
442
|
return __awaiter(this, arguments, void 0, function* (web3, tokenId, serialNumber, callback = null) {
|
|
339
443
|
let sig = yield this.requestLocalClaimSignature(web3, tokenId, serialNumber, callback);
|
|
@@ -342,6 +446,14 @@ class EmblemVaultSDK {
|
|
|
342
446
|
return yield this.decryptVaultKeys(tokenId, dkeys, callback);
|
|
343
447
|
});
|
|
344
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
|
+
*/
|
|
345
457
|
requestLocalMintSignature(web3_1, tokenId_1) {
|
|
346
458
|
return __awaiter(this, arguments, void 0, function* (web3, tokenId, callback = null) {
|
|
347
459
|
if (callback) {
|
|
@@ -356,28 +468,51 @@ class EmblemVaultSDK {
|
|
|
356
468
|
return signature;
|
|
357
469
|
});
|
|
358
470
|
}
|
|
359
|
-
|
|
360
|
-
|
|
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) {
|
|
361
480
|
if (callback) {
|
|
362
|
-
callback('requesting
|
|
481
|
+
callback('requesting Owner Mint Signature');
|
|
363
482
|
}
|
|
364
|
-
const
|
|
365
|
-
const
|
|
366
|
-
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 : '');
|
|
367
492
|
if (callback) {
|
|
368
493
|
callback(`signature`, signature);
|
|
369
494
|
}
|
|
370
|
-
return signature;
|
|
495
|
+
return { message, signature };
|
|
371
496
|
});
|
|
372
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
|
+
*/
|
|
373
507
|
requestRemoteMintSignature(web3_1, tokenId_1, signature_1) {
|
|
374
|
-
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) {
|
|
375
509
|
if (callback) {
|
|
376
510
|
callback('requesting Remote Mint signature');
|
|
377
511
|
}
|
|
378
512
|
const chainId = yield web3.eth.getChainId();
|
|
379
513
|
let url = `${this.baseUrl}/mint-curated`;
|
|
380
|
-
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);
|
|
381
516
|
if (remoteMintResponse.error) {
|
|
382
517
|
throw new Error(remoteMintResponse.error);
|
|
383
518
|
}
|
|
@@ -387,14 +522,54 @@ class EmblemVaultSDK {
|
|
|
387
522
|
return remoteMintResponse;
|
|
388
523
|
});
|
|
389
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
|
+
}
|
|
390
565
|
requestRemoteClaimToken(web3_1, tokenId_1, signature_1) {
|
|
391
|
-
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) {
|
|
392
567
|
if (callback) {
|
|
393
568
|
callback('requesting Remote Claim token');
|
|
394
569
|
}
|
|
395
570
|
const chainId = yield web3.eth.getChainId();
|
|
396
571
|
let url = `${this.sigUrl}/sign`;
|
|
397
|
-
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() });
|
|
398
573
|
if (callback) {
|
|
399
574
|
callback(`remote Claim token`, remoteClaimResponse);
|
|
400
575
|
}
|
|
@@ -402,11 +577,11 @@ class EmblemVaultSDK {
|
|
|
402
577
|
});
|
|
403
578
|
}
|
|
404
579
|
requestRemoteKey(tokenId_1, jwt_1) {
|
|
405
|
-
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) {
|
|
406
581
|
if (callback) {
|
|
407
582
|
callback('requesting Remote Key');
|
|
408
583
|
}
|
|
409
|
-
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);
|
|
410
585
|
if (callback) {
|
|
411
586
|
callback(`remote Key`, dkeys);
|
|
412
587
|
}
|
|
@@ -414,11 +589,11 @@ class EmblemVaultSDK {
|
|
|
414
589
|
});
|
|
415
590
|
}
|
|
416
591
|
decryptVaultKeys(tokenId_1, dkeys_1) {
|
|
417
|
-
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) {
|
|
418
593
|
if (callback) {
|
|
419
594
|
callback('decrypting Vault Keys');
|
|
420
595
|
}
|
|
421
|
-
let metadata = yield this.fetchMetadata(tokenId);
|
|
596
|
+
let metadata = overrideFunc ? yield overrideFunc(this.apiKey, { tokenId: tokenId }) : yield this.fetchMetadata(tokenId);
|
|
422
597
|
let ukeys = yield (0, utils_1.decryptKeys)(metadata.ciphertextV2, dkeys, metadata.addresses);
|
|
423
598
|
if (callback) {
|
|
424
599
|
callback(`remote Key`, ukeys);
|
|
@@ -426,6 +601,33 @@ class EmblemVaultSDK {
|
|
|
426
601
|
return ukeys;
|
|
427
602
|
});
|
|
428
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
|
+
*/
|
|
429
631
|
getQuote(web3_1, amount_1) {
|
|
430
632
|
return __awaiter(this, arguments, void 0, function* (web3, amount, callback = null) {
|
|
431
633
|
if (callback) {
|
|
@@ -440,8 +642,9 @@ class EmblemVaultSDK {
|
|
|
440
642
|
return quote;
|
|
441
643
|
});
|
|
442
644
|
}
|
|
443
|
-
|
|
444
|
-
|
|
645
|
+
// todo add contract overrides
|
|
646
|
+
performMint(web3_1, remoteMintSig_1) {
|
|
647
|
+
return __awaiter(this, arguments, void 0, function* (web3, remoteMintSig, callback = undefined) {
|
|
445
648
|
// async performMint(web3, quote, remoteMintSig, callback = null) {
|
|
446
649
|
if (callback) {
|
|
447
650
|
callback('performing Mint');
|
|
@@ -450,13 +653,13 @@ class EmblemVaultSDK {
|
|
|
450
653
|
let handlerContract = yield (0, utils_1.getHandlerContract)(web3);
|
|
451
654
|
// Get current gas price from the network
|
|
452
655
|
const gasPrice = yield web3.eth.getGasPrice();
|
|
453
|
-
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);
|
|
454
657
|
// Estimate gas limit for the transaction
|
|
455
|
-
const gasLimit = yield createdTxObject.estimateGas({ from: accounts[0], value:
|
|
658
|
+
const gasLimit = yield createdTxObject.estimateGas({ from: accounts[0], value: remoteMintSig._price.hex });
|
|
456
659
|
// Execute the transaction with the specified gas price and estimated gas limit
|
|
457
660
|
let mintResponse = yield createdTxObject.send({
|
|
458
661
|
from: accounts[0],
|
|
459
|
-
value:
|
|
662
|
+
value: remoteMintSig._price.hex,
|
|
460
663
|
gasPrice: gasPrice, // Use the current gas price
|
|
461
664
|
gas: gasLimit // Use the estimated gas limit
|
|
462
665
|
}).on('transactionHash', (hash) => {
|
|
@@ -656,7 +859,8 @@ class EmblemVaultSDK {
|
|
|
656
859
|
});
|
|
657
860
|
}
|
|
658
861
|
}
|
|
862
|
+
exports.EmblemVaultSDK = EmblemVaultSDK;
|
|
659
863
|
if (typeof window !== 'undefined') {
|
|
660
864
|
window.EmblemVaultSDK = EmblemVaultSDK;
|
|
661
865
|
}
|
|
662
|
-
|
|
866
|
+
//# sourceMappingURL=index.js.map
|