@medialane/sdk 0.154.0 → 0.156.0

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.cjs CHANGED
@@ -1,1121 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var zod = require('zod');
4
- var sha3_js = require('@noble/hashes/sha3.js');
5
- var base = require('@scure/base');
3
+ var chunkZFRHADHR_cjs = require('./chunk-ZFRHADHR.cjs');
4
+ var chunkOUPVVMLK_cjs = require('./chunk-OUPVVMLK.cjs');
6
5
  var hmac_js = require('@noble/hashes/hmac.js');
7
6
  var sha2_js = require('@noble/hashes/sha2.js');
8
-
9
- // src/config.ts
10
-
11
- // src/chains.ts
12
- var CHAINS = ["STARKNET", "ETHEREUM", "SOLANA", "BASE", "STELLAR", "BITCOIN"];
13
- var COORDINATES = {
14
- STARKNET: {
15
- rpcUrl: "https://rpc.starknet.lava.build",
16
- marketplace721: "0x03eda9a2b6ad90845a43591bac8083ebaf677d51fdf20f503b2c01889e3131fc",
17
- marketplace721ClassHash: "0x0700d9230d07e5203e27778c0dc70f9134d2b25bf319f7cf8348dc66a6923e90",
18
- marketplace721StartBlock: 11198146,
19
- marketplace1155: "0x07c4ce1c19ea48cc11135ed22b19ff745f5aec508c3828593002e4f76fdb1b38",
20
- marketplace1155ClassHash: "0x0242f5c388da7cee2d99e2a69453c8159bf927fbec4e797a3cfdcbbcb5b68328",
21
- marketplace1155StartBlock: 11198267,
22
- collection721: "0x0225c3ae09506b8d97adc39649ca740dad5aac195b7f5f0441cc1852947acaea",
23
- collection721StartBlock: 11198496,
24
- dataTokenization721: "0x07421b4442f7f2052c65408fb3561484154cf8175a0bbb41e3cd38d9087af6d2",
25
- dataTokenization721StartBlock: 14670294,
26
- ipNftClassHash: "0x012d3ae40ba35c7e2be0946532dac60e48932447912fdf96b674da67c029b9cc",
27
- ipCollectionClassHash: "0x022155a1a130a40e57aac4b89c07fab3f616bc351b1270fc40f756b963afe8b4",
28
- collection1155: "0x015368976d46fae5bfa1c58600f641d5aa5dbbf53ebc6b78aa3922194aad3551",
29
- collection1155FactoryClassHash: "0x04eb6b419770f13bd191f120b9fc9ee624c0613ad4490062d293ca2016b3b1d2",
30
- collection1155ClassHash: "0x06cf3f5a2322dac35e07a6064a5b8802f19fda8aa3f4726f0cb7bc05dea1bd78",
31
- collection1155StartBlock: 11199527,
32
- popFactory: "0x00b32c34b427d8f346b5843ada6a37bd3368d879fc752cd52b68a87287f60111",
33
- popCollectionClassHash: "0x077c421686f10851872561953ea16898d933364b7f8937a5d7e2b1ba0a36263f",
34
- dropFactory: "0x03587f42e29daee1b193f6cf83bf8627908ed6632d0d83fcb26225c50547d800",
35
- dropCollectionClassHash: "0x00092e72cdb63067521e803aaf7d4101c3e3ce026ae6bc045ec4228027e58282",
36
- nftComments: "0x02cdac70c94447189af0389dfea63f4d5e4154ea8a563de288a5ab1c39e37843",
37
- creatorCoinFactory: "0x50fa807b5274079fb19374673d7bab6d2dc3af7e1032ea43eb6e44bcbde4c3c",
38
- creatorCoinEkuboLauncher: "0x4f7fceb5ac10f12f9544a09580592e5bdf1b7f04f48765eecf12286d8ccb7b4",
39
- creatorCoinClassHash: "0x743e4c8a5b96bb83bbf4af04edbbb482d5ece89eed9b729a79fb7df0cd0b6b6",
40
- creatorCoinFactoryClassHash: "0x51765926b1344c9a20b8cd4b5abe7b7d47375ae97cf6804db3ea5d4b05a9b55",
41
- creatorCoinStartBlock: 10474544,
42
- ekuboCore: "0x00000005dd3d2f4429af886cd1a3b08289dbcea99a294197e9eb43b0e0325b4b",
43
- ipTicketsFactory: "0x0767bf5b57e1f812463159b5ed683183e1b0c3f942b74871b5c6cd6a93c15e99",
44
- ipTicketCollectionClassHash: "0x0449e8eb7c117740d07cb8e0157d32c8ba3d19d1cfd2784ed5e139f5a1e04acc",
45
- ipTicketsFactoryClassHash: "0x04a739ac3a673ebd0db96bb24475600797c3ed34827e79517f9b2b1640276e6a",
46
- ipTicketsStartBlock: 11933694,
47
- ipClubFactory: "0x06a0b0be16d70c78f2e18119dbf90e5911cbfd5d8d484bc555dc61d96f56a2b9",
48
- ipClubFactoryClassHash: "0x05d9d431bd3532b1fa4d5bab572f49c5ad8034ee3cc83951aa41ae82c9cad266",
49
- ipClubCollectionClassHash: "0x05b8477c72e6bf0cf64967d71155021fd4d77d9a57e8805c6b40709121c002c5",
50
- ipClubFactoryStartBlock: 11928775,
51
- ipSponsorship: "0x03729ebe0fedf29ec97fca34db09174772af7f870af26a26e024a61040143e5c",
52
- ipSponsorshipClassHash: "0x0626daac2ed7e2bf630ef5b10104b3202db1559216c0c1a504c0e99be2fbfec3",
53
- ipSponsorshipStartBlock: 11896456,
54
- mediaWalletClassHash: "0x014b210c7d47392691144bafecdca3c6c7791cc295ea305988da0a724c05ac31",
55
- genesisMint: "0x06ed61abba98a44d45bed2c4b1a456df15053c3321cfd6e007afb33b7226c9f0"
56
- }
57
- };
58
- function getCoordinates(chain) {
59
- const c = COORDINATES[chain];
60
- if (!c) throw new Error(`No coordinates configured for chain "${chain}"`);
61
- return c;
62
- }
63
- var DEFAULT_CHAIN = "STARKNET";
64
- function getStarknetCoordinates(chain) {
65
- if (chain !== "STARKNET") {
66
- throw new Error(`This module is Starknet-only (client chain: "${chain}")`);
67
- }
68
- return getCoordinates("STARKNET");
69
- }
70
- var FeeConfigSchema = zod.z.object({
71
- enabled: zod.z.boolean().default(true),
72
- fundAddress: zod.z.string().min(1).optional(),
73
- marketplaceBps: zod.z.number().int().min(0).max(1e4).default(100),
74
- launchpadBps: zod.z.number().int().min(0).max(1e4).default(100),
75
- sponsorshipBps: zod.z.number().int().min(0).max(1e4).default(100)
76
- });
77
- function resolveFeeConfig(raw) {
78
- const p = FeeConfigSchema.parse(raw ?? {});
79
- return {
80
- enabled: p.enabled,
81
- fundAddress: p.fundAddress,
82
- marketplaceBps: p.marketplaceBps,
83
- launchpadBps: p.launchpadBps,
84
- sponsorshipBps: p.sponsorshipBps
85
- };
86
- }
87
-
88
- // src/fee/app-config.ts
89
- var DEFAULT_BPS = 100;
90
- function bps(raw) {
91
- if (!raw) return DEFAULT_BPS;
92
- const n = Number(raw);
93
- return Number.isFinite(n) ? n : DEFAULT_BPS;
94
- }
95
- function resolveAppFeeConfig(env = {}) {
96
- return resolveFeeConfig({
97
- enabled: env.NEXT_PUBLIC_FEE_ENABLED !== "false",
98
- fundAddress: env.NEXT_PUBLIC_FEE_FUND_ADDRESS || void 0,
99
- marketplaceBps: bps(env.NEXT_PUBLIC_FEE_MARKETPLACE_BPS),
100
- launchpadBps: bps(env.NEXT_PUBLIC_FEE_LAUNCHPAD_BPS)
101
- });
102
- }
103
-
104
- // src/config.ts
105
- var MedialaneConfigSchema = zod.z.object({
106
- chain: zod.z.enum(CHAINS).default(DEFAULT_CHAIN),
107
- rpcUrl: zod.z.string().url().optional(),
108
- backendUrl: zod.z.string().url().optional(),
109
- apiKey: zod.z.string().optional(),
110
- marketplace721Contract: zod.z.string().optional(),
111
- marketplaceContract: zod.z.string().optional(),
112
- marketplace1155Contract: zod.z.string().optional(),
113
- collection721Contract: zod.z.string().optional(),
114
- collectionContract: zod.z.string().optional(),
115
- collection1155Contract: zod.z.string().optional(),
116
- retryOptions: zod.z.object({
117
- maxAttempts: zod.z.number().int().min(1).max(10).optional(),
118
- baseDelayMs: zod.z.number().int().min(0).optional(),
119
- maxDelayMs: zod.z.number().int().min(0).optional()
120
- }).optional(),
121
- feeConfig: FeeConfigSchema.optional()
122
- });
123
- function resolveConfig(raw) {
124
- const parsed = MedialaneConfigSchema.parse(raw);
125
- const coords = getCoordinates(parsed.chain);
126
- const sn = parsed.chain === "STARKNET" ? coords : {};
127
- const marketplace721Contract = parsed.marketplace721Contract ?? parsed.marketplaceContract ?? sn.marketplace721;
128
- const collection721Contract = parsed.collection721Contract ?? parsed.collectionContract ?? sn.collection721;
129
- return {
130
- chain: parsed.chain,
131
- rpcUrl: parsed.rpcUrl ?? coords.rpcUrl,
132
- backendUrl: parsed.backendUrl,
133
- apiKey: parsed.apiKey,
134
- marketplace721Contract,
135
- marketplaceContract: marketplace721Contract,
136
- marketplace1155Contract: parsed.marketplace1155Contract ?? sn.marketplace1155,
137
- collection721Contract,
138
- collectionContract: collection721Contract,
139
- collection1155Contract: parsed.collection1155Contract ?? sn.collection1155,
140
- retryOptions: parsed.retryOptions,
141
- feeConfig: resolveFeeConfig(parsed.feeConfig)
142
- };
143
- }
144
- function normalizeAddress(chain, address) {
145
- switch (chain) {
146
- case "STARKNET":
147
- return normalizeStarknet(address);
148
- case "ETHEREUM":
149
- case "BASE":
150
- return normalizeEvm(address);
151
- case "SOLANA":
152
- return normalizeSolana(address);
153
- case "STELLAR":
154
- return normalizeStellar(address);
155
- case "BITCOIN":
156
- throw new Error("BITCOIN address normalization not implemented");
157
- }
158
- }
159
- function normalizeStarknet(address) {
160
- try {
161
- const hex = BigInt(address).toString(16);
162
- return "0x" + hex.padStart(64, "0").toLowerCase();
163
- } catch {
164
- throw new Error(`Invalid STARKNET address: "${address}"`);
165
- }
166
- }
167
- function normalizeEvm(address) {
168
- const m = /^0x([0-9a-fA-F]{40})$/.exec(address);
169
- if (!m) throw new Error(`Invalid ETHEREUM/BASE address: "${address}"`);
170
- const lower = m[1].toLowerCase();
171
- const hash = sha3_js.keccak_256(new TextEncoder().encode(lower));
172
- let out = "0x";
173
- for (let i = 0; i < 40; i++) {
174
- const nibble = hash[i >> 1] >> (i % 2 === 0 ? 4 : 0) & 15;
175
- out += nibble >= 8 ? lower[i].toUpperCase() : lower[i];
176
- }
177
- return out;
178
- }
179
- function normalizeSolana(address) {
180
- try {
181
- const bytes = base.base58.decode(address);
182
- if (bytes.length !== 32) throw new Error("not a 32-byte key");
183
- return address;
184
- } catch {
185
- throw new Error(`Invalid SOLANA address: "${address}"`);
186
- }
187
- }
188
- var STELLAR_VERSION_BYTES = /* @__PURE__ */ new Set([6 << 3, 2 << 3]);
189
- function normalizeStellar(address) {
190
- const upper = address.toUpperCase();
191
- if (!/^[GC][A-Z2-7]{55}$/.test(upper)) {
192
- throw new Error(`Invalid STELLAR address: "${address}"`);
193
- }
194
- let decoded;
195
- try {
196
- decoded = base.base32.decode(upper);
197
- } catch {
198
- throw new Error(`Invalid STELLAR address: "${address}"`);
199
- }
200
- if (decoded.length !== 35 || !STELLAR_VERSION_BYTES.has(decoded[0])) {
201
- throw new Error(`Invalid STELLAR address: "${address}"`);
202
- }
203
- const payload = decoded.subarray(0, 33);
204
- const checksum = decoded[33] | decoded[34] << 8;
205
- if (crc16xmodem(payload) !== checksum) {
206
- throw new Error(`Invalid STELLAR address: "${address}"`);
207
- }
208
- return upper;
209
- }
210
- function crc16xmodem(bytes) {
211
- let crc = 0;
212
- for (const byte of bytes) {
213
- crc ^= byte << 8;
214
- for (let i = 0; i < 8; i++) {
215
- crc = crc & 32768 ? (crc << 1 ^ 4129) & 65535 : crc << 1 & 65535;
216
- }
217
- }
218
- return crc;
219
- }
220
- function normalizeHash(hash) {
221
- try {
222
- const hex = BigInt(hash).toString(16);
223
- return "0x" + hex.padStart(64, "0").toLowerCase();
224
- } catch {
225
- throw new Error(`Invalid hash: "${hash}"`);
226
- }
227
- }
228
- function shortenAddress(chain, address, chars = 4) {
229
- const norm = normalizeAddress(chain, address);
230
- return `${norm.slice(0, chars + 2)}...${norm.slice(-chars)}`;
231
- }
232
-
233
- // src/utils/retry.ts
234
- var DEFAULT_MAX_ATTEMPTS = 3;
235
- var DEFAULT_BASE_DELAY_MS = 300;
236
- var DEFAULT_MAX_DELAY_MS = 5e3;
237
- function sleep(ms) {
238
- return new Promise((resolve) => setTimeout(resolve, ms));
239
- }
240
- function isRetryableFor(method, err) {
241
- if (err instanceof MedialaneApiError && err.status === 429) return true;
242
- const isRead = method === "GET" || method === "HEAD";
243
- if (!isRead) return false;
244
- return err instanceof MedialaneApiError && err.status >= 500 || err instanceof TypeError;
245
- }
246
- async function withRetry(fn, opts, method = "GET") {
247
- const maxAttempts = opts?.maxAttempts ?? DEFAULT_MAX_ATTEMPTS;
248
- const baseDelayMs = opts?.baseDelayMs ?? DEFAULT_BASE_DELAY_MS;
249
- const maxDelayMs = opts?.maxDelayMs ?? DEFAULT_MAX_DELAY_MS;
250
- let lastError;
251
- for (let attempt = 0; attempt < maxAttempts; attempt++) {
252
- try {
253
- return await fn();
254
- } catch (err) {
255
- lastError = err;
256
- if (!isRetryableFor(method, err) || attempt === maxAttempts - 1) {
257
- throw err;
258
- }
259
- const retryAfterMs = err instanceof MedialaneApiError ? err.retryAfterMs : void 0;
260
- const backoff = baseDelayMs * Math.pow(2, attempt) + Math.random() * baseDelayMs;
261
- const delay = Math.min(retryAfterMs ?? backoff, maxDelayMs);
262
- await sleep(delay);
263
- }
264
- }
265
- throw lastError;
266
- }
267
-
268
- // src/api/client.ts
269
- function deriveErrorCode(status) {
270
- if (status === 404) return "TOKEN_NOT_FOUND";
271
- if (status === 429) return "RATE_LIMITED";
272
- if (status === 410) return "INTENT_EXPIRED";
273
- if (status === 401 || status === 403) return "UNAUTHORIZED";
274
- if (status === 400) return "INVALID_PARAMS";
275
- return "UNKNOWN";
276
- }
277
- var MedialaneApiError = class extends Error {
278
- constructor(status, message, retryAfterMs, details) {
279
- super(message);
280
- this.status = status;
281
- this.retryAfterMs = retryAfterMs;
282
- this.details = details;
283
- this.name = "MedialaneApiError";
284
- this.code = deriveErrorCode(status);
285
- }
286
- };
287
- function parseRetryAfter(value) {
288
- if (!value) return void 0;
289
- const seconds = Number(value);
290
- if (Number.isFinite(seconds)) return Math.max(0, seconds * 1e3);
291
- const date = Date.parse(value);
292
- if (!Number.isNaN(date)) return Math.max(0, date - Date.now());
293
- return void 0;
294
- }
295
- var ApiClient = class {
296
- constructor(baseUrl, apiKey, retryOptions, chain = "STARKNET") {
297
- this.baseUrl = baseUrl;
298
- this.chain = chain;
299
- this.baseHeaders = apiKey ? { "x-api-key": apiKey } : {};
300
- this.retryOptions = retryOptions;
301
- }
302
- addr(a) {
303
- return normalizeAddress(this.chain, a);
304
- }
305
- async request(path, init, opts) {
306
- const url = `${this.baseUrl.replace(/\/$/, "")}${path}`;
307
- const headers2 = { ...this.baseHeaders };
308
- if (!(init?.body instanceof FormData)) {
309
- headers2["Content-Type"] = "application/json";
310
- }
311
- const allowed = (status) => opts?.allow404 === true && status === 404 || opts?.allow403 === true && status === 403;
312
- const res = await withRetry(async () => {
313
- const response = await fetch(url, {
314
- ...init,
315
- headers: { ...headers2, ...init?.headers }
316
- });
317
- if (!response.ok && !allowed(response.status)) {
318
- const text = await response.text().catch(() => response.statusText);
319
- let message = `Request failed with status ${response.status}`;
320
- let details = text;
321
- try {
322
- const body = JSON.parse(text);
323
- if (typeof body.error === "string" && body.error.trim() !== "") {
324
- message = body.error;
325
- }
326
- details = body;
327
- } catch {
328
- }
329
- throw new MedialaneApiError(
330
- response.status,
331
- message,
332
- parseRetryAfter(response.headers.get("retry-after")),
333
- details
334
- );
335
- }
336
- return response;
337
- }, this.retryOptions, (init?.method ?? "GET").toUpperCase());
338
- if (allowed(res.status)) return null;
339
- return res.json();
340
- }
341
- get(path) {
342
- return this.request(path, { method: "GET" });
343
- }
344
- post(path, body) {
345
- return this.request(path, { method: "POST", body: JSON.stringify(body) });
346
- }
347
- patch(path, body) {
348
- return this.request(path, { method: "PATCH", body: JSON.stringify(body) });
349
- }
350
- del(path) {
351
- return this.request(path, { method: "DELETE" });
352
- }
353
- bearer(siwsToken) {
354
- return { Authorization: `Bearer ${siwsToken}` };
355
- }
356
- asSubject(siwsToken) {
357
- return siwsToken ? this.bearer(siwsToken) : void 0;
358
- }
359
- getOrders(query = {}) {
360
- const params = new URLSearchParams();
361
- if (query.status) params.set("status", query.status);
362
- if (query.collection) params.set("collection", query.collection);
363
- if (query.currency) params.set("currency", query.currency);
364
- if (query.sort) params.set("sort", query.sort);
365
- if (query.page !== void 0) params.set("page", String(query.page));
366
- if (query.limit !== void 0) params.set("limit", String(query.limit));
367
- if (query.offerer) params.set("offerer", this.addr(query.offerer));
368
- if (query.minPrice) params.set("minPrice", query.minPrice);
369
- if (query.maxPrice) params.set("maxPrice", query.maxPrice);
370
- if (query.chain) params.set("chain", query.chain);
371
- const qs = params.toString();
372
- return this.get(`/v1/orders${qs ? `?${qs}` : ""}`);
373
- }
374
- getOrder(orderHash) {
375
- return this.get(`/v1/orders/${orderHash}`);
376
- }
377
- getActiveOrdersForToken(contract, tokenId) {
378
- return this.get(`/v1/orders/token/${this.addr(contract)}/${tokenId}`);
379
- }
380
- getReceivedOffers(address, opts = {}) {
381
- const params = new URLSearchParams({ page: String(opts.page ?? 1), limit: String(opts.limit ?? 50) });
382
- return this.get(`/v1/orders/received/${this.addr(address)}?${params}`);
383
- }
384
- getOrdersByUser(address, page = 1, limit = 20) {
385
- return this.get(
386
- `/v1/orders/user/${this.addr(address)}?page=${page}&limit=${limit}`
387
- );
388
- }
389
- getToken(contract, tokenId, wait = false) {
390
- return this.get(
391
- `/v1/tokens/${contract}/${tokenId}${wait ? "?wait=true" : ""}`
392
- );
393
- }
394
- getTokensByOwner(address, page = 1, limit = 20) {
395
- return this.get(
396
- `/v1/tokens/owned/${this.addr(address)}?page=${page}&limit=${limit}`
397
- );
398
- }
399
- getTokenHistory(contract, tokenId, page = 1, limit = 20) {
400
- return this.get(
401
- `/v1/tokens/${contract}/${tokenId}/history?page=${page}&limit=${limit}`
402
- );
403
- }
404
- getCollection(contract) {
405
- return this.get(`/v1/collections/${this.addr(contract)}`);
406
- }
407
- getCollectionTokens(contract, page = 1, limit = 20, sort = "recent") {
408
- return this.get(
409
- `/v1/collections/${this.addr(contract)}/tokens?page=${page}&limit=${limit}&sort=${sort}`
410
- );
411
- }
412
- getActivities(query = {}) {
413
- const params = new URLSearchParams();
414
- if (query.type) params.set("type", query.type);
415
- if (query.contract) params.set("contract", query.contract);
416
- if (query.page !== void 0) params.set("page", String(query.page));
417
- if (query.limit !== void 0) params.set("limit", String(query.limit));
418
- if (query.chain) params.set("chain", query.chain);
419
- const qs = params.toString();
420
- return this.get(`/v1/activities${qs ? `?${qs}` : ""}`);
421
- }
422
- getActivitiesByAddress(address, page = 1, limit = 20) {
423
- return this.get(
424
- `/v1/activities/${this.addr(address)}?page=${page}&limit=${limit}`
425
- );
426
- }
427
- getTokenComments(contract, tokenId, opts = {}) {
428
- const params = new URLSearchParams();
429
- if (opts.page !== void 0) params.set("page", String(opts.page));
430
- if (opts.limit !== void 0) params.set("limit", String(opts.limit));
431
- const qs = params.toString();
432
- return this.get(
433
- `/v1/tokens/${this.addr(contract)}/${tokenId}/comments${qs ? `?${qs}` : ""}`
434
- );
435
- }
436
- search(q, limit = 10, chain) {
437
- const params = new URLSearchParams({ q, limit: String(limit) });
438
- if (chain) params.set("chain", chain);
439
- return this.get(
440
- `/v1/search?${params.toString()}`
441
- );
442
- }
443
- createListingIntent(params) {
444
- return this.post("/v1/intents/listing", params);
445
- }
446
- createOfferIntent(params) {
447
- return this.post("/v1/intents/offer", params);
448
- }
449
- createFulfillIntent(params) {
450
- return this.post("/v1/intents/fulfill", params);
451
- }
452
- createCancelIntent(params) {
453
- return this.post("/v1/intents/cancel", params);
454
- }
455
- createCheckoutIntent(params) {
456
- return this.post("/v1/intents/checkout", params);
457
- }
458
- getIntent(id) {
459
- return this.get(`/v1/intents/${id}`);
460
- }
461
- submitIntentSignature(id, signature) {
462
- return this.patch(`/v1/intents/${id}/signature`, { signature });
463
- }
464
- confirmIntent(id, txHash) {
465
- return this.patch(`/v1/intents/${id}/confirm`, { txHash });
466
- }
467
- syncTransaction(txHash) {
468
- return this.post("/v1/tx/sync", { txHash });
469
- }
470
- createMintIntent(params) {
471
- return this.post("/v1/intents/mint", params);
472
- }
473
- createCollectionIntent(params) {
474
- return this.post("/v1/intents/create-collection", params);
475
- }
476
- createTierIntent(params) {
477
- return this.post("/v1/intents/create-tier", params);
478
- }
479
- emitToRecipients(params) {
480
- return this.post("/v1/business/issuance/emission", params);
481
- }
482
- createCoinIntent(params) {
483
- return this.post("/v1/intents/create-coin", params);
484
- }
485
- launchCoinIntent(params) {
486
- return this.post("/v1/intents/launch-coin", params);
487
- }
488
- createSponsorshipOfferIntent(params) {
489
- return this.post("/v1/intents/sponsorship-offer", params);
490
- }
491
- setSponsorshipOfferOpenIntent(params) {
492
- return this.post("/v1/intents/sponsorship-offer-open", params);
493
- }
494
- placeSponsorshipBidIntent(params) {
495
- return this.post("/v1/intents/sponsorship-bid", params);
496
- }
497
- retractSponsorshipBidIntent(params) {
498
- return this.post("/v1/intents/sponsorship-bid-retract", params);
499
- }
500
- acceptSponsorshipBidIntent(params) {
501
- return this.post("/v1/intents/sponsorship-bid-accept", params);
502
- }
503
- createSponsorshipProposalIntent(params) {
504
- return this.post("/v1/intents/sponsorship-proposal", params);
505
- }
506
- withdrawSponsorshipProposalIntent(params) {
507
- return this.post("/v1/intents/sponsorship-proposal-withdraw", params);
508
- }
509
- acceptSponsorshipProposalIntent(params) {
510
- return this.post("/v1/intents/sponsorship-proposal-accept", params);
511
- }
512
- rejectSponsorshipProposalIntent(params) {
513
- return this.post("/v1/intents/sponsorship-proposal-reject", params);
514
- }
515
- createCounterOfferIntent(params, siwsToken) {
516
- const extraHeaders = siwsToken ? { "Authorization": `Bearer ${siwsToken}` } : {};
517
- return this.request("/v1/intents/counter-offer", {
518
- method: "POST",
519
- body: JSON.stringify(params),
520
- headers: extraHeaders
521
- });
522
- }
523
- getCounterOffers(query) {
524
- const params = new URLSearchParams();
525
- if (query.originalOrderHash) params.set("originalOrderHash", query.originalOrderHash);
526
- if (query.sellerAddress) params.set("sellerAddress", query.sellerAddress);
527
- if (query.page !== void 0) params.set("page", String(query.page));
528
- if (query.limit !== void 0) params.set("limit", String(query.limit));
529
- return this.get(`/v1/orders/counter-offers?${params}`);
530
- }
531
- getMetadataSignedUrl(kind) {
532
- const params = kind ? `?kind=${kind}` : "";
533
- return this.get(`/v1/metadata/signed-url${params}`);
534
- }
535
- uploadMetadata(metadata) {
536
- return this.post("/v1/metadata/upload", metadata);
537
- }
538
- async uploadMetadataDirectory(files) {
539
- const res = await this.post("/v1/metadata/upload-directory", { files });
540
- return res.data;
541
- }
542
- resolveMetadata(uri) {
543
- const params = new URLSearchParams({ uri });
544
- return this.get(`/v1/metadata/resolve?${params.toString()}`);
545
- }
546
- uploadFile(file) {
547
- const formData = new FormData();
548
- formData.append("file", file);
549
- return this.request("/v1/metadata/upload-file", {
550
- method: "POST",
551
- body: formData
552
- });
553
- }
554
- getMe(siwsToken) {
555
- return this.request("/v1/portal/me", {
556
- method: "GET",
557
- headers: this.asSubject(siwsToken)
558
- });
559
- }
560
- getApiKeys(siwsToken) {
561
- return this.request("/v1/portal/keys", {
562
- method: "GET",
563
- headers: this.asSubject(siwsToken)
564
- });
565
- }
566
- createApiKey(input, siwsToken) {
567
- return this.request("/v1/portal/keys", {
568
- method: "POST",
569
- body: JSON.stringify(input ?? {}),
570
- headers: this.asSubject(siwsToken)
571
- });
572
- }
573
- deleteApiKey(id, siwsToken) {
574
- return this.request(`/v1/portal/keys/${id}`, {
575
- method: "DELETE",
576
- headers: this.asSubject(siwsToken)
577
- });
578
- }
579
- getCreditHistory(siwsToken) {
580
- return this.request("/v1/portal/credits/history", {
581
- method: "GET",
582
- headers: this.asSubject(siwsToken)
583
- });
584
- }
585
- getSpend(siwsToken) {
586
- return this.request("/v1/portal/credits/spend", {
587
- method: "GET",
588
- headers: this.asSubject(siwsToken)
589
- });
590
- }
591
- checkDeposit(txHash, siwsToken) {
592
- return this.request("/v1/portal/credits/check", {
593
- method: "POST",
594
- body: JSON.stringify({ txHash }),
595
- headers: this.asSubject(siwsToken)
596
- });
597
- }
598
- getFundingMethods(siwsToken) {
599
- return this.request("/v1/portal/funding/methods", {
600
- method: "GET",
601
- headers: this.asSubject(siwsToken)
602
- });
603
- }
604
- createFunding(input, siwsToken) {
605
- return this.request("/v1/portal/funding", {
606
- method: "POST",
607
- body: JSON.stringify({ method: input.method, params: input.params }),
608
- headers: this.asSubject(siwsToken)
609
- });
610
- }
611
- getFunding(id, siwsToken) {
612
- return this.request(`/v1/portal/funding/${encodeURIComponent(id)}`, {
613
- method: "GET",
614
- headers: this.asSubject(siwsToken)
615
- });
616
- }
617
- getFundingChallenge(id, payer, siwsToken) {
618
- return this.request(`/v1/portal/funding/${encodeURIComponent(id)}/challenge`, {
619
- method: "POST",
620
- body: JSON.stringify({ payer }),
621
- headers: this.asSubject(siwsToken)
622
- });
623
- }
624
- authorizeFunding(id, input, siwsToken) {
625
- return this.request(
626
- `/v1/portal/funding/${encodeURIComponent(id)}/authorize`,
627
- { method: "POST", body: JSON.stringify({ payer: input.payer, signature: input.signature }), headers: this.asSubject(siwsToken) }
628
- );
629
- }
630
- submitFunding(id, txHash, siwsToken) {
631
- return this.request(`/v1/portal/funding/${encodeURIComponent(id)}/submit`, {
632
- method: "POST",
633
- body: JSON.stringify({ txHash }),
634
- headers: this.asSubject(siwsToken)
635
- });
636
- }
637
- cancelFunding(id, siwsToken) {
638
- return this.request(`/v1/portal/funding/${encodeURIComponent(id)}/cancel`, {
639
- method: "POST",
640
- body: JSON.stringify({}),
641
- headers: this.asSubject(siwsToken)
642
- });
643
- }
644
- getWebhooks() {
645
- return this.get("/v1/portal/webhooks");
646
- }
647
- createWebhook(params) {
648
- return this.post("/v1/portal/webhooks", params);
649
- }
650
- deleteWebhook(id) {
651
- return this.del(
652
- `/v1/portal/webhooks/${id}`
653
- );
654
- }
655
- async claimCollection(contractAddress, walletAddress, siwsToken) {
656
- return this.request("/v1/collections/claim", {
657
- method: "POST",
658
- body: JSON.stringify({ contractAddress, walletAddress }),
659
- headers: this.bearer(siwsToken)
660
- });
661
- }
662
- requestCollectionClaim(params) {
663
- return this.request("/v1/collections/claim/request", {
664
- method: "POST",
665
- body: JSON.stringify(params)
666
- });
667
- }
668
- registerBusinessProvisioning(params) {
669
- return this.post(
670
- "/v1/business/provisioning",
671
- { chain: params.chain ?? "STARKNET", email: params.email }
672
- );
673
- }
674
- getCollectionProfile(contractAddress) {
675
- return this.request(
676
- `/v1/collections/${this.addr(contractAddress)}/profile`,
677
- { method: "GET" },
678
- { allow404: true }
679
- );
680
- }
681
- updateCollectionProfile(contractAddress, data, siwsToken) {
682
- return this.request(
683
- `/v1/collections/${this.addr(contractAddress)}/profile`,
684
- { method: "PATCH", body: JSON.stringify(data), headers: this.bearer(siwsToken) }
685
- );
686
- }
687
- getWalletActivity(address, chain = "STARKNET") {
688
- return this.get(
689
- `/v1/wallet-activity?address=${this.addr(address)}&chain=${chain}`
690
- );
691
- }
692
- getGatedContent(contractAddress, siwsToken) {
693
- return this.request(
694
- `/v1/collections/${this.addr(contractAddress)}/gated-content`,
695
- { method: "GET", headers: this.bearer(siwsToken) },
696
- { allow404: true, allow403: true }
697
- );
698
- }
699
- getCreators(opts = {}) {
700
- const params = new URLSearchParams();
701
- if (opts.search) params.set("search", opts.search);
702
- if (opts.page) params.set("page", String(opts.page));
703
- if (opts.limit) params.set("limit", String(opts.limit));
704
- const qs = params.toString();
705
- return this.get(`/v1/creators${qs ? `?${qs}` : ""}`);
706
- }
707
- getCreatorProfile(walletAddress) {
708
- return this.request(
709
- `/v1/creators/${this.addr(walletAddress)}/profile`,
710
- { method: "GET" },
711
- { allow404: true }
712
- );
713
- }
714
- getCreatorByUsername(username) {
715
- return this.request(
716
- `/v1/creators/by-username/${encodeURIComponent(username.toLowerCase().trim())}`,
717
- { method: "GET" },
718
- { allow404: true }
719
- );
720
- }
721
- updateCreatorProfile(walletAddress, data, siwsToken) {
722
- return this.request(
723
- `/v1/creators/${this.addr(walletAddress)}/profile`,
724
- { method: "PATCH", body: JSON.stringify(data), headers: this.bearer(siwsToken) }
725
- );
726
- }
727
- checkCollectionSlugAvailability(slug) {
728
- return this.get(
729
- `/v1/collection-slug-claims/check/${encodeURIComponent(slug.toLowerCase().trim())}`
730
- );
731
- }
732
- submitCollectionSlugClaim(contractAddress, slug, siwsToken, notifyEmail) {
733
- return this.request("/v1/collection-slug-claims", {
734
- method: "POST",
735
- body: JSON.stringify({ contractAddress, slug, notifyEmail }),
736
- headers: this.bearer(siwsToken)
737
- });
738
- }
739
- getMyCollectionSlugClaims(siwsToken) {
740
- return this.request("/v1/collection-slug-claims/me", {
741
- method: "GET",
742
- headers: this.bearer(siwsToken)
743
- });
744
- }
745
- async getCollectionBySlug(slug) {
746
- const res = await this.request(
747
- `/v1/collections/by-slug/${encodeURIComponent(slug.toLowerCase().trim())}`,
748
- { method: "GET" },
749
- { allow404: true }
750
- );
751
- return res?.data ?? null;
752
- }
753
- async registerUser(params) {
754
- return this.post("/v1/users/register", params);
755
- }
756
- async upsertMyWallet(siwsToken, options = {}) {
757
- const body = {
758
- walletType: options.walletType ?? "UNKNOWN"
759
- };
760
- if (options.chain) body.chain = options.chain;
761
- if (options.email) body.email = options.email;
762
- if (options.accountToken) body.accountToken = options.accountToken;
763
- return this.request("/v1/users/me", {
764
- method: "POST",
765
- body: JSON.stringify(body),
766
- headers: this.bearer(siwsToken)
767
- });
768
- }
769
- async checkEmail(email) {
770
- const body = await this.get(`/v1/auth/email/exists?email=${encodeURIComponent(email)}`);
771
- return { exists: body.exists };
772
- }
773
- async requestEmailCode(email) {
774
- await this.post("/v1/auth/email/request-code", { email });
775
- }
776
- async registerEmailAccount(email) {
777
- await this.post("/v1/auth/email/register-account", { email });
778
- }
779
- async verifyEmailCode(email, code) {
780
- await this.post("/v1/auth/email/verify-code", { email, code });
781
- }
782
- async confirmEmail(token) {
783
- const body = await this.post("/v1/auth/email/confirm", { token });
784
- return { email: body.email };
785
- }
786
- setupWalletKey(params) {
787
- return this.post("/v1/users/me/wallet/key", params);
788
- }
789
- async getSessionWallet() {
790
- const body = await this.post("/v1/users/me/wallet", {});
791
- return body.walletAddress ? { walletAddress: body.walletAddress, needsKeySetup: body.needsKeySetup === true } : null;
792
- }
793
- getMyWallet(siwsToken) {
794
- return this.request(
795
- "/v1/users/me",
796
- { method: "GET", headers: this.bearer(siwsToken) },
797
- { allow404: true }
798
- );
799
- }
800
- changeMyEmail(email, siwsToken) {
801
- return this.request("/v1/users/me/email", {
802
- method: "POST",
803
- headers: this.bearer(siwsToken),
804
- body: JSON.stringify({ email })
805
- });
806
- }
807
- getTokenRemixes(contract, tokenId, opts = {}) {
808
- const params = new URLSearchParams();
809
- if (opts.page !== void 0) params.set("page", String(opts.page));
810
- if (opts.limit !== void 0) params.set("limit", String(opts.limit));
811
- const qs = params.toString();
812
- return this.get(
813
- `/v1/tokens/${this.addr(contract)}/${tokenId}/remixes${qs ? `?${qs}` : ""}`
814
- );
815
- }
816
- submitRemixOffer(params, siwsToken) {
817
- return this.request("/v1/remix-offers", {
818
- method: "POST",
819
- body: JSON.stringify(params),
820
- headers: { "Authorization": `Bearer ${siwsToken}` }
821
- });
822
- }
823
- submitAutoRemixOffer(params, siwsToken) {
824
- return this.request("/v1/remix-offers/auto", {
825
- method: "POST",
826
- body: JSON.stringify(params),
827
- headers: { "Authorization": `Bearer ${siwsToken}` }
828
- });
829
- }
830
- confirmSelfRemix(params, siwsToken) {
831
- return this.request("/v1/remix-offers/self/confirm", {
832
- method: "POST",
833
- body: JSON.stringify(params),
834
- headers: { "Authorization": `Bearer ${siwsToken}` }
835
- });
836
- }
837
- getRemixOffers(query, siwsToken) {
838
- const params = new URLSearchParams({ role: query.role });
839
- if (query.status) params.set("status", query.status);
840
- if (query.page !== void 0) params.set("page", String(query.page));
841
- if (query.limit !== void 0) params.set("limit", String(query.limit));
842
- return this.request(`/v1/remix-offers?${params}`, {
843
- method: "GET",
844
- headers: this.bearer(siwsToken)
845
- });
846
- }
847
- getRemixOffer(id, siwsToken) {
848
- return this.request(`/v1/remix-offers/${id}`, {
849
- method: "GET",
850
- headers: siwsToken ? this.bearer(siwsToken) : void 0
851
- });
852
- }
853
- confirmRemixOffer(id, params, siwsToken) {
854
- return this.request(`/v1/remix-offers/${id}/confirm`, {
855
- method: "POST",
856
- body: JSON.stringify(params),
857
- headers: { "Authorization": `Bearer ${siwsToken}` }
858
- });
859
- }
860
- rejectRemixOffer(id, siwsToken) {
861
- return this.request(`/v1/remix-offers/${id}/reject`, {
862
- method: "POST",
863
- body: JSON.stringify({}),
864
- headers: { "Authorization": `Bearer ${siwsToken}` }
865
- });
866
- }
867
- extendRemixOffer(id, days, siwsToken) {
868
- return this.request(`/v1/remix-offers/${id}/extend`, {
869
- method: "POST",
870
- body: JSON.stringify({ days }),
871
- headers: { "Authorization": `Bearer ${siwsToken}` }
872
- });
873
- }
874
- async getPopEligibility(collection, wallet) {
875
- const res = await this.get(
876
- `/v1/pop/eligibility/${this.addr(collection)}/${this.addr(wallet)}`
877
- );
878
- return res.data;
879
- }
880
- async getPopEligibilityBatch(collection, wallets) {
881
- const params = new URLSearchParams({ wallets: wallets.map((w) => this.addr(w)).join(",") });
882
- const res = await this.get(
883
- `/v1/pop/eligibility/${this.addr(collection)}?${params}`
884
- );
885
- return res.data;
886
- }
887
- getCoins(opts = {}) {
888
- const params = new URLSearchParams();
889
- if (opts.page) params.set("page", String(opts.page));
890
- if (opts.limit) params.set("limit", String(opts.limit));
891
- if (opts.service) params.set("service", opts.service);
892
- if (opts.sort) params.set("sort", opts.sort);
893
- if (opts.creator) params.set("creator", this.addr(opts.creator));
894
- if (opts.chain) params.set("chain", opts.chain);
895
- const qs = params.toString();
896
- return this.get(`/v1/coins${qs ? `?${qs}` : ""}`);
897
- }
898
- getCoin(contract) {
899
- return this.get(`/v1/coins/${this.addr(contract)}`);
900
- }
901
- getCoinPrices() {
902
- return this.get("/v1/coins/prices");
903
- }
904
- claimCoin(coinAddress, siwsToken) {
905
- return this.request("/v1/coins/claim", {
906
- method: "POST",
907
- headers: { Authorization: `Bearer ${siwsToken}` },
908
- body: JSON.stringify({ coinAddress })
909
- });
910
- }
911
- getCoinClaims(status = "PENDING") {
912
- return this.get(
913
- `/v1/coins/claims?status=${encodeURIComponent(status)}`
914
- );
915
- }
916
- updateCoinProfile(contract, data, siwsToken) {
917
- return this.request(`/v1/coins/${this.addr(contract)}`, {
918
- method: "PATCH",
919
- body: JSON.stringify(data),
920
- headers: this.bearer(siwsToken)
921
- });
922
- }
923
- async getDropMintStatus(collection, wallet) {
924
- const res = await this.get(
925
- `/v1/drop/mint-status/${this.addr(collection)}/${this.addr(wallet)}`
926
- );
927
- return res.data;
928
- }
929
- async getDropInfo(contract) {
930
- const res = await this.request(
931
- `/v1/drop/${this.addr(contract)}/info`,
932
- { method: "GET" },
933
- { allow404: true }
934
- );
935
- return res?.data ?? null;
936
- }
937
- async getDropState(contract) {
938
- const res = await this.get(`/v1/drop/${this.addr(contract)}/state`);
939
- return res.data;
940
- }
941
- async getTicket(contract, tokenId) {
942
- const res = await this.get(`/v1/tickets/${this.addr(contract)}/${tokenId}`);
943
- return res.data;
944
- }
945
- async getTicketCount(contract) {
946
- const res = await this.get(`/v1/tickets/${this.addr(contract)}/count`);
947
- return res.data.count;
948
- }
949
- async getClubMembershipCount(contract) {
950
- const res = await this.get(`/v1/club/${this.addr(contract)}/count`);
951
- return res.data.count;
952
- }
953
- async getClubMembership(contract, tokenId) {
954
- const res = await this.get(`/v1/club/${this.addr(contract)}/${tokenId}`);
955
- return res.data;
956
- }
957
- async isClubMember(contract, tokenId, wallet) {
958
- const res = await this.get(
959
- `/v1/club/${this.addr(contract)}/${tokenId}/member/${this.addr(wallet)}`
960
- );
961
- return res.data.isMember;
962
- }
963
- async getIpNftTokenData(contract, tokenId) {
964
- const res = await this.get(`/v1/ipnft/${this.addr(contract)}/${tokenId}`);
965
- return res.data;
966
- }
967
- async getPlatformStats() {
968
- const res = await this.get("/v1/stats");
969
- return res.data;
970
- }
971
- getTokens(query = {}) {
972
- const params = new URLSearchParams();
973
- if (query.page !== void 0) params.set("page", String(query.page));
974
- if (query.limit !== void 0) params.set("limit", String(query.limit));
975
- if (query.sort) params.set("sort", query.sort);
976
- if (query.ipType) params.set("ipType", query.ipType);
977
- if (query.derivatives) params.set("derivatives", query.derivatives);
978
- const qs = params.toString();
979
- return this.get(`/v1/tokens${qs ? `?${qs}` : ""}`);
980
- }
981
- async isCreatorHidden(wallet) {
982
- const res = await this.get(`/v1/creators/${this.addr(wallet)}/hidden`);
983
- return res.isHidden;
984
- }
985
- getMyUsernameClaim(siwsToken) {
986
- return this.request("/v1/username-claims/me", {
987
- method: "GET",
988
- headers: this.bearer(siwsToken)
989
- });
990
- }
991
- checkUsernameAvailability(username) {
992
- return this.get(
993
- `/v1/username-claims/check/${encodeURIComponent(username)}`
994
- );
995
- }
996
- async submitUsernameClaim(username, siwsToken, notifyEmail) {
997
- const res = await this.request("/v1/username-claims", {
998
- method: "POST",
999
- headers: this.bearer(siwsToken),
1000
- body: JSON.stringify({ username, ...notifyEmail ? { notifyEmail } : {} })
1001
- });
1002
- return res.claim;
1003
- }
1004
- async submitReport(report, siwsToken) {
1005
- const targetContract = report.targetContract ? this.addr(report.targetContract) : void 0;
1006
- const targetAddress = report.targetAddress ? this.addr(report.targetAddress) : void 0;
1007
- let targetKey = null;
1008
- if (report.targetType === "TOKEN" && targetContract && report.targetTokenId) {
1009
- targetKey = `TOKEN:${targetContract}:${report.targetTokenId}`;
1010
- } else if (report.targetType === "COLLECTION" && targetContract) {
1011
- targetKey = `COLLECTION:${targetContract}`;
1012
- } else if (report.targetType === "CREATOR" && targetAddress) {
1013
- targetKey = `CREATOR:${targetAddress}`;
1014
- } else if (report.targetType === "COMMENT" && report.targetId) {
1015
- targetKey = `COMMENT::${report.targetId}`;
1016
- }
1017
- if (!targetKey) throw new Error(`A ${report.targetType} report needs its target`);
1018
- await this.request("/v1/reports", {
1019
- method: "POST",
1020
- headers: this.bearer(siwsToken),
1021
- body: JSON.stringify({ ...report, targetKey, targetContract, targetAddress })
1022
- });
1023
- }
1024
- getPricing() {
1025
- return this.get("/v1/pricing");
1026
- }
1027
- listCollections(query = {}) {
1028
- const params = new URLSearchParams();
1029
- if (query.page !== void 0) params.set("page", String(query.page));
1030
- if (query.limit !== void 0) params.set("limit", String(query.limit));
1031
- if (query.owner) params.set("owner", this.addr(query.owner));
1032
- if (query.service) params.set("service", query.service);
1033
- if (query.sort) params.set("sort", query.sort);
1034
- if (query.isFeatured !== void 0) params.set("isFeatured", String(query.isFeatured));
1035
- if (query.hideEmpty !== void 0) params.set("hideEmpty", String(query.hideEmpty));
1036
- if (query.standard) params.set("standard", query.standard);
1037
- if (query.chain) params.set("chain", query.chain);
1038
- const qs = params.toString();
1039
- return this.get(`/v1/collections${qs ? `?${qs}` : ""}`);
1040
- }
1041
- generateWallet(newWalletSiwsToken, siwsToken) {
1042
- return this.request("/v1/users/me/generate-wallet", {
1043
- method: "POST",
1044
- headers: this.bearer(siwsToken),
1045
- body: JSON.stringify({ newWalletSiwsToken })
1046
- });
1047
- }
1048
- syncCoin(coinAddress, owner) {
1049
- return this.post("/v1/coins/sync", { coinAddress, ...owner ? { owner } : {} });
1050
- }
1051
- registerCollection(contractAddress) {
1052
- return this.post("/v1/collections/register", { contractAddress });
1053
- }
1054
- getSponsorshipOffers(query = {}) {
1055
- const params = new URLSearchParams({ limit: String(query.limit ?? 50) });
1056
- if (query.nftContract) params.set("nftContract", query.nftContract);
1057
- if (query.author) params.set("author", query.author);
1058
- if (query.owner) params.set("owner", query.owner);
1059
- if (query.open !== void 0) params.set("open", String(query.open));
1060
- return this.get(`/v1/sponsorship/offers?${params}`);
1061
- }
1062
- async getSponsorshipOffer(offerId) {
1063
- const res = await this.request(
1064
- `/v1/sponsorship/offers/${encodeURIComponent(offerId)}`,
1065
- { method: "GET" },
1066
- { allow404: true }
1067
- );
1068
- return res?.data ?? null;
1069
- }
1070
- async getSponsorshipProposal(proposalId) {
1071
- const res = await this.request(
1072
- `/v1/sponsorship/proposals/${encodeURIComponent(proposalId)}`,
1073
- { method: "GET" },
1074
- { allow404: true }
1075
- );
1076
- return res?.data ?? null;
1077
- }
1078
- async getSponsorshipBids(offerId) {
1079
- const res = await this.get(`/v1/sponsorship/offers/${encodeURIComponent(offerId)}/bids`);
1080
- return res.data;
1081
- }
1082
- getSponsorshipProposals(query = {}) {
1083
- const params = new URLSearchParams({ limit: String(query.limit ?? 50) });
1084
- if (query.nftContract) params.set("nftContract", query.nftContract);
1085
- if (query.proposer) params.set("proposer", query.proposer);
1086
- if (query.owner) params.set("owner", query.owner);
1087
- if (query.open !== void 0) params.set("open", String(query.open));
1088
- return this.get(`/v1/sponsorship/proposals?${params}`);
1089
- }
1090
- getSponsorshipLicenses(query = {}) {
1091
- const params = new URLSearchParams({ limit: String(query.limit ?? 50) });
1092
- if (query.holder) params.set("holder", query.holder);
1093
- if (query.author) params.set("author", query.author);
1094
- return this.get(`/v1/sponsorship/licenses?${params}`);
1095
- }
1096
- async getRewards(address) {
1097
- const res = await this.get(`/v1/rewards/${this.addr(address)}`);
1098
- return res.data;
1099
- }
1100
- getRewardsLeaderboard(page = 1, limit = 50) {
1101
- return this.get(`/v1/rewards?page=${page}&limit=${limit}`);
1102
- }
1103
- getRewardsEvents(address, page = 1, limit = 20) {
1104
- return this.get(
1105
- `/v1/rewards/${this.addr(address)}/events?page=${page}&limit=${limit}`
1106
- );
1107
- }
1108
- async getRewardsConfig() {
1109
- const res = await this.get(`/v1/rewards/config`);
1110
- return res.data;
1111
- }
1112
- async getRewardsBatch(addresses) {
1113
- if (addresses.length === 0) return [];
1114
- const params = new URLSearchParams({ addresses: addresses.map((a) => this.addr(a)).join(",") });
1115
- const res = await this.get(`/v1/rewards/batch?${params}`);
1116
- return res.data;
1117
- }
1118
- };
7
+ var base = require('@scure/base');
1119
8
 
