@fxhash/config 0.0.12 → 0.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +16 -21
- package/dist/index.js +245 -234
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
package/dist/index.d.ts
CHANGED
|
@@ -13,16 +13,6 @@ interface IEthApis {
|
|
|
13
13
|
}
|
|
14
14
|
declare const ethTestnetApis: IEthApis;
|
|
15
15
|
//#endregion
|
|
16
|
-
//#region src/api/tezos.d.ts
|
|
17
|
-
interface ITezosApis {
|
|
18
|
-
tzktWebsite: string;
|
|
19
|
-
tzkt: string;
|
|
20
|
-
tzktPro: string;
|
|
21
|
-
rpcs: string[];
|
|
22
|
-
}
|
|
23
|
-
declare const tezosTestnetApis: ITezosApis;
|
|
24
|
-
declare const tezosMainnetApis: ITezosApis;
|
|
25
|
-
//#endregion
|
|
26
16
|
//#region src/api/base.d.ts
|
|
27
17
|
interface IBaseApis {
|
|
28
18
|
rpcs: string[];
|
|
@@ -34,6 +24,16 @@ interface IBaseApis {
|
|
|
34
24
|
};
|
|
35
25
|
}
|
|
36
26
|
//#endregion
|
|
27
|
+
//#region src/api/tezos.d.ts
|
|
28
|
+
interface ITezosApis {
|
|
29
|
+
tzktWebsite: string;
|
|
30
|
+
tzkt: string;
|
|
31
|
+
tzktPro: string;
|
|
32
|
+
rpcs: string[];
|
|
33
|
+
}
|
|
34
|
+
declare const tezosTestnetApis: ITezosApis;
|
|
35
|
+
declare const tezosMainnetApis: ITezosApis;
|
|
36
|
+
//#endregion
|
|
37
37
|
//#region src/config/algolia.d.ts
|
|
38
38
|
type AlgoliaConfig = {
|
|
39
39
|
appId: string;
|
|
@@ -54,7 +54,6 @@ interface GPURenderingVersionConfig {
|
|
|
54
54
|
batchArn: string;
|
|
55
55
|
}
|
|
56
56
|
type GPURenderingConfig = Record<GPUVersion, GPURenderingVersionConfig>;
|
|
57
|
-
// Environment configs
|
|
58
57
|
//#endregion
|
|
59
58
|
//#region src/contracts/base.d.ts
|
|
60
59
|
interface IBaseContracts {
|
|
@@ -66,6 +65,7 @@ interface IBaseContracts {
|
|
|
66
65
|
mint_ticket_factory_v1: `0x${string}`;
|
|
67
66
|
ticket_redeemer_v1: `0x${string}`;
|
|
68
67
|
ipfs_renderer_v1: `0x${string}`;
|
|
68
|
+
ipfs_renderer_v2: `0x${string}`;
|
|
69
69
|
onchfs_renderer_v1: `0x${string}`;
|
|
70
70
|
randomizer_v1: `0x${string}`;
|
|
71
71
|
role_registry_v1: `0x${string}`;
|
|
@@ -84,6 +84,9 @@ interface IBaseContracts {
|
|
|
84
84
|
fx_tez_airdrop: `0x${string}`;
|
|
85
85
|
fx_token_launchpad: `0x${string}`;
|
|
86
86
|
fx_project_factory: `0x${string}`;
|
|
87
|
+
fx_project_factory_v2: `0x${string}`;
|
|
88
|
+
fx_doppler_factory: `0x${string}`;
|
|
89
|
+
uniswap_v2_migrator: `0x${string}`;
|
|
87
90
|
}
|
|
88
91
|
//#endregion
|
|
89
92
|
//#region src/contracts/eth.d.ts
|
|
@@ -158,9 +161,7 @@ interface ITezosContracts {
|
|
|
158
161
|
user_register: string;
|
|
159
162
|
onchfs_files: string;
|
|
160
163
|
}
|
|
161
|
-
// The Tezos Smart Contracts addresses on testnet
|
|
162
164
|
declare const tezosTestnetContracts: ITezosContracts;
|
|
163
|
-
// The Tezos Smart Contracts on mainnet
|
|
164
165
|
declare const tezosMainnetContracts: ITezosContracts;
|
|
165
166
|
//#endregion
|
|
166
167
|
//#region src/types.d.ts
|
|
@@ -173,6 +174,7 @@ interface IFxhashApis {
|
|
|
173
174
|
file: string;
|
|
174
175
|
fileInternal: string;
|
|
175
176
|
walletInternal: string;
|
|
177
|
+
baseIndexerInternal: string;
|
|
176
178
|
fsEmulator: string;
|
|
177
179
|
extract: string;
|
|
178
180
|
extractInternal: string;
|
|
@@ -226,7 +228,6 @@ declare const BlockchainIdentifiers: {
|
|
|
226
228
|
* when enums aren't as good.
|
|
227
229
|
*/
|
|
228
230
|
type BlockchainIdentifier = (typeof BlockchainIdentifiers)[keyof typeof BlockchainIdentifiers];
|
|
229
|
-
// the variations supported by the config
|
|
230
231
|
type TBlockchain = "tez" | "eth" | "base";
|
|
231
232
|
type TBlockchainNetwork = "testnet" | "mainnet";
|
|
232
233
|
type TEnv = "dev" | "prd" | "local" | "localDocker";
|
|
@@ -324,13 +325,7 @@ type IFxhashConfigSingleEnv = { [B in TBlockchain]: {
|
|
|
324
325
|
};
|
|
325
326
|
//#endregion
|
|
326
327
|
//#region src/api/fxhash.d.ts
|
|
327
|
-
// list of APIs dev leverages
|
|
328
328
|
declare const fxhashDevApis: IFxhashApis;
|
|
329
|
-
// list of APIs for when fxhash is ran locally
|
|
330
|
-
// The ports must correspond to the ports the services are running on
|
|
331
|
-
// defined in the root docker compose file of the monorepo
|
|
332
|
-
|
|
333
|
-
// list of APIs prod leverages
|
|
334
329
|
declare const fxhashPrdApis: IFxhashApis;
|
|
335
330
|
/**
|
|
336
331
|
* Given some env, returns the associated APIs config.
|
|
@@ -425,5 +420,5 @@ type AppMetadataError = RichErrorUnion<typeof AppMetadataErrors>;
|
|
|
425
420
|
*/
|
|
426
421
|
declare function isAppMetadataValid(value: any): Result<void, AppMetadataError>;
|
|
427
422
|
//#endregion
|
|
428
|
-
export { BlockchainIdentifier, BlockchainIdentifiers, EGatewayIpfs, GPURenderingConfig, IAppMetadata, IEthApis, IEthContracts, IFxhashApis, IFxhashConfig, IFxhashConfigSingleEnv, IFxhashEnvConfig, IFxhashNetworkConfig, ITezosApis, ITezosContracts, TBlockchain, TBlockchainNetwork, TEnv, TEnvName, cidFromUriOrCid, config, fxhashConfig as default, fxhashConfig, devConfig, ethTestnetApis, ethTestnetContracts, fxhashDevApis, fxhashPrdApis, getDockerInternalUrl, getEnv, getObjktIdFromContract, ipfsCidFromUriOrCid, ipfsGatewayRoot, ipfsGatewayUrl, ipfsRegex, isAppMetadataValid, isDockerLocal, isLocal, isProd, localConfig, onchfsCidFromUriOrCid, onchfsRegex, prdConfig, proxyUrl, setConfig, tezosContractPrefixesByContractAddress, tezosMainnetApis, tezosMainnetContracts, tezosTestnetApis, tezosTestnetContracts };
|
|
423
|
+
export { BlockchainIdentifier, BlockchainIdentifiers, EGatewayIpfs, type GPURenderingConfig, IAppMetadata, type IEthApis, type IEthContracts, IFxhashApis, type IFxhashConfig, IFxhashConfigSingleEnv, type IFxhashEnvConfig, type IFxhashNetworkConfig, type ITezosApis, type ITezosContracts, type TBlockchain, type TBlockchainNetwork, type TEnv, TEnvName, cidFromUriOrCid, config, fxhashConfig as default, fxhashConfig, devConfig, ethTestnetApis, ethTestnetContracts, fxhashDevApis, fxhashPrdApis, getDockerInternalUrl, getEnv, getObjktIdFromContract, ipfsCidFromUriOrCid, ipfsGatewayRoot, ipfsGatewayUrl, ipfsRegex, isAppMetadataValid, isDockerLocal, isLocal, isProd, localConfig, onchfsCidFromUriOrCid, onchfsRegex, prdConfig, proxyUrl, setConfig, tezosContractPrefixesByContractAddress, tezosMainnetApis, tezosMainnetContracts, tezosTestnetApis, tezosTestnetContracts };
|
|
429
424
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
CHANGED
|
@@ -24,30 +24,6 @@ const ethMainnetApis = {
|
|
|
24
24
|
alchemy: { rpc: "https://eth-mainnet.g.alchemy.com/v2/xTtlsglqRKcFwSkg2bilqp7U2smOt3g9" }
|
|
25
25
|
};
|
|
26
26
|
|
|
27
|
-
//#endregion
|
|
28
|
-
//#region src/api/tezos.ts
|
|
29
|
-
const tezosTestnetApis = {
|
|
30
|
-
tzkt: "https://api.ghostnet.tzkt.io/v1/",
|
|
31
|
-
tzktPro: "https://api.ghostnet.tzkt.io/v1/",
|
|
32
|
-
tzktWebsite: "https://ghostnet.tzkt.io/",
|
|
33
|
-
rpcs: [
|
|
34
|
-
"https://ghostnet.ecadinfra.com",
|
|
35
|
-
"https://ghostnet.smartpy.io",
|
|
36
|
-
"https://ghostnet.tezos.marigold.dev/"
|
|
37
|
-
]
|
|
38
|
-
};
|
|
39
|
-
const tezosMainnetApis = {
|
|
40
|
-
tzkt: "https://api.tzkt.io/v1/",
|
|
41
|
-
tzktPro: "https://pro.tzkt.io/v1/",
|
|
42
|
-
tzktWebsite: "https://tzkt.io/",
|
|
43
|
-
rpcs: [
|
|
44
|
-
"https://rpc1.fxhash.xyz",
|
|
45
|
-
"https://mainnet.smartpy.io",
|
|
46
|
-
"https://mainnet.api.tez.ie",
|
|
47
|
-
"https://teznode.letzbake.com"
|
|
48
|
-
]
|
|
49
|
-
};
|
|
50
|
-
|
|
51
27
|
//#endregion
|
|
52
28
|
//#region src/helpers.ts
|
|
53
29
|
const HOST_LOCAL = "localhost";
|
|
@@ -62,8 +38,7 @@ const isLocal = (() => {
|
|
|
62
38
|
return process.env.FXHASH_ENV === "local" || process.env.NEXT_PUBLIC_FXHASH_ENV === "local" || process.env.REACT_APP_FXHASH_ENV === "local" || process.env.VITE_FXHASH_ENV === "local";
|
|
63
39
|
})();
|
|
64
40
|
const isDockerLocal = (() => {
|
|
65
|
-
|
|
66
|
-
if (isBrowser) return false;
|
|
41
|
+
if (typeof window !== "undefined") return false;
|
|
67
42
|
let fs;
|
|
68
43
|
try {
|
|
69
44
|
fs = __require("fs");
|
|
@@ -89,6 +64,7 @@ const fxhashDevApis = {
|
|
|
89
64
|
hasuraGql: "https://api.v2.dev.fxhash-dev.xyz/v1/graphql",
|
|
90
65
|
file: "https://file-api.fxhash-dev.xyz",
|
|
91
66
|
fileInternal: "http://fxhash-multichain-dev-testnet-file-api.fxhash-multichain-dev-testnet.svc.cluster.local:4004",
|
|
67
|
+
baseIndexerInternal: "http://fxhash-multichain-dev-testnet-base-indexer.fxhash-multichain-dev-testnet.svc.cluster.local:3000",
|
|
92
68
|
walletInternal: "http://fxhash-multichain-dev-testnet-wallet-api.fxhash-multichain-dev-testnet.svc.cluster.local:3208",
|
|
93
69
|
fsEmulator: "https://file-api.fxhash-dev.xyz/fs",
|
|
94
70
|
extract: "https://extract.fxhash-dev.xyz",
|
|
@@ -142,6 +118,7 @@ const fxhashPrdApis = {
|
|
|
142
118
|
hasuraGql: "https://api.v2.fxhash.xyz/v1/graphql",
|
|
143
119
|
file: "https://file-api.fxhash.xyz",
|
|
144
120
|
fileInternal: "http://fxhash-multichain-prd-file-api.fxhash-multichain-prd.svc.cluster.local:4004",
|
|
121
|
+
baseIndexerInternal: "http://fxhash-multichain-prd-base-indexer.fxhash-multichain-prd.svc.cluster.local:3000",
|
|
145
122
|
walletInternal: "http://fxhash-multichain-prd-wallet-api.fxhash-multichain-prd.svc.cluster.local:3208",
|
|
146
123
|
fsEmulator: "https://file-api.fxhash.xyz/fs",
|
|
147
124
|
extract: "https://extract.fxhash.xyz",
|
|
@@ -187,140 +164,27 @@ function fxApisByEnv(env) {
|
|
|
187
164
|
}
|
|
188
165
|
|
|
189
166
|
//#endregion
|
|
190
|
-
//#region src/
|
|
191
|
-
const
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
cycles: "KT1BJBcvtgZM2Kf4rUapmp4AhXtWCmznxd6F",
|
|
201
|
-
gentk_v1: "KT1ExHjELnDuat9io3HkDcrBhHmek7h8EVXG",
|
|
202
|
-
gentk_v1_data: "KT1SquPSN9oiMUWHG9coKRJAwz8Afe4c6izT",
|
|
203
|
-
gentk_v2: "KT1NkZho1yRkDdQnN4Mz93sDYyY2pPrEHTNs",
|
|
204
|
-
gentk_v3: "KT1TtVAyjh4Ahdm8sLZwFnL7tqoLf59XrK2h",
|
|
205
|
-
issuer_tickets: "KT19PBsvmB2CwFqXftzb5gNJfxrEDFdSxGKZ",
|
|
206
|
-
issuer_v0: "KT1PyfrDD85RxUWz8dMHoC92MxdPzecSQ5t9",
|
|
207
|
-
issuer_v1: "KT1QwWVZogqPZZtGSVxGpLkEWar7LFvAsMdd",
|
|
208
|
-
issuer_v2: "KT1Sy7X6TubmZ39G8CHVrUcxjc3jiF68P8oB",
|
|
209
|
-
issuer_v3: "KT1DfymMp3qD5Pd5ujPjp7UsQbppY9yY1Hbf",
|
|
210
|
-
marketplace_v1: "KT1DbivePcuUzCp5RaAQWxPSLV9G2Ys4faUR",
|
|
211
|
-
marketplace_v2: "KT1HFYtf4vNCr4xRDZxLKc5asUdCsPUTTW9R",
|
|
212
|
-
marketplace_v3: "KT1J6rt4d9U785DZWYEPvQ2fR1e71gxP42Lj",
|
|
213
|
-
moderation_articles: "KT1Qg78fa81Xyjh65yNqUgVucubHUyq6VmgL",
|
|
214
|
-
moderation_team: "KT1RsfyWzHs1EEWMzFLmKnJTQwPqRzsnF3Dp",
|
|
215
|
-
moderation_token: "KT1PokFR36CcXKh3jUnjncabcuPWm5BMiqjt",
|
|
216
|
-
moderation_token_v3: "KT1C1J38YR6eDvRBDEDaypptCFda9aH7FRbJ",
|
|
217
|
-
moderation_user: "KT1Q3s7mYpscCnwsyndrVZg9WqBCmw99n37g",
|
|
218
|
-
pricing_dutch_auction: "KT1BqikbUisiBBd9WvPiqnTwLY8Pm68p2Aua",
|
|
219
|
-
pricing_dutch_auction_v3: "KT1QCboxZ28SqsfyZWTDrkSpZzU6xjZXBsFb",
|
|
220
|
-
pricing_fixed: "KT1PAsf9Zc9FGJA9iLE1Ab2vPkMDsh4hyZVi",
|
|
221
|
-
pricing_fixed_v3: "KT1Mqyy5JPknNzNJtgF93SHpFHv4VcYrNZry",
|
|
222
|
-
randomizer: "KT1QmdsrJWJgK3VXid8q7D4sPipVoc9jh12x",
|
|
223
|
-
randomizer_v2: "KT1Eow4nBY3B9EhWcX1aEXva67VkNFfP1Tq6",
|
|
224
|
-
token_moderation: "KT1BHfPDMRp2q48ZkmmnK7TRzQRdFnp6XVKq",
|
|
225
|
-
treasury: "KT1MbDbRhZPs5TzZEXkT142ePoccFHfohBoo",
|
|
226
|
-
user_moderation: "KT1LmZjoitx2itnB1qCbHMrT3V64RbuSPf3a",
|
|
227
|
-
user_register: "KT1XaikgmBDQANBvkFqyFhSpgAZJAXpiDFGE",
|
|
228
|
-
onchfs_files: "KT1FA8AGGcJha6S6MqfBUiibwTaYhK8u7s9Q"
|
|
229
|
-
};
|
|
230
|
-
const tezosMainnetContracts = {
|
|
231
|
-
allowed_mint: "KT1VDQwskdfHkSbA9W6CSEnxnh1u1XU8K8Gu",
|
|
232
|
-
allowed_mint_issuer: "KT1Djz5ix2yEGmV7PMq3GYq17TvMMkd1anT2",
|
|
233
|
-
allowed_mint_issuer_v3: "KT1LJ4R4xoEWMgTjrGrdHJAeHLYFaB4RsoVK",
|
|
234
|
-
allowed_mint_v3: "KT1KgEjxqfRCMwtCGifT6fDPwC35RptTUEvE",
|
|
235
|
-
articles: "KT1GtbuswcNMGhHF2TSuH1Yfaqn16do8Qtva",
|
|
236
|
-
card_proxy: "KT1DQGSRsgHcf2TPdKGc4qm5AT9JprJCAo7j",
|
|
237
|
-
collaboration_factory: "KT1JrUPSCt1r2MB2J7Lk2KwiWSYr3Mr414ck",
|
|
238
|
-
consumable_database: "KT1Mbfkqh5EhebWuMvqAfUPTpgiBPwmQCDSD",
|
|
239
|
-
cycles: "KT1BgD9SPfysnMz3vkfm6ZEaGFKCVcE5ay91",
|
|
240
|
-
gentk_v1: "KT1KEa8z6vWXDJrVqtMrAeDVzsvxat3kHaCE",
|
|
241
|
-
gentk_v1_data: "KT1WRpPyXHSCbTfDQFWVXbMpxxvf7Y7KChxc",
|
|
242
|
-
gentk_v2: "KT1U6EHmNxJTkvaWJ4ThczG4FSDaHC21ssvi",
|
|
243
|
-
gentk_v3: "KT1EfsNuqwLAWDd3o4pvfUx1CAh5GMdTrRvr",
|
|
244
|
-
issuer_tickets: "KT19etLCjCCzTLFFAxsxLFsVYMRPetr2bTD5",
|
|
245
|
-
issuer_v0: "KT1AEVuykWeuuFX7QkEAMNtffzwhe1Z98hJS",
|
|
246
|
-
issuer_v1: "KT1XCoGnfupWk7Sp8536EfrxcP73LmT68Nyr",
|
|
247
|
-
issuer_v2: "KT1BJC12dG17CVvPKJ1VYaNnaT5mzfnUTwXv",
|
|
248
|
-
issuer_v3: "KT1Xpmp15KfqoePNW9HczFmqaGNHwadV2a3b",
|
|
249
|
-
marketplace_v1: "KT1Xo5B7PNBAeynZPmca4bRh6LQow4og1Zb9",
|
|
250
|
-
marketplace_v2: "KT1GbyoDi7H1sfXmimXpptZJuCdHMh66WS9u",
|
|
251
|
-
marketplace_v3: "KT1M1NyU9X4usEimt2f3kDaijZnDMNBu42Ja",
|
|
252
|
-
moderation_articles: "KT1A36z7nG4zPDbhjyrzhYf9SCn5ipPZeRMQ",
|
|
253
|
-
moderation_team: "KT1FvGQcPxzuJkJsdWFQiGkueSNT5mqpFDrf",
|
|
254
|
-
moderation_token: "KT18tPu7uXy9PJ97i3qCLsr7an4X6sQ5qxU7",
|
|
255
|
-
moderation_token_v3: "KT1UBWXN1KxTh4eurrCTCH7aEjqdrM3HjP6R",
|
|
256
|
-
moderation_user: "KT1Wn2kkKmdbyLWBiLXWCkE7fKj1LsLKar2A",
|
|
257
|
-
pricing_dutch_auction: "KT1EzLrXRCXij42pKfbZPn48PuxrnVki1aYY",
|
|
258
|
-
pricing_dutch_auction_v3: "KT1MFgHKorMWXeVL6qrpgjZmemirafppSg9q",
|
|
259
|
-
pricing_fixed: "KT1FHzHxuMaNLYG8LdniY45M6RCfkF3AoXFh",
|
|
260
|
-
pricing_fixed_v3: "KT1V24J6FVuKPU3xy6gVF6wJ3zdRXBheQhaV",
|
|
261
|
-
randomizer: "KT1XYgKrzBbzsckGvXTPgxFyN7KNZ9RPYVWf",
|
|
262
|
-
randomizer_v2: "KT1CfmepqJkfZwqLPFVMKFoYUS7dPPZHyCTo",
|
|
263
|
-
token_moderation: "KT1HgVuzNWVvnX16fahbV2LrnpwifYKoFMRd",
|
|
264
|
-
treasury: "KT1P2BXYb894MekrCcSrnidzQYPVqitLoVLc",
|
|
265
|
-
user_moderation: "KT1TWWQ6FtLoosVfZgTKV2q68TMZaENhGm54",
|
|
266
|
-
user_register: "KT1Ezht4PDKZri7aVppVGT4Jkw39sesaFnww",
|
|
267
|
-
onchfs_files: "KT1Ae7dT1gsLw2tRnUMXSCmEyF74KVkM6LUo"
|
|
268
|
-
};
|
|
269
|
-
|
|
270
|
-
//#endregion
|
|
271
|
-
//#region src/contracts/eth.ts
|
|
272
|
-
const ethTestnetContracts = {
|
|
273
|
-
multicall3: "0xcA11bde05977b3631167028862bE2a173976CA11",
|
|
274
|
-
seaport_zone: "0x0000000006B429721d1F4c4cD256BF3A38c09Ac6",
|
|
275
|
-
issuer_factory_v1: "0x4e9ef916F55B5d4a27E6406C7Ce8bcd29c2693d6",
|
|
276
|
-
mint_ticket_factory_v1: "0xbaed21d8C57caf71578b9aE1E09a68721d0Dd02d",
|
|
277
|
-
dutch_auction_minter_v1: "0x2F8ea350E7F29BCaC2AEE5889d64df07EE3Fa98d",
|
|
278
|
-
fixed_price_minter_v1: "0xa6c9c758e80ec18e1a28d485b97400B11dCFCD64",
|
|
279
|
-
ticket_redeemer_v1: "0xdd29eA613e0553fc03f5762Bf643710a7987A216",
|
|
280
|
-
ipfs_renderer_v1: "0x17b9c8a7C6F9D3768D4DA75EBB6abDe9FBe900cf",
|
|
281
|
-
onchfs_renderer_v1: "0x25B087D2c87a0b34188a530dC9cCfDa30822AA8e",
|
|
282
|
-
randomizer_v1: "0x5962e4dEeDe2DB4A83259255D30c19F4397FD5A6",
|
|
283
|
-
role_registry_v1: "0x92B70c5C6E676BdC395DfD911c07392fc7C36E4F",
|
|
284
|
-
contract_registry_v1: "0xb7CFDcDb2c6a1D05D7b85FB4ae7B7bccd028010F",
|
|
285
|
-
gen_art_token_impl_v1: "0x1feeb359e96E6Dd6F19F1FC98e8FffDdf5AeaD58",
|
|
286
|
-
mint_ticket_impl_v1: "0x0303e3a5be6e9Fa21E72cE446a402a6AEec13c60",
|
|
287
|
-
onchfs_file_system: "0x4f555d39e89f6d768f75831d610b3940fa94c6b1",
|
|
288
|
-
onchfs_content_store: "0x070e5A608705aC4954eec054f9074eEe49bDcbfF",
|
|
289
|
-
seaport: "0x00cA04c45da318d5b7E7B14D5381Ca59F09C73f0",
|
|
290
|
-
fxhashTeamSafeAddress: "0x4F073947573FF44621cA25061Fb035c73a3014ab",
|
|
291
|
-
signerSafe: "0x4F073947573FF44621cA25061Fb035c73a3014ab",
|
|
292
|
-
moderationSafe: "0x4F073947573FF44621cA25061Fb035c73a3014ab",
|
|
293
|
-
farcaster_frame_fixed_price_minter_v1: "0xB0905f81167bD90ABD5a583E029D27DA77568084",
|
|
294
|
-
fx_token: "0xfa2e08ebfa6dae5ff68c3a0e2eb33a78f363f9fe"
|
|
167
|
+
//#region src/api/tezos.ts
|
|
168
|
+
const tezosTestnetApis = {
|
|
169
|
+
tzkt: "https://api.ghostnet.tzkt.io/v1/",
|
|
170
|
+
tzktPro: "https://api.ghostnet.tzkt.io/v1/",
|
|
171
|
+
tzktWebsite: "https://ghostnet.tzkt.io/",
|
|
172
|
+
rpcs: [
|
|
173
|
+
"https://ghostnet.ecadinfra.com",
|
|
174
|
+
"https://ghostnet.smartpy.io",
|
|
175
|
+
"https://ghostnet.tezos.marigold.dev/"
|
|
176
|
+
]
|
|
295
177
|
};
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
dutch_auction_minter_v1: "0x1bC736a2b144096a4752534C557D7E6C311CcAF1",
|
|
307
|
-
fixed_price_minter_v1: "0xB645cFfD9bFB93c2c181d5Be0D6a8C1d81C2aEf3",
|
|
308
|
-
ticket_redeemer_v1: "0x3D72011b1bB52e33f9D81Fc5553FF4765e3f32c1",
|
|
309
|
-
ipfs_renderer_v1: "0x48F00F8314920ca0cd763D74acFe8cFE4024a274",
|
|
310
|
-
onchfs_renderer_v1: "0xe9fE6b2e494E40404AcB2b8B0a0Bc7b79FD03c83",
|
|
311
|
-
randomizer_v1: "0xED32Ed47A75e298433cF822E10645C04a0B95075",
|
|
312
|
-
role_registry_v1: "0x22b9Dd17BA1132C027d780bC0A784f08f244022B",
|
|
313
|
-
contract_registry_v1: "0x4DAc308c686D747A804B7E95db606695a529A750",
|
|
314
|
-
gen_art_token_impl_v1: "0x429AC1aA66220573Da6928bcce7384fe50e1284f",
|
|
315
|
-
mint_ticket_impl_v1: "0xc2743B0B901eDAA8ccd1A09914449A797e1079F1",
|
|
316
|
-
onchfs_file_system: "0x9e0f2864c6f125bbf599df6ca6e6c3774c5b2e04",
|
|
317
|
-
onchfs_content_store: "0xC6806fd75745bB5F5B32ADa19963898155f9DB91",
|
|
318
|
-
seaport: "0x00cA04c45da318d5b7E7B14D5381Ca59F09C73f0",
|
|
319
|
-
fxhashTeamSafeAddress: "0xD8b1905022d70e74c6c8aaA2baaf275fBe1634f1",
|
|
320
|
-
signerSafe: "0xB456aF77dEB65065462BD1f0D9098413E6CA4200",
|
|
321
|
-
moderationSafe: "0x99CDaECbe1be4B7232a4f2c79EF76D403886FE1E",
|
|
322
|
-
farcaster_frame_fixed_price_minter_v1: "0x6e625892C739bFD960671Db5544E260757480725",
|
|
323
|
-
fx_token: "0xTODO"
|
|
178
|
+
const tezosMainnetApis = {
|
|
179
|
+
tzkt: "https://api.tzkt.io/v1/",
|
|
180
|
+
tzktPro: "https://pro.tzkt.io/v1/",
|
|
181
|
+
tzktWebsite: "https://tzkt.io/",
|
|
182
|
+
rpcs: [
|
|
183
|
+
"https://rpc1.fxhash.xyz",
|
|
184
|
+
"https://mainnet.smartpy.io",
|
|
185
|
+
"https://mainnet.api.tez.ie",
|
|
186
|
+
"https://teznode.letzbake.com"
|
|
187
|
+
]
|
|
324
188
|
};
|
|
325
189
|
|
|
326
190
|
//#endregion
|
|
@@ -340,55 +204,6 @@ const baseMainnetApis = {
|
|
|
340
204
|
alchemy: { rpc: "https://base-mainnet.g.alchemy.com/v2/xTtlsglqRKcFwSkg2bilqp7U2smOt3g9" }
|
|
341
205
|
};
|
|
342
206
|
|
|
343
|
-
//#endregion
|
|
344
|
-
//#region src/errors/metadata.ts
|
|
345
|
-
var AppMetadataInvalidTypeError = class extends RichError {
|
|
346
|
-
name = "AppMetadataInvalidTypeError";
|
|
347
|
-
messages = { dev: "App metadata should be an object." };
|
|
348
|
-
};
|
|
349
|
-
var AppMetadataMissingPropertiesError = class extends RichError {
|
|
350
|
-
name = "AppMetadataMissingPropertiesError";
|
|
351
|
-
constructor(par1) {
|
|
352
|
-
super(isRichErrorMessages(par1) ? par1 : { dev: `App metadata is missing required properties ${par1.map((p) => `"${p}"`).join(", ")}` });
|
|
353
|
-
}
|
|
354
|
-
};
|
|
355
|
-
|
|
356
|
-
//#endregion
|
|
357
|
-
//#region src/config/metadata.ts
|
|
358
|
-
const crossEnvMetadata = {
|
|
359
|
-
name: "FXHASH",
|
|
360
|
-
description: "fxhash is a blockchain open platform for Generative Art",
|
|
361
|
-
icon: "https://gateway.fxhash2.xyz/ipfs/QmUQUtCenBEYQLoHvfFCRxyHYDqBE49UGxtcp626FZnFDG"
|
|
362
|
-
};
|
|
363
|
-
/**
|
|
364
|
-
* Get application metadata by merging some cross-env metadata with an
|
|
365
|
-
* environment-specific URL (application front-end).
|
|
366
|
-
*/
|
|
367
|
-
function fxAppEnvMetadata(env) {
|
|
368
|
-
return {
|
|
369
|
-
...crossEnvMetadata,
|
|
370
|
-
url: fxApisByEnv(env).website
|
|
371
|
-
};
|
|
372
|
-
}
|
|
373
|
-
/**
|
|
374
|
-
* Test whether some value is a valid {@link IAppMetadata} interface. If not,
|
|
375
|
-
* the issue causing it to be invalid is returned as a failure.
|
|
376
|
-
* @param value Any value which should be tested for being valid App Metadata
|
|
377
|
-
* @returns A Result with void success or failure with the issue
|
|
378
|
-
*/
|
|
379
|
-
function isAppMetadataValid(value) {
|
|
380
|
-
if (!(typeof value === "object")) return failure(new AppMetadataInvalidTypeError());
|
|
381
|
-
const missingProperties = [];
|
|
382
|
-
const requiredProperties = [
|
|
383
|
-
"name",
|
|
384
|
-
"description",
|
|
385
|
-
"url"
|
|
386
|
-
];
|
|
387
|
-
for (const prop of requiredProperties) if (!value[prop]) missingProperties.push(prop);
|
|
388
|
-
if (missingProperties.length > 0) return failure(new AppMetadataMissingPropertiesError(missingProperties));
|
|
389
|
-
return success();
|
|
390
|
-
}
|
|
391
|
-
|
|
392
207
|
//#endregion
|
|
393
208
|
//#region src/config/algolia.ts
|
|
394
209
|
const algoliaConfig = {
|
|
@@ -436,6 +251,78 @@ const gpuRenderingConfigProd = createEnvConfig({
|
|
|
436
251
|
v132: "arn:aws:batch:us-east-1:759392670381:job-definition/fxhash-batch-prd-fxhash-extract-chrome-v132"
|
|
437
252
|
});
|
|
438
253
|
|
|
254
|
+
//#endregion
|
|
255
|
+
//#region src/errors/metadata.ts
|
|
256
|
+
var AppMetadataInvalidTypeError = class extends RichError {
|
|
257
|
+
constructor(..._args) {
|
|
258
|
+
super(..._args);
|
|
259
|
+
this.name = "AppMetadataInvalidTypeError";
|
|
260
|
+
this.messages = { dev: "App metadata should be an object." };
|
|
261
|
+
}
|
|
262
|
+
};
|
|
263
|
+
var AppMetadataMissingPropertiesError = class extends RichError {
|
|
264
|
+
constructor(par1) {
|
|
265
|
+
super(isRichErrorMessages(par1) ? par1 : { dev: `App metadata is missing required properties ${par1.map((p) => `"${p}"`).join(", ")}` });
|
|
266
|
+
this.name = "AppMetadataMissingPropertiesError";
|
|
267
|
+
}
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
//#endregion
|
|
271
|
+
//#region src/config/metadata.ts
|
|
272
|
+
const crossEnvMetadata = {
|
|
273
|
+
name: "FXHASH",
|
|
274
|
+
description: "fxhash is a blockchain open platform for Generative Art",
|
|
275
|
+
icon: "https://gateway.fxhash2.xyz/ipfs/QmUQUtCenBEYQLoHvfFCRxyHYDqBE49UGxtcp626FZnFDG"
|
|
276
|
+
};
|
|
277
|
+
/**
|
|
278
|
+
* Get application metadata by merging some cross-env metadata with an
|
|
279
|
+
* environment-specific URL (application front-end).
|
|
280
|
+
*/
|
|
281
|
+
function fxAppEnvMetadata(env) {
|
|
282
|
+
return {
|
|
283
|
+
...crossEnvMetadata,
|
|
284
|
+
url: fxApisByEnv(env).website
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Test whether some value is a valid {@link IAppMetadata} interface. If not,
|
|
289
|
+
* the issue causing it to be invalid is returned as a failure.
|
|
290
|
+
* @param value Any value which should be tested for being valid App Metadata
|
|
291
|
+
* @returns A Result with void success or failure with the issue
|
|
292
|
+
*/
|
|
293
|
+
function isAppMetadataValid(value) {
|
|
294
|
+
if (!(typeof value === "object")) return failure(new AppMetadataInvalidTypeError());
|
|
295
|
+
const missingProperties = [];
|
|
296
|
+
for (const prop of [
|
|
297
|
+
"name",
|
|
298
|
+
"description",
|
|
299
|
+
"url"
|
|
300
|
+
]) if (!value[prop]) missingProperties.push(prop);
|
|
301
|
+
if (missingProperties.length > 0) return failure(new AppMetadataMissingPropertiesError(missingProperties));
|
|
302
|
+
return success();
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
//#endregion
|
|
306
|
+
//#region src/constants.ts
|
|
307
|
+
const AUTH_JWT_PK_DEV = `-----BEGIN PUBLIC KEY-----
|
|
308
|
+
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1hF8JwAxIiFWzbXIgeOK
|
|
309
|
+
Bzf6SZlT3S1YampzVgy4pw1G0aKwHnyvC+HrRfkEOCGxX24DqbEpZby2LjKF9bfa
|
|
310
|
+
OLrERrNSNrDLXbf3ipKQrnEBu2UdT2pE5UF/SwJUTdGczb78EId0yIjuZ26qZcQg
|
|
311
|
+
Pr1ji6FgdOOdEwdphl4x1dlQzgMgjhRcPwf9NsBx3R6l/ut2o38Qa8azxM7XBg8F
|
|
312
|
+
UlsKGy4/jY2OIEKCravCoXmpeX9pxploED/DoJJI9FZXVB7/91iIb6MI0Ycby+xo
|
|
313
|
+
GL/cF+ZYSVRoFexji4vpycJfltW5YJ8jHSveZWa6LXqM6LY7zRFmlxb3SF4tsDTT
|
|
314
|
+
PQIDAQAB
|
|
315
|
+
-----END PUBLIC KEY-----`;
|
|
316
|
+
const AUTH_JWT_PK_PRD = `-----BEGIN PUBLIC KEY-----
|
|
317
|
+
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtwl1CRvpN7MZeGGDTy8x
|
|
318
|
+
+W3EkZfBzZqEp3vahCaqBdMkMhy7oB1pUU7pjb34tg9epnKdKo0cZn+Bw1LkSKWh
|
|
319
|
+
Z1DSbgCdNR47qKb4xN8mZ5VvEw/64+nUXbCOikX+rMqSE2tNeNU3KOYr8VQYt9dv
|
|
320
|
+
/J0xFwsr0aa4m23dmJ/oPLA8eR8lZk++fEZsbezKH3i9zz73I0UAivijM0S9lYeB
|
|
321
|
+
NkT5zOaAJARzl69hEMQAv9qUkokwPSHlcG+LakhTGYAyMe3w/KHXVRkWjuCUgUJf
|
|
322
|
+
90oveckX4dhMbHbz9ba1p3hpmwdmlRzljIIE2GQYawA8eNLsOb/z6V8HGMbCL/N9
|
|
323
|
+
JwIDAQAB
|
|
324
|
+
-----END PUBLIC KEY-----`;
|
|
325
|
+
|
|
439
326
|
//#endregion
|
|
440
327
|
//#region src/contracts/base.ts
|
|
441
328
|
const baseTestnetContracts = {
|
|
@@ -447,6 +334,7 @@ const baseTestnetContracts = {
|
|
|
447
334
|
fixed_price_minter_v1: "0x29159d2DFbF93E991d39Dc080a5f8dcc5C90ebb8",
|
|
448
335
|
ticket_redeemer_v1: "0xFfbC4F51AB33E14380893213d7C969e0626c4C43",
|
|
449
336
|
ipfs_renderer_v1: "0x7657C31078d8bfB8d1BC127fC04dAd23B3f451ed",
|
|
337
|
+
ipfs_renderer_v2: "0x1c5CD479C85C1Debc49109E8f284D5AB3353043F",
|
|
450
338
|
onchfs_renderer_v1: "0xf23C64BA846557c24E6F5086376047b0CE70d1cC",
|
|
451
339
|
randomizer_v1: "0xCA6323f03B5113471BA3b7B2F4Ba0AA2D45aE257",
|
|
452
340
|
role_registry_v1: "0x179f5B8FE1c270D7fC1807355F3fd981A30e21A6",
|
|
@@ -464,7 +352,10 @@ const baseTestnetContracts = {
|
|
|
464
352
|
fx_airdrop: "0x1e4e821216582f0771528b848b4a51c8474be2c7",
|
|
465
353
|
fx_tez_airdrop: "0x3c2b4c38d37affb023a1d2327af428909eb8a134",
|
|
466
354
|
fx_token_launchpad: "0x2f949f7cD46F4D79d4FD6b234DB302cAeEe552e2",
|
|
467
|
-
fx_project_factory: "0xcA9486e54FbBD6aCe6eB6AA0102ee97dd90A8a86"
|
|
355
|
+
fx_project_factory: "0xcA9486e54FbBD6aCe6eB6AA0102ee97dd90A8a86",
|
|
356
|
+
fx_project_factory_v2: "0xa5A552f86f8Fd14F73Fc18Cc4DbFB04341896260",
|
|
357
|
+
fx_doppler_factory: "0xE0Ebfb5b8A0A67856e98422BaA3f3ac2a51D5e7F",
|
|
358
|
+
uniswap_v2_migrator: "0xE657164Ed47BD1Bdb9025cfB60Ed1CfB8E89fd63"
|
|
468
359
|
};
|
|
469
360
|
const baseMainnetContracts = {
|
|
470
361
|
multicall3: "0xcA11bde05977b3631167028862bE2a173976CA11",
|
|
@@ -475,6 +366,7 @@ const baseMainnetContracts = {
|
|
|
475
366
|
fixed_price_minter_v1: "0x4bDcaC532143d8d35ed759189EE22E3704580b9D",
|
|
476
367
|
ticket_redeemer_v1: "0x972502Bc75A780D76495Ffa84Cf8DA301F162Df6",
|
|
477
368
|
ipfs_renderer_v1: "0x9c4cC8403bE33B89a46794Ae409ce634ca567956",
|
|
369
|
+
ipfs_renderer_v2: "0xb2E2938C6cB1e3c06d22634c7cb8171DfF689e1B",
|
|
478
370
|
onchfs_renderer_v1: "0x4180D747e984C9CFEEfaF23944AE0C20c0742341",
|
|
479
371
|
randomizer_v1: "0x6754E97b8eaeC13Fa24480E9d1240176Dd0f2911",
|
|
480
372
|
role_registry_v1: "0x8d3C748e99066e15425BA1620cdD066d85D6d918",
|
|
@@ -491,8 +383,148 @@ const baseMainnetContracts = {
|
|
|
491
383
|
fx_token: "0x5Fc2843838e65eb0B5d33654628F446d54602791",
|
|
492
384
|
fx_airdrop: "0x45BB9DF166Fda4afD7e533DE42B11579a1F09d43",
|
|
493
385
|
fx_tez_airdrop: "0x5021910a5762F9C872Bf7D6CD5F09127aE8cCA84",
|
|
494
|
-
fx_token_launchpad: "
|
|
495
|
-
fx_project_factory: "
|
|
386
|
+
fx_token_launchpad: "0x6FE49c842dAEE3C709772e5727Fd863ad858f1F5",
|
|
387
|
+
fx_project_factory: "0x0612ec1A199617A5b3DF627755A34F69469AEA25",
|
|
388
|
+
fx_project_factory_v2: "0xTODO",
|
|
389
|
+
fx_doppler_factory: "0xTODO",
|
|
390
|
+
uniswap_v2_migrator: "0x6a0732ddC968EeF5795f567640577dd49DD47349"
|
|
391
|
+
};
|
|
392
|
+
|
|
393
|
+
//#endregion
|
|
394
|
+
//#region src/contracts/eth.ts
|
|
395
|
+
const ethTestnetContracts = {
|
|
396
|
+
multicall3: "0xcA11bde05977b3631167028862bE2a173976CA11",
|
|
397
|
+
seaport_zone: "0x0000000006B429721d1F4c4cD256BF3A38c09Ac6",
|
|
398
|
+
issuer_factory_v1: "0x4e9ef916F55B5d4a27E6406C7Ce8bcd29c2693d6",
|
|
399
|
+
mint_ticket_factory_v1: "0xbaed21d8C57caf71578b9aE1E09a68721d0Dd02d",
|
|
400
|
+
dutch_auction_minter_v1: "0x2F8ea350E7F29BCaC2AEE5889d64df07EE3Fa98d",
|
|
401
|
+
fixed_price_minter_v1: "0xa6c9c758e80ec18e1a28d485b97400B11dCFCD64",
|
|
402
|
+
ticket_redeemer_v1: "0xdd29eA613e0553fc03f5762Bf643710a7987A216",
|
|
403
|
+
ipfs_renderer_v1: "0x17b9c8a7C6F9D3768D4DA75EBB6abDe9FBe900cf",
|
|
404
|
+
onchfs_renderer_v1: "0x25B087D2c87a0b34188a530dC9cCfDa30822AA8e",
|
|
405
|
+
randomizer_v1: "0x5962e4dEeDe2DB4A83259255D30c19F4397FD5A6",
|
|
406
|
+
role_registry_v1: "0x92B70c5C6E676BdC395DfD911c07392fc7C36E4F",
|
|
407
|
+
contract_registry_v1: "0xb7CFDcDb2c6a1D05D7b85FB4ae7B7bccd028010F",
|
|
408
|
+
gen_art_token_impl_v1: "0x1feeb359e96E6Dd6F19F1FC98e8FffDdf5AeaD58",
|
|
409
|
+
mint_ticket_impl_v1: "0x0303e3a5be6e9Fa21E72cE446a402a6AEec13c60",
|
|
410
|
+
onchfs_file_system: "0x4f555d39e89f6d768f75831d610b3940fa94c6b1",
|
|
411
|
+
onchfs_content_store: "0x070e5A608705aC4954eec054f9074eEe49bDcbfF",
|
|
412
|
+
seaport: "0x00cA04c45da318d5b7E7B14D5381Ca59F09C73f0",
|
|
413
|
+
fxhashTeamSafeAddress: "0x4F073947573FF44621cA25061Fb035c73a3014ab",
|
|
414
|
+
signerSafe: "0x4F073947573FF44621cA25061Fb035c73a3014ab",
|
|
415
|
+
moderationSafe: "0x4F073947573FF44621cA25061Fb035c73a3014ab",
|
|
416
|
+
farcaster_frame_fixed_price_minter_v1: "0xB0905f81167bD90ABD5a583E029D27DA77568084",
|
|
417
|
+
fx_token: "0xfa2e08ebfa6dae5ff68c3a0e2eb33a78f363f9fe"
|
|
418
|
+
};
|
|
419
|
+
/**
|
|
420
|
+
* TODO
|
|
421
|
+
* -----------------------------------------------------------------------------
|
|
422
|
+
* Put the actual addresses.
|
|
423
|
+
*/
|
|
424
|
+
const ethMainnetContracts = {
|
|
425
|
+
multicall3: "0xcA11bde05977b3631167028862bE2a173976CA11",
|
|
426
|
+
seaport_zone: "0x0000000006B429721d1F4c4cD256BF3A38c09Ac6",
|
|
427
|
+
issuer_factory_v1: "0x442295de8A31d65026dBc09c29d469F6854f188a",
|
|
428
|
+
mint_ticket_factory_v1: "0xDB92ed0e6265d042F05E5C2f6D2F99496e87D706",
|
|
429
|
+
dutch_auction_minter_v1: "0x1bC736a2b144096a4752534C557D7E6C311CcAF1",
|
|
430
|
+
fixed_price_minter_v1: "0xB645cFfD9bFB93c2c181d5Be0D6a8C1d81C2aEf3",
|
|
431
|
+
ticket_redeemer_v1: "0x3D72011b1bB52e33f9D81Fc5553FF4765e3f32c1",
|
|
432
|
+
ipfs_renderer_v1: "0x48F00F8314920ca0cd763D74acFe8cFE4024a274",
|
|
433
|
+
onchfs_renderer_v1: "0xe9fE6b2e494E40404AcB2b8B0a0Bc7b79FD03c83",
|
|
434
|
+
randomizer_v1: "0xED32Ed47A75e298433cF822E10645C04a0B95075",
|
|
435
|
+
role_registry_v1: "0x22b9Dd17BA1132C027d780bC0A784f08f244022B",
|
|
436
|
+
contract_registry_v1: "0x4DAc308c686D747A804B7E95db606695a529A750",
|
|
437
|
+
gen_art_token_impl_v1: "0x429AC1aA66220573Da6928bcce7384fe50e1284f",
|
|
438
|
+
mint_ticket_impl_v1: "0xc2743B0B901eDAA8ccd1A09914449A797e1079F1",
|
|
439
|
+
onchfs_file_system: "0x9e0f2864c6f125bbf599df6ca6e6c3774c5b2e04",
|
|
440
|
+
onchfs_content_store: "0xC6806fd75745bB5F5B32ADa19963898155f9DB91",
|
|
441
|
+
seaport: "0x00cA04c45da318d5b7E7B14D5381Ca59F09C73f0",
|
|
442
|
+
fxhashTeamSafeAddress: "0xD8b1905022d70e74c6c8aaA2baaf275fBe1634f1",
|
|
443
|
+
signerSafe: "0xB456aF77dEB65065462BD1f0D9098413E6CA4200",
|
|
444
|
+
moderationSafe: "0x99CDaECbe1be4B7232a4f2c79EF76D403886FE1E",
|
|
445
|
+
farcaster_frame_fixed_price_minter_v1: "0x6e625892C739bFD960671Db5544E260757480725",
|
|
446
|
+
fx_token: "0xTODO"
|
|
447
|
+
};
|
|
448
|
+
|
|
449
|
+
//#endregion
|
|
450
|
+
//#region src/contracts/tezos.ts
|
|
451
|
+
const tezosTestnetContracts = {
|
|
452
|
+
allowed_mint: "KT1QwfqMUDRYVyxo9KhunY5YCx9qQ9LWcswr",
|
|
453
|
+
allowed_mint_issuer: "KT1WDByFKQmgVynxSr2rzdijs5aSs7mo7eBM",
|
|
454
|
+
allowed_mint_issuer_v3: "KT1S3UqrLgMpVivNWWmBUnkPCaSFHDJ4HYvb",
|
|
455
|
+
allowed_mint_v3: "KT1HUE2A6CHNw4NZZBWjJyG38nysWWfusagu",
|
|
456
|
+
articles: "KT1HV8NXUCKWC1tWNHSD8LPPiKPshQuXvb8r",
|
|
457
|
+
card_proxy: "KT1R6N27Qdw4RqeSUnYkw436uZrFSRWtxqbd",
|
|
458
|
+
collaboration_factory: "KT1WFXts7jwxpD9uGDKzyqTUTFaG222xmjoZ",
|
|
459
|
+
consumable_database: "KT1FP9y1PJpJkXhdJCgYZhVbj9UBpxnA57Bx",
|
|
460
|
+
cycles: "KT1BJBcvtgZM2Kf4rUapmp4AhXtWCmznxd6F",
|
|
461
|
+
gentk_v1: "KT1ExHjELnDuat9io3HkDcrBhHmek7h8EVXG",
|
|
462
|
+
gentk_v1_data: "KT1SquPSN9oiMUWHG9coKRJAwz8Afe4c6izT",
|
|
463
|
+
gentk_v2: "KT1NkZho1yRkDdQnN4Mz93sDYyY2pPrEHTNs",
|
|
464
|
+
gentk_v3: "KT1TtVAyjh4Ahdm8sLZwFnL7tqoLf59XrK2h",
|
|
465
|
+
issuer_tickets: "KT19PBsvmB2CwFqXftzb5gNJfxrEDFdSxGKZ",
|
|
466
|
+
issuer_v0: "KT1PyfrDD85RxUWz8dMHoC92MxdPzecSQ5t9",
|
|
467
|
+
issuer_v1: "KT1QwWVZogqPZZtGSVxGpLkEWar7LFvAsMdd",
|
|
468
|
+
issuer_v2: "KT1Sy7X6TubmZ39G8CHVrUcxjc3jiF68P8oB",
|
|
469
|
+
issuer_v3: "KT1DfymMp3qD5Pd5ujPjp7UsQbppY9yY1Hbf",
|
|
470
|
+
marketplace_v1: "KT1DbivePcuUzCp5RaAQWxPSLV9G2Ys4faUR",
|
|
471
|
+
marketplace_v2: "KT1HFYtf4vNCr4xRDZxLKc5asUdCsPUTTW9R",
|
|
472
|
+
marketplace_v3: "KT1J6rt4d9U785DZWYEPvQ2fR1e71gxP42Lj",
|
|
473
|
+
moderation_articles: "KT1Qg78fa81Xyjh65yNqUgVucubHUyq6VmgL",
|
|
474
|
+
moderation_team: "KT1RsfyWzHs1EEWMzFLmKnJTQwPqRzsnF3Dp",
|
|
475
|
+
moderation_token: "KT1PokFR36CcXKh3jUnjncabcuPWm5BMiqjt",
|
|
476
|
+
moderation_token_v3: "KT1C1J38YR6eDvRBDEDaypptCFda9aH7FRbJ",
|
|
477
|
+
moderation_user: "KT1Q3s7mYpscCnwsyndrVZg9WqBCmw99n37g",
|
|
478
|
+
pricing_dutch_auction: "KT1BqikbUisiBBd9WvPiqnTwLY8Pm68p2Aua",
|
|
479
|
+
pricing_dutch_auction_v3: "KT1QCboxZ28SqsfyZWTDrkSpZzU6xjZXBsFb",
|
|
480
|
+
pricing_fixed: "KT1PAsf9Zc9FGJA9iLE1Ab2vPkMDsh4hyZVi",
|
|
481
|
+
pricing_fixed_v3: "KT1Mqyy5JPknNzNJtgF93SHpFHv4VcYrNZry",
|
|
482
|
+
randomizer: "KT1QmdsrJWJgK3VXid8q7D4sPipVoc9jh12x",
|
|
483
|
+
randomizer_v2: "KT1Eow4nBY3B9EhWcX1aEXva67VkNFfP1Tq6",
|
|
484
|
+
token_moderation: "KT1BHfPDMRp2q48ZkmmnK7TRzQRdFnp6XVKq",
|
|
485
|
+
treasury: "KT1MbDbRhZPs5TzZEXkT142ePoccFHfohBoo",
|
|
486
|
+
user_moderation: "KT1LmZjoitx2itnB1qCbHMrT3V64RbuSPf3a",
|
|
487
|
+
user_register: "KT1XaikgmBDQANBvkFqyFhSpgAZJAXpiDFGE",
|
|
488
|
+
onchfs_files: "KT1FA8AGGcJha6S6MqfBUiibwTaYhK8u7s9Q"
|
|
489
|
+
};
|
|
490
|
+
const tezosMainnetContracts = {
|
|
491
|
+
allowed_mint: "KT1VDQwskdfHkSbA9W6CSEnxnh1u1XU8K8Gu",
|
|
492
|
+
allowed_mint_issuer: "KT1Djz5ix2yEGmV7PMq3GYq17TvMMkd1anT2",
|
|
493
|
+
allowed_mint_issuer_v3: "KT1LJ4R4xoEWMgTjrGrdHJAeHLYFaB4RsoVK",
|
|
494
|
+
allowed_mint_v3: "KT1KgEjxqfRCMwtCGifT6fDPwC35RptTUEvE",
|
|
495
|
+
articles: "KT1GtbuswcNMGhHF2TSuH1Yfaqn16do8Qtva",
|
|
496
|
+
card_proxy: "KT1DQGSRsgHcf2TPdKGc4qm5AT9JprJCAo7j",
|
|
497
|
+
collaboration_factory: "KT1JrUPSCt1r2MB2J7Lk2KwiWSYr3Mr414ck",
|
|
498
|
+
consumable_database: "KT1Mbfkqh5EhebWuMvqAfUPTpgiBPwmQCDSD",
|
|
499
|
+
cycles: "KT1BgD9SPfysnMz3vkfm6ZEaGFKCVcE5ay91",
|
|
500
|
+
gentk_v1: "KT1KEa8z6vWXDJrVqtMrAeDVzsvxat3kHaCE",
|
|
501
|
+
gentk_v1_data: "KT1WRpPyXHSCbTfDQFWVXbMpxxvf7Y7KChxc",
|
|
502
|
+
gentk_v2: "KT1U6EHmNxJTkvaWJ4ThczG4FSDaHC21ssvi",
|
|
503
|
+
gentk_v3: "KT1EfsNuqwLAWDd3o4pvfUx1CAh5GMdTrRvr",
|
|
504
|
+
issuer_tickets: "KT19etLCjCCzTLFFAxsxLFsVYMRPetr2bTD5",
|
|
505
|
+
issuer_v0: "KT1AEVuykWeuuFX7QkEAMNtffzwhe1Z98hJS",
|
|
506
|
+
issuer_v1: "KT1XCoGnfupWk7Sp8536EfrxcP73LmT68Nyr",
|
|
507
|
+
issuer_v2: "KT1BJC12dG17CVvPKJ1VYaNnaT5mzfnUTwXv",
|
|
508
|
+
issuer_v3: "KT1Xpmp15KfqoePNW9HczFmqaGNHwadV2a3b",
|
|
509
|
+
marketplace_v1: "KT1Xo5B7PNBAeynZPmca4bRh6LQow4og1Zb9",
|
|
510
|
+
marketplace_v2: "KT1GbyoDi7H1sfXmimXpptZJuCdHMh66WS9u",
|
|
511
|
+
marketplace_v3: "KT1M1NyU9X4usEimt2f3kDaijZnDMNBu42Ja",
|
|
512
|
+
moderation_articles: "KT1A36z7nG4zPDbhjyrzhYf9SCn5ipPZeRMQ",
|
|
513
|
+
moderation_team: "KT1FvGQcPxzuJkJsdWFQiGkueSNT5mqpFDrf",
|
|
514
|
+
moderation_token: "KT18tPu7uXy9PJ97i3qCLsr7an4X6sQ5qxU7",
|
|
515
|
+
moderation_token_v3: "KT1UBWXN1KxTh4eurrCTCH7aEjqdrM3HjP6R",
|
|
516
|
+
moderation_user: "KT1Wn2kkKmdbyLWBiLXWCkE7fKj1LsLKar2A",
|
|
517
|
+
pricing_dutch_auction: "KT1EzLrXRCXij42pKfbZPn48PuxrnVki1aYY",
|
|
518
|
+
pricing_dutch_auction_v3: "KT1MFgHKorMWXeVL6qrpgjZmemirafppSg9q",
|
|
519
|
+
pricing_fixed: "KT1FHzHxuMaNLYG8LdniY45M6RCfkF3AoXFh",
|
|
520
|
+
pricing_fixed_v3: "KT1V24J6FVuKPU3xy6gVF6wJ3zdRXBheQhaV",
|
|
521
|
+
randomizer: "KT1XYgKrzBbzsckGvXTPgxFyN7KNZ9RPYVWf",
|
|
522
|
+
randomizer_v2: "KT1CfmepqJkfZwqLPFVMKFoYUS7dPPZHyCTo",
|
|
523
|
+
token_moderation: "KT1HgVuzNWVvnX16fahbV2LrnpwifYKoFMRd",
|
|
524
|
+
treasury: "KT1P2BXYb894MekrCcSrnidzQYPVqitLoVLc",
|
|
525
|
+
user_moderation: "KT1TWWQ6FtLoosVfZgTKV2q68TMZaENhGm54",
|
|
526
|
+
user_register: "KT1Ezht4PDKZri7aVppVGT4Jkw39sesaFnww",
|
|
527
|
+
onchfs_files: "KT1Ae7dT1gsLw2tRnUMXSCmEyF74KVkM6LUo"
|
|
496
528
|
};
|
|
497
529
|
|
|
498
530
|
//#endregion
|
|
@@ -511,27 +543,6 @@ const BlockchainIdentifiers = {
|
|
|
511
543
|
BaseMainnet: "eip155:8453"
|
|
512
544
|
};
|
|
513
545
|
|
|
514
|
-
//#endregion
|
|
515
|
-
//#region src/constants.ts
|
|
516
|
-
const AUTH_JWT_PK_DEV = `-----BEGIN PUBLIC KEY-----
|
|
517
|
-
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1hF8JwAxIiFWzbXIgeOK
|
|
518
|
-
Bzf6SZlT3S1YampzVgy4pw1G0aKwHnyvC+HrRfkEOCGxX24DqbEpZby2LjKF9bfa
|
|
519
|
-
OLrERrNSNrDLXbf3ipKQrnEBu2UdT2pE5UF/SwJUTdGczb78EId0yIjuZ26qZcQg
|
|
520
|
-
Pr1ji6FgdOOdEwdphl4x1dlQzgMgjhRcPwf9NsBx3R6l/ut2o38Qa8azxM7XBg8F
|
|
521
|
-
UlsKGy4/jY2OIEKCravCoXmpeX9pxploED/DoJJI9FZXVB7/91iIb6MI0Ycby+xo
|
|
522
|
-
GL/cF+ZYSVRoFexji4vpycJfltW5YJ8jHSveZWa6LXqM6LY7zRFmlxb3SF4tsDTT
|
|
523
|
-
PQIDAQAB
|
|
524
|
-
-----END PUBLIC KEY-----`;
|
|
525
|
-
const AUTH_JWT_PK_PRD = `-----BEGIN PUBLIC KEY-----
|
|
526
|
-
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtwl1CRvpN7MZeGGDTy8x
|
|
527
|
-
+W3EkZfBzZqEp3vahCaqBdMkMhy7oB1pUU7pjb34tg9epnKdKo0cZn+Bw1LkSKWh
|
|
528
|
-
Z1DSbgCdNR47qKb4xN8mZ5VvEw/64+nUXbCOikX+rMqSE2tNeNU3KOYr8VQYt9dv
|
|
529
|
-
/J0xFwsr0aa4m23dmJ/oPLA8eR8lZk++fEZsbezKH3i9zz73I0UAivijM0S9lYeB
|
|
530
|
-
NkT5zOaAJARzl69hEMQAv9qUkokwPSHlcG+LakhTGYAyMe3w/KHXVRkWjuCUgUJf
|
|
531
|
-
90oveckX4dhMbHbz9ba1p3hpmwdmlRzljIIE2GQYawA8eNLsOb/z6V8HGMbCL/N9
|
|
532
|
-
JwIDAQAB
|
|
533
|
-
-----END PUBLIC KEY-----`;
|
|
534
|
-
|
|
535
546
|
//#endregion
|
|
536
547
|
//#region src/config.ts
|
|
537
548
|
/**
|
|
@@ -752,7 +763,7 @@ function setConfig(userConfig) {
|
|
|
752
763
|
|
|
753
764
|
//#endregion
|
|
754
765
|
//#region src/utils/onchfs.ts
|
|
755
|
-
const onchfsRegex = new RegExp("^onchfs://");
|
|
766
|
+
const onchfsRegex = /* @__PURE__ */ new RegExp("^onchfs://");
|
|
756
767
|
/**
|
|
757
768
|
* Returns the CID or a resource, whether it's already a CID or an onchfs://<CID> resource
|
|
758
769
|
* @param resource either a CID or a onchfs://<CID> string
|
|
@@ -770,7 +781,7 @@ let EGatewayIpfs = /* @__PURE__ */ function(EGatewayIpfs$1) {
|
|
|
770
781
|
EGatewayIpfs$1["IPFSIO"] = "IPFSIO";
|
|
771
782
|
return EGatewayIpfs$1;
|
|
772
783
|
}({});
|
|
773
|
-
const ipfsRegex = new RegExp("^ipfs://");
|
|
784
|
+
const ipfsRegex = /* @__PURE__ */ new RegExp("^ipfs://");
|
|
774
785
|
/**
|
|
775
786
|
* Given a gateway enum, outputs the http url root of the gateway
|
|
776
787
|
*/
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["ethTestnetApis: IEthApis","ethMainnetApis: IEthApis","tezosTestnetApis: ITezosApis","tezosMainnetApis: ITezosApis","url: string","isProd: boolean","isLocal: boolean","isDockerLocal: boolean","fxhashDevApis: IFxhashApis","fxhashLocalApis: IFxhashApis","fxhashLocalDockerApis: IFxhashApis","fxhashPrdApis: IFxhashApis","fxEnvToApisMap: Record<TEnv, IFxhashApis>","env: TEnv","tezosTestnetContracts: ITezosContracts","tezosMainnetContracts: ITezosContracts","ethTestnetContracts: IEthContracts","ethMainnetContracts: IEthContracts","baseTestnetApis: IBaseApis","baseMainnetApis: IBaseApis","par1: IRichErrorMessages | string[]","crossEnvMetadata: Omit<IAppMetadata, \"url\">","env: TEnv","value: any","missingProperties: string[]","requiredProperties: (keyof Required<IAppMetadata>)[]","algoliaConfigDev: AlgoliaConfig","algoliaConfigProd: AlgoliaConfig","gpuRenderingConfigShared: GPURenderingConfigShared","batchArns: Record<GPUVersion, string>","gpuRenderingConfigDev: GPURenderingConfig","gpuRenderingConfigProd: GPURenderingConfig","baseTestnetContracts: IBaseContracts","baseMainnetContracts: IBaseContracts","fxhashConfig: IFxhashConfig","env: TEnv","localConfig: IFxhashConfigSingleEnv","localDockerConfig: IFxhashConfigSingleEnv","devConfig: IFxhashConfigSingleEnv","prdConfig: IFxhashConfigSingleEnv","config: IFxhashConfigSingleEnv","userConfig: Partial<IFxhashConfigSingleEnv>","onchfsRegex: RegExp","resource: string","ipfsRegex: RegExp","gateway: EGatewayIpfs","resource: string","resource: string | null | undefined","uri: string","resource: string","tezosContractPrefixesByContractAddress: Record<string, string>","contract: string","id: string"],"sources":["../src/api/eth.ts","../src/api/tezos.ts","../src/helpers.ts","../src/api/fxhash.ts","../src/contracts/tezos.ts","../src/contracts/eth.ts","../src/api/base.ts","../src/errors/metadata.ts","../src/config/metadata.ts","../src/config/algolia.ts","../src/config/gpu.ts","../src/contracts/base.ts","../src/types.ts","../src/constants.ts","../src/config.ts","../src/utils/onchfs.ts","../src/utils/ipfs.ts","../src/utils/cid.ts","../src/utils/contracts.ts","../src/index.ts"],"sourcesContent":["export interface IEthApis {\n rpcs: string[]\n reservoir: string\n safe: string\n whitelist: string\n alchemy: {\n rpc: string\n }\n}\n\nexport const ethTestnetApis: IEthApis = {\n rpcs: [\n \"https://eth-sepolia.g.alchemy.com/v2/fATxHNjMh0rR9DnHCtZKDpPPxkEY48Qb\",\n ],\n reservoir: \"https://api-sepolia.reservoir.tools\",\n safe: \"https://safe-transaction-sepolia.safe.global\",\n whitelist: \"http://localhost:9999/whitelist/new\",\n alchemy: {\n rpc: \"https://eth-sepolia.g.alchemy.com/v2/xTtlsglqRKcFwSkg2bilqp7U2smOt3g9\",\n },\n}\n\nexport const ethMainnetApis: IEthApis = {\n rpcs: [\n \"https://eth-mainnet.g.alchemy.com/v2/xTtlsglqRKcFwSkg2bilqp7U2smOt3g9\",\n ],\n reservoir: \"https://api.reservoir.tools\",\n safe: \"https://safe-transaction-mainnet.safe.global/\",\n whitelist: \"https://api.v2.dev.fxhash-dev.xyz/whitelist/new\",\n alchemy: {\n rpc: \"https://eth-mainnet.g.alchemy.com/v2/xTtlsglqRKcFwSkg2bilqp7U2smOt3g9\",\n },\n}\n","export interface ITezosApis {\n tzktWebsite: string\n tzkt: string\n tzktPro: string\n rpcs: string[]\n}\n\nexport const tezosTestnetApis: ITezosApis = {\n tzkt: \"https://api.ghostnet.tzkt.io/v1/\",\n tzktPro: \"https://api.ghostnet.tzkt.io/v1/\",\n tzktWebsite: \"https://ghostnet.tzkt.io/\",\n rpcs: [\n \"https://ghostnet.ecadinfra.com\",\n \"https://ghostnet.smartpy.io\",\n \"https://ghostnet.tezos.marigold.dev/\",\n ],\n}\n\nexport const tezosMainnetApis: ITezosApis = {\n tzkt: \"https://api.tzkt.io/v1/\",\n tzktPro: \"https://pro.tzkt.io/v1/\",\n tzktWebsite: \"https://tzkt.io/\",\n rpcs: [\n \"https://rpc1.fxhash.xyz\",\n \"https://mainnet.smartpy.io\",\n \"https://mainnet.api.tez.ie\",\n \"https://teznode.letzbake.com\",\n ],\n}\n","import { TEnv } from \"./types.js\"\n\nconst HOST_LOCAL = \"localhost\"\nconst HOST_DOCKER_INTERNAL = \"host.docker.internal\"\n\nexport function getDockerInternalUrl(url: string): string {\n return url.replace(HOST_LOCAL, HOST_DOCKER_INTERNAL)\n}\n\nexport const isProd: boolean = (() => {\n // We can't destructure process.envs\n // https://nextjs.org/docs/pages/api-reference/next-config-js/env\n return (\n process.env.FXHASH_ENV === \"prd\" ||\n process.env.FXHASH_ENV === \"production\" ||\n process.env.NEXT_PUBLIC_FXHASH_ENV === \"prd\" ||\n process.env.NEXT_PUBLIC_FXHASH_ENV === \"production\" ||\n process.env.REACT_APP_FXHASH_ENV === \"prd\" ||\n process.env.REACT_APP_FXHASH_ENV === \"production\" ||\n process.env.VITE_FXHASH_ENV === \"prd\" ||\n process.env.VITE_FXHASH_ENV === \"production\"\n )\n})()\n\nexport const isLocal: boolean = (() => {\n // We can't destructure process.envs\n // https://nextjs.org/docs/pages/api-reference/next-config-js/env\n return (\n process.env.FXHASH_ENV === \"local\" ||\n process.env.NEXT_PUBLIC_FXHASH_ENV === \"local\" ||\n process.env.REACT_APP_FXHASH_ENV === \"local\" ||\n process.env.VITE_FXHASH_ENV === \"local\"\n )\n})()\n\nexport const isDockerLocal: boolean = (() => {\n const isBrowser = typeof window !== \"undefined\"\n if (isBrowser) return false\n let fs\n try {\n fs = require(\"fs\")\n } catch (e) {\n return false\n }\n if (!fs) return false\n return isLocal && fs.existsSync(\"/.dockerenv\")\n})()\n\nexport function getEnv(): TEnv {\n if (isProd) return \"prd\"\n if (isLocal) {\n return isDockerLocal ? \"localDocker\" : \"local\"\n }\n return \"dev\"\n}\n","import { getDockerInternalUrl } from \"../helpers.js\"\nimport { IFxhashApis, TEnv } from \"../types.js\"\n\n// list of APIs dev leverages\nexport const fxhashDevApis: IFxhashApis = {\n website: \"https://beta.fxhash-dev.xyz\",\n docs: \"https://docs.fxhash.xyz\",\n main: \"https://api.v2-temp.dev.fxhash-dev.xyz/graphql\",\n hasura: \"https://api.v2.dev.fxhash-dev.xyz\",\n hasuraGql: \"https://api.v2.dev.fxhash-dev.xyz/v1/graphql\",\n file: \"https://file-api.fxhash-dev.xyz\",\n fileInternal:\n \"http://fxhash-multichain-dev-testnet-file-api.fxhash-multichain-dev-testnet.svc.cluster.local:4004\",\n walletInternal:\n \"http://fxhash-multichain-dev-testnet-wallet-api.fxhash-multichain-dev-testnet.svc.cluster.local:3208\",\n fsEmulator: \"https://file-api.fxhash-dev.xyz/fs\",\n extract: \"https://extract.fxhash-dev.xyz\",\n extractInternal:\n \"http://fxhash-dev-testnet-extract-balancer.fxhash-dev-testnet.svc.cluster.local:4017\",\n media: \"https://media.dev.fxhash-dev.xyz\",\n ethMetadata: \"https://media.dev.fxhash-dev.xyz/metadata/ethereum/\",\n ipfsInternal:\n \"http://fxhash-dev-testnet-ipfs-cluster-api.fxhash-dev-testnet.svc.cluster.local:9094\",\n ipfsGateway: \"https://gateway.fxhash-dev.xyz\",\n ipfsGatewaySafe: \"https://gateway.fxhash-dev2.xyz\",\n ipfsGatewayInternal:\n \"http://fxhash-dev-testnet-ipfs-cluster-gateway.fxhash-dev-testnet.svc.cluster.local:8080\",\n onchfsProxy: \"https://onchfs.fxhash-dev2.xyz\",\n opensea: \"https://testnets-api.opensea.io/api/v2\",\n authority: {\n api: \"NONE\",\n },\n capture: {\n lambdas: {\n small:\n \"https://u5not5l323zczuwnrzxwkt34ra0eyidj.lambda-url.us-east-1.on.aws/\",\n medium:\n \"https://jgfz7a6km7fsqonej2sp3lqwvu0utnyy.lambda-url.us-east-1.on.aws/\",\n large:\n \"https://fzezvbp2f74yturkj4akjyrq3e0zswhb.lambda-url.us-east-1.on.aws/\",\n },\n proxy: {\n ipfs: \"ipfs://Qme6E5z1GDqrHyPomGEw5LChxmE9pdEYGWjwxrv6ZgwZRo\",\n onchfs:\n \"onchfs://4287364ed3219d3f2f77302a71eff0db49e971058ef87f163981ef89a445b143\",\n },\n },\n events: {\n liveBackend: \"_NONE\",\n },\n indexer: {\n tez: \"http://fxhash-multichain-dev-testnet-indexer-v2.fxhash-multichain-dev-testnet.svc.cluster.local:4001\",\n eth: \"http://fxhash-multichain-dev-testnet-eth-indexer.fxhash-multichain-dev-testnet.svc.cluster.local:3000\",\n base: \"http://fxhash-multichain-dev-testnet-base-indexer.fxhash-multichain-dev-testnet.svc.cluster.local:3000\",\n },\n}\n\n// list of APIs for when fxhash is ran locally\n// The ports must correspond to the ports the services are running on\n// defined in the root docker compose file of the monorepo\nexport const fxhashLocalApis: IFxhashApis = {\n ...fxhashDevApis,\n website: \"http://localhost:3200\",\n hasura: \"http://localhost:8888\",\n hasuraGql: \"http://localhost:8888/v1/graphql\",\n fileInternal: fxhashDevApis.file,\n ipfsGatewayInternal: fxhashDevApis.ipfsGateway,\n walletInternal: \"http://host.docker.internal:3208\",\n}\n\nexport const fxhashLocalDockerApis: IFxhashApis = {\n ...fxhashLocalApis,\n hasura: getDockerInternalUrl(fxhashLocalApis.hasura),\n hasuraGql: getDockerInternalUrl(fxhashLocalApis.hasuraGql),\n}\n\n// list of APIs prod leverages\nexport const fxhashPrdApis: IFxhashApis = {\n website: \"https://www.fxhash.xyz\",\n docs: \"https://docs.fxhash.xyz\",\n main: \"https://api.v2-temp.fxhash.xyz/graphql\",\n hasura: \"https://api.v2.fxhash.xyz\",\n hasuraGql: \"https://api.v2.fxhash.xyz/v1/graphql\",\n file: \"https://file-api.fxhash.xyz\",\n fileInternal:\n \"http://fxhash-multichain-prd-file-api.fxhash-multichain-prd.svc.cluster.local:4004\",\n walletInternal:\n \"http://fxhash-multichain-prd-wallet-api.fxhash-multichain-prd.svc.cluster.local:3208\",\n fsEmulator: \"https://file-api.fxhash.xyz/fs\",\n extract: \"https://extract.fxhash.xyz\",\n extractInternal:\n \"http://fxhash-prd-extract-balancer.fxhash-prd.svc.cluster.local:4017\",\n media: \"https://media.fxhash.xyz\",\n ethMetadata: \"https://media.fxhash.xyz/metadata/ethereum/\",\n ipfsInternal:\n \"http://fxhash-prd-ipfs-cluster-api.fxhash-prd.svc.cluster.local:9094\",\n ipfsGateway: \"https://gateway.fxhash.xyz\",\n ipfsGatewaySafe: \"https://gateway.fxhash2.xyz\",\n ipfsGatewayInternal:\n \"http://fxhash-prd-ipfs-cluster-gateway.fxhash-prd.svc.cluster.local:8080\",\n onchfsProxy: \"https://onchfs.fxhash2.xyz\",\n opensea: \"https://api.opensea.io/api/v2\",\n authority: {\n api: \"NONE\",\n },\n capture: {\n lambdas: {\n small:\n \"https://7sz7knaaw3obgqxjyv3m4e5myu0lsbdp.lambda-url.us-east-1.on.aws/\",\n medium:\n \"https://tuupcq6eesbfk4veuzdfrhu7zm0zwuqy.lambda-url.us-east-1.on.aws/\",\n large:\n \"https://bojj24y6ucxmsyfi4uccdmiliy0dzhji.lambda-url.us-east-1.on.aws/\",\n },\n proxy: {\n ipfs: \"ipfs://Qme6E5z1GDqrHyPomGEw5LChxmE9pdEYGWjwxrv6ZgwZRo\",\n onchfs:\n \"onchfs://4287364ed3219d3f2f77302a71eff0db49e971058ef87f163981ef89a445b143\",\n },\n },\n events: {\n liveBackend: \"_NONE\",\n },\n indexer: {\n tez: \"http://fxhash-multichain-prd-indexer-v2.fxhash-multichain-prd.svc.cluster.local:4001\",\n eth: \"http://fxhash-multichain-prd-eth-indexer.fxhash-multichain-prd.svc.cluster.local:3000\",\n base: \"http://fxhash-multichain-prd-base-indexer.fxhash-multichain-prd.svc.cluster.local:3000\",\n },\n}\n\nconst fxEnvToApisMap: Record<TEnv, IFxhashApis> = {\n local: fxhashLocalApis,\n localDocker: fxhashLocalDockerApis,\n dev: fxhashDevApis,\n prd: fxhashPrdApis,\n}\n\n/**\n * Given some env, returns the associated APIs config.\n */\nexport function fxApisByEnv(env: TEnv): IFxhashApis {\n return fxEnvToApisMap[env]\n}\n","export interface ITezosContracts {\n allowed_mint: string\n allowed_mint_issuer: string\n allowed_mint_issuer_v3: string\n allowed_mint_v3: string\n articles: string\n card_proxy: string\n collaboration_factory: string\n consumable_database: string\n cycles: string\n gentk_v1: string\n gentk_v1_data: string\n gentk_v2: string\n gentk_v3: string\n issuer_tickets: string\n issuer_v0: string\n issuer_v1: string\n issuer_v2: string\n issuer_v3: string\n marketplace_v1: string\n marketplace_v2: string\n marketplace_v3: string\n moderation_articles: string\n moderation_team: string\n moderation_token: string\n moderation_token_v3: string\n moderation_user: string\n pricing_dutch_auction: string\n pricing_dutch_auction_v3: string\n pricing_fixed: string\n pricing_fixed_v3: string\n randomizer: string\n randomizer_v2: string\n token_moderation: string\n treasury: string\n user_moderation: string\n user_register: string\n onchfs_files: string\n}\n// The Tezos Smart Contracts addresses on testnet\nexport const tezosTestnetContracts: ITezosContracts = {\n allowed_mint: \"KT1QwfqMUDRYVyxo9KhunY5YCx9qQ9LWcswr\",\n allowed_mint_issuer: \"KT1WDByFKQmgVynxSr2rzdijs5aSs7mo7eBM\",\n allowed_mint_issuer_v3: \"KT1S3UqrLgMpVivNWWmBUnkPCaSFHDJ4HYvb\",\n allowed_mint_v3: \"KT1HUE2A6CHNw4NZZBWjJyG38nysWWfusagu\",\n articles: \"KT1HV8NXUCKWC1tWNHSD8LPPiKPshQuXvb8r\",\n card_proxy: \"KT1R6N27Qdw4RqeSUnYkw436uZrFSRWtxqbd\",\n collaboration_factory: \"KT1WFXts7jwxpD9uGDKzyqTUTFaG222xmjoZ\",\n consumable_database: \"KT1FP9y1PJpJkXhdJCgYZhVbj9UBpxnA57Bx\",\n cycles: \"KT1BJBcvtgZM2Kf4rUapmp4AhXtWCmznxd6F\",\n gentk_v1: \"KT1ExHjELnDuat9io3HkDcrBhHmek7h8EVXG\",\n gentk_v1_data: \"KT1SquPSN9oiMUWHG9coKRJAwz8Afe4c6izT\",\n gentk_v2: \"KT1NkZho1yRkDdQnN4Mz93sDYyY2pPrEHTNs\",\n gentk_v3: \"KT1TtVAyjh4Ahdm8sLZwFnL7tqoLf59XrK2h\",\n issuer_tickets: \"KT19PBsvmB2CwFqXftzb5gNJfxrEDFdSxGKZ\",\n issuer_v0: \"KT1PyfrDD85RxUWz8dMHoC92MxdPzecSQ5t9\",\n issuer_v1: \"KT1QwWVZogqPZZtGSVxGpLkEWar7LFvAsMdd\",\n issuer_v2: \"KT1Sy7X6TubmZ39G8CHVrUcxjc3jiF68P8oB\",\n issuer_v3: \"KT1DfymMp3qD5Pd5ujPjp7UsQbppY9yY1Hbf\",\n marketplace_v1: \"KT1DbivePcuUzCp5RaAQWxPSLV9G2Ys4faUR\",\n marketplace_v2: \"KT1HFYtf4vNCr4xRDZxLKc5asUdCsPUTTW9R\",\n marketplace_v3: \"KT1J6rt4d9U785DZWYEPvQ2fR1e71gxP42Lj\",\n moderation_articles: \"KT1Qg78fa81Xyjh65yNqUgVucubHUyq6VmgL\",\n moderation_team: \"KT1RsfyWzHs1EEWMzFLmKnJTQwPqRzsnF3Dp\",\n moderation_token: \"KT1PokFR36CcXKh3jUnjncabcuPWm5BMiqjt\",\n moderation_token_v3: \"KT1C1J38YR6eDvRBDEDaypptCFda9aH7FRbJ\",\n moderation_user: \"KT1Q3s7mYpscCnwsyndrVZg9WqBCmw99n37g\",\n pricing_dutch_auction: \"KT1BqikbUisiBBd9WvPiqnTwLY8Pm68p2Aua\",\n pricing_dutch_auction_v3: \"KT1QCboxZ28SqsfyZWTDrkSpZzU6xjZXBsFb\",\n pricing_fixed: \"KT1PAsf9Zc9FGJA9iLE1Ab2vPkMDsh4hyZVi\",\n pricing_fixed_v3: \"KT1Mqyy5JPknNzNJtgF93SHpFHv4VcYrNZry\",\n randomizer: \"KT1QmdsrJWJgK3VXid8q7D4sPipVoc9jh12x\",\n randomizer_v2: \"KT1Eow4nBY3B9EhWcX1aEXva67VkNFfP1Tq6\",\n token_moderation: \"KT1BHfPDMRp2q48ZkmmnK7TRzQRdFnp6XVKq\",\n treasury: \"KT1MbDbRhZPs5TzZEXkT142ePoccFHfohBoo\",\n user_moderation: \"KT1LmZjoitx2itnB1qCbHMrT3V64RbuSPf3a\",\n user_register: \"KT1XaikgmBDQANBvkFqyFhSpgAZJAXpiDFGE\",\n onchfs_files: \"KT1FA8AGGcJha6S6MqfBUiibwTaYhK8u7s9Q\",\n}\n// The Tezos Smart Contracts on mainnet\nexport const tezosMainnetContracts: ITezosContracts = {\n allowed_mint: \"KT1VDQwskdfHkSbA9W6CSEnxnh1u1XU8K8Gu\",\n allowed_mint_issuer: \"KT1Djz5ix2yEGmV7PMq3GYq17TvMMkd1anT2\",\n allowed_mint_issuer_v3: \"KT1LJ4R4xoEWMgTjrGrdHJAeHLYFaB4RsoVK\",\n allowed_mint_v3: \"KT1KgEjxqfRCMwtCGifT6fDPwC35RptTUEvE\",\n articles: \"KT1GtbuswcNMGhHF2TSuH1Yfaqn16do8Qtva\",\n card_proxy: \"KT1DQGSRsgHcf2TPdKGc4qm5AT9JprJCAo7j\",\n collaboration_factory: \"KT1JrUPSCt1r2MB2J7Lk2KwiWSYr3Mr414ck\",\n consumable_database: \"KT1Mbfkqh5EhebWuMvqAfUPTpgiBPwmQCDSD\",\n cycles: \"KT1BgD9SPfysnMz3vkfm6ZEaGFKCVcE5ay91\",\n gentk_v1: \"KT1KEa8z6vWXDJrVqtMrAeDVzsvxat3kHaCE\",\n gentk_v1_data: \"KT1WRpPyXHSCbTfDQFWVXbMpxxvf7Y7KChxc\",\n gentk_v2: \"KT1U6EHmNxJTkvaWJ4ThczG4FSDaHC21ssvi\",\n gentk_v3: \"KT1EfsNuqwLAWDd3o4pvfUx1CAh5GMdTrRvr\",\n issuer_tickets: \"KT19etLCjCCzTLFFAxsxLFsVYMRPetr2bTD5\",\n issuer_v0: \"KT1AEVuykWeuuFX7QkEAMNtffzwhe1Z98hJS\",\n issuer_v1: \"KT1XCoGnfupWk7Sp8536EfrxcP73LmT68Nyr\",\n issuer_v2: \"KT1BJC12dG17CVvPKJ1VYaNnaT5mzfnUTwXv\",\n issuer_v3: \"KT1Xpmp15KfqoePNW9HczFmqaGNHwadV2a3b\",\n marketplace_v1: \"KT1Xo5B7PNBAeynZPmca4bRh6LQow4og1Zb9\",\n marketplace_v2: \"KT1GbyoDi7H1sfXmimXpptZJuCdHMh66WS9u\",\n marketplace_v3: \"KT1M1NyU9X4usEimt2f3kDaijZnDMNBu42Ja\",\n moderation_articles: \"KT1A36z7nG4zPDbhjyrzhYf9SCn5ipPZeRMQ\",\n moderation_team: \"KT1FvGQcPxzuJkJsdWFQiGkueSNT5mqpFDrf\",\n moderation_token: \"KT18tPu7uXy9PJ97i3qCLsr7an4X6sQ5qxU7\",\n moderation_token_v3: \"KT1UBWXN1KxTh4eurrCTCH7aEjqdrM3HjP6R\",\n moderation_user: \"KT1Wn2kkKmdbyLWBiLXWCkE7fKj1LsLKar2A\",\n pricing_dutch_auction: \"KT1EzLrXRCXij42pKfbZPn48PuxrnVki1aYY\",\n pricing_dutch_auction_v3: \"KT1MFgHKorMWXeVL6qrpgjZmemirafppSg9q\",\n pricing_fixed: \"KT1FHzHxuMaNLYG8LdniY45M6RCfkF3AoXFh\",\n pricing_fixed_v3: \"KT1V24J6FVuKPU3xy6gVF6wJ3zdRXBheQhaV\",\n randomizer: \"KT1XYgKrzBbzsckGvXTPgxFyN7KNZ9RPYVWf\",\n randomizer_v2: \"KT1CfmepqJkfZwqLPFVMKFoYUS7dPPZHyCTo\",\n token_moderation: \"KT1HgVuzNWVvnX16fahbV2LrnpwifYKoFMRd\",\n treasury: \"KT1P2BXYb894MekrCcSrnidzQYPVqitLoVLc\",\n user_moderation: \"KT1TWWQ6FtLoosVfZgTKV2q68TMZaENhGm54\",\n user_register: \"KT1Ezht4PDKZri7aVppVGT4Jkw39sesaFnww\",\n onchfs_files: \"KT1Ae7dT1gsLw2tRnUMXSCmEyF74KVkM6LUo\",\n}\n","export interface IEthContracts {\n multicall3: `0x${string}`\n seaport_zone: `0x${string}`\n issuer_factory_v1: `0x${string}`\n fixed_price_minter_v1: `0x${string}`\n dutch_auction_minter_v1: `0x${string}`\n mint_ticket_factory_v1: `0x${string}`\n ticket_redeemer_v1: `0x${string}`\n ipfs_renderer_v1: `0x${string}`\n onchfs_renderer_v1: `0x${string}`\n randomizer_v1: `0x${string}`\n role_registry_v1: `0x${string}`\n contract_registry_v1: `0x${string}`\n gen_art_token_impl_v1: `0x${string}`\n mint_ticket_impl_v1: `0x${string}`\n onchfs_file_system: `0x${string}`\n onchfs_content_store: `0x${string}`\n seaport: `0x${string}`\n fxhashTeamSafeAddress: `0x${string}`\n signerSafe: `0x${string}`\n moderationSafe: `0x${string}`\n farcaster_frame_fixed_price_minter_v1: `0x${string}`\n fx_token: `0x${string}`\n}\n\nexport const ethTestnetContracts: IEthContracts = {\n multicall3: \"0xcA11bde05977b3631167028862bE2a173976CA11\",\n seaport_zone: \"0x0000000006B429721d1F4c4cD256BF3A38c09Ac6\",\n issuer_factory_v1: \"0x4e9ef916F55B5d4a27E6406C7Ce8bcd29c2693d6\",\n mint_ticket_factory_v1: \"0xbaed21d8C57caf71578b9aE1E09a68721d0Dd02d\",\n dutch_auction_minter_v1: \"0x2F8ea350E7F29BCaC2AEE5889d64df07EE3Fa98d\",\n fixed_price_minter_v1: \"0xa6c9c758e80ec18e1a28d485b97400B11dCFCD64\",\n ticket_redeemer_v1: \"0xdd29eA613e0553fc03f5762Bf643710a7987A216\",\n ipfs_renderer_v1: \"0x17b9c8a7C6F9D3768D4DA75EBB6abDe9FBe900cf\",\n onchfs_renderer_v1: \"0x25B087D2c87a0b34188a530dC9cCfDa30822AA8e\",\n randomizer_v1: \"0x5962e4dEeDe2DB4A83259255D30c19F4397FD5A6\",\n role_registry_v1: \"0x92B70c5C6E676BdC395DfD911c07392fc7C36E4F\",\n contract_registry_v1: \"0xb7CFDcDb2c6a1D05D7b85FB4ae7B7bccd028010F\",\n gen_art_token_impl_v1: \"0x1feeb359e96E6Dd6F19F1FC98e8FffDdf5AeaD58\",\n mint_ticket_impl_v1: \"0x0303e3a5be6e9Fa21E72cE446a402a6AEec13c60\",\n onchfs_file_system: \"0x4f555d39e89f6d768f75831d610b3940fa94c6b1\",\n onchfs_content_store: \"0x070e5A608705aC4954eec054f9074eEe49bDcbfF\",\n seaport: \"0x00cA04c45da318d5b7E7B14D5381Ca59F09C73f0\",\n fxhashTeamSafeAddress: \"0x4F073947573FF44621cA25061Fb035c73a3014ab\",\n signerSafe: \"0x4F073947573FF44621cA25061Fb035c73a3014ab\",\n moderationSafe: \"0x4F073947573FF44621cA25061Fb035c73a3014ab\",\n farcaster_frame_fixed_price_minter_v1:\n \"0xB0905f81167bD90ABD5a583E029D27DA77568084\",\n fx_token: \"0xfa2e08ebfa6dae5ff68c3a0e2eb33a78f363f9fe\",\n}\n\n/**\n * TODO\n * -----------------------------------------------------------------------------\n * Put the actual addresses.\n */\nexport const ethMainnetContracts: IEthContracts = {\n multicall3: \"0xcA11bde05977b3631167028862bE2a173976CA11\",\n seaport_zone: \"0x0000000006B429721d1F4c4cD256BF3A38c09Ac6\",\n issuer_factory_v1: \"0x442295de8A31d65026dBc09c29d469F6854f188a\",\n mint_ticket_factory_v1: \"0xDB92ed0e6265d042F05E5C2f6D2F99496e87D706\",\n dutch_auction_minter_v1: \"0x1bC736a2b144096a4752534C557D7E6C311CcAF1\",\n fixed_price_minter_v1: \"0xB645cFfD9bFB93c2c181d5Be0D6a8C1d81C2aEf3\",\n ticket_redeemer_v1: \"0x3D72011b1bB52e33f9D81Fc5553FF4765e3f32c1\",\n ipfs_renderer_v1: \"0x48F00F8314920ca0cd763D74acFe8cFE4024a274\",\n onchfs_renderer_v1: \"0xe9fE6b2e494E40404AcB2b8B0a0Bc7b79FD03c83\",\n randomizer_v1: \"0xED32Ed47A75e298433cF822E10645C04a0B95075\",\n role_registry_v1: \"0x22b9Dd17BA1132C027d780bC0A784f08f244022B\",\n contract_registry_v1: \"0x4DAc308c686D747A804B7E95db606695a529A750\",\n gen_art_token_impl_v1: \"0x429AC1aA66220573Da6928bcce7384fe50e1284f\",\n mint_ticket_impl_v1: \"0xc2743B0B901eDAA8ccd1A09914449A797e1079F1\",\n onchfs_file_system: \"0x9e0f2864c6f125bbf599df6ca6e6c3774c5b2e04\",\n onchfs_content_store: \"0xC6806fd75745bB5F5B32ADa19963898155f9DB91\",\n seaport: \"0x00cA04c45da318d5b7E7B14D5381Ca59F09C73f0\",\n fxhashTeamSafeAddress: \"0xD8b1905022d70e74c6c8aaA2baaf275fBe1634f1\",\n signerSafe: \"0xB456aF77dEB65065462BD1f0D9098413E6CA4200\",\n moderationSafe: \"0x99CDaECbe1be4B7232a4f2c79EF76D403886FE1E\",\n farcaster_frame_fixed_price_minter_v1:\n \"0x6e625892C739bFD960671Db5544E260757480725\",\n fx_token: \"0xTODO\",\n}\n","export interface IBaseApis {\n rpcs: string[]\n reservoir: string\n safe: string\n whitelist: string\n alchemy: {\n rpc: string\n }\n}\n\nexport const baseTestnetApis: IBaseApis = {\n rpcs: [\"https://sepolia.base.org\"],\n reservoir: \"https://api-base-sepolia.reservoir.tools\",\n safe: \"https://safe-transaction-base-sepolia.safe.global/\",\n whitelist: \"http://localhost:9999/whitelist/new\",\n alchemy: {\n rpc: \"https://base-sepolia.g.alchemy.com/v2/xTtlsglqRKcFwSkg2bilqp7U2smOt3g9\",\n },\n}\n\nexport const baseMainnetApis: IBaseApis = {\n rpcs: [\"https://mainnet.base.org\"],\n reservoir: \"https://api-base.reservoir.tools\",\n safe: \"https://safe-transaction-base.safe.global/\",\n whitelist: \"https://api.v2.dev.fxhash-dev.xyz/whitelist/new\",\n alchemy: {\n rpc: \"https://base-mainnet.g.alchemy.com/v2/xTtlsglqRKcFwSkg2bilqp7U2smOt3g9\",\n },\n}\n","import {\n type IRichErrorMessages,\n RichError,\n type RichErrorUnion,\n isRichErrorMessages,\n} from \"@fxhash/errors\"\n\nexport class AppMetadataInvalidTypeError extends RichError {\n name = \"AppMetadataInvalidTypeError\" as const\n messages = {\n dev: \"App metadata should be an object.\",\n }\n}\n\nexport class AppMetadataMissingPropertiesError extends RichError {\n name = \"AppMetadataMissingPropertiesError\" as const\n\n constructor(messages: IRichErrorMessages)\n constructor(properties: string[])\n constructor(par1: IRichErrorMessages | string[]) {\n super(\n isRichErrorMessages(par1)\n ? par1\n : {\n dev: `App metadata is missing required properties ${par1.map(p => `\"${p}\"`).join(\", \")}`,\n }\n )\n }\n}\n\nexport const AppMetadataErrors: (\n | typeof AppMetadataInvalidTypeError\n | typeof AppMetadataMissingPropertiesError\n)[] = [AppMetadataInvalidTypeError, AppMetadataMissingPropertiesError]\nexport type AppMetadataError = RichErrorUnion<typeof AppMetadataErrors>\n","import { type Result, failure, success } from \"@fxhash/utils\"\nimport { fxApisByEnv } from \"../api/fxhash.js\"\nimport {\n type AppMetadataError,\n AppMetadataInvalidTypeError,\n AppMetadataMissingPropertiesError,\n} from \"../errors/metadata.js\"\nimport { IAppMetadata, TEnv } from \"../types.js\"\n\n// shared between all envs\nconst crossEnvMetadata: Omit<IAppMetadata, \"url\"> = {\n name: \"FXHASH\",\n description: \"fxhash is a blockchain open platform for Generative Art\",\n icon: \"https://gateway.fxhash2.xyz/ipfs/QmUQUtCenBEYQLoHvfFCRxyHYDqBE49UGxtcp626FZnFDG\",\n}\n\n/**\n * Get application metadata by merging some cross-env metadata with an\n * environment-specific URL (application front-end).\n */\nexport function fxAppEnvMetadata(env: TEnv): IAppMetadata {\n return {\n ...crossEnvMetadata,\n url: fxApisByEnv(env).website,\n }\n}\n\n/**\n * Test whether some value is a valid {@link IAppMetadata} interface. If not,\n * the issue causing it to be invalid is returned as a failure.\n * @param value Any value which should be tested for being valid App Metadata\n * @returns A Result with void success or failure with the issue\n */\nexport function isAppMetadataValid(value: any): Result<void, AppMetadataError> {\n if (!(typeof value === \"object\"))\n return failure(new AppMetadataInvalidTypeError())\n\n const missingProperties: string[] = []\n const requiredProperties: (keyof Required<IAppMetadata>)[] = [\n \"name\",\n \"description\",\n \"url\",\n ]\n for (const prop of requiredProperties) {\n if (!value[prop]) missingProperties.push(prop)\n }\n if (missingProperties.length > 0)\n return failure(new AppMetadataMissingPropertiesError(missingProperties))\n\n return success()\n}\n","export type AlgoliaConfig = {\n appId: string\n enabled: boolean\n indexGenerativeTokens: string\n indexOffers: string\n indexUsers: string\n indexArticles: string\n indexAccounts: string\n}\n\nconst algoliaConfig = {\n enabled: true,\n indexGenerativeTokens: \"generative-tokens\",\n indexOffers: \"listings\",\n indexUsers: \"users\",\n indexArticles: \"articles\",\n indexAccounts: \"accounts\",\n}\n\nexport const algoliaConfigDev: AlgoliaConfig = {\n appId: \"T4XRS2LFQK\",\n ...algoliaConfig,\n}\n\nexport const algoliaConfigProd: AlgoliaConfig = {\n appId: \"F7M6D8T095\",\n ...algoliaConfig,\n}\n","const GPU_VERSIONS = [\"v111\", \"v132\"] as const\ntype GPUVersion = (typeof GPU_VERSIONS)[number]\n\ninterface GPURenderingVersionConfig {\n date: string\n version: string\n batchArn: string\n}\n\nexport type GPURenderingConfig = Record<GPUVersion, GPURenderingVersionConfig>\ntype GPURenderingConfigShared = Record<\n GPUVersion,\n Omit<GPURenderingVersionConfig, \"batchArn\">\n>\n\n// Shared config\nconst gpuRenderingConfigShared: GPURenderingConfigShared = {\n v111: {\n date: \"2023-03-06\",\n version: \"111.0.5563.64\",\n },\n v132: {\n date: \"2025-01-14\",\n version: \"132.0.6834.110\",\n },\n}\n\n// Helper function to create environment configs\nconst createEnvConfig = (\n batchArns: Record<GPUVersion, string>\n): GPURenderingConfig => {\n return Object.fromEntries(\n GPU_VERSIONS.map(version => [\n version,\n {\n ...gpuRenderingConfigShared[version],\n batchArn: batchArns[version],\n },\n ])\n ) as GPURenderingConfig\n}\n\n// Environment configs\nexport const gpuRenderingConfigDev: GPURenderingConfig = createEnvConfig({\n v111: \"arn:aws:batch:us-east-1:409089350506:job-definition/fxhash-batch-dev-fxhash-extract-chrome-v111\",\n v132: \"arn:aws:batch:us-east-1:409089350506:job-definition/fxhash-batch-dev-fxhash-extract-chrome-v132\",\n})\n\nexport const gpuRenderingConfigProd: GPURenderingConfig = createEnvConfig({\n v111: \"arn:aws:batch:us-east-1:759392670381:job-definition/fxhash-batch-prd-fxhash-extract-chrome-v111\",\n v132: \"arn:aws:batch:us-east-1:759392670381:job-definition/fxhash-batch-prd-fxhash-extract-chrome-v132\",\n})\n","export interface IBaseContracts {\n multicall3: `0x${string}`\n seaport_zone: `0x${string}`\n issuer_factory_v1: `0x${string}`\n fixed_price_minter_v1: `0x${string}`\n dutch_auction_minter_v1: `0x${string}`\n mint_ticket_factory_v1: `0x${string}`\n ticket_redeemer_v1: `0x${string}`\n ipfs_renderer_v1: `0x${string}`\n onchfs_renderer_v1: `0x${string}`\n randomizer_v1: `0x${string}`\n role_registry_v1: `0x${string}`\n contract_registry_v1: `0x${string}`\n gen_art_token_impl_v1: `0x${string}`\n mint_ticket_impl_v1: `0x${string}`\n onchfs_file_system: `0x${string}`\n onchfs_content_store: `0x${string}`\n seaport: `0x${string}`\n fxhashTeamSafeAddress: `0x${string}`\n signerSafe: `0x${string}`\n moderationSafe: `0x${string}`\n farcaster_frame_fixed_price_minter_v1: `0x${string}`\n fx_token: `0x${string}`\n fx_airdrop: `0x${string}`\n fx_tez_airdrop: `0x${string}`\n fx_token_launchpad: `0x${string}`\n fx_project_factory: `0x${string}`\n}\n\nexport const baseTestnetContracts: IBaseContracts = {\n multicall3: \"0xcA11bde05977b3631167028862bE2a173976CA11\",\n seaport_zone: \"0x0000000006B429721d1F4c4cD256BF3A38c09Ac6\",\n issuer_factory_v1: \"0x60cFDE3aaf6E938535767794088cf15EaaC50019\",\n mint_ticket_factory_v1: \"0x8A7e5eE0CeA42DBE1d2aAC4501262B0edC5B518B\",\n dutch_auction_minter_v1: \"0xeb5Cee0eD6A47BE2A463A0C9e83dA5DE6149d375\",\n fixed_price_minter_v1: \"0x29159d2DFbF93E991d39Dc080a5f8dcc5C90ebb8\",\n ticket_redeemer_v1: \"0xFfbC4F51AB33E14380893213d7C969e0626c4C43\",\n ipfs_renderer_v1: \"0x7657C31078d8bfB8d1BC127fC04dAd23B3f451ed\",\n onchfs_renderer_v1: \"0xf23C64BA846557c24E6F5086376047b0CE70d1cC\",\n randomizer_v1: \"0xCA6323f03B5113471BA3b7B2F4Ba0AA2D45aE257\",\n role_registry_v1: \"0x179f5B8FE1c270D7fC1807355F3fd981A30e21A6\",\n contract_registry_v1: \"0xd44B3b2Ee596613c1aFcF85c9b0E41A0ec8B79E2\",\n gen_art_token_impl_v1: \"0x06976f5C039497d8a79Cc0dCE7A95B3E9748164A\",\n mint_ticket_impl_v1: \"0xa71b5935366BA29332033217a9E83698acadfd2f\",\n onchfs_file_system: \"0x3fb48e03291b2490f939c961a1ad088437129f71\",\n onchfs_content_store: \"0x48AC7370df2d5982852172A4D857c29608AFa774\",\n seaport: \"0x00cA04c45da318d5b7E7B14D5381Ca59F09C73f0\",\n fxhashTeamSafeAddress: \"0x8a4f6e1ae6Bb77EFE7646f9649Bfd519fA638871\",\n signerSafe: \"0x8a4f6e1ae6Bb77EFE7646f9649Bfd519fA638871\",\n moderationSafe: \"0x8a4f6e1ae6Bb77EFE7646f9649Bfd519fA638871\",\n farcaster_frame_fixed_price_minter_v1:\n \"0xB0905f81167bD90ABD5a583E029D27DA77568084\",\n fx_token: \"0xd89fdcB6c8D107f27CEe4452Ccfb70Dc4F9768a7\",\n fx_airdrop: \"0x1e4e821216582f0771528b848b4a51c8474be2c7\",\n fx_tez_airdrop: \"0x3c2b4c38d37affb023a1d2327af428909eb8a134\",\n fx_token_launchpad: \"0x2f949f7cD46F4D79d4FD6b234DB302cAeEe552e2\",\n fx_project_factory: \"0xcA9486e54FbBD6aCe6eB6AA0102ee97dd90A8a86\",\n}\n\nexport const baseMainnetContracts: IBaseContracts = {\n multicall3: \"0xcA11bde05977b3631167028862bE2a173976CA11\",\n seaport_zone: \"0x0000000006B429721d1F4c4cD256BF3A38c09Ac6\",\n issuer_factory_v1: \"0xf05636d65c7a10dF989eC2411D4F3230d3A02f3D\",\n mint_ticket_factory_v1: \"0xe5832D3a3da179e818e9E3bFF7b96A928b29Eda2\",\n dutch_auction_minter_v1: \"0x9667a1Cf26223c9de22207DD93cfEEc9237b8f4E\",\n fixed_price_minter_v1: \"0x4bDcaC532143d8d35ed759189EE22E3704580b9D\",\n ticket_redeemer_v1: \"0x972502Bc75A780D76495Ffa84Cf8DA301F162Df6\",\n ipfs_renderer_v1: \"0x9c4cC8403bE33B89a46794Ae409ce634ca567956\",\n onchfs_renderer_v1: \"0x4180D747e984C9CFEEfaF23944AE0C20c0742341\",\n randomizer_v1: \"0x6754E97b8eaeC13Fa24480E9d1240176Dd0f2911\",\n role_registry_v1: \"0x8d3C748e99066e15425BA1620cdD066d85D6d918\",\n contract_registry_v1: \"0xCa6e30B1C7cBE7cF605cE30B334f968C5E2EA016\",\n gen_art_token_impl_v1: \"0xC5769428823C9a0393DC66855DD3817b2A85BEFD\",\n mint_ticket_impl_v1: \"0x3e9754Da0fb002Fa13D69B2f313d5CB441fC8ef5\",\n onchfs_file_system: \"0x2983008f292a43f208bba0275afd7e9b3d39af3b\",\n onchfs_content_store: \"0x070e5A608705aC4954eec054f9074eEe49bDcbfF\",\n seaport: \"0x00cA04c45da318d5b7E7B14D5381Ca59F09C73f0\",\n fxhashTeamSafeAddress: \"0x38D3a2F9c63D4a580f100B051ba137fa6d8e2560\",\n signerSafe: \"0x38D3a2F9c63D4a580f100B051ba137fa6d8e2560\",\n moderationSafe: \"0x38D3a2F9c63D4a580f100B051ba137fa6d8e2560\",\n farcaster_frame_fixed_price_minter_v1:\n \"0x6e625892C739bFD960671Db5544E260757480725\",\n fx_token: \"0x5Fc2843838e65eb0B5d33654628F446d54602791\",\n fx_airdrop: \"0x45BB9DF166Fda4afD7e533DE42B11579a1F09d43\",\n fx_tez_airdrop: \"0x5021910a5762F9C872Bf7D6CD5F09127aE8cCA84\",\n fx_token_launchpad: \"0xTODO\",\n fx_project_factory: \"0xTODO\",\n}\n","import { IBaseApis } from \"./api/base.js\"\nimport { IEthApis } from \"./api/eth.js\"\nimport { ITezosApis } from \"./api/tezos.js\"\nimport { AlgoliaConfig } from \"./config/algolia.js\"\nimport { GPURenderingConfig } from \"./config/gpu.js\"\nimport { IBaseContracts } from \"./contracts/base.js\"\nimport { IEthContracts } from \"./contracts/eth.js\"\nimport { ITezosContracts } from \"./contracts/tezos.js\"\n\nexport interface IFxhashApis {\n website: string\n docs: string\n main: string\n hasura: string\n hasuraGql: string\n file: string\n fileInternal: string\n walletInternal: string\n fsEmulator: string\n extract: string\n extractInternal: string\n media: string\n ethMetadata: string\n ipfsInternal: string\n ipfsGateway: string\n ipfsGatewaySafe: string\n ipfsGatewayInternal: string\n onchfsProxy: string\n opensea: string\n authority: {\n api: string\n }\n capture: {\n lambdas: {\n small: string\n medium: string\n large: string\n }\n proxy: {\n ipfs: string\n onchfs: string\n }\n }\n events: {\n liveBackend: string\n }\n indexer: {\n tez: string\n eth: string\n base: string\n }\n}\n\n/**\n * A mapping of blockchains in their \"human-readable\" format with their proper\n * blockchain identifier.\n */\nexport const BlockchainIdentifiers = {\n TezosGhostnet: \"tezos:NetXnHfVqm9iesp\",\n TezosMainnet: \"tezos:NetXdQprcVkpaWU\",\n EthereumMainnet: \"eip155:1\",\n EthereumGoerli: \"eip155:5\",\n EthereumSepolia: \"eip155:11155111\",\n BaseSepolia: \"eip155:84532\",\n BaseMainnet: \"eip155:8453\",\n} as const\n\n/**\n * An union of all the blockchains supported by fxhash, defined by their chain\n * identifier. Can be used to facilitate typescript auto-completion with string\n * when enums aren't as good.\n */\nexport type BlockchainIdentifier =\n (typeof BlockchainIdentifiers)[keyof typeof BlockchainIdentifiers]\n\n// the variations supported by the config\nexport type TBlockchain = \"tez\" | \"eth\" | \"base\"\nexport type TBlockchainNetwork = \"testnet\" | \"mainnet\"\nexport type TEnv = \"dev\" | \"prd\" | \"local\" | \"localDocker\"\nexport type TEnvName = \"development\" | \"production\" | \"local\" | \"localDocker\"\n\nexport interface IFxhashNetworkConfig {\n network: string\n chainId: BlockchainIdentifier\n ethFeeReceiver: `0x${string}`\n wertRelayer: string\n fxhashFees: {\n primary: number\n secondary: number\n }\n royaltyBasisPoint: number\n splitBasisPoint: number\n}\n\n/**\n * Meta info about the application. Can be used by wallets to scope the\n * application making requests for instance.\n */\nexport interface IAppMetadata {\n /**\n * Application name. Will be displayed by wallets when a request is made\n * (signing a message, sending a transaction)\n */\n name: string\n\n /**\n * A short sentence (<25 words) describing the app. Might be used by wallets\n * to display extra info about your app.\n */\n description: string\n\n /**\n * **IMPORTANT**: This should match the URL in which the JS context making\n * requests to wallets will be executed. **If doesn't match execution\n * context domain, wallets may display a red warning.\n */\n url: string\n\n /**\n * URL to your application icon. Recommended: PNG 256x256\n * May be used by wallet apps in their UI when users interact with your app.\n */\n icon?: string\n}\n\nexport interface IFxhashEnvConfig {\n envName: TEnvName\n metadata: IAppMetadata\n gtMinPrice: string\n walletConnectId: string\n splitsApiKey: string\n projectLockTime: number\n referrerShare: number\n cloudflareTurnstileSiteKey: string\n cloudflareTurnstileSiteKeyV2: string\n syndicateProjectId: string\n awsS3Bucket: string\n awsS3Region: string\n openTelemetryTarget: string\n algolia: AlgoliaConfig\n gpu: GPURenderingConfig\n authJwtPublicKey: string\n}\n\ntype TBlockchainContacts = {\n [B in TBlockchain]: {\n tez: ITezosContracts\n eth: IEthContracts\n base: IBaseContracts\n }[B]\n}\n\ntype TBlockchainApis = {\n [B in TBlockchain]: {\n tez: ITezosApis\n eth: IEthApis\n base: IBaseApis\n }[B]\n}\n\ntype TNetworkBlockchainConfig = {\n [B in TBlockchain]: {\n tez: IFxhashNetworkConfig\n eth: IFxhashNetworkConfig\n base: IFxhashNetworkConfig\n }[B]\n}\n\nexport type IFxhashConfig = {\n networks: {\n [N in TBlockchainNetwork]: {\n [B in TBlockchain]: {\n contracts: TBlockchainContacts[B]\n config: TNetworkBlockchainConfig[B]\n apis: TBlockchainApis[B]\n }\n }\n }\n envs: {\n [K in TEnv]: {\n apis: IFxhashApis\n config: IFxhashEnvConfig\n }\n }\n}\n\nexport type IFxhashConfigSingleEnv = {\n [B in TBlockchain]: {\n contracts: TBlockchainContacts[B]\n config: TNetworkBlockchainConfig[B]\n apis: TBlockchainApis[B]\n }\n} & {\n apis: IFxhashApis\n config: IFxhashEnvConfig\n}\n","export const AUTH_JWT_PK_DEV = `-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1hF8JwAxIiFWzbXIgeOK\nBzf6SZlT3S1YampzVgy4pw1G0aKwHnyvC+HrRfkEOCGxX24DqbEpZby2LjKF9bfa\nOLrERrNSNrDLXbf3ipKQrnEBu2UdT2pE5UF/SwJUTdGczb78EId0yIjuZ26qZcQg\nPr1ji6FgdOOdEwdphl4x1dlQzgMgjhRcPwf9NsBx3R6l/ut2o38Qa8azxM7XBg8F\nUlsKGy4/jY2OIEKCravCoXmpeX9pxploED/DoJJI9FZXVB7/91iIb6MI0Ycby+xo\nGL/cF+ZYSVRoFexji4vpycJfltW5YJ8jHSveZWa6LXqM6LY7zRFmlxb3SF4tsDTT\nPQIDAQAB\n-----END PUBLIC KEY-----`\n\nexport const AUTH_JWT_PK_PRD = `-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtwl1CRvpN7MZeGGDTy8x\n+W3EkZfBzZqEp3vahCaqBdMkMhy7oB1pUU7pjb34tg9epnKdKo0cZn+Bw1LkSKWh\nZ1DSbgCdNR47qKb4xN8mZ5VvEw/64+nUXbCOikX+rMqSE2tNeNU3KOYr8VQYt9dv\n/J0xFwsr0aa4m23dmJ/oPLA8eR8lZk++fEZsbezKH3i9zz73I0UAivijM0S9lYeB\nNkT5zOaAJARzl69hEMQAv9qUkokwPSHlcG+LakhTGYAyMe3w/KHXVRkWjuCUgUJf\n90oveckX4dhMbHbz9ba1p3hpmwdmlRzljIIE2GQYawA8eNLsOb/z6V8HGMbCL/N9\nJwIDAQAB\n-----END PUBLIC KEY-----`\n","import { baseMainnetApis, baseTestnetApis } from \"./api/base.js\"\nimport { ethMainnetApis, ethTestnetApis } from \"./api/eth.js\"\nimport { tezosMainnetApis, tezosTestnetApis } from \"./api/tezos.js\"\nimport {\n fxhashDevApis,\n fxhashLocalApis,\n fxhashLocalDockerApis,\n fxhashPrdApis,\n} from \"./api/fxhash.js\"\nimport { fxAppEnvMetadata } from \"./config/metadata.js\"\nimport { algoliaConfigDev, algoliaConfigProd } from \"./config/algolia.js\"\nimport { gpuRenderingConfigDev, gpuRenderingConfigProd } from \"./config/gpu.js\"\nimport {\n tezosMainnetContracts,\n tezosTestnetContracts,\n} from \"./contracts/tezos.js\"\nimport { ethMainnetContracts, ethTestnetContracts } from \"./contracts/eth.js\"\nimport { baseMainnetContracts, baseTestnetContracts } from \"./contracts/base.js\"\nimport { getEnv } from \"./helpers.js\"\nimport {\n BlockchainIdentifiers,\n type IFxhashConfig,\n type IFxhashConfigSingleEnv,\n type TBlockchainNetwork,\n type TEnv,\n} from \"./types.js\"\nimport { AUTH_JWT_PK_DEV, AUTH_JWT_PK_PRD } from \"./constants.js\"\n\n/**\n * ! Beware ! Changing these values will result in current\n * projects breaking.\n * https://github.com/fxhash/monorepo/issues/701\n */\nconst tezosFees = {\n primary: 500,\n secondary: 250,\n}\n\nconst ethFees = {\n primary: 1000,\n secondary: 2500,\n}\n\nconst baseFees = {\n primary: 1000,\n secondary: 2500,\n}\n/**\n * --------------------------------------------------------\n */\n\nconst fxhashConfig: IFxhashConfig = {\n networks: {\n testnet: {\n tez: {\n contracts: tezosTestnetContracts,\n config: {\n network: \"ghostnet\",\n chainId: BlockchainIdentifiers.TezosGhostnet,\n ethFeeReceiver: \"0x\",\n wertRelayer: \"tz1T2uyYTshSGrEg13VGJFqsWwbi2H175hZb\",\n fxhashFees: tezosFees,\n royaltyBasisPoint: 1000,\n splitBasisPoint: 1000,\n },\n apis: tezosTestnetApis,\n },\n eth: {\n contracts: ethTestnetContracts,\n config: {\n network: \"Sepolia\",\n chainId: BlockchainIdentifiers.EthereumSepolia,\n ethFeeReceiver: \"0xe1f04609f7bC45e23a1BA4CD4a76f476755beBA6\",\n wertRelayer: \"0x2ff0ec69341f43cc462251bd49bb63681adafcb0\",\n fxhashFees: ethFees,\n royaltyBasisPoint: 10_000,\n splitBasisPoint: 1_000_000,\n },\n apis: ethTestnetApis,\n },\n base: {\n contracts: baseTestnetContracts,\n config: {\n network: \"Base Sepolia\",\n chainId: BlockchainIdentifiers.BaseSepolia,\n ethFeeReceiver: \"0xF70DF285Bc6941b4760BcC041B0cA1cc50E27F8d\",\n wertRelayer: \"0x2ff0ec69341f43cc462251bd49bb63681adafcb0\",\n fxhashFees: baseFees,\n royaltyBasisPoint: 10_000,\n splitBasisPoint: 1_000_000,\n },\n apis: baseTestnetApis,\n },\n },\n mainnet: {\n tez: {\n contracts: tezosMainnetContracts,\n config: {\n network: \"mainnet\",\n chainId: BlockchainIdentifiers.TezosMainnet,\n ethFeeReceiver: \"0x\",\n wertRelayer: \"tz1KkPS1TWFyDWfQwrdvmTmsCLUNMegDrrSi\",\n fxhashFees: tezosFees,\n royaltyBasisPoint: 1000,\n splitBasisPoint: 1000,\n },\n apis: tezosMainnetApis,\n },\n eth: {\n contracts: ethMainnetContracts,\n config: {\n network: \"Ethereum\",\n chainId: BlockchainIdentifiers.EthereumMainnet,\n ethFeeReceiver: \"0xed650E40F7bd3812152D4BFA6740662F50e178DF\",\n wertRelayer: \"0xc16157e00b1bff1522c6f01246b4fb621da048d0\",\n fxhashFees: ethFees,\n royaltyBasisPoint: 10_000,\n splitBasisPoint: 1_000_000,\n },\n apis: ethMainnetApis,\n },\n base: {\n contracts: baseMainnetContracts,\n config: {\n network: \"Base\",\n chainId: BlockchainIdentifiers.BaseMainnet,\n ethFeeReceiver: \"0xF70DF285Bc6941b4760BcC041B0cA1cc50E27F8d\",\n wertRelayer: \"0xc16157e00b1bff1522c6f01246b4fb621da048d0\",\n fxhashFees: baseFees,\n royaltyBasisPoint: 10_000,\n splitBasisPoint: 1_000_000,\n },\n apis: baseMainnetApis,\n },\n },\n },\n envs: {\n local: {\n apis: fxhashLocalApis,\n config: {\n envName: \"local\",\n metadata: fxAppEnvMetadata(\"local\"),\n gtMinPrice: \"0\",\n walletConnectId: \"111994543d1b754bab82c368d0e61ae5\",\n projectLockTime: 3600,\n referrerShare: 0,\n splitsApiKey: \"75348d57d6cf60fa4551766c\",\n cloudflareTurnstileSiteKey: \"1x00000000000000000000AA\",\n cloudflareTurnstileSiteKeyV2: \"0x4AAAAAAAW-w_xThcj91jkA\",\n syndicateProjectId: \"9dd71e90-4605-45f4-94e0-4e533b01081d\",\n awsS3Bucket: \"fxh-media-assets-dev-testnet-us-east-1\",\n awsS3Region: \"us-east-1\",\n openTelemetryTarget: \"http://localhost:14268\",\n algolia: algoliaConfigDev,\n gpu: gpuRenderingConfigDev,\n authJwtPublicKey: AUTH_JWT_PK_DEV,\n },\n },\n localDocker: {\n apis: fxhashLocalDockerApis,\n config: {\n envName: \"localDocker\",\n metadata: fxAppEnvMetadata(\"localDocker\"),\n gtMinPrice: \"0\",\n walletConnectId: \"111994543d1b754bab82c368d0e61ae5\",\n projectLockTime: 3600,\n referrerShare: 0,\n splitsApiKey: \"75348d57d6cf60fa4551766c\",\n cloudflareTurnstileSiteKey: \"1x00000000000000000000AA\",\n cloudflareTurnstileSiteKeyV2: \"0x4AAAAAAAW-w_xThcj91jkA\",\n syndicateProjectId: \"9dd71e90-4605-45f4-94e0-4e533b01081d\",\n awsS3Bucket: \"fxh-media-assets-dev-testnet-us-east-1\",\n awsS3Region: \"us-east-1\",\n openTelemetryTarget: \"http://localhost:14268\",\n algolia: algoliaConfigDev,\n gpu: gpuRenderingConfigDev,\n authJwtPublicKey: AUTH_JWT_PK_DEV,\n },\n },\n dev: {\n apis: fxhashDevApis,\n config: {\n envName: \"development\",\n metadata: fxAppEnvMetadata(\"dev\"),\n gtMinPrice: \"0\",\n walletConnectId: \"111994543d1b754bab82c368d0e61ae5\",\n projectLockTime: 3600,\n referrerShare: 0,\n splitsApiKey: \"75348d57d6cf60fa4551766c\",\n cloudflareTurnstileSiteKey: \"0x4AAAAAAAVOb6invoeYS4EN\",\n cloudflareTurnstileSiteKeyV2: \"0x4AAAAAAAW-w_xThcj91jkA\",\n syndicateProjectId: \"9dd71e90-4605-45f4-94e0-4e533b01081d\",\n awsS3Bucket: \"fxh-media-assets-dev-testnet-us-east-1\",\n awsS3Region: \"us-east-1\",\n openTelemetryTarget: \"https://tempo.ss.fxhash2.xyz\",\n algolia: algoliaConfigDev,\n gpu: gpuRenderingConfigDev,\n authJwtPublicKey: AUTH_JWT_PK_DEV,\n },\n },\n prd: {\n apis: fxhashPrdApis,\n config: {\n envName: \"production\",\n metadata: fxAppEnvMetadata(\"prd\"),\n gtMinPrice: \"0\",\n walletConnectId: \"111994543d1b754bab82c368d0e61ae5\",\n projectLockTime: 3600,\n referrerShare: 0,\n splitsApiKey: \"75348d57d6cf60fa4551766c\",\n cloudflareTurnstileSiteKey: \"0x4AAAAAAAVObp1YeuhbqNKB\",\n cloudflareTurnstileSiteKeyV2: \"0x4AAAAAAAW-yE4Q6Wdz6SNb\",\n syndicateProjectId: \"398ad73d-341c-4861-a038-f0ae1ca58e07\",\n awsS3Bucket: \"fxh-media-assets-prd-mainnet-us-east-1\",\n awsS3Region: \"us-east-1\",\n openTelemetryTarget: \"https://tempo.ss.fxhash2.xyz\",\n algolia: algoliaConfigProd,\n gpu: gpuRenderingConfigProd,\n authJwtPublicKey: AUTH_JWT_PK_PRD,\n },\n },\n },\n}\n\nexport function getBlockchainNetworkForEnv(env: TEnv): TBlockchainNetwork {\n return env === \"prd\" ? \"mainnet\" : \"testnet\"\n}\n\nexport function getConfigForEnv(env: TEnv): IFxhashConfigSingleEnv {\n const blockchainNetwork = getBlockchainNetworkForEnv(env)\n return {\n ...fxhashConfig.networks[blockchainNetwork],\n ...fxhashConfig.envs[env],\n }\n}\n\nexport const localConfig: IFxhashConfigSingleEnv = getConfigForEnv(\"local\")\nexport const localDockerConfig: IFxhashConfigSingleEnv =\n getConfigForEnv(\"localDocker\")\nexport const devConfig: IFxhashConfigSingleEnv = getConfigForEnv(\"dev\")\nexport const prdConfig: IFxhashConfigSingleEnv = getConfigForEnv(\"prd\")\n\nconst currentEnv = getEnv()\nlet config: IFxhashConfigSingleEnv = getConfigForEnv(currentEnv)\n\nfunction setConfig(\n userConfig: Partial<IFxhashConfigSingleEnv>\n): IFxhashConfigSingleEnv {\n config = {\n ...config,\n ...userConfig,\n }\n return config\n}\n\nexport { fxhashConfig, config, setConfig }\n","export const onchfsRegex: RegExp = new RegExp(\"^onchfs://\")\n\n/**\n * Returns the CID or a resource, whether it's already a CID or an onchfs://<CID> resource\n * @param resource either a CID or a onchfs://<CID> string\n */\nexport function onchfsCidFromUriOrCid(resource: string): string {\n if (!onchfsRegex.test(resource)) return resource\n return resource.slice(9)\n}\n","import { config } from \"../config.js\"\n\nexport enum EGatewayIpfs {\n FXHASH = \"FXHASH\",\n FXHASH_SAFE = \"FXHASH_SAFE\",\n IPFSIO = \"IPFSIO\",\n}\n\nexport const ipfsRegex: RegExp = new RegExp(\"^ipfs://\")\n\n/**\n * Given a gateway enum, outputs the http url root of the gateway\n */\nexport function ipfsGatewayRoot(gateway: EGatewayIpfs): string {\n switch (gateway) {\n case EGatewayIpfs.FXHASH:\n return config.apis.ipfsGateway\n case EGatewayIpfs.FXHASH_SAFE:\n return config.apis.ipfsGatewaySafe\n case EGatewayIpfs.IPFSIO:\n default:\n return \"https://ipfs.io\"\n }\n}\n\n/**\n * Returns the CID or a resource, whether it's already a CID or an ipfs://<CID> resource\n * @param resource either a CID or a ipfs://<CID> string\n */\nexport function ipfsCidFromUriOrCid(resource: string): string {\n if (!ipfsRegex.test(resource)) return resource\n return resource.slice(7)\n}\n\n/**\n * Given a CID or ipfs://<CID>, returns an URL to a gateway pointing to the resource\n * @param resource the resource input, either a CID or ipfs://<CID>\n * @param gateway the gateway URL to use for the resource\n */\nexport function ipfsGatewayUrl(\n resource: string | null | undefined,\n gateway: EGatewayIpfs = EGatewayIpfs.FXHASH_SAFE\n): string {\n if (!resource) return \"\"\n const cid = ipfsCidFromUriOrCid(resource)\n return `${ipfsGatewayRoot(gateway)}/ipfs/${cid}`\n}\n\n/**\n * given a URI (either ipfs://<CID>, onchfs://<CID> or temp://<CID>),\n * returns the URL to the resource\n */\nexport function proxyUrl(uri: string): string {\n // let blobs be blobs\n if (uri.startsWith(\"blob:\") || uri.startsWith(\"data:\")) return uri\n\n const [protocol, cid] = uri.split(\"://\")\n switch (protocol) {\n case \"https\":\n return uri\n case \"temp\":\n return `${config.apis.fsEmulator}/resolve/${cid}`\n case \"onchfs\":\n return `${config.apis.onchfsProxy}/${cid}`\n default:\n return ipfsGatewayUrl(uri)\n }\n}\n","import { onchfsCidFromUriOrCid, onchfsRegex } from \"./onchfs\"\nimport { ipfsCidFromUriOrCid, ipfsRegex } from \"./ipfs\"\n\n/**\n * Returns the CID or a resource, whether it's already a CID or an ipfs://<CID> or onchfs://<CID> resource\n * @param resource either a CID or an ipfs://<CID> or onchfs://<CID> string\n */\nexport function cidFromUriOrCid(resource: string): string {\n if (ipfsRegex.test(resource)) {\n return ipfsCidFromUriOrCid(resource)\n } else if (onchfsRegex.test(resource)) {\n return onchfsCidFromUriOrCid(resource)\n }\n return resource\n}\n","import { config } from \"../config.js\"\n\nexport const tezosContractPrefixesByContractAddress: Record<string, string> = {\n [config.tez.contracts.gentk_v1]: \"FX0\",\n [config.tez.contracts.gentk_v2]: \"FX0\",\n [config.tez.contracts.gentk_v3]: \"FX1\",\n}\nexport function getObjktIdFromContract(contract: string, id: string): string {\n return `${tezosContractPrefixesByContractAddress[contract]}-${id}`\n}\n","import { type IEthApis, ethTestnetApis } from \"./api/eth.js\"\nimport {\n type ITezosApis,\n tezosTestnetApis,\n tezosMainnetApis,\n} from \"./api/tezos.js\"\nimport { fxhashDevApis, fxhashPrdApis } from \"./api/fxhash.js\"\nimport {\n type ITezosContracts,\n tezosMainnetContracts,\n tezosTestnetContracts,\n} from \"./contracts/tezos.js\"\nimport { type IEthContracts, ethTestnetContracts } from \"./contracts/eth.js\"\nimport { type GPURenderingConfig } from \"./config/gpu.js\"\nimport {\n fxhashConfig,\n prdConfig,\n devConfig,\n localConfig,\n config,\n setConfig,\n} from \"./config.js\"\nimport {\n type IFxhashEnvConfig,\n type IFxhashNetworkConfig,\n type TBlockchain,\n type TBlockchainNetwork,\n type TEnv,\n type IFxhashConfig,\n} from \"./types.js\"\n\nexport {\n ethTestnetApis,\n tezosTestnetApis,\n tezosMainnetApis,\n fxhashDevApis,\n fxhashPrdApis,\n tezosTestnetContracts,\n tezosMainnetContracts,\n ethTestnetContracts,\n fxhashConfig,\n devConfig,\n prdConfig,\n localConfig,\n config,\n setConfig,\n type IEthApis,\n type ITezosApis,\n type ITezosContracts,\n type IEthContracts,\n type IFxhashEnvConfig,\n type IFxhashNetworkConfig,\n type TBlockchain,\n type TBlockchainNetwork,\n type TEnv,\n type IFxhashConfig,\n type GPURenderingConfig,\n}\n\nexport * from \"./types.js\"\nexport * from \"./helpers.js\"\nexport * from \"./utils/index.js\"\n\nexport { isAppMetadataValid } from \"./config/metadata.js\"\n\nexport default fxhashConfig\n"],"mappings":";;;;;;;;;;;AAUA,MAAaA,iBAA2B;CACtC,MAAM,CACJ,uEACD;CACD,WAAW;CACX,MAAM;CACN,WAAW;CACX,SAAS,EACP,KAAK,wEACN;AACF;AAED,MAAaC,iBAA2B;CACtC,MAAM,CACJ,uEACD;CACD,WAAW;CACX,MAAM;CACN,WAAW;CACX,SAAS,EACP,KAAK,wEACN;AACF;;;;ACzBD,MAAaC,mBAA+B;CAC1C,MAAM;CACN,SAAS;CACT,aAAa;CACb,MAAM;EACJ;EACA;EACA;CACD;AACF;AAED,MAAaC,mBAA+B;CAC1C,MAAM;CACN,SAAS;CACT,aAAa;CACb,MAAM;EACJ;EACA;EACA;EACA;CACD;AACF;;;;AC1BD,MAAM,aAAa;AACnB,MAAM,uBAAuB;AAE7B,SAAgB,qBAAqBC,KAAqB;AACxD,QAAO,IAAI,QAAQ,YAAY,qBAAqB;AACrD;AAED,MAAaC,SAAkB,CAAC,MAAM;AAGpC,QACE,QAAQ,IAAI,eAAe,SAC3B,QAAQ,IAAI,eAAe,gBAC3B,QAAQ,IAAI,2BAA2B,SACvC,QAAQ,IAAI,2BAA2B,gBACvC,QAAQ,IAAI,yBAAyB,SACrC,QAAQ,IAAI,yBAAyB,gBACrC,QAAQ,IAAI,oBAAoB,SAChC,QAAQ,IAAI,oBAAoB;AAEnC,IAAG;AAEJ,MAAaC,UAAmB,CAAC,MAAM;AAGrC,QACE,QAAQ,IAAI,eAAe,WAC3B,QAAQ,IAAI,2BAA2B,WACvC,QAAQ,IAAI,yBAAyB,WACrC,QAAQ,IAAI,oBAAoB;AAEnC,IAAG;AAEJ,MAAaC,gBAAyB,CAAC,MAAM;CAC3C,MAAM,mBAAmB,WAAW;AACpC,KAAI,UAAW,QAAO;CACtB,IAAI;AACJ,KAAI;AACF,OAAK,UAAQ,KAAK;CACnB,SAAQ,GAAG;AACV,SAAO;CACR;AACD,MAAK,GAAI,QAAO;AAChB,QAAO,WAAW,GAAG,WAAW,cAAc;AAC/C,IAAG;AAEJ,SAAgB,SAAe;AAC7B,KAAI,OAAQ,QAAO;AACnB,KAAI,QACF,QAAO,gBAAgB,gBAAgB;AAEzC,QAAO;AACR;;;;AClDD,MAAaC,gBAA6B;CACxC,SAAS;CACT,MAAM;CACN,MAAM;CACN,QAAQ;CACR,WAAW;CACX,MAAM;CACN,cACE;CACF,gBACE;CACF,YAAY;CACZ,SAAS;CACT,iBACE;CACF,OAAO;CACP,aAAa;CACb,cACE;CACF,aAAa;CACb,iBAAiB;CACjB,qBACE;CACF,aAAa;CACb,SAAS;CACT,WAAW,EACT,KAAK,OACN;CACD,SAAS;EACP,SAAS;GACP,OACE;GACF,QACE;GACF,OACE;EACH;EACD,OAAO;GACL,MAAM;GACN,QACE;EACH;CACF;CACD,QAAQ,EACN,aAAa,QACd;CACD,SAAS;EACP,KAAK;EACL,KAAK;EACL,MAAM;CACP;AACF;AAKD,MAAaC,kBAA+B;CAC1C,GAAG;CACH,SAAS;CACT,QAAQ;CACR,WAAW;CACX,cAAc,cAAc;CAC5B,qBAAqB,cAAc;CACnC,gBAAgB;AACjB;AAED,MAAaC,wBAAqC;CAChD,GAAG;CACH,QAAQ,qBAAqB,gBAAgB,OAAO;CACpD,WAAW,qBAAqB,gBAAgB,UAAU;AAC3D;AAGD,MAAaC,gBAA6B;CACxC,SAAS;CACT,MAAM;CACN,MAAM;CACN,QAAQ;CACR,WAAW;CACX,MAAM;CACN,cACE;CACF,gBACE;CACF,YAAY;CACZ,SAAS;CACT,iBACE;CACF,OAAO;CACP,aAAa;CACb,cACE;CACF,aAAa;CACb,iBAAiB;CACjB,qBACE;CACF,aAAa;CACb,SAAS;CACT,WAAW,EACT,KAAK,OACN;CACD,SAAS;EACP,SAAS;GACP,OACE;GACF,QACE;GACF,OACE;EACH;EACD,OAAO;GACL,MAAM;GACN,QACE;EACH;CACF;CACD,QAAQ,EACN,aAAa,QACd;CACD,SAAS;EACP,KAAK;EACL,KAAK;EACL,MAAM;CACP;AACF;AAED,MAAMC,iBAA4C;CAChD,OAAO;CACP,aAAa;CACb,KAAK;CACL,KAAK;AACN;;;;AAKD,SAAgB,YAAYC,KAAwB;AAClD,QAAO,eAAe;AACvB;;;;ACtGD,MAAaC,wBAAyC;CACpD,cAAc;CACd,qBAAqB;CACrB,wBAAwB;CACxB,iBAAiB;CACjB,UAAU;CACV,YAAY;CACZ,uBAAuB;CACvB,qBAA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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["ethTestnetApis: IEthApis","ethMainnetApis: IEthApis","isProd: boolean","isLocal: boolean","isDockerLocal: boolean","fxhashDevApis: IFxhashApis","fxhashLocalApis: IFxhashApis","fxhashLocalDockerApis: IFxhashApis","fxhashPrdApis: IFxhashApis","fxEnvToApisMap: Record<TEnv, IFxhashApis>","tezosTestnetApis: ITezosApis","tezosMainnetApis: ITezosApis","baseTestnetApis: IBaseApis","baseMainnetApis: IBaseApis","algoliaConfigDev: AlgoliaConfig","algoliaConfigProd: AlgoliaConfig","gpuRenderingConfigShared: GPURenderingConfigShared","gpuRenderingConfigDev: GPURenderingConfig","gpuRenderingConfigProd: GPURenderingConfig","crossEnvMetadata: Omit<IAppMetadata, \"url\">","missingProperties: string[]","baseTestnetContracts: IBaseContracts","baseMainnetContracts: IBaseContracts","ethTestnetContracts: IEthContracts","ethMainnetContracts: IEthContracts","tezosTestnetContracts: ITezosContracts","tezosMainnetContracts: ITezosContracts","fxhashConfig: IFxhashConfig","localConfig: IFxhashConfigSingleEnv","localDockerConfig: IFxhashConfigSingleEnv","devConfig: IFxhashConfigSingleEnv","prdConfig: IFxhashConfigSingleEnv","config: IFxhashConfigSingleEnv","onchfsRegex: RegExp","ipfsRegex: RegExp","tezosContractPrefixesByContractAddress: Record<string, string>"],"sources":["../src/api/eth.ts","../src/helpers.ts","../src/api/fxhash.ts","../src/api/tezos.ts","../src/api/base.ts","../src/config/algolia.ts","../src/config/gpu.ts","../src/errors/metadata.ts","../src/config/metadata.ts","../src/constants.ts","../src/contracts/base.ts","../src/contracts/eth.ts","../src/contracts/tezos.ts","../src/types.ts","../src/config.ts","../src/utils/onchfs.ts","../src/utils/ipfs.ts","../src/utils/cid.ts","../src/utils/contracts.ts","../src/index.ts"],"sourcesContent":["export interface IEthApis {\n rpcs: string[]\n reservoir: string\n safe: string\n whitelist: string\n alchemy: {\n rpc: string\n }\n}\n\nexport const ethTestnetApis: IEthApis = {\n rpcs: [\n \"https://eth-sepolia.g.alchemy.com/v2/fATxHNjMh0rR9DnHCtZKDpPPxkEY48Qb\",\n ],\n reservoir: \"https://api-sepolia.reservoir.tools\",\n safe: \"https://safe-transaction-sepolia.safe.global\",\n whitelist: \"http://localhost:9999/whitelist/new\",\n alchemy: {\n rpc: \"https://eth-sepolia.g.alchemy.com/v2/xTtlsglqRKcFwSkg2bilqp7U2smOt3g9\",\n },\n}\n\nexport const ethMainnetApis: IEthApis = {\n rpcs: [\n \"https://eth-mainnet.g.alchemy.com/v2/xTtlsglqRKcFwSkg2bilqp7U2smOt3g9\",\n ],\n reservoir: \"https://api.reservoir.tools\",\n safe: \"https://safe-transaction-mainnet.safe.global/\",\n whitelist: \"https://api.v2.dev.fxhash-dev.xyz/whitelist/new\",\n alchemy: {\n rpc: \"https://eth-mainnet.g.alchemy.com/v2/xTtlsglqRKcFwSkg2bilqp7U2smOt3g9\",\n },\n}\n","import { TEnv } from \"./types.js\"\n\nconst HOST_LOCAL = \"localhost\"\nconst HOST_DOCKER_INTERNAL = \"host.docker.internal\"\n\nexport function getDockerInternalUrl(url: string): string {\n return url.replace(HOST_LOCAL, HOST_DOCKER_INTERNAL)\n}\n\nexport const isProd: boolean = (() => {\n // We can't destructure process.envs\n // https://nextjs.org/docs/pages/api-reference/next-config-js/env\n return (\n process.env.FXHASH_ENV === \"prd\" ||\n process.env.FXHASH_ENV === \"production\" ||\n process.env.NEXT_PUBLIC_FXHASH_ENV === \"prd\" ||\n process.env.NEXT_PUBLIC_FXHASH_ENV === \"production\" ||\n process.env.REACT_APP_FXHASH_ENV === \"prd\" ||\n process.env.REACT_APP_FXHASH_ENV === \"production\" ||\n process.env.VITE_FXHASH_ENV === \"prd\" ||\n process.env.VITE_FXHASH_ENV === \"production\"\n )\n})()\n\nexport const isLocal: boolean = (() => {\n // We can't destructure process.envs\n // https://nextjs.org/docs/pages/api-reference/next-config-js/env\n return (\n process.env.FXHASH_ENV === \"local\" ||\n process.env.NEXT_PUBLIC_FXHASH_ENV === \"local\" ||\n process.env.REACT_APP_FXHASH_ENV === \"local\" ||\n process.env.VITE_FXHASH_ENV === \"local\"\n )\n})()\n\nexport const isDockerLocal: boolean = (() => {\n const isBrowser = typeof window !== \"undefined\"\n if (isBrowser) return false\n let fs\n try {\n fs = require(\"fs\")\n } catch (e) {\n return false\n }\n if (!fs) return false\n return isLocal && fs.existsSync(\"/.dockerenv\")\n})()\n\nexport function getEnv(): TEnv {\n if (isProd) return \"prd\"\n if (isLocal) {\n return isDockerLocal ? \"localDocker\" : \"local\"\n }\n return \"dev\"\n}\n","import { getDockerInternalUrl } from \"../helpers.js\"\nimport { IFxhashApis, TEnv } from \"../types.js\"\n\n// list of APIs dev leverages\nexport const fxhashDevApis: IFxhashApis = {\n website: \"https://beta.fxhash-dev.xyz\",\n docs: \"https://docs.fxhash.xyz\",\n main: \"https://api.v2-temp.dev.fxhash-dev.xyz/graphql\",\n hasura: \"https://api.v2.dev.fxhash-dev.xyz\",\n hasuraGql: \"https://api.v2.dev.fxhash-dev.xyz/v1/graphql\",\n file: \"https://file-api.fxhash-dev.xyz\",\n fileInternal:\n \"http://fxhash-multichain-dev-testnet-file-api.fxhash-multichain-dev-testnet.svc.cluster.local:4004\",\n baseIndexerInternal:\n \"http://fxhash-multichain-dev-testnet-base-indexer.fxhash-multichain-dev-testnet.svc.cluster.local:3000\",\n walletInternal:\n \"http://fxhash-multichain-dev-testnet-wallet-api.fxhash-multichain-dev-testnet.svc.cluster.local:3208\",\n fsEmulator: \"https://file-api.fxhash-dev.xyz/fs\",\n extract: \"https://extract.fxhash-dev.xyz\",\n extractInternal:\n \"http://fxhash-dev-testnet-extract-balancer.fxhash-dev-testnet.svc.cluster.local:4017\",\n media: \"https://media.dev.fxhash-dev.xyz\",\n ethMetadata: \"https://media.dev.fxhash-dev.xyz/metadata/ethereum/\",\n ipfsInternal:\n \"http://fxhash-dev-testnet-ipfs-cluster-api.fxhash-dev-testnet.svc.cluster.local:9094\",\n ipfsGateway: \"https://gateway.fxhash-dev.xyz\",\n ipfsGatewaySafe: \"https://gateway.fxhash-dev2.xyz\",\n ipfsGatewayInternal:\n \"http://fxhash-dev-testnet-ipfs-cluster-gateway.fxhash-dev-testnet.svc.cluster.local:8080\",\n onchfsProxy: \"https://onchfs.fxhash-dev2.xyz\",\n opensea: \"https://testnets-api.opensea.io/api/v2\",\n authority: {\n api: \"NONE\",\n },\n capture: {\n lambdas: {\n small:\n \"https://u5not5l323zczuwnrzxwkt34ra0eyidj.lambda-url.us-east-1.on.aws/\",\n medium:\n \"https://jgfz7a6km7fsqonej2sp3lqwvu0utnyy.lambda-url.us-east-1.on.aws/\",\n large:\n \"https://fzezvbp2f74yturkj4akjyrq3e0zswhb.lambda-url.us-east-1.on.aws/\",\n },\n proxy: {\n ipfs: \"ipfs://Qme6E5z1GDqrHyPomGEw5LChxmE9pdEYGWjwxrv6ZgwZRo\",\n onchfs:\n \"onchfs://4287364ed3219d3f2f77302a71eff0db49e971058ef87f163981ef89a445b143\",\n },\n },\n events: {\n liveBackend: \"_NONE\",\n },\n indexer: {\n tez: \"http://fxhash-multichain-dev-testnet-indexer-v2.fxhash-multichain-dev-testnet.svc.cluster.local:4001\",\n eth: \"http://fxhash-multichain-dev-testnet-eth-indexer.fxhash-multichain-dev-testnet.svc.cluster.local:3000\",\n base: \"http://fxhash-multichain-dev-testnet-base-indexer.fxhash-multichain-dev-testnet.svc.cluster.local:3000\",\n },\n}\n\n// list of APIs for when fxhash is ran locally\n// The ports must correspond to the ports the services are running on\n// defined in the root docker compose file of the monorepo\nexport const fxhashLocalApis: IFxhashApis = {\n ...fxhashDevApis,\n website: \"http://localhost:3200\",\n hasura: \"http://localhost:8888\",\n hasuraGql: \"http://localhost:8888/v1/graphql\",\n fileInternal: fxhashDevApis.file,\n ipfsGatewayInternal: fxhashDevApis.ipfsGateway,\n walletInternal: \"http://host.docker.internal:3208\",\n}\n\nexport const fxhashLocalDockerApis: IFxhashApis = {\n ...fxhashLocalApis,\n hasura: getDockerInternalUrl(fxhashLocalApis.hasura),\n hasuraGql: getDockerInternalUrl(fxhashLocalApis.hasuraGql),\n}\n\n// list of APIs prod leverages\nexport const fxhashPrdApis: IFxhashApis = {\n website: \"https://www.fxhash.xyz\",\n docs: \"https://docs.fxhash.xyz\",\n main: \"https://api.v2-temp.fxhash.xyz/graphql\",\n hasura: \"https://api.v2.fxhash.xyz\",\n hasuraGql: \"https://api.v2.fxhash.xyz/v1/graphql\",\n file: \"https://file-api.fxhash.xyz\",\n fileInternal:\n \"http://fxhash-multichain-prd-file-api.fxhash-multichain-prd.svc.cluster.local:4004\",\n baseIndexerInternal:\n \"http://fxhash-multichain-prd-base-indexer.fxhash-multichain-prd.svc.cluster.local:3000\",\n walletInternal:\n \"http://fxhash-multichain-prd-wallet-api.fxhash-multichain-prd.svc.cluster.local:3208\",\n fsEmulator: \"https://file-api.fxhash.xyz/fs\",\n extract: \"https://extract.fxhash.xyz\",\n extractInternal:\n \"http://fxhash-prd-extract-balancer.fxhash-prd.svc.cluster.local:4017\",\n media: \"https://media.fxhash.xyz\",\n ethMetadata: \"https://media.fxhash.xyz/metadata/ethereum/\",\n ipfsInternal:\n \"http://fxhash-prd-ipfs-cluster-api.fxhash-prd.svc.cluster.local:9094\",\n ipfsGateway: \"https://gateway.fxhash.xyz\",\n ipfsGatewaySafe: \"https://gateway.fxhash2.xyz\",\n ipfsGatewayInternal:\n \"http://fxhash-prd-ipfs-cluster-gateway.fxhash-prd.svc.cluster.local:8080\",\n onchfsProxy: \"https://onchfs.fxhash2.xyz\",\n opensea: \"https://api.opensea.io/api/v2\",\n authority: {\n api: \"NONE\",\n },\n capture: {\n lambdas: {\n small:\n \"https://7sz7knaaw3obgqxjyv3m4e5myu0lsbdp.lambda-url.us-east-1.on.aws/\",\n medium:\n \"https://tuupcq6eesbfk4veuzdfrhu7zm0zwuqy.lambda-url.us-east-1.on.aws/\",\n large:\n \"https://bojj24y6ucxmsyfi4uccdmiliy0dzhji.lambda-url.us-east-1.on.aws/\",\n },\n proxy: {\n ipfs: \"ipfs://Qme6E5z1GDqrHyPomGEw5LChxmE9pdEYGWjwxrv6ZgwZRo\",\n onchfs:\n \"onchfs://4287364ed3219d3f2f77302a71eff0db49e971058ef87f163981ef89a445b143\",\n },\n },\n events: {\n liveBackend: \"_NONE\",\n },\n indexer: {\n tez: \"http://fxhash-multichain-prd-indexer-v2.fxhash-multichain-prd.svc.cluster.local:4001\",\n eth: \"http://fxhash-multichain-prd-eth-indexer.fxhash-multichain-prd.svc.cluster.local:3000\",\n base: \"http://fxhash-multichain-prd-base-indexer.fxhash-multichain-prd.svc.cluster.local:3000\",\n },\n}\n\nconst fxEnvToApisMap: Record<TEnv, IFxhashApis> = {\n local: fxhashLocalApis,\n localDocker: fxhashLocalDockerApis,\n dev: fxhashDevApis,\n prd: fxhashPrdApis,\n}\n\n/**\n * Given some env, returns the associated APIs config.\n */\nexport function fxApisByEnv(env: TEnv): IFxhashApis {\n return fxEnvToApisMap[env]\n}\n","export interface ITezosApis {\n tzktWebsite: string\n tzkt: string\n tzktPro: string\n rpcs: string[]\n}\n\nexport const tezosTestnetApis: ITezosApis = {\n tzkt: \"https://api.ghostnet.tzkt.io/v1/\",\n tzktPro: \"https://api.ghostnet.tzkt.io/v1/\",\n tzktWebsite: \"https://ghostnet.tzkt.io/\",\n rpcs: [\n \"https://ghostnet.ecadinfra.com\",\n \"https://ghostnet.smartpy.io\",\n \"https://ghostnet.tezos.marigold.dev/\",\n ],\n}\n\nexport const tezosMainnetApis: ITezosApis = {\n tzkt: \"https://api.tzkt.io/v1/\",\n tzktPro: \"https://pro.tzkt.io/v1/\",\n tzktWebsite: \"https://tzkt.io/\",\n rpcs: [\n \"https://rpc1.fxhash.xyz\",\n \"https://mainnet.smartpy.io\",\n \"https://mainnet.api.tez.ie\",\n \"https://teznode.letzbake.com\",\n ],\n}\n","export interface IBaseApis {\n rpcs: string[]\n reservoir: string\n safe: string\n whitelist: string\n alchemy: {\n rpc: string\n }\n}\n\nexport const baseTestnetApis: IBaseApis = {\n rpcs: [\"https://sepolia.base.org\"],\n reservoir: \"https://api-base-sepolia.reservoir.tools\",\n safe: \"https://safe-transaction-base-sepolia.safe.global/\",\n whitelist: \"http://localhost:9999/whitelist/new\",\n alchemy: {\n rpc: \"https://base-sepolia.g.alchemy.com/v2/xTtlsglqRKcFwSkg2bilqp7U2smOt3g9\",\n },\n}\n\nexport const baseMainnetApis: IBaseApis = {\n rpcs: [\"https://mainnet.base.org\"],\n reservoir: \"https://api-base.reservoir.tools\",\n safe: \"https://safe-transaction-base.safe.global/\",\n whitelist: \"https://api.v2.dev.fxhash-dev.xyz/whitelist/new\",\n alchemy: {\n rpc: \"https://base-mainnet.g.alchemy.com/v2/xTtlsglqRKcFwSkg2bilqp7U2smOt3g9\",\n },\n}\n","export type AlgoliaConfig = {\n appId: string\n enabled: boolean\n indexGenerativeTokens: string\n indexOffers: string\n indexUsers: string\n indexArticles: string\n indexAccounts: string\n}\n\nconst algoliaConfig = {\n enabled: true,\n indexGenerativeTokens: \"generative-tokens\",\n indexOffers: \"listings\",\n indexUsers: \"users\",\n indexArticles: \"articles\",\n indexAccounts: \"accounts\",\n}\n\nexport const algoliaConfigDev: AlgoliaConfig = {\n appId: \"T4XRS2LFQK\",\n ...algoliaConfig,\n}\n\nexport const algoliaConfigProd: AlgoliaConfig = {\n appId: \"F7M6D8T095\",\n ...algoliaConfig,\n}\n","const GPU_VERSIONS = [\"v111\", \"v132\"] as const\ntype GPUVersion = (typeof GPU_VERSIONS)[number]\n\ninterface GPURenderingVersionConfig {\n date: string\n version: string\n batchArn: string\n}\n\nexport type GPURenderingConfig = Record<GPUVersion, GPURenderingVersionConfig>\ntype GPURenderingConfigShared = Record<\n GPUVersion,\n Omit<GPURenderingVersionConfig, \"batchArn\">\n>\n\n// Shared config\nconst gpuRenderingConfigShared: GPURenderingConfigShared = {\n v111: {\n date: \"2023-03-06\",\n version: \"111.0.5563.64\",\n },\n v132: {\n date: \"2025-01-14\",\n version: \"132.0.6834.110\",\n },\n}\n\n// Helper function to create environment configs\nconst createEnvConfig = (\n batchArns: Record<GPUVersion, string>\n): GPURenderingConfig => {\n return Object.fromEntries(\n GPU_VERSIONS.map(version => [\n version,\n {\n ...gpuRenderingConfigShared[version],\n batchArn: batchArns[version],\n },\n ])\n ) as GPURenderingConfig\n}\n\n// Environment configs\nexport const gpuRenderingConfigDev: GPURenderingConfig = createEnvConfig({\n v111: \"arn:aws:batch:us-east-1:409089350506:job-definition/fxhash-batch-dev-fxhash-extract-chrome-v111\",\n v132: \"arn:aws:batch:us-east-1:409089350506:job-definition/fxhash-batch-dev-fxhash-extract-chrome-v132\",\n})\n\nexport const gpuRenderingConfigProd: GPURenderingConfig = createEnvConfig({\n v111: \"arn:aws:batch:us-east-1:759392670381:job-definition/fxhash-batch-prd-fxhash-extract-chrome-v111\",\n v132: \"arn:aws:batch:us-east-1:759392670381:job-definition/fxhash-batch-prd-fxhash-extract-chrome-v132\",\n})\n","import {\n type IRichErrorMessages,\n RichError,\n type RichErrorUnion,\n isRichErrorMessages,\n} from \"@fxhash/errors\"\n\nexport class AppMetadataInvalidTypeError extends RichError {\n name = \"AppMetadataInvalidTypeError\" as const\n messages = {\n dev: \"App metadata should be an object.\",\n }\n}\n\nexport class AppMetadataMissingPropertiesError extends RichError {\n name = \"AppMetadataMissingPropertiesError\" as const\n\n constructor(messages: IRichErrorMessages)\n constructor(properties: string[])\n constructor(par1: IRichErrorMessages | string[]) {\n super(\n isRichErrorMessages(par1)\n ? par1\n : {\n dev: `App metadata is missing required properties ${par1.map(p => `\"${p}\"`).join(\", \")}`,\n }\n )\n }\n}\n\nexport const AppMetadataErrors: (\n | typeof AppMetadataInvalidTypeError\n | typeof AppMetadataMissingPropertiesError\n)[] = [AppMetadataInvalidTypeError, AppMetadataMissingPropertiesError]\nexport type AppMetadataError = RichErrorUnion<typeof AppMetadataErrors>\n","import { type Result, failure, success } from \"@fxhash/utils\"\nimport { fxApisByEnv } from \"../api/fxhash.js\"\nimport {\n type AppMetadataError,\n AppMetadataInvalidTypeError,\n AppMetadataMissingPropertiesError,\n} from \"../errors/metadata.js\"\nimport { IAppMetadata, TEnv } from \"../types.js\"\n\n// shared between all envs\nconst crossEnvMetadata: Omit<IAppMetadata, \"url\"> = {\n name: \"FXHASH\",\n description: \"fxhash is a blockchain open platform for Generative Art\",\n icon: \"https://gateway.fxhash2.xyz/ipfs/QmUQUtCenBEYQLoHvfFCRxyHYDqBE49UGxtcp626FZnFDG\",\n}\n\n/**\n * Get application metadata by merging some cross-env metadata with an\n * environment-specific URL (application front-end).\n */\nexport function fxAppEnvMetadata(env: TEnv): IAppMetadata {\n return {\n ...crossEnvMetadata,\n url: fxApisByEnv(env).website,\n }\n}\n\n/**\n * Test whether some value is a valid {@link IAppMetadata} interface. If not,\n * the issue causing it to be invalid is returned as a failure.\n * @param value Any value which should be tested for being valid App Metadata\n * @returns A Result with void success or failure with the issue\n */\nexport function isAppMetadataValid(value: any): Result<void, AppMetadataError> {\n if (!(typeof value === \"object\"))\n return failure(new AppMetadataInvalidTypeError())\n\n const missingProperties: string[] = []\n const requiredProperties: (keyof Required<IAppMetadata>)[] = [\n \"name\",\n \"description\",\n \"url\",\n ]\n for (const prop of requiredProperties) {\n if (!value[prop]) missingProperties.push(prop)\n }\n if (missingProperties.length > 0)\n return failure(new AppMetadataMissingPropertiesError(missingProperties))\n\n return success()\n}\n","export const AUTH_JWT_PK_DEV = `-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1hF8JwAxIiFWzbXIgeOK\nBzf6SZlT3S1YampzVgy4pw1G0aKwHnyvC+HrRfkEOCGxX24DqbEpZby2LjKF9bfa\nOLrERrNSNrDLXbf3ipKQrnEBu2UdT2pE5UF/SwJUTdGczb78EId0yIjuZ26qZcQg\nPr1ji6FgdOOdEwdphl4x1dlQzgMgjhRcPwf9NsBx3R6l/ut2o38Qa8azxM7XBg8F\nUlsKGy4/jY2OIEKCravCoXmpeX9pxploED/DoJJI9FZXVB7/91iIb6MI0Ycby+xo\nGL/cF+ZYSVRoFexji4vpycJfltW5YJ8jHSveZWa6LXqM6LY7zRFmlxb3SF4tsDTT\nPQIDAQAB\n-----END PUBLIC KEY-----`\n\nexport const AUTH_JWT_PK_PRD = `-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtwl1CRvpN7MZeGGDTy8x\n+W3EkZfBzZqEp3vahCaqBdMkMhy7oB1pUU7pjb34tg9epnKdKo0cZn+Bw1LkSKWh\nZ1DSbgCdNR47qKb4xN8mZ5VvEw/64+nUXbCOikX+rMqSE2tNeNU3KOYr8VQYt9dv\n/J0xFwsr0aa4m23dmJ/oPLA8eR8lZk++fEZsbezKH3i9zz73I0UAivijM0S9lYeB\nNkT5zOaAJARzl69hEMQAv9qUkokwPSHlcG+LakhTGYAyMe3w/KHXVRkWjuCUgUJf\n90oveckX4dhMbHbz9ba1p3hpmwdmlRzljIIE2GQYawA8eNLsOb/z6V8HGMbCL/N9\nJwIDAQAB\n-----END PUBLIC KEY-----`\n","export interface IBaseContracts {\n multicall3: `0x${string}`\n seaport_zone: `0x${string}`\n issuer_factory_v1: `0x${string}`\n fixed_price_minter_v1: `0x${string}`\n dutch_auction_minter_v1: `0x${string}`\n mint_ticket_factory_v1: `0x${string}`\n ticket_redeemer_v1: `0x${string}`\n ipfs_renderer_v1: `0x${string}`\n ipfs_renderer_v2: `0x${string}`\n onchfs_renderer_v1: `0x${string}`\n randomizer_v1: `0x${string}`\n role_registry_v1: `0x${string}`\n contract_registry_v1: `0x${string}`\n gen_art_token_impl_v1: `0x${string}`\n mint_ticket_impl_v1: `0x${string}`\n onchfs_file_system: `0x${string}`\n onchfs_content_store: `0x${string}`\n seaport: `0x${string}`\n fxhashTeamSafeAddress: `0x${string}`\n signerSafe: `0x${string}`\n moderationSafe: `0x${string}`\n farcaster_frame_fixed_price_minter_v1: `0x${string}`\n fx_token: `0x${string}`\n fx_airdrop: `0x${string}`\n fx_tez_airdrop: `0x${string}`\n fx_token_launchpad: `0x${string}`\n fx_project_factory: `0x${string}`\n fx_project_factory_v2: `0x${string}`\n fx_doppler_factory: `0x${string}`\n uniswap_v2_migrator: `0x${string}`\n}\n\nexport const baseTestnetContracts: IBaseContracts = {\n multicall3: \"0xcA11bde05977b3631167028862bE2a173976CA11\",\n seaport_zone: \"0x0000000006B429721d1F4c4cD256BF3A38c09Ac6\",\n issuer_factory_v1: \"0x60cFDE3aaf6E938535767794088cf15EaaC50019\",\n mint_ticket_factory_v1: \"0x8A7e5eE0CeA42DBE1d2aAC4501262B0edC5B518B\",\n dutch_auction_minter_v1: \"0xeb5Cee0eD6A47BE2A463A0C9e83dA5DE6149d375\",\n fixed_price_minter_v1: \"0x29159d2DFbF93E991d39Dc080a5f8dcc5C90ebb8\",\n ticket_redeemer_v1: \"0xFfbC4F51AB33E14380893213d7C969e0626c4C43\",\n ipfs_renderer_v1: \"0x7657C31078d8bfB8d1BC127fC04dAd23B3f451ed\",\n ipfs_renderer_v2: \"0x1c5CD479C85C1Debc49109E8f284D5AB3353043F\",\n onchfs_renderer_v1: \"0xf23C64BA846557c24E6F5086376047b0CE70d1cC\",\n randomizer_v1: \"0xCA6323f03B5113471BA3b7B2F4Ba0AA2D45aE257\",\n role_registry_v1: \"0x179f5B8FE1c270D7fC1807355F3fd981A30e21A6\",\n contract_registry_v1: \"0xd44B3b2Ee596613c1aFcF85c9b0E41A0ec8B79E2\",\n gen_art_token_impl_v1: \"0x06976f5C039497d8a79Cc0dCE7A95B3E9748164A\",\n mint_ticket_impl_v1: \"0xa71b5935366BA29332033217a9E83698acadfd2f\",\n onchfs_file_system: \"0x3fb48e03291b2490f939c961a1ad088437129f71\",\n onchfs_content_store: \"0x48AC7370df2d5982852172A4D857c29608AFa774\",\n seaport: \"0x00cA04c45da318d5b7E7B14D5381Ca59F09C73f0\",\n fxhashTeamSafeAddress: \"0x8a4f6e1ae6Bb77EFE7646f9649Bfd519fA638871\",\n signerSafe: \"0x8a4f6e1ae6Bb77EFE7646f9649Bfd519fA638871\",\n moderationSafe: \"0x8a4f6e1ae6Bb77EFE7646f9649Bfd519fA638871\",\n farcaster_frame_fixed_price_minter_v1:\n \"0xB0905f81167bD90ABD5a583E029D27DA77568084\",\n fx_token: \"0xd89fdcB6c8D107f27CEe4452Ccfb70Dc4F9768a7\",\n fx_airdrop: \"0x1e4e821216582f0771528b848b4a51c8474be2c7\",\n fx_tez_airdrop: \"0x3c2b4c38d37affb023a1d2327af428909eb8a134\",\n fx_token_launchpad: \"0x2f949f7cD46F4D79d4FD6b234DB302cAeEe552e2\",\n fx_project_factory: \"0xcA9486e54FbBD6aCe6eB6AA0102ee97dd90A8a86\",\n fx_project_factory_v2: \"0xa5A552f86f8Fd14F73Fc18Cc4DbFB04341896260\",\n fx_doppler_factory: \"0xE0Ebfb5b8A0A67856e98422BaA3f3ac2a51D5e7F\",\n uniswap_v2_migrator: \"0xE657164Ed47BD1Bdb9025cfB60Ed1CfB8E89fd63\",\n}\n\nexport const baseMainnetContracts: IBaseContracts = {\n multicall3: \"0xcA11bde05977b3631167028862bE2a173976CA11\",\n seaport_zone: \"0x0000000006B429721d1F4c4cD256BF3A38c09Ac6\",\n issuer_factory_v1: \"0xf05636d65c7a10dF989eC2411D4F3230d3A02f3D\",\n mint_ticket_factory_v1: \"0xe5832D3a3da179e818e9E3bFF7b96A928b29Eda2\",\n dutch_auction_minter_v1: \"0x9667a1Cf26223c9de22207DD93cfEEc9237b8f4E\",\n fixed_price_minter_v1: \"0x4bDcaC532143d8d35ed759189EE22E3704580b9D\",\n ticket_redeemer_v1: \"0x972502Bc75A780D76495Ffa84Cf8DA301F162Df6\",\n ipfs_renderer_v1: \"0x9c4cC8403bE33B89a46794Ae409ce634ca567956\",\n ipfs_renderer_v2: \"0xb2E2938C6cB1e3c06d22634c7cb8171DfF689e1B\",\n onchfs_renderer_v1: \"0x4180D747e984C9CFEEfaF23944AE0C20c0742341\",\n randomizer_v1: \"0x6754E97b8eaeC13Fa24480E9d1240176Dd0f2911\",\n role_registry_v1: \"0x8d3C748e99066e15425BA1620cdD066d85D6d918\",\n contract_registry_v1: \"0xCa6e30B1C7cBE7cF605cE30B334f968C5E2EA016\",\n gen_art_token_impl_v1: \"0xC5769428823C9a0393DC66855DD3817b2A85BEFD\",\n mint_ticket_impl_v1: \"0x3e9754Da0fb002Fa13D69B2f313d5CB441fC8ef5\",\n onchfs_file_system: \"0x2983008f292a43f208bba0275afd7e9b3d39af3b\",\n onchfs_content_store: \"0x070e5A608705aC4954eec054f9074eEe49bDcbfF\",\n seaport: \"0x00cA04c45da318d5b7E7B14D5381Ca59F09C73f0\",\n fxhashTeamSafeAddress: \"0x38D3a2F9c63D4a580f100B051ba137fa6d8e2560\",\n signerSafe: \"0x38D3a2F9c63D4a580f100B051ba137fa6d8e2560\",\n moderationSafe: \"0x38D3a2F9c63D4a580f100B051ba137fa6d8e2560\",\n farcaster_frame_fixed_price_minter_v1:\n \"0x6e625892C739bFD960671Db5544E260757480725\",\n fx_token: \"0x5Fc2843838e65eb0B5d33654628F446d54602791\",\n fx_airdrop: \"0x45BB9DF166Fda4afD7e533DE42B11579a1F09d43\",\n fx_tez_airdrop: \"0x5021910a5762F9C872Bf7D6CD5F09127aE8cCA84\",\n fx_token_launchpad: \"0x6FE49c842dAEE3C709772e5727Fd863ad858f1F5\",\n fx_project_factory: \"0x0612ec1A199617A5b3DF627755A34F69469AEA25\",\n fx_project_factory_v2: \"0xTODO\",\n fx_doppler_factory: \"0xTODO\",\n uniswap_v2_migrator: \"0x6a0732ddC968EeF5795f567640577dd49DD47349\",\n}\n","export interface IEthContracts {\n multicall3: `0x${string}`\n seaport_zone: `0x${string}`\n issuer_factory_v1: `0x${string}`\n fixed_price_minter_v1: `0x${string}`\n dutch_auction_minter_v1: `0x${string}`\n mint_ticket_factory_v1: `0x${string}`\n ticket_redeemer_v1: `0x${string}`\n ipfs_renderer_v1: `0x${string}`\n onchfs_renderer_v1: `0x${string}`\n randomizer_v1: `0x${string}`\n role_registry_v1: `0x${string}`\n contract_registry_v1: `0x${string}`\n gen_art_token_impl_v1: `0x${string}`\n mint_ticket_impl_v1: `0x${string}`\n onchfs_file_system: `0x${string}`\n onchfs_content_store: `0x${string}`\n seaport: `0x${string}`\n fxhashTeamSafeAddress: `0x${string}`\n signerSafe: `0x${string}`\n moderationSafe: `0x${string}`\n farcaster_frame_fixed_price_minter_v1: `0x${string}`\n fx_token: `0x${string}`\n}\n\nexport const ethTestnetContracts: IEthContracts = {\n multicall3: \"0xcA11bde05977b3631167028862bE2a173976CA11\",\n seaport_zone: \"0x0000000006B429721d1F4c4cD256BF3A38c09Ac6\",\n issuer_factory_v1: \"0x4e9ef916F55B5d4a27E6406C7Ce8bcd29c2693d6\",\n mint_ticket_factory_v1: \"0xbaed21d8C57caf71578b9aE1E09a68721d0Dd02d\",\n dutch_auction_minter_v1: \"0x2F8ea350E7F29BCaC2AEE5889d64df07EE3Fa98d\",\n fixed_price_minter_v1: \"0xa6c9c758e80ec18e1a28d485b97400B11dCFCD64\",\n ticket_redeemer_v1: \"0xdd29eA613e0553fc03f5762Bf643710a7987A216\",\n ipfs_renderer_v1: \"0x17b9c8a7C6F9D3768D4DA75EBB6abDe9FBe900cf\",\n onchfs_renderer_v1: \"0x25B087D2c87a0b34188a530dC9cCfDa30822AA8e\",\n randomizer_v1: \"0x5962e4dEeDe2DB4A83259255D30c19F4397FD5A6\",\n role_registry_v1: \"0x92B70c5C6E676BdC395DfD911c07392fc7C36E4F\",\n contract_registry_v1: \"0xb7CFDcDb2c6a1D05D7b85FB4ae7B7bccd028010F\",\n gen_art_token_impl_v1: \"0x1feeb359e96E6Dd6F19F1FC98e8FffDdf5AeaD58\",\n mint_ticket_impl_v1: \"0x0303e3a5be6e9Fa21E72cE446a402a6AEec13c60\",\n onchfs_file_system: \"0x4f555d39e89f6d768f75831d610b3940fa94c6b1\",\n onchfs_content_store: \"0x070e5A608705aC4954eec054f9074eEe49bDcbfF\",\n seaport: \"0x00cA04c45da318d5b7E7B14D5381Ca59F09C73f0\",\n fxhashTeamSafeAddress: \"0x4F073947573FF44621cA25061Fb035c73a3014ab\",\n signerSafe: \"0x4F073947573FF44621cA25061Fb035c73a3014ab\",\n moderationSafe: \"0x4F073947573FF44621cA25061Fb035c73a3014ab\",\n farcaster_frame_fixed_price_minter_v1:\n \"0xB0905f81167bD90ABD5a583E029D27DA77568084\",\n fx_token: \"0xfa2e08ebfa6dae5ff68c3a0e2eb33a78f363f9fe\",\n}\n\n/**\n * TODO\n * -----------------------------------------------------------------------------\n * Put the actual addresses.\n */\nexport const ethMainnetContracts: IEthContracts = {\n multicall3: \"0xcA11bde05977b3631167028862bE2a173976CA11\",\n seaport_zone: \"0x0000000006B429721d1F4c4cD256BF3A38c09Ac6\",\n issuer_factory_v1: \"0x442295de8A31d65026dBc09c29d469F6854f188a\",\n mint_ticket_factory_v1: \"0xDB92ed0e6265d042F05E5C2f6D2F99496e87D706\",\n dutch_auction_minter_v1: \"0x1bC736a2b144096a4752534C557D7E6C311CcAF1\",\n fixed_price_minter_v1: \"0xB645cFfD9bFB93c2c181d5Be0D6a8C1d81C2aEf3\",\n ticket_redeemer_v1: \"0x3D72011b1bB52e33f9D81Fc5553FF4765e3f32c1\",\n ipfs_renderer_v1: \"0x48F00F8314920ca0cd763D74acFe8cFE4024a274\",\n onchfs_renderer_v1: \"0xe9fE6b2e494E40404AcB2b8B0a0Bc7b79FD03c83\",\n randomizer_v1: \"0xED32Ed47A75e298433cF822E10645C04a0B95075\",\n role_registry_v1: \"0x22b9Dd17BA1132C027d780bC0A784f08f244022B\",\n contract_registry_v1: \"0x4DAc308c686D747A804B7E95db606695a529A750\",\n gen_art_token_impl_v1: \"0x429AC1aA66220573Da6928bcce7384fe50e1284f\",\n mint_ticket_impl_v1: \"0xc2743B0B901eDAA8ccd1A09914449A797e1079F1\",\n onchfs_file_system: \"0x9e0f2864c6f125bbf599df6ca6e6c3774c5b2e04\",\n onchfs_content_store: \"0xC6806fd75745bB5F5B32ADa19963898155f9DB91\",\n seaport: \"0x00cA04c45da318d5b7E7B14D5381Ca59F09C73f0\",\n fxhashTeamSafeAddress: \"0xD8b1905022d70e74c6c8aaA2baaf275fBe1634f1\",\n signerSafe: \"0xB456aF77dEB65065462BD1f0D9098413E6CA4200\",\n moderationSafe: \"0x99CDaECbe1be4B7232a4f2c79EF76D403886FE1E\",\n farcaster_frame_fixed_price_minter_v1:\n \"0x6e625892C739bFD960671Db5544E260757480725\",\n fx_token: \"0xTODO\",\n}\n","export interface ITezosContracts {\n allowed_mint: string\n allowed_mint_issuer: string\n allowed_mint_issuer_v3: string\n allowed_mint_v3: string\n articles: string\n card_proxy: string\n collaboration_factory: string\n consumable_database: string\n cycles: string\n gentk_v1: string\n gentk_v1_data: string\n gentk_v2: string\n gentk_v3: string\n issuer_tickets: string\n issuer_v0: string\n issuer_v1: string\n issuer_v2: string\n issuer_v3: string\n marketplace_v1: string\n marketplace_v2: string\n marketplace_v3: string\n moderation_articles: string\n moderation_team: string\n moderation_token: string\n moderation_token_v3: string\n moderation_user: string\n pricing_dutch_auction: string\n pricing_dutch_auction_v3: string\n pricing_fixed: string\n pricing_fixed_v3: string\n randomizer: string\n randomizer_v2: string\n token_moderation: string\n treasury: string\n user_moderation: string\n user_register: string\n onchfs_files: string\n}\n// The Tezos Smart Contracts addresses on testnet\nexport const tezosTestnetContracts: ITezosContracts = {\n allowed_mint: \"KT1QwfqMUDRYVyxo9KhunY5YCx9qQ9LWcswr\",\n allowed_mint_issuer: \"KT1WDByFKQmgVynxSr2rzdijs5aSs7mo7eBM\",\n allowed_mint_issuer_v3: \"KT1S3UqrLgMpVivNWWmBUnkPCaSFHDJ4HYvb\",\n allowed_mint_v3: \"KT1HUE2A6CHNw4NZZBWjJyG38nysWWfusagu\",\n articles: \"KT1HV8NXUCKWC1tWNHSD8LPPiKPshQuXvb8r\",\n card_proxy: \"KT1R6N27Qdw4RqeSUnYkw436uZrFSRWtxqbd\",\n collaboration_factory: \"KT1WFXts7jwxpD9uGDKzyqTUTFaG222xmjoZ\",\n consumable_database: \"KT1FP9y1PJpJkXhdJCgYZhVbj9UBpxnA57Bx\",\n cycles: \"KT1BJBcvtgZM2Kf4rUapmp4AhXtWCmznxd6F\",\n gentk_v1: \"KT1ExHjELnDuat9io3HkDcrBhHmek7h8EVXG\",\n gentk_v1_data: \"KT1SquPSN9oiMUWHG9coKRJAwz8Afe4c6izT\",\n gentk_v2: \"KT1NkZho1yRkDdQnN4Mz93sDYyY2pPrEHTNs\",\n gentk_v3: \"KT1TtVAyjh4Ahdm8sLZwFnL7tqoLf59XrK2h\",\n issuer_tickets: \"KT19PBsvmB2CwFqXftzb5gNJfxrEDFdSxGKZ\",\n issuer_v0: \"KT1PyfrDD85RxUWz8dMHoC92MxdPzecSQ5t9\",\n issuer_v1: \"KT1QwWVZogqPZZtGSVxGpLkEWar7LFvAsMdd\",\n issuer_v2: \"KT1Sy7X6TubmZ39G8CHVrUcxjc3jiF68P8oB\",\n issuer_v3: \"KT1DfymMp3qD5Pd5ujPjp7UsQbppY9yY1Hbf\",\n marketplace_v1: \"KT1DbivePcuUzCp5RaAQWxPSLV9G2Ys4faUR\",\n marketplace_v2: \"KT1HFYtf4vNCr4xRDZxLKc5asUdCsPUTTW9R\",\n marketplace_v3: \"KT1J6rt4d9U785DZWYEPvQ2fR1e71gxP42Lj\",\n moderation_articles: \"KT1Qg78fa81Xyjh65yNqUgVucubHUyq6VmgL\",\n moderation_team: \"KT1RsfyWzHs1EEWMzFLmKnJTQwPqRzsnF3Dp\",\n moderation_token: \"KT1PokFR36CcXKh3jUnjncabcuPWm5BMiqjt\",\n moderation_token_v3: \"KT1C1J38YR6eDvRBDEDaypptCFda9aH7FRbJ\",\n moderation_user: \"KT1Q3s7mYpscCnwsyndrVZg9WqBCmw99n37g\",\n pricing_dutch_auction: \"KT1BqikbUisiBBd9WvPiqnTwLY8Pm68p2Aua\",\n pricing_dutch_auction_v3: \"KT1QCboxZ28SqsfyZWTDrkSpZzU6xjZXBsFb\",\n pricing_fixed: \"KT1PAsf9Zc9FGJA9iLE1Ab2vPkMDsh4hyZVi\",\n pricing_fixed_v3: \"KT1Mqyy5JPknNzNJtgF93SHpFHv4VcYrNZry\",\n randomizer: \"KT1QmdsrJWJgK3VXid8q7D4sPipVoc9jh12x\",\n randomizer_v2: \"KT1Eow4nBY3B9EhWcX1aEXva67VkNFfP1Tq6\",\n token_moderation: \"KT1BHfPDMRp2q48ZkmmnK7TRzQRdFnp6XVKq\",\n treasury: \"KT1MbDbRhZPs5TzZEXkT142ePoccFHfohBoo\",\n user_moderation: \"KT1LmZjoitx2itnB1qCbHMrT3V64RbuSPf3a\",\n user_register: \"KT1XaikgmBDQANBvkFqyFhSpgAZJAXpiDFGE\",\n onchfs_files: \"KT1FA8AGGcJha6S6MqfBUiibwTaYhK8u7s9Q\",\n}\n// The Tezos Smart Contracts on mainnet\nexport const tezosMainnetContracts: ITezosContracts = {\n allowed_mint: \"KT1VDQwskdfHkSbA9W6CSEnxnh1u1XU8K8Gu\",\n allowed_mint_issuer: \"KT1Djz5ix2yEGmV7PMq3GYq17TvMMkd1anT2\",\n allowed_mint_issuer_v3: \"KT1LJ4R4xoEWMgTjrGrdHJAeHLYFaB4RsoVK\",\n allowed_mint_v3: \"KT1KgEjxqfRCMwtCGifT6fDPwC35RptTUEvE\",\n articles: \"KT1GtbuswcNMGhHF2TSuH1Yfaqn16do8Qtva\",\n card_proxy: \"KT1DQGSRsgHcf2TPdKGc4qm5AT9JprJCAo7j\",\n collaboration_factory: \"KT1JrUPSCt1r2MB2J7Lk2KwiWSYr3Mr414ck\",\n consumable_database: \"KT1Mbfkqh5EhebWuMvqAfUPTpgiBPwmQCDSD\",\n cycles: \"KT1BgD9SPfysnMz3vkfm6ZEaGFKCVcE5ay91\",\n gentk_v1: \"KT1KEa8z6vWXDJrVqtMrAeDVzsvxat3kHaCE\",\n gentk_v1_data: \"KT1WRpPyXHSCbTfDQFWVXbMpxxvf7Y7KChxc\",\n gentk_v2: \"KT1U6EHmNxJTkvaWJ4ThczG4FSDaHC21ssvi\",\n gentk_v3: \"KT1EfsNuqwLAWDd3o4pvfUx1CAh5GMdTrRvr\",\n issuer_tickets: \"KT19etLCjCCzTLFFAxsxLFsVYMRPetr2bTD5\",\n issuer_v0: \"KT1AEVuykWeuuFX7QkEAMNtffzwhe1Z98hJS\",\n issuer_v1: \"KT1XCoGnfupWk7Sp8536EfrxcP73LmT68Nyr\",\n issuer_v2: \"KT1BJC12dG17CVvPKJ1VYaNnaT5mzfnUTwXv\",\n issuer_v3: \"KT1Xpmp15KfqoePNW9HczFmqaGNHwadV2a3b\",\n marketplace_v1: \"KT1Xo5B7PNBAeynZPmca4bRh6LQow4og1Zb9\",\n marketplace_v2: \"KT1GbyoDi7H1sfXmimXpptZJuCdHMh66WS9u\",\n marketplace_v3: \"KT1M1NyU9X4usEimt2f3kDaijZnDMNBu42Ja\",\n moderation_articles: \"KT1A36z7nG4zPDbhjyrzhYf9SCn5ipPZeRMQ\",\n moderation_team: \"KT1FvGQcPxzuJkJsdWFQiGkueSNT5mqpFDrf\",\n moderation_token: \"KT18tPu7uXy9PJ97i3qCLsr7an4X6sQ5qxU7\",\n moderation_token_v3: \"KT1UBWXN1KxTh4eurrCTCH7aEjqdrM3HjP6R\",\n moderation_user: \"KT1Wn2kkKmdbyLWBiLXWCkE7fKj1LsLKar2A\",\n pricing_dutch_auction: \"KT1EzLrXRCXij42pKfbZPn48PuxrnVki1aYY\",\n pricing_dutch_auction_v3: \"KT1MFgHKorMWXeVL6qrpgjZmemirafppSg9q\",\n pricing_fixed: \"KT1FHzHxuMaNLYG8LdniY45M6RCfkF3AoXFh\",\n pricing_fixed_v3: \"KT1V24J6FVuKPU3xy6gVF6wJ3zdRXBheQhaV\",\n randomizer: \"KT1XYgKrzBbzsckGvXTPgxFyN7KNZ9RPYVWf\",\n randomizer_v2: \"KT1CfmepqJkfZwqLPFVMKFoYUS7dPPZHyCTo\",\n token_moderation: \"KT1HgVuzNWVvnX16fahbV2LrnpwifYKoFMRd\",\n treasury: \"KT1P2BXYb894MekrCcSrnidzQYPVqitLoVLc\",\n user_moderation: \"KT1TWWQ6FtLoosVfZgTKV2q68TMZaENhGm54\",\n user_register: \"KT1Ezht4PDKZri7aVppVGT4Jkw39sesaFnww\",\n onchfs_files: \"KT1Ae7dT1gsLw2tRnUMXSCmEyF74KVkM6LUo\",\n}\n","import { IBaseApis } from \"./api/base.js\"\nimport { IEthApis } from \"./api/eth.js\"\nimport { ITezosApis } from \"./api/tezos.js\"\nimport { AlgoliaConfig } from \"./config/algolia.js\"\nimport { GPURenderingConfig } from \"./config/gpu.js\"\nimport { IBaseContracts } from \"./contracts/base.js\"\nimport { IEthContracts } from \"./contracts/eth.js\"\nimport { ITezosContracts } from \"./contracts/tezos.js\"\n\nexport interface IFxhashApis {\n website: string\n docs: string\n main: string\n hasura: string\n hasuraGql: string\n file: string\n fileInternal: string\n walletInternal: string\n baseIndexerInternal: string\n fsEmulator: string\n extract: string\n extractInternal: string\n media: string\n ethMetadata: string\n ipfsInternal: string\n ipfsGateway: string\n ipfsGatewaySafe: string\n ipfsGatewayInternal: string\n onchfsProxy: string\n opensea: string\n authority: {\n api: string\n }\n capture: {\n lambdas: {\n small: string\n medium: string\n large: string\n }\n proxy: {\n ipfs: string\n onchfs: string\n }\n }\n events: {\n liveBackend: string\n }\n indexer: {\n tez: string\n eth: string\n base: string\n }\n}\n\n/**\n * A mapping of blockchains in their \"human-readable\" format with their proper\n * blockchain identifier.\n */\nexport const BlockchainIdentifiers = {\n TezosGhostnet: \"tezos:NetXnHfVqm9iesp\",\n TezosMainnet: \"tezos:NetXdQprcVkpaWU\",\n EthereumMainnet: \"eip155:1\",\n EthereumGoerli: \"eip155:5\",\n EthereumSepolia: \"eip155:11155111\",\n BaseSepolia: \"eip155:84532\",\n BaseMainnet: \"eip155:8453\",\n} as const\n\n/**\n * An union of all the blockchains supported by fxhash, defined by their chain\n * identifier. Can be used to facilitate typescript auto-completion with string\n * when enums aren't as good.\n */\nexport type BlockchainIdentifier =\n (typeof BlockchainIdentifiers)[keyof typeof BlockchainIdentifiers]\n\n// the variations supported by the config\nexport type TBlockchain = \"tez\" | \"eth\" | \"base\"\nexport type TBlockchainNetwork = \"testnet\" | \"mainnet\"\nexport type TEnv = \"dev\" | \"prd\" | \"local\" | \"localDocker\"\nexport type TEnvName = \"development\" | \"production\" | \"local\" | \"localDocker\"\n\nexport interface IFxhashNetworkConfig {\n network: string\n chainId: BlockchainIdentifier\n ethFeeReceiver: `0x${string}`\n wertRelayer: string\n fxhashFees: {\n primary: number\n secondary: number\n }\n royaltyBasisPoint: number\n splitBasisPoint: number\n}\n\n/**\n * Meta info about the application. Can be used by wallets to scope the\n * application making requests for instance.\n */\nexport interface IAppMetadata {\n /**\n * Application name. Will be displayed by wallets when a request is made\n * (signing a message, sending a transaction)\n */\n name: string\n\n /**\n * A short sentence (<25 words) describing the app. Might be used by wallets\n * to display extra info about your app.\n */\n description: string\n\n /**\n * **IMPORTANT**: This should match the URL in which the JS context making\n * requests to wallets will be executed. **If doesn't match execution\n * context domain, wallets may display a red warning.\n */\n url: string\n\n /**\n * URL to your application icon. Recommended: PNG 256x256\n * May be used by wallet apps in their UI when users interact with your app.\n */\n icon?: string\n}\n\nexport interface IFxhashEnvConfig {\n envName: TEnvName\n metadata: IAppMetadata\n gtMinPrice: string\n walletConnectId: string\n splitsApiKey: string\n projectLockTime: number\n referrerShare: number\n cloudflareTurnstileSiteKey: string\n cloudflareTurnstileSiteKeyV2: string\n syndicateProjectId: string\n awsS3Bucket: string\n awsS3Region: string\n openTelemetryTarget: string\n algolia: AlgoliaConfig\n gpu: GPURenderingConfig\n authJwtPublicKey: string\n}\n\ntype TBlockchainContacts = {\n [B in TBlockchain]: {\n tez: ITezosContracts\n eth: IEthContracts\n base: IBaseContracts\n }[B]\n}\n\ntype TBlockchainApis = {\n [B in TBlockchain]: {\n tez: ITezosApis\n eth: IEthApis\n base: IBaseApis\n }[B]\n}\n\ntype TNetworkBlockchainConfig = {\n [B in TBlockchain]: {\n tez: IFxhashNetworkConfig\n eth: IFxhashNetworkConfig\n base: IFxhashNetworkConfig\n }[B]\n}\n\nexport type IFxhashConfig = {\n networks: {\n [N in TBlockchainNetwork]: {\n [B in TBlockchain]: {\n contracts: TBlockchainContacts[B]\n config: TNetworkBlockchainConfig[B]\n apis: TBlockchainApis[B]\n }\n }\n }\n envs: {\n [K in TEnv]: {\n apis: IFxhashApis\n config: IFxhashEnvConfig\n }\n }\n}\n\nexport type IFxhashConfigSingleEnv = {\n [B in TBlockchain]: {\n contracts: TBlockchainContacts[B]\n config: TNetworkBlockchainConfig[B]\n apis: TBlockchainApis[B]\n }\n} & {\n apis: IFxhashApis\n config: IFxhashEnvConfig\n}\n","import { baseMainnetApis, baseTestnetApis } from \"./api/base.js\"\nimport { ethMainnetApis, ethTestnetApis } from \"./api/eth.js\"\nimport {\n fxhashDevApis,\n fxhashLocalApis,\n fxhashLocalDockerApis,\n fxhashPrdApis,\n} from \"./api/fxhash.js\"\nimport { tezosMainnetApis, tezosTestnetApis } from \"./api/tezos.js\"\nimport { algoliaConfigDev, algoliaConfigProd } from \"./config/algolia.js\"\nimport { gpuRenderingConfigDev, gpuRenderingConfigProd } from \"./config/gpu.js\"\nimport { fxAppEnvMetadata } from \"./config/metadata.js\"\nimport { AUTH_JWT_PK_DEV, AUTH_JWT_PK_PRD } from \"./constants.js\"\nimport { baseMainnetContracts, baseTestnetContracts } from \"./contracts/base.js\"\nimport { ethMainnetContracts, ethTestnetContracts } from \"./contracts/eth.js\"\nimport {\n tezosMainnetContracts,\n tezosTestnetContracts,\n} from \"./contracts/tezos.js\"\nimport { getEnv } from \"./helpers.js\"\nimport {\n BlockchainIdentifiers,\n type IFxhashConfig,\n type IFxhashConfigSingleEnv,\n type TBlockchainNetwork,\n type TEnv,\n} from \"./types.js\"\n\n/**\n * ! Beware ! Changing these values will result in current\n * projects breaking.\n * https://github.com/fxhash/monorepo/issues/701\n */\nconst tezosFees = {\n primary: 500,\n secondary: 250,\n}\n\nconst ethFees = {\n primary: 1000,\n secondary: 2500,\n}\n\nconst baseFees = {\n primary: 1000,\n secondary: 2500,\n}\n/**\n * --------------------------------------------------------\n */\n\nconst fxhashConfig: IFxhashConfig = {\n networks: {\n testnet: {\n tez: {\n contracts: tezosTestnetContracts,\n config: {\n network: \"ghostnet\",\n chainId: BlockchainIdentifiers.TezosGhostnet,\n ethFeeReceiver: \"0x\",\n wertRelayer: \"tz1T2uyYTshSGrEg13VGJFqsWwbi2H175hZb\",\n fxhashFees: tezosFees,\n royaltyBasisPoint: 1000,\n splitBasisPoint: 1000,\n },\n apis: tezosTestnetApis,\n },\n eth: {\n contracts: ethTestnetContracts,\n config: {\n network: \"Sepolia\",\n chainId: BlockchainIdentifiers.EthereumSepolia,\n ethFeeReceiver: \"0xe1f04609f7bC45e23a1BA4CD4a76f476755beBA6\",\n wertRelayer: \"0x2ff0ec69341f43cc462251bd49bb63681adafcb0\",\n fxhashFees: ethFees,\n royaltyBasisPoint: 10_000,\n splitBasisPoint: 1_000_000,\n },\n apis: ethTestnetApis,\n },\n base: {\n contracts: baseTestnetContracts,\n config: {\n network: \"Base Sepolia\",\n chainId: BlockchainIdentifiers.BaseSepolia,\n ethFeeReceiver: \"0xF70DF285Bc6941b4760BcC041B0cA1cc50E27F8d\",\n wertRelayer: \"0x2ff0ec69341f43cc462251bd49bb63681adafcb0\",\n fxhashFees: baseFees,\n royaltyBasisPoint: 10_000,\n splitBasisPoint: 1_000_000,\n },\n apis: baseTestnetApis,\n },\n },\n mainnet: {\n tez: {\n contracts: tezosMainnetContracts,\n config: {\n network: \"mainnet\",\n chainId: BlockchainIdentifiers.TezosMainnet,\n ethFeeReceiver: \"0x\",\n wertRelayer: \"tz1KkPS1TWFyDWfQwrdvmTmsCLUNMegDrrSi\",\n fxhashFees: tezosFees,\n royaltyBasisPoint: 1000,\n splitBasisPoint: 1000,\n },\n apis: tezosMainnetApis,\n },\n eth: {\n contracts: ethMainnetContracts,\n config: {\n network: \"Ethereum\",\n chainId: BlockchainIdentifiers.EthereumMainnet,\n ethFeeReceiver: \"0xed650E40F7bd3812152D4BFA6740662F50e178DF\",\n wertRelayer: \"0xc16157e00b1bff1522c6f01246b4fb621da048d0\",\n fxhashFees: ethFees,\n royaltyBasisPoint: 10_000,\n splitBasisPoint: 1_000_000,\n },\n apis: ethMainnetApis,\n },\n base: {\n contracts: baseMainnetContracts,\n config: {\n network: \"Base\",\n chainId: BlockchainIdentifiers.BaseMainnet,\n ethFeeReceiver: \"0xF70DF285Bc6941b4760BcC041B0cA1cc50E27F8d\",\n wertRelayer: \"0xc16157e00b1bff1522c6f01246b4fb621da048d0\",\n fxhashFees: baseFees,\n royaltyBasisPoint: 10_000,\n splitBasisPoint: 1_000_000,\n },\n apis: baseMainnetApis,\n },\n },\n },\n envs: {\n local: {\n apis: fxhashLocalApis,\n config: {\n envName: \"local\",\n metadata: fxAppEnvMetadata(\"local\"),\n gtMinPrice: \"0\",\n walletConnectId: \"111994543d1b754bab82c368d0e61ae5\",\n projectLockTime: 3600,\n referrerShare: 0,\n splitsApiKey: \"75348d57d6cf60fa4551766c\",\n cloudflareTurnstileSiteKey: \"1x00000000000000000000AA\",\n cloudflareTurnstileSiteKeyV2: \"0x4AAAAAAAW-w_xThcj91jkA\",\n syndicateProjectId: \"9dd71e90-4605-45f4-94e0-4e533b01081d\",\n awsS3Bucket: \"fxh-media-assets-dev-testnet-us-east-1\",\n awsS3Region: \"us-east-1\",\n openTelemetryTarget: \"http://localhost:14268\",\n algolia: algoliaConfigDev,\n gpu: gpuRenderingConfigDev,\n authJwtPublicKey: AUTH_JWT_PK_DEV,\n },\n },\n localDocker: {\n apis: fxhashLocalDockerApis,\n config: {\n envName: \"localDocker\",\n metadata: fxAppEnvMetadata(\"localDocker\"),\n gtMinPrice: \"0\",\n walletConnectId: \"111994543d1b754bab82c368d0e61ae5\",\n projectLockTime: 3600,\n referrerShare: 0,\n splitsApiKey: \"75348d57d6cf60fa4551766c\",\n cloudflareTurnstileSiteKey: \"1x00000000000000000000AA\",\n cloudflareTurnstileSiteKeyV2: \"0x4AAAAAAAW-w_xThcj91jkA\",\n syndicateProjectId: \"9dd71e90-4605-45f4-94e0-4e533b01081d\",\n awsS3Bucket: \"fxh-media-assets-dev-testnet-us-east-1\",\n awsS3Region: \"us-east-1\",\n openTelemetryTarget: \"http://localhost:14268\",\n algolia: algoliaConfigDev,\n gpu: gpuRenderingConfigDev,\n authJwtPublicKey: AUTH_JWT_PK_DEV,\n },\n },\n dev: {\n apis: fxhashDevApis,\n config: {\n envName: \"development\",\n metadata: fxAppEnvMetadata(\"dev\"),\n gtMinPrice: \"0\",\n walletConnectId: \"111994543d1b754bab82c368d0e61ae5\",\n projectLockTime: 3600,\n referrerShare: 0,\n splitsApiKey: \"75348d57d6cf60fa4551766c\",\n cloudflareTurnstileSiteKey: \"0x4AAAAAAAVOb6invoeYS4EN\",\n cloudflareTurnstileSiteKeyV2: \"0x4AAAAAAAW-w_xThcj91jkA\",\n syndicateProjectId: \"9dd71e90-4605-45f4-94e0-4e533b01081d\",\n awsS3Bucket: \"fxh-media-assets-dev-testnet-us-east-1\",\n awsS3Region: \"us-east-1\",\n openTelemetryTarget: \"https://tempo.ss.fxhash2.xyz\",\n algolia: algoliaConfigDev,\n gpu: gpuRenderingConfigDev,\n authJwtPublicKey: AUTH_JWT_PK_DEV,\n },\n },\n prd: {\n apis: fxhashPrdApis,\n config: {\n envName: \"production\",\n metadata: fxAppEnvMetadata(\"prd\"),\n gtMinPrice: \"0\",\n walletConnectId: \"111994543d1b754bab82c368d0e61ae5\",\n projectLockTime: 3600,\n referrerShare: 0,\n splitsApiKey: \"75348d57d6cf60fa4551766c\",\n cloudflareTurnstileSiteKey: \"0x4AAAAAAAVObp1YeuhbqNKB\",\n cloudflareTurnstileSiteKeyV2: \"0x4AAAAAAAW-yE4Q6Wdz6SNb\",\n syndicateProjectId: \"398ad73d-341c-4861-a038-f0ae1ca58e07\",\n awsS3Bucket: \"fxh-media-assets-prd-mainnet-us-east-1\",\n awsS3Region: \"us-east-1\",\n openTelemetryTarget: \"https://tempo.ss.fxhash2.xyz\",\n algolia: algoliaConfigProd,\n gpu: gpuRenderingConfigProd,\n authJwtPublicKey: AUTH_JWT_PK_PRD,\n },\n },\n },\n}\n\nexport function getBlockchainNetworkForEnv(env: TEnv): TBlockchainNetwork {\n return env === \"prd\" ? \"mainnet\" : \"testnet\"\n}\n\nexport function getConfigForEnv(env: TEnv): IFxhashConfigSingleEnv {\n const blockchainNetwork = getBlockchainNetworkForEnv(env)\n return {\n ...fxhashConfig.networks[blockchainNetwork],\n ...fxhashConfig.envs[env],\n }\n}\n\nexport const localConfig: IFxhashConfigSingleEnv = getConfigForEnv(\"local\")\nexport const localDockerConfig: IFxhashConfigSingleEnv =\n getConfigForEnv(\"localDocker\")\nexport const devConfig: IFxhashConfigSingleEnv = getConfigForEnv(\"dev\")\nexport const prdConfig: IFxhashConfigSingleEnv = getConfigForEnv(\"prd\")\n\nconst currentEnv = getEnv()\nlet config: IFxhashConfigSingleEnv = getConfigForEnv(currentEnv)\n\nfunction setConfig(\n userConfig: Partial<IFxhashConfigSingleEnv>\n): IFxhashConfigSingleEnv {\n config = {\n ...config,\n ...userConfig,\n }\n return config\n}\n\nexport { config, fxhashConfig, setConfig }\n","export const onchfsRegex: RegExp = new RegExp(\"^onchfs://\")\n\n/**\n * Returns the CID or a resource, whether it's already a CID or an onchfs://<CID> resource\n * @param resource either a CID or a onchfs://<CID> string\n */\nexport function onchfsCidFromUriOrCid(resource: string): string {\n if (!onchfsRegex.test(resource)) return resource\n return resource.slice(9)\n}\n","import { config } from \"../config.js\"\n\nexport enum EGatewayIpfs {\n FXHASH = \"FXHASH\",\n FXHASH_SAFE = \"FXHASH_SAFE\",\n IPFSIO = \"IPFSIO\",\n}\n\nexport const ipfsRegex: RegExp = new RegExp(\"^ipfs://\")\n\n/**\n * Given a gateway enum, outputs the http url root of the gateway\n */\nexport function ipfsGatewayRoot(gateway: EGatewayIpfs): string {\n switch (gateway) {\n case EGatewayIpfs.FXHASH:\n return config.apis.ipfsGateway\n case EGatewayIpfs.FXHASH_SAFE:\n return config.apis.ipfsGatewaySafe\n case EGatewayIpfs.IPFSIO:\n default:\n return \"https://ipfs.io\"\n }\n}\n\n/**\n * Returns the CID or a resource, whether it's already a CID or an ipfs://<CID> resource\n * @param resource either a CID or a ipfs://<CID> string\n */\nexport function ipfsCidFromUriOrCid(resource: string): string {\n if (!ipfsRegex.test(resource)) return resource\n return resource.slice(7)\n}\n\n/**\n * Given a CID or ipfs://<CID>, returns an URL to a gateway pointing to the resource\n * @param resource the resource input, either a CID or ipfs://<CID>\n * @param gateway the gateway URL to use for the resource\n */\nexport function ipfsGatewayUrl(\n resource: string | null | undefined,\n gateway: EGatewayIpfs = EGatewayIpfs.FXHASH_SAFE\n): string {\n if (!resource) return \"\"\n const cid = ipfsCidFromUriOrCid(resource)\n return `${ipfsGatewayRoot(gateway)}/ipfs/${cid}`\n}\n\n/**\n * given a URI (either ipfs://<CID>, onchfs://<CID> or temp://<CID>),\n * returns the URL to the resource\n */\nexport function proxyUrl(uri: string): string {\n // let blobs be blobs\n if (uri.startsWith(\"blob:\") || uri.startsWith(\"data:\")) return uri\n\n const [protocol, cid] = uri.split(\"://\")\n switch (protocol) {\n case \"https\":\n return uri\n case \"temp\":\n return `${config.apis.fsEmulator}/resolve/${cid}`\n case \"onchfs\":\n return `${config.apis.onchfsProxy}/${cid}`\n default:\n return ipfsGatewayUrl(uri)\n }\n}\n","import { onchfsCidFromUriOrCid, onchfsRegex } from \"./onchfs\"\nimport { ipfsCidFromUriOrCid, ipfsRegex } from \"./ipfs\"\n\n/**\n * Returns the CID or a resource, whether it's already a CID or an ipfs://<CID> or onchfs://<CID> resource\n * @param resource either a CID or an ipfs://<CID> or onchfs://<CID> string\n */\nexport function cidFromUriOrCid(resource: string): string {\n if (ipfsRegex.test(resource)) {\n return ipfsCidFromUriOrCid(resource)\n } else if (onchfsRegex.test(resource)) {\n return onchfsCidFromUriOrCid(resource)\n }\n return resource\n}\n","import { config } from \"../config.js\"\n\nexport const tezosContractPrefixesByContractAddress: Record<string, string> = {\n [config.tez.contracts.gentk_v1]: \"FX0\",\n [config.tez.contracts.gentk_v2]: \"FX0\",\n [config.tez.contracts.gentk_v3]: \"FX1\",\n}\nexport function getObjktIdFromContract(contract: string, id: string): string {\n return `${tezosContractPrefixesByContractAddress[contract]}-${id}`\n}\n","import { type IEthApis, ethTestnetApis } from \"./api/eth.js\"\nimport { fxhashDevApis, fxhashPrdApis } from \"./api/fxhash.js\"\nimport {\n type ITezosApis,\n tezosMainnetApis,\n tezosTestnetApis,\n} from \"./api/tezos.js\"\nimport {\n config,\n devConfig,\n fxhashConfig,\n localConfig,\n prdConfig,\n setConfig,\n} from \"./config.js\"\nimport { type GPURenderingConfig } from \"./config/gpu.js\"\nimport { type IEthContracts, ethTestnetContracts } from \"./contracts/eth.js\"\nimport {\n type ITezosContracts,\n tezosMainnetContracts,\n tezosTestnetContracts,\n} from \"./contracts/tezos.js\"\nimport {\n type IFxhashConfig,\n type IFxhashEnvConfig,\n type IFxhashNetworkConfig,\n type TBlockchain,\n type TBlockchainNetwork,\n type TEnv,\n} from \"./types.js\"\n\nexport {\n config,\n devConfig,\n ethTestnetApis,\n ethTestnetContracts,\n fxhashConfig,\n fxhashDevApis,\n fxhashPrdApis,\n localConfig,\n prdConfig,\n setConfig,\n tezosMainnetApis,\n tezosMainnetContracts,\n tezosTestnetApis,\n tezosTestnetContracts,\n type GPURenderingConfig,\n type IEthApis,\n type IEthContracts,\n type IFxhashConfig,\n type IFxhashEnvConfig,\n type IFxhashNetworkConfig,\n type ITezosApis,\n type ITezosContracts,\n type TBlockchain,\n type TBlockchainNetwork,\n type TEnv,\n}\n\nexport * from \"./helpers.js\"\nexport * from \"./types.js\"\nexport * from \"./utils/index.js\"\n\nexport { isAppMetadataValid } from \"./config/metadata.js\"\n\nexport default fxhashConfig\n"],"mappings":";;;;;;;;;;;AAUA,MAAaA,iBAA2B;CACtC,MAAM,CACJ,wEACD;CACD,WAAW;CACX,MAAM;CACN,WAAW;CACX,SAAS,EACP,KAAK,yEACN;CACF;AAED,MAAaC,iBAA2B;CACtC,MAAM,CACJ,wEACD;CACD,WAAW;CACX,MAAM;CACN,WAAW;CACX,SAAS,EACP,KAAK,yEACN;CACF;;;;AC9BD,MAAM,aAAa;AACnB,MAAM,uBAAuB;AAE7B,SAAgB,qBAAqB,KAAqB;AACxD,QAAO,IAAI,QAAQ,YAAY,qBAAqB;;AAGtD,MAAaC,gBAAyB;AAGpC,QACE,QAAQ,IAAI,eAAe,SAC3B,QAAQ,IAAI,eAAe,gBAC3B,QAAQ,IAAI,2BAA2B,SACvC,QAAQ,IAAI,2BAA2B,gBACvC,QAAQ,IAAI,yBAAyB,SACrC,QAAQ,IAAI,yBAAyB,gBACrC,QAAQ,IAAI,oBAAoB,SAChC,QAAQ,IAAI,oBAAoB;IAEhC;AAEJ,MAAaC,iBAA0B;AAGrC,QACE,QAAQ,IAAI,eAAe,WAC3B,QAAQ,IAAI,2BAA2B,WACvC,QAAQ,IAAI,yBAAyB,WACrC,QAAQ,IAAI,oBAAoB;IAEhC;AAEJ,MAAaC,uBAAgC;AAE3C,KADkB,OAAO,WAAW,YACrB,QAAO;CACtB,IAAI;AACJ,KAAI;AACF,iBAAa,KAAK;UACX,GAAG;AACV,SAAO;;AAET,KAAI,CAAC,GAAI,QAAO;AAChB,QAAO,WAAW,GAAG,WAAW,cAAc;IAC5C;AAEJ,SAAgB,SAAe;AAC7B,KAAI,OAAQ,QAAO;AACnB,KAAI,QACF,QAAO,gBAAgB,gBAAgB;AAEzC,QAAO;;;;;ACjDT,MAAaC,gBAA6B;CACxC,SAAS;CACT,MAAM;CACN,MAAM;CACN,QAAQ;CACR,WAAW;CACX,MAAM;CACN,cACE;CACF,qBACE;CACF,gBACE;CACF,YAAY;CACZ,SAAS;CACT,iBACE;CACF,OAAO;CACP,aAAa;CACb,cACE;CACF,aAAa;CACb,iBAAiB;CACjB,qBACE;CACF,aAAa;CACb,SAAS;CACT,WAAW,EACT,KAAK,QACN;CACD,SAAS;EACP,SAAS;GACP,OACE;GACF,QACE;GACF,OACE;GACH;EACD,OAAO;GACL,MAAM;GACN,QACE;GACH;EACF;CACD,QAAQ,EACN,aAAa,SACd;CACD,SAAS;EACP,KAAK;EACL,KAAK;EACL,MAAM;EACP;CACF;AAKD,MAAaC,kBAA+B;CAC1C,GAAG;CACH,SAAS;CACT,QAAQ;CACR,WAAW;CACX,cAAc,cAAc;CAC5B,qBAAqB,cAAc;CACnC,gBAAgB;CACjB;AAED,MAAaC,wBAAqC;CAChD,GAAG;CACH,QAAQ,qBAAqB,gBAAgB,OAAO;CACpD,WAAW,qBAAqB,gBAAgB,UAAU;CAC3D;AAGD,MAAaC,gBAA6B;CACxC,SAAS;CACT,MAAM;CACN,MAAM;CACN,QAAQ;CACR,WAAW;CACX,MAAM;CACN,cACE;CACF,qBACE;CACF,gBACE;CACF,YAAY;CACZ,SAAS;CACT,iBACE;CACF,OAAO;CACP,aAAa;CACb,cACE;CACF,aAAa;CACb,iBAAiB;CACjB,qBACE;CACF,aAAa;CACb,SAAS;CACT,WAAW,EACT,KAAK,QACN;CACD,SAAS;EACP,SAAS;GACP,OACE;GACF,QACE;GACF,OACE;GACH;EACD,OAAO;GACL,MAAM;GACN,QACE;GACH;EACF;CACD,QAAQ,EACN,aAAa,SACd;CACD,SAAS;EACP,KAAK;EACL,KAAK;EACL,MAAM;EACP;CACF;AAED,MAAMC,iBAA4C;CAChD,OAAO;CACP,aAAa;CACb,KAAK;CACL,KAAK;CACN;;;;AAKD,SAAgB,YAAY,KAAwB;AAClD,QAAO,eAAe;;;;;AC1IxB,MAAaC,mBAA+B;CAC1C,MAAM;CACN,SAAS;CACT,aAAa;CACb,MAAM;EACJ;EACA;EACA;EACD;CACF;AAED,MAAaC,mBAA+B;CAC1C,MAAM;CACN,SAAS;CACT,aAAa;CACb,MAAM;EACJ;EACA;EACA;EACA;EACD;CACF;;;;AClBD,MAAaC,kBAA6B;CACxC,MAAM,CAAC,2BAA2B;CAClC,WAAW;CACX,MAAM;CACN,WAAW;CACX,SAAS,EACP,KAAK,0EACN;CACF;AAED,MAAaC,kBAA6B;CACxC,MAAM,CAAC,2BAA2B;CAClC,WAAW;CACX,MAAM;CACN,WAAW;CACX,SAAS,EACP,KAAK,0EACN;CACF;;;;AClBD,MAAM,gBAAgB;CACpB,SAAS;CACT,uBAAuB;CACvB,aAAa;CACb,YAAY;CACZ,eAAe;CACf,eAAe;CAChB;AAED,MAAaC,mBAAkC;CAC7C,OAAO;CACP,GAAG;CACJ;AAED,MAAaC,oBAAmC;CAC9C,OAAO;CACP,GAAG;CACJ;;;;AC3BD,MAAM,eAAe,CAAC,QAAQ,OAAO;AAgBrC,MAAMC,2BAAqD;CACzD,MAAM;EACJ,MAAM;EACN,SAAS;EACV;CACD,MAAM;EACJ,MAAM;EACN,SAAS;EACV;CACF;AAGD,MAAM,mBACJ,cACuB;AACvB,QAAO,OAAO,YACZ,aAAa,KAAI,YAAW,CAC1B,SACA;EACE,GAAG,yBAAyB;EAC5B,UAAU,UAAU;EACrB,CACF,CAAC,CACH;;AAIH,MAAaC,wBAA4C,gBAAgB;CACvE,MAAM;CACN,MAAM;CACP,CAAC;AAEF,MAAaC,yBAA6C,gBAAgB;CACxE,MAAM;CACN,MAAM;CACP,CAAC;;;;AC5CF,IAAa,8BAAb,cAAiD,UAAU;;;cAClD;kBACI,EACT,KAAK,qCACN;;;AAGH,IAAa,oCAAb,cAAuD,UAAU;CAK/D,YAAY,MAAqC;AAC/C,QACE,oBAAoB,KAAK,GACrB,OACA,EACE,KAAK,+CAA+C,KAAK,KAAI,MAAK,IAAI,EAAE,GAAG,CAAC,KAAK,KAAK,IACvF,CACN;cAXI;;;;;;ACLT,MAAMC,mBAA8C;CAClD,MAAM;CACN,aAAa;CACb,MAAM;CACP;;;;;AAMD,SAAgB,iBAAiB,KAAyB;AACxD,QAAO;EACL,GAAG;EACH,KAAK,YAAY,IAAI,CAAC;EACvB;;;;;;;;AASH,SAAgB,mBAAmB,OAA4C;AAC7E,KAAI,EAAE,OAAO,UAAU,UACrB,QAAO,QAAQ,IAAI,6BAA6B,CAAC;CAEnD,MAAMC,oBAA8B,EAAE;AAMtC,MAAK,MAAM,QALkD;EAC3D;EACA;EACA;EACD,CAEC,KAAI,CAAC,MAAM,MAAO,mBAAkB,KAAK,KAAK;AAEhD,KAAI,kBAAkB,SAAS,EAC7B,QAAO,QAAQ,IAAI,kCAAkC,kBAAkB,CAAC;AAE1E,QAAO,SAAS;;;;;ACjDlB,MAAa,kBAAkB;;;;;;;;;AAU/B,MAAa,kBAAkB;;;;;;;;;;;;ACuB/B,MAAaC,uBAAuC;CAClD,YAAY;CACZ,cAAc;CACd,mBAAmB;CACnB,wBAAwB;CACxB,yBAAyB;CACzB,uBAAuB;CACvB,oBAAoB;CACpB,kBAAkB;CAClB,kBAAkB;CAClB,oBAAoB;CACpB,eAAe;CACf,kBAAkB;CAClB,sBAAsB;CACtB,uBAAuB;CACvB,qBAAqB;CACrB,oBAAoB;CACpB,sBAAsB;CACtB,SAAS;CACT,uBAAuB;CACvB,YAAY;CACZ,gBAAgB;CAChB,uCACE;CACF,UAAU;CACV,YAAY;CACZ,gBAAgB;CAChB,oBAAoB;CACpB,oBAAoB;CACpB,uBAAuB;CACvB,oBAAoB;CACpB,qBAAqB;CACtB;AAED,MAAaC,uBAAuC;CAClD,YAAY;CACZ,cAAc;CACd,mBAAmB;CACnB,wBAAwB;CACxB,yBAAyB;CACzB,uBAAuB;CACvB,oBAAoB;CACpB,kBAAkB;CAClB,kBAAkB;CAClB,oBAAoB;CACpB,eAAe;CACf,kBAAkB;CAClB,sBAAsB;CACtB,uBAAuB;CACvB,qBAAqB;CACrB,oBAAoB;CACpB,sBAAsB;CACtB,SAAS;CACT,uBAAuB;CACvB,YAAY;CACZ,gBAAgB;CAChB,uCACE;CACF,UAAU;CACV,YAAY;CACZ,gBAAgB;CAChB,oBAAoB;CACpB,oBAAoB;CACpB,uBAAuB;CACvB,oBAAoB;CACpB,qBAAqB;CACtB;;;;AC1ED,MAAaC,sBAAqC;CAChD,YAAY;CACZ,cAAc;CACd,mBAAmB;CACnB,wBAAwB;CACxB,yBAAyB;CACzB,uBAAuB;CACvB,oBAAoB;CACpB,kBAAkB;CAClB,oBAAoB;CACpB,eAAe;CACf,kBAAkB;CAClB,sBAAsB;CACtB,uBAAuB;CACvB,qBAAqB;CACrB,oBAAoB;CACpB,sBAAsB;CACtB,SAAS;CACT,uBAAuB;CACvB,YAAY;CACZ,gBAAgB;CAChB,uCACE;CACF,UAAU;CACX;;;;;;AAOD,MAAaC,sBAAqC;CAChD,YAAY;CACZ,cAAc;CACd,mBAAmB;CACnB,wBAAwB;CACxB,yBAAyB;CACzB,uBAAuB;CACvB,oBAAoB;CACpB,kBAAkB;CAClB,oBAAoB;CACpB,eAAe;CACf,kBAAkB;CAClB,sBAAsB;CACtB,uBAAuB;CACvB,qBAAqB;CACrB,oBAAoB;CACpB,sBAAsB;CACtB,SAAS;CACT,uBAAuB;CACvB,YAAY;CACZ,gBAAgB;CAChB,uCACE;CACF,UAAU;CACX;;;;ACxCD,MAAaC,wBAAyC;CACpD,cAAc;CACd,qBAAqB;CACrB,wBAAwB;CACxB,iBAAiB;CACjB,UAAU;CACV,YAAY;CACZ,uBAAuB;CACvB,qBAAqB;CACrB,QAAQ;CACR,UAAU;CACV,eAAe;CACf,UAAU;CACV,UAAU;CACV,gBAAgB;CAChB,WAAW;CACX,WAAW;CACX,WAAW;CACX,WAAW;CACX,gBAAgB;CAChB,gBAAgB;CAChB,gBAAgB;CAChB,qBAAqB;CACrB,iBAAiB;CACjB,kBAAkB;CAClB,qBAAqB;CACrB,iBAAiB;CACjB,uBAAuB;CACvB,0BAA0B;CAC1B,eAAe;CACf,kBAAkB;CAClB,YAAY;CACZ,eAAe;CACf,kBAAkB;CAClB,UAAU;CACV,iBAAiB;CACjB,eAAe;CACf,cAAc;CACf;AAED,MAAaC,wBAAyC;CACpD,cAAc;CACd,qBAAqB;CACrB,wBAAwB;CACxB,iBAAiB;CACjB,UAAU;CACV,YAAY;CACZ,uBAAuB;CACvB,qBAAqB;CACrB,QAAQ;CACR,UAAU;CACV,eAAe;CACf,UAAU;CACV,UAAU;CACV,gBAAgB;CAChB,WAAW;CACX,WAAW;CACX,WAAW;CACX,WAAW;CACX,gBAAgB;CAChB,gBAAgB;CAChB,gBAAgB;CAChB,qBAAqB;CACrB,iBAAiB;CACjB,kBAAkB;CAClB,qBAAqB;CACrB,iBAAiB;CACjB,uBAAuB;CACvB,0BAA0B;CAC1B,eAAe;CACf,kBAAkB;CAClB,YAAY;CACZ,eAAe;CACf,kBAAkB;CAClB,UAAU;CACV,iBAAiB;CACjB,eAAe;CACf,cAAc;CACf;;;;;;;;AC5DD,MAAa,wBAAwB;CACnC,eAAe;CACf,cAAc;CACd,iBAAiB;CACjB,gBAAgB;CAChB,iBAAiB;CACjB,aAAa;CACb,aAAa;CACd;;;;;;;;;ACjCD,MAAM,YAAY;CAChB,SAAS;CACT,WAAW;CACZ;AAED,MAAM,UAAU;CACd,SAAS;CACT,WAAW;CACZ;AAED,MAAM,WAAW;CACf,SAAS;CACT,WAAW;CACZ;;;;AAKD,MAAMC,eAA8B;CAClC,UAAU;EACR,SAAS;GACP,KAAK;IACH,WAAW;IACX,QAAQ;KACN,SAAS;KACT,SAAS,sBAAsB;KAC/B,gBAAgB;KAChB,aAAa;KACb,YAAY;KACZ,mBAAmB;KACnB,iBAAiB;KAClB;IACD,MAAM;IACP;GACD,KAAK;IACH,WAAW;IACX,QAAQ;KACN,SAAS;KACT,SAAS,sBAAsB;KAC/B,gBAAgB;KAChB,aAAa;KACb,YAAY;KACZ,mBAAmB;KACnB,iBAAiB;KAClB;IACD,MAAM;IACP;GACD,MAAM;IACJ,WAAW;IACX,QAAQ;KACN,SAAS;KACT,SAAS,sBAAsB;KAC/B,gBAAgB;KAChB,aAAa;KACb,YAAY;KACZ,mBAAmB;KACnB,iBAAiB;KAClB;IACD,MAAM;IACP;GACF;EACD,SAAS;GACP,KAAK;IACH,WAAW;IACX,QAAQ;KACN,SAAS;KACT,SAAS,sBAAsB;KAC/B,gBAAgB;KAChB,aAAa;KACb,YAAY;KACZ,mBAAmB;KACnB,iBAAiB;KAClB;IACD,MAAM;IACP;GACD,KAAK;IACH,WAAW;IACX,QAAQ;KACN,SAAS;KACT,SAAS,sBAAsB;KAC/B,gBAAgB;KAChB,aAAa;KACb,YAAY;KACZ,mBAAmB;KACnB,iBAAiB;KAClB;IACD,MAAM;IACP;GACD,MAAM;IACJ,WAAW;IACX,QAAQ;KACN,SAAS;KACT,SAAS,sBAAsB;KAC/B,gBAAgB;KAChB,aAAa;KACb,YAAY;KACZ,mBAAmB;KACnB,iBAAiB;KAClB;IACD,MAAM;IACP;GACF;EACF;CACD,MAAM;EACJ,OAAO;GACL,MAAM;GACN,QAAQ;IACN,SAAS;IACT,UAAU,iBAAiB,QAAQ;IACnC,YAAY;IACZ,iBAAiB;IACjB,iBAAiB;IACjB,eAAe;IACf,cAAc;IACd,4BAA4B;IAC5B,8BAA8B;IAC9B,oBAAoB;IACpB,aAAa;IACb,aAAa;IACb,qBAAqB;IACrB,SAAS;IACT,KAAK;IACL,kBAAkB;IACnB;GACF;EACD,aAAa;GACX,MAAM;GACN,QAAQ;IACN,SAAS;IACT,UAAU,iBAAiB,cAAc;IACzC,YAAY;IACZ,iBAAiB;IACjB,iBAAiB;IACjB,eAAe;IACf,cAAc;IACd,4BAA4B;IAC5B,8BAA8B;IAC9B,oBAAoB;IACpB,aAAa;IACb,aAAa;IACb,qBAAqB;IACrB,SAAS;IACT,KAAK;IACL,kBAAkB;IACnB;GACF;EACD,KAAK;GACH,MAAM;GACN,QAAQ;IACN,SAAS;IACT,UAAU,iBAAiB,MAAM;IACjC,YAAY;IACZ,iBAAiB;IACjB,iBAAiB;IACjB,eAAe;IACf,cAAc;IACd,4BAA4B;IAC5B,8BAA8B;IAC9B,oBAAoB;IACpB,aAAa;IACb,aAAa;IACb,qBAAqB;IACrB,SAAS;IACT,KAAK;IACL,kBAAkB;IACnB;GACF;EACD,KAAK;GACH,MAAM;GACN,QAAQ;IACN,SAAS;IACT,UAAU,iBAAiB,MAAM;IACjC,YAAY;IACZ,iBAAiB;IACjB,iBAAiB;IACjB,eAAe;IACf,cAAc;IACd,4BAA4B;IAC5B,8BAA8B;IAC9B,oBAAoB;IACpB,aAAa;IACb,aAAa;IACb,qBAAqB;IACrB,SAAS;IACT,KAAK;IACL,kBAAkB;IACnB;GACF;EACF;CACF;AAED,SAAgB,2BAA2B,KAA+B;AACxE,QAAO,QAAQ,QAAQ,YAAY;;AAGrC,SAAgB,gBAAgB,KAAmC;CACjE,MAAM,oBAAoB,2BAA2B,IAAI;AACzD,QAAO;EACL,GAAG,aAAa,SAAS;EACzB,GAAG,aAAa,KAAK;EACtB;;AAGH,MAAaC,cAAsC,gBAAgB,QAAQ;AAC3E,MAAaC,oBACX,gBAAgB,cAAc;AAChC,MAAaC,YAAoC,gBAAgB,MAAM;AACvE,MAAaC,YAAoC,gBAAgB,MAAM;AAEvE,MAAM,aAAa,QAAQ;AAC3B,IAAIC,SAAiC,gBAAgB,WAAW;AAEhE,SAAS,UACP,YACwB;AACxB,UAAS;EACP,GAAG;EACH,GAAG;EACJ;AACD,QAAO;;;;;AC5PT,MAAaC,8BAAsB,IAAI,OAAO,aAAa;;;;;AAM3D,SAAgB,sBAAsB,UAA0B;AAC9D,KAAI,CAAC,YAAY,KAAK,SAAS,CAAE,QAAO;AACxC,QAAO,SAAS,MAAM,EAAE;;;;;ACN1B,IAAY,wDAAL;AACL;AACA;AACA;;;AAGF,MAAaC,4BAAoB,IAAI,OAAO,WAAW;;;;AAKvD,SAAgB,gBAAgB,SAA+B;AAC7D,SAAQ,SAAR;EACE,KAAK,aAAa,OAChB,QAAO,OAAO,KAAK;EACrB,KAAK,aAAa,YAChB,QAAO,OAAO,KAAK;EACrB,KAAK,aAAa;EAClB,QACE,QAAO;;;;;;;AAQb,SAAgB,oBAAoB,UAA0B;AAC5D,KAAI,CAAC,UAAU,KAAK,SAAS,CAAE,QAAO;AACtC,QAAO,SAAS,MAAM,EAAE;;;;;;;AAQ1B,SAAgB,eACd,UACA,UAAwB,aAAa,aAC7B;AACR,KAAI,CAAC,SAAU,QAAO;CACtB,MAAM,MAAM,oBAAoB,SAAS;AACzC,QAAO,GAAG,gBAAgB,QAAQ,CAAC,QAAQ;;;;;;AAO7C,SAAgB,SAAS,KAAqB;AAE5C,KAAI,IAAI,WAAW,QAAQ,IAAI,IAAI,WAAW,QAAQ,CAAE,QAAO;CAE/D,MAAM,CAAC,UAAU,OAAO,IAAI,MAAM,MAAM;AACxC,SAAQ,UAAR;EACE,KAAK,QACH,QAAO;EACT,KAAK,OACH,QAAO,GAAG,OAAO,KAAK,WAAW,WAAW;EAC9C,KAAK,SACH,QAAO,GAAG,OAAO,KAAK,YAAY,GAAG;EACvC,QACE,QAAO,eAAe,IAAI;;;;;;;;;;AC1DhC,SAAgB,gBAAgB,UAA0B;AACxD,KAAI,UAAU,KAAK,SAAS,CAC1B,QAAO,oBAAoB,SAAS;UAC3B,YAAY,KAAK,SAAS,CACnC,QAAO,sBAAsB,SAAS;AAExC,QAAO;;;;;ACXT,MAAaC,yCAAiE;EAC3E,OAAO,IAAI,UAAU,WAAW;EAChC,OAAO,IAAI,UAAU,WAAW;EAChC,OAAO,IAAI,UAAU,WAAW;CAClC;AACD,SAAgB,uBAAuB,UAAkB,IAAoB;AAC3E,QAAO,GAAG,uCAAuC,UAAU,GAAG;;;;;ACyDhE,kBAAe"}
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fxhash/config",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.14",
|
|
4
4
|
"author": "fxhash",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@fxhash/
|
|
7
|
-
"@fxhash/
|
|
6
|
+
"@fxhash/errors": "0.0.14",
|
|
7
|
+
"@fxhash/utils": "0.0.6"
|
|
8
8
|
},
|
|
9
9
|
"devDependencies": {
|
|
10
10
|
"@types/node": "18.7.13",
|
|
11
|
-
"tsdown": "0.
|
|
11
|
+
"tsdown": "0.14.2",
|
|
12
12
|
"typescript": "5.8.2",
|
|
13
13
|
"unplugin-isolated-decl": "0.13.6",
|
|
14
14
|
"@fxhash/tsconfig": "0.0.3"
|