@medialane/sdk 0.85.13 → 0.87.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 +35 -121
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +13 -4
- package/dist/index.d.ts +13 -4
- package/dist/index.js +34 -121
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -401,19 +401,28 @@ interface FailoverFetchOptions {
|
|
|
401
401
|
}
|
|
402
402
|
declare function createFailoverFetch(urls: string[], options?: FailoverFetchOptions): typeof fetch;
|
|
403
403
|
|
|
404
|
-
declare const DEFAULT_STARKNET_RPC_METHODS: readonly string[];
|
|
405
404
|
interface RpcProxyConfig {
|
|
406
|
-
rpcUrls: string[];
|
|
407
|
-
allowedMethods?: readonly string[];
|
|
408
405
|
backendUrl: string;
|
|
409
406
|
apiKey: string | undefined;
|
|
410
407
|
checkRateLimit: (ip: string) => boolean;
|
|
408
|
+
fetchImpl?: typeof fetch;
|
|
411
409
|
}
|
|
412
410
|
declare function createRpcProxyHandler(config: RpcProxyConfig): (req: Request) => Promise<Response>;
|
|
413
411
|
|
|
412
|
+
interface BackendProxyConfig {
|
|
413
|
+
path: string;
|
|
414
|
+
backendUrl: string;
|
|
415
|
+
apiKey: string | undefined;
|
|
416
|
+
checkRateLimit: (ip: string) => boolean;
|
|
417
|
+
fetchImpl?: typeof fetch;
|
|
418
|
+
}
|
|
419
|
+
declare function createBackendProxyHandler(config: BackendProxyConfig): (req: Request) => Promise<Response>;
|
|
420
|
+
|
|
414
421
|
declare function createRateLimiter(windowMs: number, max: number): (key: string) => boolean;
|
|
415
422
|
declare function requestIp(req: Request): string;
|
|
416
423
|
|
|
424
|
+
declare function isSameOrigin(req: Request): boolean;
|
|
425
|
+
|
|
417
426
|
type AssetAttribute = {
|
|
418
427
|
trait_type: string;
|
|
419
428
|
value: string;
|
|
@@ -454,4 +463,4 @@ declare const IPFS_SAFE_CONTENT_TYPE_PREFIXES: readonly ["image/jpeg", "image/pn
|
|
|
454
463
|
declare function resolveSafeImageContentType(contentType: string): string;
|
|
455
464
|
declare const MAX_IPFS_GATEWAY_RESPONSE_BYTES: number;
|
|
456
465
|
|
|
457
|
-
export { type AssetAttribute, type AssetMetadata, type BuildAssetMetadataInput, Chain, DEFAULT_CURRENCY,
|
|
466
|
+
export { type AssetAttribute, type AssetMetadata, type BackendProxyConfig, type BuildAssetMetadataInput, Chain, DEFAULT_CURRENCY, type FailoverFetchOptions, IPFS_SAFE_CONTENT_TYPE_PREFIXES, MAX_IPFS_GATEWAY_RESPONSE_BYTES, PUBLIC_RPC_FALLBACKS, RESERVED_TRAITS, type RpcProxyConfig, STARKNET_COLLECTION_1155_CLASS_HASH, STARKNET_COLLECTION_1155_CONTRACT, STARKNET_COLLECTION_1155_FACTORY_CLASS_HASH, STARKNET_COLLECTION_1155_START_BLOCK, STARKNET_COLLECTION_721_CONTRACT, STARKNET_COLLECTION_721_START_BLOCK, STARKNET_CREATOR_COIN_CLASS_HASH, STARKNET_CREATOR_COIN_EKUBO_LAUNCHER, STARKNET_CREATOR_COIN_FACTORY_CLASS_HASH, STARKNET_CREATOR_COIN_FACTORY_CONTRACT, STARKNET_CREATOR_COIN_START_BLOCK, STARKNET_DROP_COLLECTION_CLASS_HASH, STARKNET_DROP_FACTORY_CONTRACT, STARKNET_EKUBO_CORE, STARKNET_IPCOLLECTION_CLASS_HASH, STARKNET_IPNFT_CLASS_HASH, STARKNET_IP_CLUB_COLLECTION_CLASS_HASH, STARKNET_IP_CLUB_FACTORY_CONTRACT, STARKNET_IP_SPONSORSHIP_CLASS_HASH, STARKNET_IP_SPONSORSHIP_CONTRACT, STARKNET_IP_TICKETS_FACTORY_CONTRACT, STARKNET_IP_TICKET_COLLECTION_CLASS_HASH, STARKNET_MARKETPLACE_1155_CLASS_HASH, STARKNET_MARKETPLACE_1155_CONTRACT, STARKNET_MARKETPLACE_1155_START_BLOCK, STARKNET_MARKETPLACE_721_CLASS_HASH, STARKNET_MARKETPLACE_721_CONTRACT, STARKNET_MARKETPLACE_721_START_BLOCK, STARKNET_NFTCOMMENTS_CONTRACT, STARKNET_POP_COLLECTION_CLASS_HASH, STARKNET_POP_FACTORY_CONTRACT, SUPPORTED_TOKENS, SUPPORTED_URL_CHAINS, ServiceCapability, ServiceDefinition, type ServiceId, type SupportedToken, type SupportedTokenSymbol, assetHref, buildAssetMetadata, chainFromSlug, chainSlug, coinHref, collectionHref, createBackendProxyHandler, createFailoverFetch, createRateLimiter, createRpcProxyHandler, encodeU256, formatAmount, getListableTokens, getService, getServicesByCapability, getTokenByAddress, getTokenBySymbol, hasCapability, isSameOrigin, isServiceId, isTransientRpcError, isValidIpfsCidPath, listServices, normalizeAddress, normalizeHash, parseAmount, requestIp, resolveSafeImageContentType, shortenAddress, stringifyBigInts, u256ToBigInt };
|
package/dist/index.d.ts
CHANGED
|
@@ -401,19 +401,28 @@ interface FailoverFetchOptions {
|
|
|
401
401
|
}
|
|
402
402
|
declare function createFailoverFetch(urls: string[], options?: FailoverFetchOptions): typeof fetch;
|
|
403
403
|
|
|
404
|
-
declare const DEFAULT_STARKNET_RPC_METHODS: readonly string[];
|
|
405
404
|
interface RpcProxyConfig {
|
|
406
|
-
rpcUrls: string[];
|
|
407
|
-
allowedMethods?: readonly string[];
|
|
408
405
|
backendUrl: string;
|
|
409
406
|
apiKey: string | undefined;
|
|
410
407
|
checkRateLimit: (ip: string) => boolean;
|
|
408
|
+
fetchImpl?: typeof fetch;
|
|
411
409
|
}
|
|
412
410
|
declare function createRpcProxyHandler(config: RpcProxyConfig): (req: Request) => Promise<Response>;
|
|
413
411
|
|
|
412
|
+
interface BackendProxyConfig {
|
|
413
|
+
path: string;
|
|
414
|
+
backendUrl: string;
|
|
415
|
+
apiKey: string | undefined;
|
|
416
|
+
checkRateLimit: (ip: string) => boolean;
|
|
417
|
+
fetchImpl?: typeof fetch;
|
|
418
|
+
}
|
|
419
|
+
declare function createBackendProxyHandler(config: BackendProxyConfig): (req: Request) => Promise<Response>;
|
|
420
|
+
|
|
414
421
|
declare function createRateLimiter(windowMs: number, max: number): (key: string) => boolean;
|
|
415
422
|
declare function requestIp(req: Request): string;
|
|
416
423
|
|
|
424
|
+
declare function isSameOrigin(req: Request): boolean;
|
|
425
|
+
|
|
417
426
|
type AssetAttribute = {
|
|
418
427
|
trait_type: string;
|
|
419
428
|
value: string;
|
|
@@ -454,4 +463,4 @@ declare const IPFS_SAFE_CONTENT_TYPE_PREFIXES: readonly ["image/jpeg", "image/pn
|
|
|
454
463
|
declare function resolveSafeImageContentType(contentType: string): string;
|
|
455
464
|
declare const MAX_IPFS_GATEWAY_RESPONSE_BYTES: number;
|
|
456
465
|
|
|
457
|
-
export { type AssetAttribute, type AssetMetadata, type BuildAssetMetadataInput, Chain, DEFAULT_CURRENCY,
|
|
466
|
+
export { type AssetAttribute, type AssetMetadata, type BackendProxyConfig, type BuildAssetMetadataInput, Chain, DEFAULT_CURRENCY, type FailoverFetchOptions, IPFS_SAFE_CONTENT_TYPE_PREFIXES, MAX_IPFS_GATEWAY_RESPONSE_BYTES, PUBLIC_RPC_FALLBACKS, RESERVED_TRAITS, type RpcProxyConfig, STARKNET_COLLECTION_1155_CLASS_HASH, STARKNET_COLLECTION_1155_CONTRACT, STARKNET_COLLECTION_1155_FACTORY_CLASS_HASH, STARKNET_COLLECTION_1155_START_BLOCK, STARKNET_COLLECTION_721_CONTRACT, STARKNET_COLLECTION_721_START_BLOCK, STARKNET_CREATOR_COIN_CLASS_HASH, STARKNET_CREATOR_COIN_EKUBO_LAUNCHER, STARKNET_CREATOR_COIN_FACTORY_CLASS_HASH, STARKNET_CREATOR_COIN_FACTORY_CONTRACT, STARKNET_CREATOR_COIN_START_BLOCK, STARKNET_DROP_COLLECTION_CLASS_HASH, STARKNET_DROP_FACTORY_CONTRACT, STARKNET_EKUBO_CORE, STARKNET_IPCOLLECTION_CLASS_HASH, STARKNET_IPNFT_CLASS_HASH, STARKNET_IP_CLUB_COLLECTION_CLASS_HASH, STARKNET_IP_CLUB_FACTORY_CONTRACT, STARKNET_IP_SPONSORSHIP_CLASS_HASH, STARKNET_IP_SPONSORSHIP_CONTRACT, STARKNET_IP_TICKETS_FACTORY_CONTRACT, STARKNET_IP_TICKET_COLLECTION_CLASS_HASH, STARKNET_MARKETPLACE_1155_CLASS_HASH, STARKNET_MARKETPLACE_1155_CONTRACT, STARKNET_MARKETPLACE_1155_START_BLOCK, STARKNET_MARKETPLACE_721_CLASS_HASH, STARKNET_MARKETPLACE_721_CONTRACT, STARKNET_MARKETPLACE_721_START_BLOCK, STARKNET_NFTCOMMENTS_CONTRACT, STARKNET_POP_COLLECTION_CLASS_HASH, STARKNET_POP_FACTORY_CONTRACT, SUPPORTED_TOKENS, SUPPORTED_URL_CHAINS, ServiceCapability, ServiceDefinition, type ServiceId, type SupportedToken, type SupportedTokenSymbol, assetHref, buildAssetMetadata, chainFromSlug, chainSlug, coinHref, collectionHref, createBackendProxyHandler, createFailoverFetch, createRateLimiter, createRpcProxyHandler, encodeU256, formatAmount, getListableTokens, getService, getServicesByCapability, getTokenByAddress, getTokenBySymbol, hasCapability, isSameOrigin, isServiceId, isTransientRpcError, isValidIpfsCidPath, listServices, normalizeAddress, normalizeHash, parseAmount, requestIp, resolveSafeImageContentType, shortenAddress, stringifyBigInts, u256ToBigInt };
|
package/dist/index.js
CHANGED
|
@@ -1306,48 +1306,7 @@ function requestIp(req) {
|
|
|
1306
1306
|
return req.headers.get("x-forwarded-for")?.split(",")[0].trim() ?? "unknown";
|
|
1307
1307
|
}
|
|
1308
1308
|
|
|
1309
|
-
// src/server/
|
|
1310
|
-
var DEFAULT_STARKNET_RPC_METHODS = [
|
|
1311
|
-
"starknet_call",
|
|
1312
|
-
"starknet_addInvokeTransaction",
|
|
1313
|
-
"starknet_getTransactionReceipt",
|
|
1314
|
-
"starknet_getTransactionStatus",
|
|
1315
|
-
"starknet_getTransactionByHash",
|
|
1316
|
-
"starknet_getTransaction",
|
|
1317
|
-
"starknet_getBlockWithReceipts",
|
|
1318
|
-
"starknet_estimateFee",
|
|
1319
|
-
"starknet_getNonce",
|
|
1320
|
-
"starknet_simulateTransactions",
|
|
1321
|
-
"starknet_specVersion",
|
|
1322
|
-
"starknet_chainId",
|
|
1323
|
-
"starknet_blockNumber",
|
|
1324
|
-
"starknet_blockHashAndNumber",
|
|
1325
|
-
"starknet_getClassAt",
|
|
1326
|
-
"starknet_getClass",
|
|
1327
|
-
"starknet_getClassHashAt",
|
|
1328
|
-
"starknet_getStorageAt",
|
|
1329
|
-
"starknet_getBlockWithTxHashes",
|
|
1330
|
-
"starknet_getBlockWithTxs",
|
|
1331
|
-
"starknet_getEvents"
|
|
1332
|
-
];
|
|
1333
|
-
function isAllowedMethod(body, allowed) {
|
|
1334
|
-
if (Array.isArray(body)) {
|
|
1335
|
-
return body.every((item) => isAllowedMethod(item, allowed));
|
|
1336
|
-
}
|
|
1337
|
-
if (body && typeof body === "object") {
|
|
1338
|
-
const method = body.method;
|
|
1339
|
-
return typeof method === "string" && allowed.has(method);
|
|
1340
|
-
}
|
|
1341
|
-
return false;
|
|
1342
|
-
}
|
|
1343
|
-
function extractMethod(body) {
|
|
1344
|
-
if (Array.isArray(body)) return "batch";
|
|
1345
|
-
if (body && typeof body === "object") {
|
|
1346
|
-
const method = body.method;
|
|
1347
|
-
if (typeof method === "string") return method;
|
|
1348
|
-
}
|
|
1349
|
-
return "unknown";
|
|
1350
|
-
}
|
|
1309
|
+
// src/server/origin.ts
|
|
1351
1310
|
function isSameOrigin(req) {
|
|
1352
1311
|
const origin = req.headers.get("origin");
|
|
1353
1312
|
if (!origin) return true;
|
|
@@ -1358,98 +1317,52 @@ function isSameOrigin(req) {
|
|
|
1358
1317
|
return false;
|
|
1359
1318
|
}
|
|
1360
1319
|
}
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
if (!apiKey) {
|
|
1366
|
-
console.error("[rpc-proxy] no API key configured \u2014 refusing to bill/forward");
|
|
1367
|
-
return false;
|
|
1368
|
-
}
|
|
1369
|
-
try {
|
|
1370
|
-
const res = await fetch(`${backendUrl.replace(/\/$/, "")}/v1/rpc/meter`, {
|
|
1371
|
-
method: "POST",
|
|
1372
|
-
headers: { "Content-Type": "application/json", "x-api-key": apiKey },
|
|
1373
|
-
body: JSON.stringify({ method })
|
|
1374
|
-
});
|
|
1375
|
-
return res.ok;
|
|
1376
|
-
} catch (err) {
|
|
1377
|
-
console.error("[rpc-proxy] billing call failed", { err: err instanceof Error ? err.message : String(err) });
|
|
1378
|
-
return false;
|
|
1379
|
-
}
|
|
1320
|
+
|
|
1321
|
+
// src/server/backend-proxy.ts
|
|
1322
|
+
function proxyError(code, message, status) {
|
|
1323
|
+
return Response.json({ jsonrpc: "2.0", error: { code, message }, id: null }, { status });
|
|
1380
1324
|
}
|
|
1381
|
-
function
|
|
1382
|
-
const
|
|
1383
|
-
|
|
1325
|
+
function createBackendProxyHandler(config) {
|
|
1326
|
+
const doFetch = config.fetchImpl ?? fetch;
|
|
1327
|
+
const endpoint = `${config.backendUrl.replace(/\/$/, "")}/${config.path.replace(/^\//, "")}`;
|
|
1328
|
+
return async function handleBackendProxy(req) {
|
|
1384
1329
|
if (!isSameOrigin(req)) {
|
|
1385
|
-
return
|
|
1330
|
+
return proxyError(-32600, "Cross-origin requests are not allowed", 403);
|
|
1386
1331
|
}
|
|
1387
1332
|
if (!config.checkRateLimit(requestIp(req))) {
|
|
1388
|
-
return
|
|
1333
|
+
return proxyError(-32005, "Too many requests", 429);
|
|
1334
|
+
}
|
|
1335
|
+
if (!config.apiKey) {
|
|
1336
|
+
return proxyError(-32003, "No API key configured \u2014 request not forwarded", 402);
|
|
1389
1337
|
}
|
|
1390
1338
|
let body;
|
|
1391
1339
|
try {
|
|
1392
1340
|
body = await req.json();
|
|
1393
1341
|
} catch {
|
|
1394
|
-
return
|
|
1342
|
+
return proxyError(-32700, "Parse error", 400);
|
|
1395
1343
|
}
|
|
1396
|
-
|
|
1397
|
-
const
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
headers: { "Content-Type": "application/json" },
|
|
1410
|
-
body: JSON.stringify(body)
|
|
1411
|
-
});
|
|
1412
|
-
const text = await response.text();
|
|
1413
|
-
const upstream = rpcUrl.split("/")[2];
|
|
1414
|
-
if (!text) {
|
|
1415
|
-
lastError = `Upstream RPC returned empty body (HTTP ${response.status})`;
|
|
1416
|
-
console.warn("[rpc-proxy] upstream returned empty body", { status: response.status, upstream });
|
|
1417
|
-
continue;
|
|
1418
|
-
}
|
|
1419
|
-
try {
|
|
1420
|
-
const data = JSON.parse(text);
|
|
1421
|
-
if (isTransientRpcError({ status: response.status, body: data })) {
|
|
1422
|
-
const errObj = data.error;
|
|
1423
|
-
lastError = `Upstream RPC returned transient JSON-RPC error: ${String(errObj?.message ?? "(no message)")}`;
|
|
1424
|
-
console.warn("[rpc-proxy] upstream returned transient JSON-RPC error", {
|
|
1425
|
-
upstream,
|
|
1426
|
-
code: errObj?.code,
|
|
1427
|
-
message: errObj?.message
|
|
1428
|
-
});
|
|
1429
|
-
continue;
|
|
1430
|
-
}
|
|
1431
|
-
return Response.json(data, { status: 200 });
|
|
1432
|
-
} catch {
|
|
1433
|
-
lastError = `Upstream RPC returned non-JSON (HTTP ${response.status})`;
|
|
1434
|
-
console.warn("[rpc-proxy] upstream returned non-JSON", {
|
|
1435
|
-
status: response.status,
|
|
1436
|
-
upstream,
|
|
1437
|
-
bodyPreview: text.slice(0, 200)
|
|
1438
|
-
});
|
|
1439
|
-
continue;
|
|
1440
|
-
}
|
|
1441
|
-
} catch (err) {
|
|
1442
|
-
lastError = `Upstream RPC unreachable: ${err instanceof Error ? err.message : "unknown error"}`;
|
|
1443
|
-
console.warn("[rpc-proxy] upstream fetch failed", {
|
|
1444
|
-
upstream: rpcUrl.split("/")[2],
|
|
1445
|
-
err: err instanceof Error ? err.message : String(err)
|
|
1446
|
-
});
|
|
1447
|
-
}
|
|
1344
|
+
try {
|
|
1345
|
+
const upstream = await doFetch(endpoint, {
|
|
1346
|
+
method: "POST",
|
|
1347
|
+
headers: { "Content-Type": "application/json", "x-api-key": config.apiKey },
|
|
1348
|
+
body: JSON.stringify(body)
|
|
1349
|
+
});
|
|
1350
|
+
const text = await upstream.text();
|
|
1351
|
+
return new Response(text, {
|
|
1352
|
+
status: upstream.status,
|
|
1353
|
+
headers: { "Content-Type": "application/json" }
|
|
1354
|
+
});
|
|
1355
|
+
} catch {
|
|
1356
|
+
return proxyError(-32603, "Backend unreachable", 502);
|
|
1448
1357
|
}
|
|
1449
|
-
return rpcError(-32603, lastError);
|
|
1450
1358
|
};
|
|
1451
1359
|
}
|
|
1452
1360
|
|
|
1361
|
+
// src/server/rpc-proxy.ts
|
|
1362
|
+
function createRpcProxyHandler(config) {
|
|
1363
|
+
return createBackendProxyHandler({ ...config, path: "/v1/rpc" });
|
|
1364
|
+
}
|
|
1365
|
+
|
|
1453
1366
|
// src/metadata.ts
|
|
1454
1367
|
var RESERVED_TRAITS = /* @__PURE__ */ new Set([
|
|
1455
1368
|
"Creator",
|
|
@@ -1530,6 +1443,6 @@ function resolveSafeImageContentType(contentType) {
|
|
|
1530
1443
|
}
|
|
1531
1444
|
var MAX_IPFS_GATEWAY_RESPONSE_BYTES = 25 * 1024 * 1024;
|
|
1532
1445
|
|
|
1533
|
-
export { ApiClient, CHAINS, DEFAULT_CHAIN, DEFAULT_CURRENCY,
|
|
1446
|
+
export { ApiClient, CHAINS, DEFAULT_CHAIN, DEFAULT_CURRENCY, FeeConfigSchema, IPFS_SAFE_CONTENT_TYPE_PREFIXES, MAX_IPFS_GATEWAY_RESPONSE_BYTES, MedialaneApiError, OPEN_LICENSES, PUBLIC_RPC_FALLBACKS, RESERVED_TRAITS, STARKNET_COLLECTION_1155_CLASS_HASH, STARKNET_COLLECTION_1155_CONTRACT, STARKNET_COLLECTION_1155_FACTORY_CLASS_HASH, STARKNET_COLLECTION_1155_START_BLOCK, STARKNET_COLLECTION_721_CONTRACT, STARKNET_COLLECTION_721_START_BLOCK, STARKNET_CREATOR_COIN_CLASS_HASH, STARKNET_CREATOR_COIN_EKUBO_LAUNCHER, STARKNET_CREATOR_COIN_FACTORY_CLASS_HASH, STARKNET_CREATOR_COIN_FACTORY_CONTRACT, STARKNET_CREATOR_COIN_START_BLOCK, STARKNET_DROP_COLLECTION_CLASS_HASH, STARKNET_DROP_FACTORY_CONTRACT, STARKNET_EKUBO_CORE, STARKNET_IPCOLLECTION_CLASS_HASH, STARKNET_IPNFT_CLASS_HASH, STARKNET_IP_CLUB_COLLECTION_CLASS_HASH, STARKNET_IP_CLUB_FACTORY_CONTRACT, STARKNET_IP_SPONSORSHIP_CLASS_HASH, STARKNET_IP_SPONSORSHIP_CONTRACT, STARKNET_IP_TICKETS_FACTORY_CONTRACT, STARKNET_IP_TICKET_COLLECTION_CLASS_HASH, STARKNET_MARKETPLACE_1155_CLASS_HASH, STARKNET_MARKETPLACE_1155_CONTRACT, STARKNET_MARKETPLACE_1155_START_BLOCK, STARKNET_MARKETPLACE_721_CLASS_HASH, STARKNET_MARKETPLACE_721_CONTRACT, STARKNET_MARKETPLACE_721_START_BLOCK, STARKNET_NFTCOMMENTS_CONTRACT, STARKNET_POP_COLLECTION_CLASS_HASH, STARKNET_POP_FACTORY_CONTRACT, SUPPORTED_TOKENS, SUPPORTED_URL_CHAINS, assetHref, buildAssetMetadata, chainFromSlug, chainSlug, coinHref, collectionHref, createBackendProxyHandler, createFailoverFetch, createRateLimiter, createRpcProxyHandler, encodeU256, formatAmount, getCoordinates, getListableTokens, getService, getServicesByCapability, getStarknetCoordinates, getTokenByAddress, getTokenBySymbol, hasCapability, isSameOrigin, isServiceId, isTransientRpcError, isValidIpfsCidPath, listServices, normalizeAddress, normalizeHash, parseAmount, requestIp, resolveConfig, resolveFeeConfig, resolveSafeImageContentType, shortenAddress, stringifyBigInts, u256ToBigInt };
|
|
1534
1447
|
//# sourceMappingURL=index.js.map
|
|
1535
1448
|
//# sourceMappingURL=index.js.map
|