1120
9
  // src/api/launchpad-runs.ts
1121
10
  var isDataTokenizationRun = (run) => run.service === "data-tokenization-erc721";
@@ -1206,85 +95,6 @@ function createLaunchpadRunsClient({ baseUrl, getToken, fetchImpl = fetch }) {
1206
95
  };
1207
96
  }
1208
97
 
1209
- // src/constants.ts
1210
- var SN = getCoordinates("STARKNET");
1211
- var STARKNET_MARKETPLACE_721_CONTRACT = SN.marketplace721;
1212
- var STARKNET_MARKETPLACE_721_CLASS_HASH = SN.marketplace721ClassHash;
1213
- var STARKNET_MARKETPLACE_721_START_BLOCK = SN.marketplace721StartBlock;
1214
- var STARKNET_MARKETPLACE_1155_CONTRACT = SN.marketplace1155;
1215
- var STARKNET_MARKETPLACE_1155_CLASS_HASH = SN.marketplace1155ClassHash;
1216
- var STARKNET_MARKETPLACE_1155_START_BLOCK = SN.marketplace1155StartBlock;
1217
- var STARKNET_COLLECTION_721_CONTRACT = SN.collection721;
1218
- var STARKNET_DATA_TOKENIZATION_721_CONTRACT = SN.dataTokenization721;
1219
- var STARKNET_COLLECTION_721_START_BLOCK = SN.collection721StartBlock;
1220
- var STARKNET_IPNFT_CLASS_HASH = SN.ipNftClassHash;
1221
- var STARKNET_IPCOLLECTION_CLASS_HASH = SN.ipCollectionClassHash;
1222
- var STARKNET_COLLECTION_1155_CONTRACT = SN.collection1155;
1223
- var STARKNET_COLLECTION_1155_FACTORY_CLASS_HASH = SN.collection1155FactoryClassHash;
1224
- var STARKNET_COLLECTION_1155_CLASS_HASH = SN.collection1155ClassHash;
1225
- var STARKNET_COLLECTION_1155_START_BLOCK = SN.collection1155StartBlock;
1226
- var STARKNET_POP_FACTORY_CONTRACT = SN.popFactory;
1227
- var STARKNET_POP_COLLECTION_CLASS_HASH = SN.popCollectionClassHash;
1228
- var STARKNET_DROP_FACTORY_CONTRACT = SN.dropFactory;
1229
- var STARKNET_DROP_COLLECTION_CLASS_HASH = SN.dropCollectionClassHash;
1230
- var STARKNET_NFTCOMMENTS_CONTRACT = SN.nftComments;
1231
- var STARKNET_IP_TICKETS_FACTORY_CONTRACT = SN.ipTicketsFactory;
1232
- var STARKNET_IP_TICKET_COLLECTION_CLASS_HASH = SN.ipTicketCollectionClassHash;
1233
- var STARKNET_IP_CLUB_FACTORY_CONTRACT = SN.ipClubFactory;
1234
- var STARKNET_IP_CLUB_COLLECTION_CLASS_HASH = SN.ipClubCollectionClassHash;
1235
- var STARKNET_IP_SPONSORSHIP_CONTRACT = SN.ipSponsorship;
1236
- var STARKNET_IP_SPONSORSHIP_CLASS_HASH = SN.ipSponsorshipClassHash;
1237
- SN.mediaWalletClassHash;
1238
- var STARKNET_CREATOR_COIN_FACTORY_CONTRACT = SN.creatorCoinFactory;
1239
- var STARKNET_CREATOR_COIN_EKUBO_LAUNCHER = SN.creatorCoinEkuboLauncher;
1240
- var STARKNET_CREATOR_COIN_CLASS_HASH = SN.creatorCoinClassHash;
1241
- var STARKNET_CREATOR_COIN_FACTORY_CLASS_HASH = SN.creatorCoinFactoryClassHash;
1242
- var STARKNET_CREATOR_COIN_START_BLOCK = SN.creatorCoinStartBlock;
1243
- var STARKNET_GENESIS_MINT_CONTRACT = SN.genesisMint;
1244
- var STARKNET_GENESIS_NFT_URI = "ipfs://bafkreiag6wzov7migmxwx3wrtudvbx4ajrlbjopqw7uni7nn2nsxv4eykm";
1245
- var STARKNET_EKUBO_CORE = SN.ekuboCore;
1246
- var SUPPORTED_TOKENS = [
1247
- {
1248
- symbol: "USDC",
1249
- address: "0x033068f6539f8e6e6b131e6b2b814e6c34a5224bc66947c47dab9dfee93b35fb",
1250
- decimals: 6,
1251
- listable: true
1252
- },
1253
- {
1254
- symbol: "USDT",
1255
- address: "0x068f5c6a61780768455de69077e07e89787839bf8166decfbf92b645209c0fb8",
1256
- decimals: 6,
1257
- listable: true
1258
- },
1259
- {
1260
- symbol: "ETH",
1261
- address: "0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7",
1262
- decimals: 18,
1263
- listable: true
1264
- },
1265
- {
1266
- symbol: "STRK",
1267
- address: "0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d",
1268
- decimals: 18,
1269
- listable: true
1270
- },
1271
- {
1272
- symbol: "WBTC",
1273
- address: "0x03fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac",
1274
- decimals: 8,
1275
- listable: true
1276
- }
1277
- ];
1278
- var DEFAULT_CURRENCY = "USDC";
1279
-
1280
- // src/wallet/passkey.ts
1281
- var PasskeyCancelledError = class extends Error {
1282
- constructor(message = "Passkey prompt was cancelled.") {
1283
- super(message);
1284
- this.name = "PasskeyCancelledError";
1285
- }
1286
- };
1287
-
1288
98
  // src/types/api.ts
1289
99
  var OPEN_LICENSES = ["CC0", "CC BY", "CC BY-SA", "CC BY-NC"];
1290
100
 
@@ -1308,469 +118,6 @@ function coinHref(chain, address) {
1308
118
  return `/coins/${chainSlug(chain)}/${seg(address)}`;
1309
119
  }
1310
120
 
1311
- // src/services/registry.ts
1312
- var SN2 = getStarknetCoordinates("STARKNET");
1313
- var SERVICES = {
1314
- "mip-erc721": {
1315
- id: "mip-erc721",
1316
- displayName: "IP Collection",
1317
- description: "Tokenize intellectual property as a per-creator ERC-721 collection.",
1318
- standard: "ERC721",
1319
- provenance: "MEDIALANE",
1320
- onchain: {
1321
- STARKNET: {
1322
- factoryAddress: SN2.collection721,
1323
- startBlock: SN2.collection721StartBlock
1324
- }
1325
- },
1326
- uiVariant: "standard",
1327
- capabilities: ["list", "buy", "make_offer", "cancel", "transfer", "mint", "remix", "license"],
1328
- events: [
1329
- { name: "CollectionCreated", emittedBy: "factory" }
1330
- ],
1331
- metadataSchema: { licenseDefault: "CC BY-SA" }
1332
- },
1333
- "ip-erc721": {
1334
- id: "ip-erc721",
1335
- displayName: "Programmable IP",
1336
- description: "One shared ERC-721 contract any wallet can mint into.",
1337
- standard: "ERC721",
1338
- provenance: "MEDIALANE",
1339
- uiVariant: "standard",
1340
- capabilities: ["list", "buy", "make_offer", "cancel", "transfer", "mint", "remix", "license"],
1341
- metadataSchema: { licenseDefault: "CC BY-SA" }
1342
- },
1343
- "data-tokenization-erc721": {
1344
- id: "data-tokenization-erc721",
1345
- displayName: "Data Tokenization",
1346
- description: "Establish verifiable ownership of your data, with licensing terms that hold up wherever it travels.",
1347
- standard: "ERC721",
1348
- provenance: "MEDIALANE",
1349
- onchain: {
1350
- STARKNET: {
1351
- factoryAddress: SN2.dataTokenization721,
1352
- startBlock: SN2.dataTokenization721StartBlock
1353
- }
1354
- },
1355
- uiVariant: "standard",
1356
- capabilities: ["list", "buy", "make_offer", "cancel", "transfer", "mint", "remix", "license"],
1357
- events: [
1358
- { name: "CollectionCreated", emittedBy: "factory" }
1359
- ],
1360
- metadataSchema: { licenseDefault: "CC BY-SA" }
1361
- },
1362
- "mip-erc1155": {
1363
- id: "mip-erc1155",
1364
- displayName: "NFT Editions",
1365
- description: "Per-creator ERC-1155 collection; creator mints editions.",
1366
- standard: "ERC1155",
1367
- provenance: "MEDIALANE",
1368
- onchain: {
1369
- STARKNET: {
1370
- factoryAddress: SN2.collection1155,
1371
- classHash: SN2.collection1155ClassHash,
1372
- startBlock: SN2.collection1155StartBlock
1373
- }
1374
- },
1375
- uiVariant: "edition",
1376
- capabilities: ["list", "buy", "make_offer", "cancel", "transfer", "mint", "remix", "license"],
1377
- events: [
1378
- { name: "CollectionDeployed", emittedBy: "factory" }
1379
- ],
1380
- metadataSchema: { licenseDefault: "CC BY-SA" }
1381
- },
1382
- "pop-protocol": {
1383
- id: "pop-protocol",
1384
- displayName: "POP Protocol",
1385
- description: "Soulbound proof-of-presence collectibles per event.",
1386
- standard: "ERC721",
1387
- provenance: "MEDIALANE",
1388
- onchain: {
1389
- STARKNET: {
1390
- factoryAddress: SN2.popFactory,
1391
- classHash: SN2.popCollectionClassHash
1392
- }
1393
- },
1394
- uiVariant: "pop",
1395
- capabilities: ["claim", "mint"],
1396
- events: [
1397
- { name: "CollectionCreated", emittedBy: "factory" },
1398
- { name: "AllowlistUpdated", emittedBy: "instance", poll: "slow" }
1399
- ],
1400
- metadataSchema: { licenseDefault: "CC BY-SA" }
1401
- },
1402
- "certificate-emission": {
1403
- id: "certificate-emission",
1404
- displayName: "Certificate Emission",
1405
- description: "Issue a soulbound credential to a list of recipients in one run \u2014 everyone gets a wallet and their certificate.",
1406
- standard: "ERC721",
1407
- provenance: "MEDIALANE",
1408
- onchain: {
1409
- STARKNET: {
1410
- factoryAddress: SN2.popFactory,
1411
- classHash: SN2.popCollectionClassHash
1412
- }
1413
- },
1414
- uiVariant: "pop",
1415
- capabilities: ["mint", "airdrop"],
1416
- events: [
1417
- { name: "CollectionCreated", emittedBy: "factory" }
1418
- ],
1419
- metadataSchema: { licenseDefault: "CC BY-SA" }
1420
- },
1421
- "drop-collection": {
1422
- id: "drop-collection",
1423
- displayName: "Collection Drop",
1424
- description: "Sequential mint with claim windows + allowlist.",
1425
- standard: "ERC721",
1426
- provenance: "MEDIALANE",
1427
- onchain: {
1428
- STARKNET: {
1429
- factoryAddress: SN2.dropFactory,
1430
- classHash: SN2.dropCollectionClassHash
1431
- }
1432
- },
1433
- uiVariant: "drop",
1434
- capabilities: ["claim", "list", "buy", "make_offer", "cancel", "transfer"],
1435
- events: [
1436
- { name: "DropCreated", emittedBy: "factory" },
1437
- { name: "AllowlistUpdated", emittedBy: "instance", poll: "slow" }
1438
- ],
1439
- metadataSchema: { licenseDefault: "CC BY-SA" }
1440
- },
1441
- "ip-tickets": {
1442
- id: "ip-tickets",
1443
- displayName: "IP Tickets",
1444
- description: "Create verifiable on-chain tickets \u2014 mint to attendees, trade like any collection.",
1445
- standard: "ERC1155",
1446
- provenance: "MEDIALANE",
1447
- onchain: {
1448
- STARKNET: {
1449
- factoryAddress: SN2.ipTicketsFactory,
1450
- classHash: SN2.ipTicketCollectionClassHash
1451
- }
1452
- },
1453
- uiVariant: "ticket",
1454
- capabilities: ["mint", "redeem", "list", "buy", "make_offer", "cancel", "transfer"],
1455
- events: [
1456
- { name: "CollectionDeployed", emittedBy: "factory" },
1457
- { name: "TicketCreated", emittedBy: "instance" }
1458
- ],
1459
- metadataSchema: { licenseDefault: "CC BY-SA" }
1460
- },
1461
- "ip-ticketing": {
1462
- id: "ip-ticketing",
1463
- displayName: "IP Ticketing",
1464
- description: "Distribute verifiable on-chain tickets to a list of recipients in one run \u2014 everyone gets a wallet and their ticket.",
1465
- standard: "ERC1155",
1466
- provenance: "MEDIALANE",
1467
- onchain: {
1468
- STARKNET: {
1469
- factoryAddress: SN2.ipTicketsFactory,
1470
- classHash: SN2.ipTicketCollectionClassHash
1471
- }
1472
- },
1473
- uiVariant: "ticket",
1474
- capabilities: ["mint", "airdrop", "redeem", "list", "buy", "make_offer", "cancel", "transfer"],
1475
- events: [
1476
- { name: "CollectionDeployed", emittedBy: "factory" },
1477
- { name: "TicketCreated", emittedBy: "instance" }
1478
- ],
1479
- metadataSchema: { licenseDefault: "CC BY-SA" }
1480
- },
1481
- "ip-club": {
1482
- id: "ip-club",
1483
- displayName: "IP Club",
1484
- description: "Membership clubs \u2014 create tiers, mint membership cards, trade like any collection.",
1485
- standard: "ERC1155",
1486
- provenance: "MEDIALANE",
1487
- onchain: {
1488
- STARKNET: {
1489
- factoryAddress: SN2.ipClubFactory,
1490
- classHash: SN2.ipClubCollectionClassHash
1491
- }
1492
- },
1493
- uiVariant: "club",
1494
- capabilities: ["mint", "list", "buy", "make_offer", "cancel", "transfer"],
1495
- events: [
1496
- { name: "ClubDeployed", emittedBy: "factory" },
1497
- { name: "MembershipCreated", emittedBy: "instance" }
1498
- ],
1499
- metadataSchema: { licenseDefault: "CC BY-SA" }
1500
- },
1501
- "ip-sponsorship": {
1502
- id: "ip-sponsorship",
1503
- displayName: "IP Sponsorship",
1504
- description: "Sponsorship offers and licenses anchored to an existing Medialane asset.",
1505
- standard: "ERC721",
1506
- provenance: "MEDIALANE",
1507
- onchain: {
1508
- STARKNET: {
1509
- factoryAddress: SN2.ipSponsorship,
1510
- classHash: SN2.ipSponsorshipClassHash,
1511
- startBlock: SN2.ipSponsorshipStartBlock
1512
- }
1513
- },
1514
- uiVariant: "standard",
1515
- capabilities: ["sponsor", "transfer"],
1516
- events: [
1517
- { name: "OfferCreated", emittedBy: "factory" },
1518
- { name: "ProposalCreated", emittedBy: "factory" },
1519
- { name: "LicenseMinted", emittedBy: "factory" }
1520
- ],
1521
- metadataSchema: { licenseDefault: "CC BY-SA" }
1522
- },
1523
- "creator-coin": {
1524
- id: "creator-coin",
1525
- displayName: "Creator Coin",
1526
- description: "Launch a fixed-supply social token with permanently-locked Ekubo liquidity.",
1527
- standard: "ERC20",
1528
- provenance: "MEDIALANE",
1529
- onchain: {
1530
- STARKNET: {
1531
- factoryAddress: SN2.creatorCoinFactory,
1532
- classHash: SN2.creatorCoinFactoryClassHash,
1533
- startBlock: SN2.creatorCoinStartBlock
1534
- }
1535
- },
1536
- uiVariant: "coin",
1537
- capabilities: ["launch", "swap", "transfer"],
1538
- events: [
1539
- { name: "CreatorCoinCreated", emittedBy: "factory" },
1540
- { name: "CreatorCoinLaunched", emittedBy: "factory" }
1541
- ]
1542
- },
1543
- "medialane-marketplace-erc721": {
1544
- id: "medialane-marketplace-erc721",
1545
- displayName: "Medialane Marketplace (ERC-721)",
1546
- description: "ERC-721 order matching venue.",
1547
- standard: "ERC721",
1548
- provenance: "MEDIALANE",
1549
- onchain: {
1550
- STARKNET: {
1551
- factoryAddress: SN2.marketplace721,
1552
- classHash: SN2.marketplace721ClassHash,
1553
- startBlock: SN2.marketplace721StartBlock
1554
- }
1555
- },
1556
- uiVariant: "standard",
1557
- capabilities: ["list", "buy", "make_offer", "cancel"],
1558
- events: [
1559
- { name: "OrderCreated", emittedBy: "factory" },
1560
- { name: "OrderFulfilled", emittedBy: "factory" },
1561
- { name: "OrderCancelled", emittedBy: "factory" }
1562
- ]
1563
- },
1564
- "medialane-marketplace-erc1155": {
1565
- id: "medialane-marketplace-erc1155",
1566
- displayName: "Medialane Marketplace (ERC-1155)",
1567
- description: "ERC-1155 order matching venue.",
1568
- standard: "ERC1155",
1569
- provenance: "MEDIALANE",
1570
- onchain: {
1571
- STARKNET: {
1572
- factoryAddress: SN2.marketplace1155,
1573
- classHash: SN2.marketplace1155ClassHash,
1574
- startBlock: SN2.marketplace1155StartBlock
1575
- }
1576
- },
1577
- uiVariant: "edition",
1578
- capabilities: ["list", "buy", "make_offer", "cancel"],
1579
- events: [
1580
- { name: "OrderCreated", emittedBy: "factory" },
1581
- { name: "OrderFulfilled", emittedBy: "factory" },
1582
- { name: "OrderCancelled", emittedBy: "factory" }
1583
- ]
1584
- },
1585
- "unruggable-erc20": {
1586
- id: "unruggable-erc20",
1587
- displayName: "Unruggable",
1588
- description: "An ERC-20 launched through the unruggable.meme protocol, the same contract Medialane's Creator Coin is forked from. Not deployed via a Medialane service, but exposes the same on-chain guarantees: capped team allocation, permanently locked liquidity, fixed supply. Brought in by owner claim or admin/partnership \u2014 never bulk-indexed.",
1589
- standard: "ERC20",
1590
- provenance: "EXTERNAL",
1591
- uiVariant: "coin",
1592
- capabilities: ["swap", "transfer"]
1593
- },
1594
- "external-erc20": {
1595
- id: "external-erc20",
1596
- displayName: "Memecoin",
1597
- description: "A plain ERC-20 not deployed via a Medialane service and carrying no protocol-level guarantees. Brought in by owner claim or admin/partnership \u2014 never bulk-indexed. Generalizes to future chains.",
1598
- standard: "ERC20",
1599
- provenance: "EXTERNAL",
1600
- uiVariant: "coin",
1601
- capabilities: ["swap", "transfer"]
1602
- },
1603
- "external-erc721": {
1604
- id: "external-erc721",
1605
- displayName: "External ERC-721",
1606
- description: "ERC-721 contract not deployed via a Medialane service.",
1607
- standard: "ERC721",
1608
- provenance: "EXTERNAL",
1609
- uiVariant: "standard",
1610
- capabilities: ["list", "buy", "make_offer", "cancel", "transfer"]
1611
- },
1612
- "external-erc1155": {
1613
- id: "external-erc1155",
1614
- displayName: "External ERC-1155",
1615
- description: "ERC-1155 contract not deployed via a Medialane service.",
1616
- standard: "ERC1155",
1617
- provenance: "EXTERNAL",
1618
- uiVariant: "edition",
1619
- capabilities: ["list", "buy", "make_offer", "cancel", "transfer"]
1620
- }
1621
- };
1622
- function isServiceId(id) {
1623
- return typeof id === "string" && id in SERVICES;
1624
- }
1625
- function getService(id) {
1626
- return id && id in SERVICES ? SERVICES[id] : void 0;
1627
- }
1628
- function listServices() {
1629
- return Object.values(SERVICES);
1630
- }
1631
- function getServicesByCapability(cap) {
1632
- return Object.values(SERVICES).filter(
1633
- (s) => s.capabilities.includes(cap)
1634
- );
1635
- }
1636
- function hasCapability(id, cap) {
1637
- return getService(id)?.capabilities.includes(cap) ?? false;
1638
- }
1639
-
1640
- // src/utils/token.ts
1641
- function parseAmount(human, decimals) {
1642
- const [whole, frac = ""] = human.split(".");
1643
- const fracPadded = frac.padEnd(decimals, "0").slice(0, decimals);
1644
- return (BigInt(whole) * BigInt(10) ** BigInt(decimals) + BigInt(fracPadded)).toString();
1645
- }
1646
- function formatAmount(raw, decimals) {
1647
- const value = BigInt(raw);
1648
- const factor = 10n ** BigInt(decimals);
1649
- const whole = value / factor;
1650
- const remainder = value % factor;
1651
- const fractional = remainder.toString().padStart(decimals, "0").replace(/0+$/, "");
1652
- return fractional ? `${whole}.${fractional}` : whole.toString();
1653
- }
1654
- function getTokenByAddress(address) {
1655
- if (typeof address !== "string" || address.trim() === "") return void 0;
1656
- let target = null;
1657
- try {
1658
- target = BigInt(address);
1659
- } catch {
1660
- target = null;
1661
- }
1662
- return SUPPORTED_TOKENS.find((t) => {
1663
- if (target !== null) {
1664
- try {
1665
- return BigInt(t.address) === target;
1666
- } catch {
1667
- }
1668
- }
1669
- return t.address.toLowerCase() === address.toLowerCase();
1670
- });
1671
- }
1672
- function getTokenBySymbol(symbol) {
1673
- if (typeof symbol !== "string") return void 0;
1674
- const upper = symbol.toUpperCase();
1675
- return SUPPORTED_TOKENS.find((t) => t.symbol === upper);
1676
- }
1677
- function getListableTokens() {
1678
- return SUPPORTED_TOKENS.filter((t) => t.listable);
1679
- }
1680
-
1681
- // src/utils/bigint.ts
1682
- function stringifyBigInts(obj) {
1683
- if (typeof obj === "bigint") {
1684
- return obj.toString();
1685
- }
1686
- if (Array.isArray(obj)) {
1687
- return obj.map(stringifyBigInts);
1688
- }
1689
- if (obj !== null && typeof obj === "object") {
1690
- return Object.fromEntries(
1691
- Object.entries(obj).map(([key, value]) => [
1692
- key,
1693
- stringifyBigInts(value)
1694
- ])
1695
- );
1696
- }
1697
- return obj;
1698
- }
1699
- function u256ToBigInt(low, high) {
1700
- return BigInt(low) + (BigInt(high) << 128n);
1701
- }
1702
- function encodeU256(n) {
1703
- return [
1704
- (n & 0xffffffffffffffffffffffffffffffffn).toString(),
1705
- (n >> 128n).toString()
1706
- ];
1707
- }
1708
-
1709
- // src/utils/rpc.ts
1710
- var TRANSIENT_BODY_RE = /"code"\s*:\s*-32001|"code"\s*:\s*-32603|unable to complete|rate.?limit|too many|throttl|exceed.*quota|temporarily unavailable|service unavailable|overload|gateway.*time|upstream.*time|backend.*error/i;
1711
- var POLICY_REFUSAL_CODES = [-32003, -32005, -32600];
1712
- function isPolicyRefusal(input) {
1713
- let body = input.body;
1714
- if (typeof body === "string") {
1715
- try {
1716
- body = JSON.parse(body);
1717
- } catch {
1718
- return false;
1719
- }
1720
- }
1721
- const err = body?.error;
1722
- const code = err && typeof err === "object" ? err.code : void 0;
1723
- return typeof code === "number" && POLICY_REFUSAL_CODES.includes(code);
1724
- }
1725
- function isTransientRpcError(input) {
1726
- const { status, body } = input;
1727
- if (isPolicyRefusal({ body })) return false;
1728
- if (typeof status === "number" && (status === 429 || status >= 500)) return true;
1729
- if (body == null) return false;
1730
- if (typeof body === "object") {
1731
- const err = body.error;
1732
- if (!err || typeof err !== "object") return false;
1733
- const code = err.code;
1734
- if (typeof code === "number") {
1735
- if (code === 429) return true;
1736
- if (code >= -32099 && code <= -32e3) return true;
1737
- if (code === -32603) return true;
1738
- }
1739
- const message = err.message;
1740
- return typeof message === "string" ? TRANSIENT_BODY_RE.test(message) : false;
1741
- }
1742
- return TRANSIENT_BODY_RE.test(String(body));
1743
- }
1744
- function createFailoverFetch(urls, options = {}) {
1745
- const endpoints = urls.filter((u) => Boolean(u));
1746
- if (endpoints.length === 0) {
1747
- throw new Error("createFailoverFetch: at least one RPC URL is required");
1748
- }
1749
- const doFetch = options.baseFetch ?? fetch;
1750
- const failover = async (_input, init) => {
1751
- let lastError;
1752
- for (let i = 0; i < endpoints.length; i++) {
1753
- const url = endpoints[i];
1754
- const isLast = i === endpoints.length - 1;
1755
- try {
1756
- const res = await doFetch(url, init);
1757
- const text = await res.text();
1758
- const rebuilt = () => new Response(text, { status: res.status, statusText: res.statusText, headers: res.headers });
1759
- if (isLast || !isTransientRpcError({ status: res.status, body: text })) {
1760
- return rebuilt();
1761
- }
1762
- options.onFailover?.({ url, status: res.status });
1763
- } catch (err) {
1764
- lastError = err;
1765
- if (isLast) throw err;
1766
- options.onFailover?.({ url, error: err });
1767
- }
1768
- }
1769
- throw lastError ?? new Error("createFailoverFetch: all endpoints failed");
1770
- };
1771
- return failover;
1772
- }
1773
-
1774
121
  // src/server/origin.ts
1775
122
  function isSameOrigin(req) {
1776
123
  const origin = req.headers.get("origin");
@@ -2317,69 +664,289 @@ function resolveSafeImageContentType(contentType) {
2317
664
  }
2318
665
  var MAX_IPFS_GATEWAY_RESPONSE_BYTES = 25 * 1024 * 1024;
2319
666
 
2320
- // src/errors.ts
2321
- var UserFacingError = class extends Error {
2322
- constructor(message) {
2323
- super(message);
2324
- this.name = "UserFacingError";
2325
- }
2326
- };
2327
-
667
+ Object.defineProperty(exports, "ApiClient", {
668
+ enumerable: true,
669
+ get: function () { return chunkZFRHADHR_cjs.ApiClient; }
670
+ });
671
+ Object.defineProperty(exports, "DEFAULT_CURRENCY", {
672
+ enumerable: true,
673
+ get: function () { return chunkZFRHADHR_cjs.DEFAULT_CURRENCY; }
674
+ });
675
+ Object.defineProperty(exports, "FeeConfigSchema", {
676
+ enumerable: true,
677
+ get: function () { return chunkZFRHADHR_cjs.FeeConfigSchema; }
678
+ });
679
+ Object.defineProperty(exports, "MedialaneApiError", {
680
+ enumerable: true,
681
+ get: function () { return chunkZFRHADHR_cjs.MedialaneApiError; }
682
+ });
683
+ Object.defineProperty(exports, "POLICY_REFUSAL_CODES", {
684
+ enumerable: true,
685
+ get: function () { return chunkZFRHADHR_cjs.POLICY_REFUSAL_CODES; }
686
+ });
687
+ Object.defineProperty(exports, "PasskeyCancelledError", {
688
+ enumerable: true,
689
+ get: function () { return chunkZFRHADHR_cjs.PasskeyCancelledError; }
690
+ });
691
+ Object.defineProperty(exports, "STARKNET_COLLECTION_1155_CLASS_HASH", {
692
+ enumerable: true,
693
+ get: function () { return chunkZFRHADHR_cjs.STARKNET_COLLECTION_1155_CLASS_HASH; }
694
+ });
695
+ Object.defineProperty(exports, "STARKNET_COLLECTION_1155_CONTRACT", {
696
+ enumerable: true,
697
+ get: function () { return chunkZFRHADHR_cjs.STARKNET_COLLECTION_1155_CONTRACT; }
698
+ });
699
+ Object.defineProperty(exports, "STARKNET_COLLECTION_1155_FACTORY_CLASS_HASH", {
700
+ enumerable: true,
701
+ get: function () { return chunkZFRHADHR_cjs.STARKNET_COLLECTION_1155_FACTORY_CLASS_HASH; }
702
+ });
703
+ Object.defineProperty(exports, "STARKNET_COLLECTION_1155_START_BLOCK", {
704
+ enumerable: true,
705
+ get: function () { return chunkZFRHADHR_cjs.STARKNET_COLLECTION_1155_START_BLOCK; }
706
+ });
707
+ Object.defineProperty(exports, "STARKNET_COLLECTION_721_CONTRACT", {
708
+ enumerable: true,
709
+ get: function () { return chunkZFRHADHR_cjs.STARKNET_COLLECTION_721_CONTRACT; }
710
+ });
711
+ Object.defineProperty(exports, "STARKNET_COLLECTION_721_START_BLOCK", {
712
+ enumerable: true,
713
+ get: function () { return chunkZFRHADHR_cjs.STARKNET_COLLECTION_721_START_BLOCK; }
714
+ });
715
+ Object.defineProperty(exports, "STARKNET_CREATOR_COIN_CLASS_HASH", {
716
+ enumerable: true,
717
+ get: function () { return chunkZFRHADHR_cjs.STARKNET_CREATOR_COIN_CLASS_HASH; }
718
+ });
719
+ Object.defineProperty(exports, "STARKNET_CREATOR_COIN_EKUBO_LAUNCHER", {
720
+ enumerable: true,
721
+ get: function () { return chunkZFRHADHR_cjs.STARKNET_CREATOR_COIN_EKUBO_LAUNCHER; }
722
+ });
723
+ Object.defineProperty(exports, "STARKNET_CREATOR_COIN_FACTORY_CLASS_HASH", {
724
+ enumerable: true,
725
+ get: function () { return chunkZFRHADHR_cjs.STARKNET_CREATOR_COIN_FACTORY_CLASS_HASH; }
726
+ });
727
+ Object.defineProperty(exports, "STARKNET_CREATOR_COIN_FACTORY_CONTRACT", {
728
+ enumerable: true,
729
+ get: function () { return chunkZFRHADHR_cjs.STARKNET_CREATOR_COIN_FACTORY_CONTRACT; }
730
+ });
731
+ Object.defineProperty(exports, "STARKNET_CREATOR_COIN_START_BLOCK", {
732
+ enumerable: true,
733
+ get: function () { return chunkZFRHADHR_cjs.STARKNET_CREATOR_COIN_START_BLOCK; }
734
+ });
735
+ Object.defineProperty(exports, "STARKNET_DATA_TOKENIZATION_721_CONTRACT", {
736
+ enumerable: true,
737
+ get: function () { return chunkZFRHADHR_cjs.STARKNET_DATA_TOKENIZATION_721_CONTRACT; }
738
+ });
739
+ Object.defineProperty(exports, "STARKNET_DROP_COLLECTION_CLASS_HASH", {
740
+ enumerable: true,
741
+ get: function () { return chunkZFRHADHR_cjs.STARKNET_DROP_COLLECTION_CLASS_HASH; }
742
+ });
743
+ Object.defineProperty(exports, "STARKNET_DROP_FACTORY_CONTRACT", {
744
+ enumerable: true,
745
+ get: function () { return chunkZFRHADHR_cjs.STARKNET_DROP_FACTORY_CONTRACT; }
746
+ });
747
+ Object.defineProperty(exports, "STARKNET_EKUBO_CORE", {
748
+ enumerable: true,
749
+ get: function () { return chunkZFRHADHR_cjs.STARKNET_EKUBO_CORE; }
750
+ });
751
+ Object.defineProperty(exports, "STARKNET_GENESIS_MINT_CONTRACT", {
752
+ enumerable: true,
753
+ get: function () { return chunkZFRHADHR_cjs.STARKNET_GENESIS_MINT_CONTRACT; }
754
+ });
755
+ Object.defineProperty(exports, "STARKNET_GENESIS_NFT_URI", {
756
+ enumerable: true,
757
+ get: function () { return chunkZFRHADHR_cjs.STARKNET_GENESIS_NFT_URI; }
758
+ });
759
+ Object.defineProperty(exports, "STARKNET_IPCOLLECTION_CLASS_HASH", {
760
+ enumerable: true,
761
+ get: function () { return chunkZFRHADHR_cjs.STARKNET_IPCOLLECTION_CLASS_HASH; }
762
+ });
763
+ Object.defineProperty(exports, "STARKNET_IPNFT_CLASS_HASH", {
764
+ enumerable: true,
765
+ get: function () { return chunkZFRHADHR_cjs.STARKNET_IPNFT_CLASS_HASH; }
766
+ });
767
+ Object.defineProperty(exports, "STARKNET_IP_CLUB_COLLECTION_CLASS_HASH", {
768
+ enumerable: true,
769
+ get: function () { return chunkZFRHADHR_cjs.STARKNET_IP_CLUB_COLLECTION_CLASS_HASH; }
770
+ });
771
+ Object.defineProperty(exports, "STARKNET_IP_CLUB_FACTORY_CONTRACT", {
772
+ enumerable: true,
773
+ get: function () { return chunkZFRHADHR_cjs.STARKNET_IP_CLUB_FACTORY_CONTRACT; }
774
+ });
775
+ Object.defineProperty(exports, "STARKNET_IP_SPONSORSHIP_CLASS_HASH", {
776
+ enumerable: true,
777
+ get: function () { return chunkZFRHADHR_cjs.STARKNET_IP_SPONSORSHIP_CLASS_HASH; }
778
+ });
779
+ Object.defineProperty(exports, "STARKNET_IP_SPONSORSHIP_CONTRACT", {
780
+ enumerable: true,
781
+ get: function () { return chunkZFRHADHR_cjs.STARKNET_IP_SPONSORSHIP_CONTRACT; }
782
+ });
783
+ Object.defineProperty(exports, "STARKNET_IP_TICKETS_FACTORY_CONTRACT", {
784
+ enumerable: true,
785
+ get: function () { return chunkZFRHADHR_cjs.STARKNET_IP_TICKETS_FACTORY_CONTRACT; }
786
+ });
787
+ Object.defineProperty(exports, "STARKNET_IP_TICKET_COLLECTION_CLASS_HASH", {
788
+ enumerable: true,
789
+ get: function () { return chunkZFRHADHR_cjs.STARKNET_IP_TICKET_COLLECTION_CLASS_HASH; }
790
+ });
791
+ Object.defineProperty(exports, "STARKNET_MARKETPLACE_1155_CLASS_HASH", {
792
+ enumerable: true,
793
+ get: function () { return chunkZFRHADHR_cjs.STARKNET_MARKETPLACE_1155_CLASS_HASH; }
794
+ });
795
+ Object.defineProperty(exports, "STARKNET_MARKETPLACE_1155_CONTRACT", {
796
+ enumerable: true,
797
+ get: function () { return chunkZFRHADHR_cjs.STARKNET_MARKETPLACE_1155_CONTRACT; }
798
+ });
799
+ Object.defineProperty(exports, "STARKNET_MARKETPLACE_1155_START_BLOCK", {
800
+ enumerable: true,
801
+ get: function () { return chunkZFRHADHR_cjs.STARKNET_MARKETPLACE_1155_START_BLOCK; }
802
+ });
803
+ Object.defineProperty(exports, "STARKNET_MARKETPLACE_721_CLASS_HASH", {
804
+ enumerable: true,
805
+ get: function () { return chunkZFRHADHR_cjs.STARKNET_MARKETPLACE_721_CLASS_HASH; }
806
+ });
807
+ Object.defineProperty(exports, "STARKNET_MARKETPLACE_721_CONTRACT", {
808
+ enumerable: true,
809
+ get: function () { return chunkZFRHADHR_cjs.STARKNET_MARKETPLACE_721_CONTRACT; }
810
+ });
811
+ Object.defineProperty(exports, "STARKNET_MARKETPLACE_721_START_BLOCK", {
812
+ enumerable: true,
813
+ get: function () { return chunkZFRHADHR_cjs.STARKNET_MARKETPLACE_721_START_BLOCK; }
814
+ });
815
+ Object.defineProperty(exports, "STARKNET_NFTCOMMENTS_CONTRACT", {
816
+ enumerable: true,
817
+ get: function () { return chunkZFRHADHR_cjs.STARKNET_NFTCOMMENTS_CONTRACT; }
818
+ });
819
+ Object.defineProperty(exports, "STARKNET_POP_COLLECTION_CLASS_HASH", {
820
+ enumerable: true,
821
+ get: function () { return chunkZFRHADHR_cjs.STARKNET_POP_COLLECTION_CLASS_HASH; }
822
+ });
823
+ Object.defineProperty(exports, "STARKNET_POP_FACTORY_CONTRACT", {
824
+ enumerable: true,
825
+ get: function () { return chunkZFRHADHR_cjs.STARKNET_POP_FACTORY_CONTRACT; }
826
+ });
827
+ Object.defineProperty(exports, "SUPPORTED_TOKENS", {
828
+ enumerable: true,
829
+ get: function () { return chunkZFRHADHR_cjs.SUPPORTED_TOKENS; }
830
+ });
831
+ Object.defineProperty(exports, "UserFacingError", {
832
+ enumerable: true,
833
+ get: function () { return chunkZFRHADHR_cjs.UserFacingError; }
834
+ });
835
+ Object.defineProperty(exports, "createFailoverFetch", {
836
+ enumerable: true,
837
+ get: function () { return chunkZFRHADHR_cjs.createFailoverFetch; }
838
+ });
839
+ Object.defineProperty(exports, "encodeU256", {
840
+ enumerable: true,
841
+ get: function () { return chunkZFRHADHR_cjs.encodeU256; }
842
+ });
843
+ Object.defineProperty(exports, "formatAmount", {
844
+ enumerable: true,
845
+ get: function () { return chunkZFRHADHR_cjs.formatAmount; }
846
+ });
847
+ Object.defineProperty(exports, "getListableTokens", {
848
+ enumerable: true,
849
+ get: function () { return chunkZFRHADHR_cjs.getListableTokens; }
850
+ });
851
+ Object.defineProperty(exports, "getService", {
852
+ enumerable: true,
853
+ get: function () { return chunkZFRHADHR_cjs.getService; }
854
+ });
855
+ Object.defineProperty(exports, "getServicesByCapability", {
856
+ enumerable: true,
857
+ get: function () { return chunkZFRHADHR_cjs.getServicesByCapability; }
858
+ });
859
+ Object.defineProperty(exports, "getTokenByAddress", {
860
+ enumerable: true,
861
+ get: function () { return chunkZFRHADHR_cjs.getTokenByAddress; }
862
+ });
863
+ Object.defineProperty(exports, "getTokenBySymbol", {
864
+ enumerable: true,
865
+ get: function () { return chunkZFRHADHR_cjs.getTokenBySymbol; }
866
+ });
867
+ Object.defineProperty(exports, "hasCapability", {
868
+ enumerable: true,
869
+ get: function () { return chunkZFRHADHR_cjs.hasCapability; }
870
+ });
871
+ Object.defineProperty(exports, "isPolicyRefusal", {
872
+ enumerable: true,
873
+ get: function () { return chunkZFRHADHR_cjs.isPolicyRefusal; }
874
+ });
875
+ Object.defineProperty(exports, "isServiceId", {
876
+ enumerable: true,
877
+ get: function () { return chunkZFRHADHR_cjs.isServiceId; }
878
+ });
879
+ Object.defineProperty(exports, "isTransientRpcError", {
880
+ enumerable: true,
881
+ get: function () { return chunkZFRHADHR_cjs.isTransientRpcError; }
882
+ });
883
+ Object.defineProperty(exports, "listServices", {
884
+ enumerable: true,
885
+ get: function () { return chunkZFRHADHR_cjs.listServices; }
886
+ });
887
+ Object.defineProperty(exports, "normalizeAddress", {
888
+ enumerable: true,
889
+ get: function () { return chunkZFRHADHR_cjs.normalizeAddress; }
890
+ });
891
+ Object.defineProperty(exports, "normalizeHash", {
892
+ enumerable: true,
893
+ get: function () { return chunkZFRHADHR_cjs.normalizeHash; }
894
+ });
895
+ Object.defineProperty(exports, "parseAmount", {
896
+ enumerable: true,
897
+ get: function () { return chunkZFRHADHR_cjs.parseAmount; }
898
+ });
899
+ Object.defineProperty(exports, "resolveAppFeeConfig", {
900
+ enumerable: true,
901
+ get: function () { return chunkZFRHADHR_cjs.resolveAppFeeConfig; }
902
+ });
903
+ Object.defineProperty(exports, "resolveConfig", {
904
+ enumerable: true,
905
+ get: function () { return chunkZFRHADHR_cjs.resolveConfig; }
906
+ });
907
+ Object.defineProperty(exports, "resolveFeeConfig", {
908
+ enumerable: true,
909
+ get: function () { return chunkZFRHADHR_cjs.resolveFeeConfig; }
910
+ });
911
+ Object.defineProperty(exports, "shortenAddress", {
912
+ enumerable: true,
913
+ get: function () { return chunkZFRHADHR_cjs.shortenAddress; }
914
+ });
915
+ Object.defineProperty(exports, "stringifyBigInts", {
916
+ enumerable: true,
917
+ get: function () { return chunkZFRHADHR_cjs.stringifyBigInts; }
918
+ });
919
+ Object.defineProperty(exports, "u256ToBigInt", {
920
+ enumerable: true,
921
+ get: function () { return chunkZFRHADHR_cjs.u256ToBigInt; }
922
+ });
923
+ Object.defineProperty(exports, "CHAINS", {
924
+ enumerable: true,
925
+ get: function () { return chunkOUPVVMLK_cjs.CHAINS; }
926
+ });
927
+ Object.defineProperty(exports, "DEFAULT_CHAIN", {
928
+ enumerable: true,
929
+ get: function () { return chunkOUPVVMLK_cjs.DEFAULT_CHAIN; }
930
+ });
931
+ Object.defineProperty(exports, "getCoordinates", {
932
+ enumerable: true,
933
+ get: function () { return chunkOUPVVMLK_cjs.getCoordinates; }
934
+ });
935
+ Object.defineProperty(exports, "getStarknetCoordinates", {
936
+ enumerable: true,
937
+ get: function () { return chunkOUPVVMLK_cjs.getStarknetCoordinates; }
938
+ });
2328
939
  exports.ACCOUNT_SESSION_TTL_SECONDS = ACCOUNT_SESSION_TTL_SECONDS;
2329
940
  exports.ALLOWED_IMAGE_CONTENT_TYPES = ALLOWED_IMAGE_CONTENT_TYPES;
2330
- exports.ApiClient = ApiClient;
2331
- exports.CHAINS = CHAINS;
2332
- exports.DEFAULT_CHAIN = DEFAULT_CHAIN;
2333
- exports.DEFAULT_CURRENCY = DEFAULT_CURRENCY;
2334
- exports.FeeConfigSchema = FeeConfigSchema;
2335
941
  exports.IDENTITY_TTL_SECONDS = IDENTITY_TTL_SECONDS;
2336
942
  exports.IPFS_SAFE_CONTENT_TYPE_PREFIXES = IPFS_SAFE_CONTENT_TYPE_PREFIXES;
2337
943
  exports.MAX_IMAGE_PROXY_BYTES = MAX_IMAGE_PROXY_BYTES;
2338
944
  exports.MAX_IMAGE_REDIRECTS = MAX_IMAGE_REDIRECTS;
2339
945
  exports.MAX_IPFS_GATEWAY_RESPONSE_BYTES = MAX_IPFS_GATEWAY_RESPONSE_BYTES;
2340
- exports.MedialaneApiError = MedialaneApiError;
2341
946
  exports.OPEN_LICENSES = OPEN_LICENSES;
2342
- exports.POLICY_REFUSAL_CODES = POLICY_REFUSAL_CODES;
2343
- exports.PasskeyCancelledError = PasskeyCancelledError;
2344
947
  exports.RESERVED_TRAITS = RESERVED_TRAITS;
2345
948
  exports.RunRequestError = RunRequestError;
2346
- exports.STARKNET_COLLECTION_1155_CLASS_HASH = STARKNET_COLLECTION_1155_CLASS_HASH;
2347
- exports.STARKNET_COLLECTION_1155_CONTRACT = STARKNET_COLLECTION_1155_CONTRACT;
2348
- exports.STARKNET_COLLECTION_1155_FACTORY_CLASS_HASH = STARKNET_COLLECTION_1155_FACTORY_CLASS_HASH;
2349
- exports.STARKNET_COLLECTION_1155_START_BLOCK = STARKNET_COLLECTION_1155_START_BLOCK;
2350
- exports.STARKNET_COLLECTION_721_CONTRACT = STARKNET_COLLECTION_721_CONTRACT;
2351
- exports.STARKNET_COLLECTION_721_START_BLOCK = STARKNET_COLLECTION_721_START_BLOCK;
2352
- exports.STARKNET_CREATOR_COIN_CLASS_HASH = STARKNET_CREATOR_COIN_CLASS_HASH;
2353
- exports.STARKNET_CREATOR_COIN_EKUBO_LAUNCHER = STARKNET_CREATOR_COIN_EKUBO_LAUNCHER;
2354
- exports.STARKNET_CREATOR_COIN_FACTORY_CLASS_HASH = STARKNET_CREATOR_COIN_FACTORY_CLASS_HASH;
2355
- exports.STARKNET_CREATOR_COIN_FACTORY_CONTRACT = STARKNET_CREATOR_COIN_FACTORY_CONTRACT;
2356
- exports.STARKNET_CREATOR_COIN_START_BLOCK = STARKNET_CREATOR_COIN_START_BLOCK;
2357
- exports.STARKNET_DATA_TOKENIZATION_721_CONTRACT = STARKNET_DATA_TOKENIZATION_721_CONTRACT;
2358
- exports.STARKNET_DROP_COLLECTION_CLASS_HASH = STARKNET_DROP_COLLECTION_CLASS_HASH;
2359
- exports.STARKNET_DROP_FACTORY_CONTRACT = STARKNET_DROP_FACTORY_CONTRACT;
2360
- exports.STARKNET_EKUBO_CORE = STARKNET_EKUBO_CORE;
2361
- exports.STARKNET_GENESIS_MINT_CONTRACT = STARKNET_GENESIS_MINT_CONTRACT;
2362
- exports.STARKNET_GENESIS_NFT_URI = STARKNET_GENESIS_NFT_URI;
2363
- exports.STARKNET_IPCOLLECTION_CLASS_HASH = STARKNET_IPCOLLECTION_CLASS_HASH;
2364
- exports.STARKNET_IPNFT_CLASS_HASH = STARKNET_IPNFT_CLASS_HASH;
2365
- exports.STARKNET_IP_CLUB_COLLECTION_CLASS_HASH = STARKNET_IP_CLUB_COLLECTION_CLASS_HASH;
2366
- exports.STARKNET_IP_CLUB_FACTORY_CONTRACT = STARKNET_IP_CLUB_FACTORY_CONTRACT;
2367
- exports.STARKNET_IP_SPONSORSHIP_CLASS_HASH = STARKNET_IP_SPONSORSHIP_CLASS_HASH;
2368
- exports.STARKNET_IP_SPONSORSHIP_CONTRACT = STARKNET_IP_SPONSORSHIP_CONTRACT;
2369
- exports.STARKNET_IP_TICKETS_FACTORY_CONTRACT = STARKNET_IP_TICKETS_FACTORY_CONTRACT;
2370
- exports.STARKNET_IP_TICKET_COLLECTION_CLASS_HASH = STARKNET_IP_TICKET_COLLECTION_CLASS_HASH;
2371
- exports.STARKNET_MARKETPLACE_1155_CLASS_HASH = STARKNET_MARKETPLACE_1155_CLASS_HASH;
2372
- exports.STARKNET_MARKETPLACE_1155_CONTRACT = STARKNET_MARKETPLACE_1155_CONTRACT;
2373
- exports.STARKNET_MARKETPLACE_1155_START_BLOCK = STARKNET_MARKETPLACE_1155_START_BLOCK;
2374
- exports.STARKNET_MARKETPLACE_721_CLASS_HASH = STARKNET_MARKETPLACE_721_CLASS_HASH;
2375
- exports.STARKNET_MARKETPLACE_721_CONTRACT = STARKNET_MARKETPLACE_721_CONTRACT;
2376
- exports.STARKNET_MARKETPLACE_721_START_BLOCK = STARKNET_MARKETPLACE_721_START_BLOCK;
2377
- exports.STARKNET_NFTCOMMENTS_CONTRACT = STARKNET_NFTCOMMENTS_CONTRACT;
2378
- exports.STARKNET_POP_COLLECTION_CLASS_HASH = STARKNET_POP_COLLECTION_CLASS_HASH;
2379
- exports.STARKNET_POP_FACTORY_CONTRACT = STARKNET_POP_FACTORY_CONTRACT;
2380
- exports.SUPPORTED_TOKENS = SUPPORTED_TOKENS;
2381
949
  exports.SUPPORTED_URL_CHAINS = SUPPORTED_URL_CHAINS;
2382
- exports.UserFacingError = UserFacingError;
2383
950
  exports.assetHref = assetHref;
2384
951
  exports.buildAssetMetadata = buildAssetMetadata;
2385
952
  exports.chainFromSlug = chainFromSlug;
@@ -2387,47 +954,23 @@ exports.chainSlug = chainSlug;
2387
954
  exports.coinHref = coinHref;
2388
955
  exports.collectionHref = collectionHref;
2389
956
  exports.createBackendProxyHandler = createBackendProxyHandler;
2390
- exports.createFailoverFetch = createFailoverFetch;
2391
957
  exports.createImageProxyHandler = createImageProxyHandler;
2392
958
  exports.createLaunchpadRunsClient = createLaunchpadRunsClient;
2393
959
  exports.createRpcProxyHandler = createRpcProxyHandler;
2394
- exports.encodeU256 = encodeU256;
2395
- exports.formatAmount = formatAmount;
2396
960
  exports.getBackendSignedUrl = getBackendSignedUrl;
2397
- exports.getCoordinates = getCoordinates;
2398
961
  exports.getDerivativesTerm = getDerivativesTerm;
2399
- exports.getListableTokens = getListableTokens;
2400
- exports.getService = getService;
2401
- exports.getServicesByCapability = getServicesByCapability;
2402
- exports.getStarknetCoordinates = getStarknetCoordinates;
2403
- exports.getTokenByAddress = getTokenByAddress;
2404
- exports.getTokenBySymbol = getTokenBySymbol;
2405
- exports.hasCapability = hasCapability;
2406
962
  exports.isCertificateEmissionRun = isCertificateEmissionRun;
2407
963
  exports.isDataTokenizationRun = isDataTokenizationRun;
2408
- exports.isPolicyRefusal = isPolicyRefusal;
2409
964
  exports.isPrivateHost = isPrivateHost;
2410
965
  exports.isPrivateOrInsecureUrl = isPrivateOrInsecureUrl;
2411
966
  exports.isSameOrigin = isSameOrigin;
2412
- exports.isServiceId = isServiceId;
2413
967
  exports.isTicketingRun = isTicketingRun;
2414
- exports.isTransientRpcError = isTransientRpcError;
2415
968
  exports.isValidIpfsCidPath = isValidIpfsCidPath;
2416
969
  exports.issueAccountSessionToken = issueAccountSessionToken;
2417
970
  exports.issueSiwsToken = issueSiwsToken;
2418
- exports.listServices = listServices;
2419
- exports.normalizeAddress = normalizeAddress;
2420
- exports.normalizeHash = normalizeHash;
2421
- exports.parseAmount = parseAmount;
2422
971
  exports.readBodyWithCap = readBodyWithCap;
2423
- exports.resolveAppFeeConfig = resolveAppFeeConfig;
2424
- exports.resolveConfig = resolveConfig;
2425
- exports.resolveFeeConfig = resolveFeeConfig;
2426
972
  exports.resolveRemixPolicy = resolveRemixPolicy;
2427
973
  exports.resolveSafeImageContentType = resolveSafeImageContentType;
2428
- exports.shortenAddress = shortenAddress;
2429
- exports.stringifyBigInts = stringifyBigInts;
2430
- exports.u256ToBigInt = u256ToBigInt;
2431
974
  exports.uploadDirectoryToBackend = uploadDirectoryToBackend;
2432
975
  exports.uploadFileToBackend = uploadFileToBackend;
2433
976
  exports.uploadJsonToBackend = uploadJsonToBackend;