@medialane/sdk 0.208.0 → 0.211.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/{chunk-7QPV7UQU.js → chunk-3SIT2PCD.js} +2 -3
- package/dist/chunk-3SIT2PCD.js.map +1 -0
- package/dist/{chunk-4QPF6AZV.cjs → chunk-3V3L2R5O.cjs} +2 -3
- package/dist/chunk-3V3L2R5O.cjs.map +1 -0
- package/dist/{chunk-7KLSPB7T.cjs → chunk-IE2YYAF5.cjs} +69 -28
- package/dist/chunk-IE2YYAF5.cjs.map +1 -0
- package/dist/{chunk-MK7OLAZD.js → chunk-PVU5AYOO.js} +50 -12
- package/dist/chunk-PVU5AYOO.js.map +1 -0
- package/dist/index.cjs +34 -34
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/{passkey-errors-BIb35H7w.d.ts → passkey-errors-BXclgAtu.d.ts} +1 -17
- package/dist/{passkey-errors-BMpbMEGO.d.cts → passkey-errors-BcJWGxSV.d.cts} +1 -17
- package/dist/{services-DRi5P1K0.d.cts → services-BvLnPxis.d.cts} +1 -2
- package/dist/{services-DkoV6uJe.d.ts → services-CRQUM6bg.d.ts} +1 -2
- package/dist/starknet/index.cjs +100 -88
- package/dist/starknet/index.d.cts +5 -5
- package/dist/starknet/index.d.ts +5 -5
- package/dist/starknet/index.js +3 -3
- package/dist/wallet/index.cjs +74 -62
- package/dist/wallet/index.d.cts +19 -7
- package/dist/wallet/index.d.ts +19 -7
- package/dist/wallet/index.js +2 -2
- package/package.json +1 -1
- package/dist/chunk-4QPF6AZV.cjs.map +0 -1
- package/dist/chunk-7KLSPB7T.cjs.map +0 -1
- package/dist/chunk-7QPV7UQU.js.map +0 -1
- package/dist/chunk-MK7OLAZD.js.map +0 -1
|
@@ -583,7 +583,6 @@ function createPortalApi(t) {
|
|
|
583
583
|
createApiKey: (input, confirmation) => data(t.post("/v1/portal/keys", { ...input ?? {}, confirmation })),
|
|
584
584
|
deleteApiKey: (id, confirmation) => data(t.delete(`/v1/portal/keys/${id}`, { confirmation })),
|
|
585
585
|
creditHistory: () => data(t.get("/v1/portal/credits/history")),
|
|
586
|
-
spend: () => data(t.get("/v1/portal/credits/spend")),
|
|
587
586
|
checkDeposit: (txHash) => data(t.post("/v1/portal/credits/check", { txHash })),
|
|
588
587
|
pricing: () => t.get("/v1/pricing"),
|
|
589
588
|
funding: {
|
|
@@ -940,5 +939,5 @@ function getListableTokens() {
|
|
|
940
939
|
}
|
|
941
940
|
|
|
942
941
|
export { ApiClient, DEFAULT_CURRENCY, DeviceKeyMissingError, MedialaneApiError, MedialaneError, PasskeyCancelledError, PasskeyUnsupportedError, STARKNET_COLLECTION_1155_CONTRACT, STARKNET_COLLECTION_721_CONTRACT, STARKNET_CREATOR_COIN_FACTORY_CONTRACT, STARKNET_DATA_TOKENIZATION_721_CONTRACT, STARKNET_DROP_FACTORY_CONTRACT, STARKNET_DROP_FACTORY_START_BLOCK, STARKNET_GENESIS_MINT_CONTRACT, STARKNET_GENESIS_NFT_URI, STARKNET_IP_CLUB_FACTORY_CONTRACT, STARKNET_IP_SPONSORSHIP_CONTRACT, STARKNET_IP_TICKETS_FACTORY_CONTRACT, STARKNET_MARKETPLACE_1155_CONTRACT, STARKNET_MARKETPLACE_721_CONTRACT, STARKNET_MEDIAWALLET_CLASS_HASH, STARKNET_NFTCOMMENTS_CONTRACT, STARKNET_POP_FACTORY_CONTRACT, STARKNET_POP_FACTORY_START_BLOCK, SUPPORTED_TOKENS, UserFacingError, formatAmount, getListableTokens, getTokenByAddress, getTokenBySymbol, normalizeAddress, normalizeHash, parseAmount, shortenAddress };
|
|
943
|
-
//# sourceMappingURL=chunk-
|
|
944
|
-
//# sourceMappingURL=chunk-
|
|
942
|
+
//# sourceMappingURL=chunk-3SIT2PCD.js.map
|
|
943
|
+
//# sourceMappingURL=chunk-3SIT2PCD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/errors.ts","../src/utils/address.ts","../src/utils/retry.ts","../src/api/transport.ts","../src/api/domains/orders.ts","../src/api/domains/tokens.ts","../src/api/domains/collections.ts","../src/api/domains/activity.ts","../src/api/domains/intents.ts","../src/api/domains/metadata.ts","../src/api/domains/creators.ts","../src/api/domains/account.ts","../src/api/domains/portal.ts","../src/api/domains/business.ts","../src/api/domains/remix.ts","../src/api/domains/coins.ts","../src/api/domains/drops.ts","../src/api/domains/sponsorship.ts","../src/api/domains/rewards.ts","../src/api/domains/platform.ts","../src/api/domains/chainReads.ts","../src/api/client.ts","../src/wallet/passkey-errors.ts","../src/constants.ts","../src/utils/token.ts"],"names":[],"mappings":"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","file":"chunk-3SIT2PCD.js","sourcesContent":["import type { MedialaneErrorCode } from \"./types/errors.js\";\n\nexport class UserFacingError extends Error {\n readonly retryable: boolean;\n\n constructor(message: string, options: { retryable?: boolean } = {}) {\n super(message);\n this.name = \"UserFacingError\";\n this.retryable = options.retryable ?? true;\n }\n}\n\nexport class MedialaneError extends Error {\n constructor(\n message: string,\n public readonly code: MedialaneErrorCode = \"UNKNOWN\",\n public readonly cause?: unknown,\n ) {\n super(message);\n this.name = \"MedialaneError\";\n }\n}\n\nconst RESOURCE_NOT_FOUND: ReadonlyArray<readonly [string, MedialaneErrorCode]> = [\n [\"/v1/orders\", \"ORDER_NOT_FOUND\"],\n [\"/v1/tokens\", \"TOKEN_NOT_FOUND\"],\n [\"/v1/collections\", \"COLLECTION_NOT_FOUND\"],\n [\"/v1/intents\", \"INTENT_NOT_FOUND\"],\n];\n\nexport function errorCodeFor(status: number, path = \"\"): MedialaneErrorCode {\n if (status === 404) {\n return RESOURCE_NOT_FOUND.find(([prefix]) => path.startsWith(prefix))?.[1] ?? \"NOT_FOUND\";\n }\n if (status === 429) return \"RATE_LIMITED\";\n if (status === 410) return \"INTENT_EXPIRED\";\n if (status === 401 || status === 403) return \"UNAUTHORIZED\";\n if (status === 400) return \"INVALID_PARAMS\";\n return \"UNKNOWN\";\n}\n\nexport class MedialaneApiError extends MedialaneError {\n constructor(\n public readonly status: number,\n message: string,\n public readonly retryAfterMs?: number,\n public readonly details?: unknown,\n path?: string,\n public readonly serverCode?: string,\n public readonly requestId?: string,\n ) {\n super(message, errorCodeFor(status, path));\n this.name = \"MedialaneApiError\";\n }\n}\n\nexport function parseRetryAfter(value: string | null): number | undefined {\n if (!value) return undefined;\n const seconds = Number(value);\n if (Number.isFinite(seconds)) return Math.max(0, seconds * 1000);\n const date = Date.parse(value);\n if (!Number.isNaN(date)) return Math.max(0, date - Date.now());\n return undefined;\n}\n","import { keccak_256 } from \"@noble/hashes/sha3.js\";\nimport { base32, base58 } from \"@scure/base\";\nimport type { Chain } from \"../chains.js\";\n\nexport function normalizeAddress(chain: Chain, address: string): string {\n switch (chain) {\n case \"STARKNET\":\n return normalizeStarknet(address);\n case \"ETHEREUM\":\n case \"BASE\":\n return normalizeEvm(address);\n case \"SOLANA\":\n return normalizeSolana(address);\n case \"STELLAR\":\n return normalizeStellar(address);\n case \"BITCOIN\":\n throw new Error(\"BITCOIN address normalization not implemented\");\n }\n}\n\nfunction normalizeStarknet(address: string): string {\n try {\n const hex = BigInt(address).toString(16);\n return \"0x\" + hex.padStart(64, \"0\").toLowerCase();\n } catch {\n throw new Error(`Invalid STARKNET address: \"${address}\"`);\n }\n}\n\nfunction normalizeEvm(address: string): string {\n const m = /^0x([0-9a-fA-F]{40})$/.exec(address);\n if (!m) throw new Error(`Invalid ETHEREUM/BASE address: \"${address}\"`);\n const lower = m[1].toLowerCase();\n\n const hash = keccak_256(new TextEncoder().encode(lower));\n let out = \"0x\";\n for (let i = 0; i < 40; i++) {\n const nibble = (hash[i >> 1]! >> (i % 2 === 0 ? 4 : 0)) & 0xf;\n out += nibble >= 8 ? lower[i]!.toUpperCase() : lower[i];\n }\n return out;\n}\n\nfunction normalizeSolana(address: string): string {\n try {\n const bytes = base58.decode(address);\n if (bytes.length !== 32) throw new Error(\"not a 32-byte key\");\n return address;\n } catch {\n throw new Error(`Invalid SOLANA address: \"${address}\"`);\n }\n}\n\nconst STELLAR_VERSION_BYTES = new Set([6 << 3, 2 << 3]);\n\nfunction normalizeStellar(address: string): string {\n const upper = address.toUpperCase();\n if (!/^[GC][A-Z2-7]{55}$/.test(upper)) {\n throw new Error(`Invalid STELLAR address: \"${address}\"`);\n }\n let decoded: Uint8Array;\n try {\n decoded = base32.decode(upper);\n } catch {\n throw new Error(`Invalid STELLAR address: \"${address}\"`);\n }\n if (decoded.length !== 35 || !STELLAR_VERSION_BYTES.has(decoded[0]!)) {\n throw new Error(`Invalid STELLAR address: \"${address}\"`);\n }\n const payload = decoded.subarray(0, 33);\n const checksum = decoded[33]! | (decoded[34]! << 8);\n if (crc16xmodem(payload) !== checksum) {\n throw new Error(`Invalid STELLAR address: \"${address}\"`);\n }\n return upper;\n}\n\nfunction crc16xmodem(bytes: Uint8Array): number {\n let crc = 0;\n for (const byte of bytes) {\n crc ^= byte << 8;\n for (let i = 0; i < 8; i++) {\n crc = crc & 0x8000 ? ((crc << 1) ^ 0x1021) & 0xffff : (crc << 1) & 0xffff;\n }\n }\n return crc;\n}\n\ndeclare const canonicalHashBrand: unique symbol;\n\nexport type CanonicalHash = string & { readonly [canonicalHashBrand]: true };\n\nexport function normalizeHash(hash: string): CanonicalHash {\n try {\n const hex = BigInt(hash).toString(16);\n return (\"0x\" + hex.padStart(64, \"0\").toLowerCase()) as CanonicalHash;\n } catch {\n throw new Error(`Invalid hash: \"${hash}\"`);\n }\n}\n\nexport function shortenAddress(chain: Chain, address: string, chars = 4): string {\n const norm = normalizeAddress(chain, address);\n return `${norm.slice(0, chars + 2)}...${norm.slice(-chars)}`;\n}\n","import { MedialaneApiError } from \"../errors.js\";\n\nexport interface RetryOptions {\n maxAttempts?: number;\n baseDelayMs?: number;\n maxDelayMs?: number;\n}\n\nconst DEFAULT_MAX_ATTEMPTS = 3;\nconst DEFAULT_BASE_DELAY_MS = 300;\nconst DEFAULT_MAX_DELAY_MS = 5000;\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport function isRetryableFor(method: string, err: unknown): boolean {\n if (err instanceof MedialaneApiError && err.status === 429) return true;\n const isRead = method === \"GET\" || method === \"HEAD\";\n if (!isRead) return false;\n return (err instanceof MedialaneApiError && err.status >= 500) || err instanceof TypeError;\n}\n\nexport async function withRetry<T>(\n fn: () => Promise<T>,\n opts?: RetryOptions,\n method = \"GET\",\n): Promise<T> {\n const maxAttempts = opts?.maxAttempts ?? DEFAULT_MAX_ATTEMPTS;\n const baseDelayMs = opts?.baseDelayMs ?? DEFAULT_BASE_DELAY_MS;\n const maxDelayMs = opts?.maxDelayMs ?? DEFAULT_MAX_DELAY_MS;\n\n let lastError: unknown;\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n try {\n return await fn();\n } catch (err) {\n lastError = err;\n\n if (!isRetryableFor(method, err) || attempt === maxAttempts - 1) {\n throw err;\n }\n\n const retryAfterMs = err instanceof MedialaneApiError ? err.retryAfterMs : undefined;\n const backoff = baseDelayMs * Math.pow(2, attempt) + Math.random() * baseDelayMs;\n const delay = Math.min(retryAfterMs ?? backoff, maxDelayMs);\n await sleep(delay);\n }\n }\n\n throw lastError;\n}\n","import type { Chain } from \"../chains.js\";\nimport { MedialaneApiError, parseRetryAfter } from \"../errors.js\";\nimport { normalizeAddress } from \"../utils/address.js\";\nimport type { FetchLike } from \"../utils/fetch.js\";\nimport { withRetry, type RetryOptions } from \"../utils/retry.js\";\n\nexport type BearerSource = string | (() => string | undefined);\n\nexport interface TransportOptions {\n baseUrl: string;\n apiKey?: string;\n bearer?: BearerSource;\n retry?: RetryOptions;\n chain?: Chain;\n fetch?: FetchLike;\n}\n\nexport type QueryValue = string | number | boolean | null | undefined;\n\nexport interface RequestOptions {\n method?: \"GET\" | \"POST\" | \"PATCH\" | \"PUT\" | \"DELETE\";\n body?: unknown;\n query?: Record<string, QueryValue>;\n bearer?: string;\n absent?: readonly number[];\n}\n\nexport function queryString(query: Record<string, QueryValue> | undefined): string {\n if (!query) return \"\";\n const params = new URLSearchParams();\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined && value !== null && value !== \"\") params.set(key, String(value));\n }\n const qs = params.toString();\n return qs ? `?${qs}` : \"\";\n}\n\nasync function failureFrom(response: Response, path: string): Promise<MedialaneApiError> {\n const text = await response.text().catch(() => response.statusText);\n let message = `Request failed with status ${response.status}`;\n let details: unknown = text;\n let serverCode: string | undefined;\n try {\n const body = JSON.parse(text) as { error?: unknown; code?: unknown };\n if (typeof body.error === \"string\" && body.error.trim() !== \"\") message = body.error;\n if (typeof body.code === \"string\") serverCode = body.code;\n details = body;\n } catch {\n details = text;\n }\n return new MedialaneApiError(\n response.status,\n message,\n parseRetryAfter(response.headers.get(\"retry-after\")),\n details,\n path,\n serverCode,\n response.headers.get(\"x-request-id\") ?? undefined,\n );\n}\n\nexport class Transport {\n readonly chain: Chain;\n private readonly baseUrl: string;\n private readonly headers: Record<string, string>;\n\n constructor(private readonly options: TransportOptions) {\n this.baseUrl = options.baseUrl.replace(/\\/$/, \"\");\n this.headers = options.apiKey ? { \"x-api-key\": options.apiKey } : {};\n this.chain = options.chain ?? \"STARKNET\";\n }\n\n withBearer(bearer: BearerSource | undefined): Transport {\n return new Transport({ ...this.options, bearer });\n }\n\n settings(): TransportOptions {\n return this.options;\n }\n\n addr(address: string): string {\n return normalizeAddress(this.chain, address);\n }\n\n async request<T>(path: string, opts: RequestOptions = {}): Promise<T> {\n const method = opts.method ?? \"GET\";\n const url = `${this.baseUrl}${path}${queryString(opts.query)}`;\n const headers: Record<string, string> = { ...this.headers };\n const token = opts.bearer ?? this.defaultBearer();\n if (token) headers.Authorization = `Bearer ${token}`;\n\n let body: BodyInit | undefined;\n if (opts.body instanceof FormData) {\n body = opts.body;\n } else if (opts.body !== undefined) {\n headers[\"Content-Type\"] = \"application/json\";\n body = JSON.stringify(opts.body);\n }\n\n const absent = (status: number) => opts.absent?.includes(status) === true;\n const response = await withRetry(\n async () => {\n const res = await (this.options.fetch ?? globalThis.fetch)(url, { method, headers, body });\n if (!res.ok && !absent(res.status)) throw await failureFrom(res, path);\n return res;\n },\n this.options.retry,\n method,\n );\n\n if (absent(response.status)) return null as T;\n return response.json() as Promise<T>;\n }\n\n get<T>(path: string, query?: Record<string, QueryValue>): Promise<T> {\n return this.request<T>(path, { query });\n }\n\n post<T>(path: string, body?: unknown, opts: Omit<RequestOptions, \"method\" | \"body\"> = {}): Promise<T> {\n return this.request<T>(path, { ...opts, method: \"POST\", body: body ?? {} });\n }\n\n patch<T>(path: string, body: unknown, opts: Omit<RequestOptions, \"method\" | \"body\"> = {}): Promise<T> {\n return this.request<T>(path, { ...opts, method: \"PATCH\", body });\n }\n\n delete<T>(path: string, body?: unknown, opts: Omit<RequestOptions, \"method\" | \"body\"> = {}): Promise<T> {\n return this.request<T>(path, { ...opts, method: \"DELETE\", body });\n }\n\n find<T>(path: string, opts: Omit<RequestOptions, \"absent\"> & { also?: readonly number[] } = {}): Promise<T | null> {\n const { also, ...rest } = opts;\n return this.request<T | null>(path, { ...rest, absent: [404, ...(also ?? [])] });\n }\n\n private defaultBearer(): string | undefined {\n const source = this.options.bearer;\n return typeof source === \"function\" ? source() : source;\n }\n}\n","import type { Transport } from \"../transport.js\";\nimport type { ApiOrder, ApiOrdersQuery, ApiCounterOffersQuery, ApiResponse } from \"../../types/api.js\";\n\nexport interface OrdersApi {\n list(query?: ApiOrdersQuery): Promise<ApiResponse<ApiOrder[]>>;\n get(orderHash: string): Promise<ApiOrder>;\n forToken(contract: string, tokenId: string): Promise<ApiResponse<ApiOrder[]>>;\n receivedBy(address: string, opts?: { page?: number; limit?: number }): Promise<ApiResponse<ApiOrder[]>>;\n byUser(address: string, opts?: { page?: number; limit?: number }): Promise<ApiResponse<ApiOrder[]>>;\n counterOffers(query: ApiCounterOffersQuery): Promise<ApiResponse<ApiOrder[]>>;\n}\n\nexport function createOrdersApi(t: Transport): OrdersApi {\n return {\n list(query = {}) {\n return t.get(\"/v1/orders\", {\n status: query.status,\n collection: query.collection,\n currency: query.currency,\n sort: query.sort,\n page: query.page,\n limit: query.limit,\n offerer: query.offerer ? t.addr(query.offerer) : undefined,\n minPrice: query.minPrice,\n maxPrice: query.maxPrice,\n chain: query.chain,\n });\n },\n async get(orderHash) {\n return (await t.get<ApiResponse<ApiOrder>>(`/v1/orders/${orderHash}`)).data;\n },\n forToken(contract, tokenId) {\n return t.get(`/v1/orders/token/${t.addr(contract)}/${tokenId}`);\n },\n receivedBy(address, opts = {}) {\n return t.get(`/v1/orders/received/${t.addr(address)}`, { page: opts.page ?? 1, limit: opts.limit ?? 50 });\n },\n byUser(address, opts = {}) {\n return t.get(`/v1/orders/user/${t.addr(address)}`, { page: opts.page ?? 1, limit: opts.limit ?? 20 });\n },\n counterOffers(query) {\n return t.get(\"/v1/orders/counter-offers\", {\n originalOrderHash: query.originalOrderHash,\n sellerAddress: query.sellerAddress,\n page: query.page,\n limit: query.limit,\n });\n },\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type {\n ApiActivity,\n ApiComment,\n ApiPublicRemix,\n ApiResponse,\n ApiToken,\n ApiTokenBalance,\n ApiTokensQuery,\n} from \"../../types/api.js\";\n\ninterface Paging {\n page?: number;\n limit?: number;\n}\n\nexport interface TokensApi {\n list(query?: ApiTokensQuery): Promise<ApiResponse<ApiToken[]>>;\n get(contract: string, tokenId: string, opts?: { wait?: boolean }): Promise<ApiToken>;\n balance(contract: string, tokenId: string, owner: string): Promise<ApiTokenBalance>;\n ownedBy(address: string, opts?: Paging): Promise<ApiResponse<ApiToken[]>>;\n history(contract: string, tokenId: string, opts?: Paging): Promise<ApiResponse<ApiActivity[]>>;\n comments(contract: string, tokenId: string, opts?: Paging): Promise<ApiResponse<ApiComment[]>>;\n remixes(contract: string, tokenId: string, opts?: Paging): Promise<ApiResponse<ApiPublicRemix[]>>;\n}\n\nexport function createTokensApi(t: Transport): TokensApi {\n return {\n list(query = {}) {\n return t.get(\"/v1/tokens\", {\n page: query.page,\n limit: query.limit,\n sort: query.sort,\n ipType: query.ipType,\n derivatives: query.derivatives,\n });\n },\n async get(contract, tokenId, opts = {}) {\n const res = await t.get<ApiResponse<ApiToken>>(`/v1/tokens/${contract}/${tokenId}`, opts.wait ? { wait: \"true\" } : undefined);\n return res.data;\n },\n async balance(contract, tokenId, owner) {\n return (await t.get<ApiResponse<ApiTokenBalance>>(`/v1/tokens/${contract}/${tokenId}/balances/${t.addr(owner)}`)).data;\n },\n ownedBy(address, opts = {}) {\n return t.get(`/v1/tokens/owned/${t.addr(address)}`, { page: opts.page ?? 1, limit: opts.limit ?? 20 });\n },\n history(contract, tokenId, opts = {}) {\n return t.get(`/v1/tokens/${contract}/${tokenId}/history`, { page: opts.page ?? 1, limit: opts.limit ?? 20 });\n },\n comments(contract, tokenId, opts = {}) {\n return t.get(`/v1/tokens/${t.addr(contract)}/${tokenId}/comments`, { page: opts.page, limit: opts.limit });\n },\n remixes(contract, tokenId, opts = {}) {\n return t.get(`/v1/tokens/${t.addr(contract)}/${tokenId}/remixes`, { page: opts.page, limit: opts.limit });\n },\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type {\n ApiCollection,\n ApiCollectionClaim,\n ApiCollectionProfile,\n ApiCollectionSlugClaim,\n ApiCollectionsListQuery,\n ApiResponse,\n ApiToken,\n CollectionTokensSort,\n UpdateCollectionProfileInput,\n} from \"../../types/api.js\";\n\nexport interface GatedContent {\n title: string;\n url: string;\n type: string;\n}\n\nexport interface CollectionsApi {\n list(query?: ApiCollectionsListQuery): Promise<ApiResponse<ApiCollection[]>>;\n get(contract: string): Promise<ApiCollection>;\n findBySlug(slug: string): Promise<ApiCollection | null>;\n tokens(contract: string, opts?: { page?: number; limit?: number; sort?: CollectionTokensSort }): Promise<ApiResponse<ApiToken[]>>;\n register(contractAddress: string): Promise<ApiCollection>;\n findProfile(contractAddress: string): Promise<ApiCollectionProfile | null>;\n updateProfile(contractAddress: string, data: UpdateCollectionProfileInput): Promise<ApiCollectionProfile>;\n findGatedContent(contractAddress: string): Promise<GatedContent | null>;\n claim(contractAddress: string, walletAddress: string): Promise<{ verified: boolean; collection?: ApiCollection; reason?: string }>;\n requestClaim(params: { contractAddress: string; walletAddress?: string; email: string; notes?: string }): Promise<{ claim: ApiCollectionClaim }>;\n slugAvailability(slug: string): Promise<{ available: boolean; reason?: string }>;\n submitSlugClaim(contractAddress: string, slug: string, notifyEmail?: string): Promise<{ claim: ApiCollectionSlugClaim }>;\n mySlugClaims(): Promise<{ claims: ApiCollectionSlugClaim[] }>;\n}\n\nconst slugOf = (slug: string) => encodeURIComponent(slug.toLowerCase().trim());\n\nexport function createCollectionsApi(t: Transport): CollectionsApi {\n return {\n list(query = {}) {\n return t.get(\"/v1/collections\", {\n page: query.page,\n limit: query.limit,\n owner: query.owner ? t.addr(query.owner) : undefined,\n service: query.service,\n sort: query.sort,\n isFeatured: query.isFeatured,\n hideEmpty: query.hideEmpty,\n standard: query.standard,\n chain: query.chain,\n });\n },\n async get(contract) {\n return (await t.get<ApiResponse<ApiCollection>>(`/v1/collections/${t.addr(contract)}`)).data;\n },\n async findBySlug(slug) {\n const res = await t.find<{ data: ApiCollection }>(`/v1/collections/by-slug/${slugOf(slug)}`);\n return res?.data ?? null;\n },\n tokens(contract, opts = {}) {\n return t.get(`/v1/collections/${t.addr(contract)}/tokens`, {\n page: opts.page ?? 1,\n limit: opts.limit ?? 20,\n sort: opts.sort ?? \"recent\",\n });\n },\n async register(contractAddress) {\n return (await t.post<{ data: ApiCollection }>(\"/v1/collections/register\", { contractAddress })).data;\n },\n findProfile(contractAddress) {\n return t.find(`/v1/collections/${t.addr(contractAddress)}/profile`);\n },\n updateProfile(contractAddress, data) {\n return t.patch(`/v1/collections/${t.addr(contractAddress)}/profile`, data);\n },\n findGatedContent(contractAddress) {\n return t.find(`/v1/collections/${t.addr(contractAddress)}/gated-content`, { also: [403] });\n },\n claim(contractAddress, walletAddress) {\n return t.post(\"/v1/collections/claim\", { contractAddress, walletAddress });\n },\n requestClaim(params) {\n return t.post(\"/v1/collections/claim/request\", params);\n },\n slugAvailability(slug) {\n return t.get(`/v1/collection-slug-claims/check/${slugOf(slug)}`);\n },\n submitSlugClaim(contractAddress, slug, notifyEmail) {\n return t.post(\"/v1/collection-slug-claims\", { contractAddress, slug, notifyEmail });\n },\n mySlugClaims() {\n return t.get(\"/v1/collection-slug-claims/me\");\n },\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type { ApiActivitiesQuery, ApiActivity, ApiResponse, ApiSearchResult, ApiWalletActivity, ChainFilter } from \"../../types/api.js\";\n\nexport interface ActivityApi {\n list(query?: ApiActivitiesQuery): Promise<ApiResponse<ApiActivity[]>>;\n byAddress(address: string, opts?: { page?: number; limit?: number }): Promise<ApiResponse<ApiActivity[]>>;\n wallet(address: string, chain?: \"STARKNET\"): Promise<ApiResponse<ApiWalletActivity[]>>;\n}\n\nexport interface SearchApi {\n (q: string, limit?: number, chain?: ChainFilter): Promise<ApiResponse<ApiSearchResult> & { query: string }>;\n}\n\nexport function createActivityApi(t: Transport): ActivityApi {\n return {\n list(query = {}) {\n return t.get(\"/v1/activities\", {\n type: query.type,\n contract: query.contract,\n page: query.page,\n limit: query.limit,\n chain: query.chain,\n });\n },\n byAddress(address, opts = {}) {\n return t.get(`/v1/activities/${t.addr(address)}`, { page: opts.page ?? 1, limit: opts.limit ?? 20 });\n },\n wallet(address, chain = \"STARKNET\") {\n return t.get(\"/v1/wallet-activity\", { address: t.addr(address), chain });\n },\n };\n}\n\nexport function createSearchApi(t: Transport): SearchApi {\n return (q, limit = 10, chain) => t.get(\"/v1/search\", { q, limit, chain });\n}\n","import type { Transport } from \"../transport.js\";\nimport { intentPath, type IntentKind } from \"../../contract/intents.js\";\nimport type {\n ApiCheckoutIntentResult,\n ApiIntent,\n ApiIntentCreated,\n ApiTxSyncResult,\n CreateCheckoutIntentParams,\n IntentParamsByKind,\n} from \"../../types/api.js\";\n\nexport interface IntentsApi {\n create<K extends IntentKind>(kind: K, params: IntentParamsByKind[K], opts?: { bearer?: string }): Promise<ApiIntentCreated>;\n checkout(params: CreateCheckoutIntentParams): Promise<ApiCheckoutIntentResult[]>;\n get(id: string): Promise<ApiIntent>;\n submitSignature(id: string, signature: string[]): Promise<ApiIntent>;\n confirm(id: string, txHash: string): Promise<ApiIntent>;\n syncTransaction(txHash: string): Promise<ApiTxSyncResult>;\n}\n\nexport function createIntentsApi(t: Transport): IntentsApi {\n return {\n async create(kind, params, opts) {\n const res = await t.post<{ data: ApiIntentCreated }>(intentPath(kind), params, { bearer: opts?.bearer });\n return res.data;\n },\n async checkout(params) {\n const res = await t.post<{ data: ApiCheckoutIntentResult[] }>(intentPath(\"checkout\"), params);\n return res.data;\n },\n async get(id) {\n return (await t.get<{ data: ApiIntent }>(`/v1/intents/${id}`)).data;\n },\n async submitSignature(id, signature) {\n return (await t.patch<{ data: ApiIntent }>(`/v1/intents/${id}/signature`, { signature })).data;\n },\n async confirm(id, txHash) {\n return (await t.patch<{ data: ApiIntent }>(`/v1/intents/${id}/confirm`, { txHash })).data;\n },\n async syncTransaction(txHash) {\n return (await t.post<{ data: ApiTxSyncResult }>(\"/v1/tx/sync\", { txHash })).data;\n },\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type { ApiMetadataSignedUrl, ApiMetadataUpload, ApiResponse } from \"../../types/api.js\";\n\nexport interface MetadataApi {\n signedUrl(kind?: \"image\" | \"document\" | \"media\"): Promise<ApiResponse<ApiMetadataSignedUrl>>;\n upload(metadata: Record<string, unknown>): Promise<ApiResponse<ApiMetadataUpload>>;\n uploadDirectory(files: { name: string; content: unknown }[]): Promise<{ cid: string; baseUri: string }>;\n resolve(uri: string): Promise<ApiResponse<unknown>>;\n uploadFile(file: File): Promise<ApiResponse<ApiMetadataUpload>>;\n}\n\nexport function createMetadataApi(t: Transport): MetadataApi {\n return {\n signedUrl(kind) {\n return t.get(\"/v1/metadata/signed-url\", { kind });\n },\n upload(metadata) {\n return t.post(\"/v1/metadata/upload\", metadata);\n },\n async uploadDirectory(files) {\n return (await t.post<{ data: { cid: string; baseUri: string } }>(\"/v1/metadata/upload-directory\", { files })).data;\n },\n resolve(uri) {\n return t.get(\"/v1/metadata/resolve\", { uri });\n },\n uploadFile(file) {\n const formData = new FormData();\n formData.append(\"file\", file);\n return t.request(\"/v1/metadata/upload-file\", { method: \"POST\", body: formData });\n },\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type { ApiCreatorListResult, ApiCreatorProfile, ApiUsernameClaim } from \"../../types/api.js\";\n\nexport interface CreatorsApi {\n list(opts?: { search?: string; page?: number; limit?: number }): Promise<ApiCreatorListResult>;\n findProfile(walletAddress: string): Promise<ApiCreatorProfile | null>;\n findByUsername(username: string): Promise<ApiCreatorProfile | null>;\n updateProfile(\n walletAddress: string,\n data: Partial<Omit<ApiCreatorProfile, \"walletAddress\" | \"chain\" | \"updatedAt\">>,\n ): Promise<ApiCreatorProfile>;\n isHidden(wallet: string): Promise<boolean>;\n myUsernameClaim(): Promise<{ username: string | null; claim: ApiUsernameClaim | null }>;\n usernameAvailability(username: string): Promise<{ available: boolean; reason?: string }>;\n submitUsernameClaim(username: string, notifyEmail?: string): Promise<ApiUsernameClaim>;\n}\n\nexport function createCreatorsApi(t: Transport): CreatorsApi {\n return {\n list(opts = {}) {\n return t.get(\"/v1/creators\", { search: opts.search, page: opts.page || undefined, limit: opts.limit || undefined });\n },\n findProfile(walletAddress) {\n return t.find(`/v1/creators/${t.addr(walletAddress)}/profile`);\n },\n findByUsername(username) {\n return t.find(`/v1/creators/by-username/${encodeURIComponent(username.toLowerCase().trim())}`);\n },\n updateProfile(walletAddress, data) {\n return t.patch(`/v1/creators/${t.addr(walletAddress)}/profile`, data);\n },\n async isHidden(wallet) {\n return (await t.get<{ isHidden: boolean }>(`/v1/creators/${t.addr(wallet)}/hidden`)).isHidden;\n },\n myUsernameClaim() {\n return t.get(\"/v1/username-claims/me\");\n },\n usernameAvailability(username) {\n return t.get(`/v1/username-claims/check/${encodeURIComponent(username)}`);\n },\n async submitUsernameClaim(username, notifyEmail) {\n const res = await t.post<{ claim: ApiUsernameClaim }>(\"/v1/username-claims\", {\n username,\n ...(notifyEmail ? { notifyEmail } : {}),\n });\n return res.claim;\n },\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type { ApiChain, ApiUserWallet } from \"../../types/api.js\";\n\nexport interface RegisteredUser {\n accountId: string;\n publicId: string;\n walletAddress: string;\n chain: string;\n provider: string;\n createdAt: string;\n}\n\nexport interface WalletRecovery {\n enabled: boolean;\n state: \"none\" | \"waiting\" | \"ready\";\n readyAt: number | null;\n newOwnerGuid: string | null;\n guardianPubkey: string | null;\n}\n\nexport interface AccountApi {\n registerUser(params: { walletAddress: string; walletType?: string; chain?: ApiChain }): Promise<RegisteredUser>;\n upsertMyWallet(options?: { walletType?: string; chain?: ApiChain; email?: string }): Promise<ApiUserWallet>;\n findMyWallet(): Promise<ApiUserWallet | null>;\n changeMyEmail(email: string): Promise<{ email: string }>;\n sessionWallet(): Promise<{ walletAddress: string; needsKeySetup: boolean } | null>;\n setupWalletKey(params: { newOwnerPubkey: string }): Promise<{ walletAddress: string; removeOwnerGuid: string | null }>;\n generateWallet(newWalletSiwsToken: string): Promise<{ walletAddress: string }>;\n walletRecovery(): Promise<WalletRecovery>;\n startWalletRecovery(params: { newOwnerPubkey: string }): Promise<WalletRecovery>;\n completeWalletRecovery(params: { newOwnerPubkey: string }): Promise<WalletRecovery>;\n emailExists(email: string): Promise<boolean>;\n requestEmailCode(email: string): Promise<void>;\n registerEmailAccount(email: string): Promise<void>;\n verifyEmailCode(email: string, code: string): Promise<void>;\n confirmEmail(token: string): Promise<{ email: string }>;\n}\n\nexport function createAccountApi(t: Transport): AccountApi {\n return {\n registerUser(params) {\n return t.post(\"/v1/users/register\", params);\n },\n upsertMyWallet(options = {}) {\n const body: Record<string, string> = { walletType: options.walletType ?? \"UNKNOWN\" };\n if (options.chain) body.chain = options.chain;\n if (options.email) body.email = options.email;\n return t.post(\"/v1/users/me\", body);\n },\n findMyWallet() {\n return t.find(\"/v1/users/me\");\n },\n changeMyEmail(email) {\n return t.post(\"/v1/users/me/email\", { email });\n },\n async sessionWallet() {\n const body = await t.post<{ walletAddress?: string | null; needsKeySetup?: boolean }>(\"/v1/users/me/wallet\", {});\n return body.walletAddress ? { walletAddress: body.walletAddress, needsKeySetup: body.needsKeySetup === true } : null;\n },\n setupWalletKey(params) {\n return t.post(\"/v1/users/me/wallet/key\", params);\n },\n generateWallet(newWalletSiwsToken) {\n return t.post(\"/v1/users/me/generate-wallet\", { newWalletSiwsToken });\n },\n walletRecovery() {\n return t.get(\"/v1/users/me/wallet/recovery\");\n },\n startWalletRecovery(params) {\n return t.post(\"/v1/users/me/wallet/recovery\", params);\n },\n completeWalletRecovery(params) {\n return t.post(\"/v1/users/me/wallet/recovery/complete\", params);\n },\n async emailExists(email) {\n return (await t.get<{ exists: boolean }>(\"/v1/auth/email/exists\", { email })).exists;\n },\n async requestEmailCode(email) {\n await t.post(\"/v1/auth/email/request-code\", { email });\n },\n async registerEmailAccount(email) {\n await t.post(\"/v1/auth/email/register-account\", { email });\n },\n async verifyEmailCode(email, code) {\n await t.post(\"/v1/auth/email/verify-code\", { email, code });\n },\n async confirmEmail(token) {\n const body = await t.post<{ ok: boolean; email: string }>(\"/v1/auth/email/confirm\", { token });\n return { email: body.email };\n },\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type { ApiKeyConfirmation } from \"../../starknet/api-key-confirmation.js\";\nimport type {\n ApiCreditPayment,\n ApiFundingInstructions,\n ApiFundingIntent,\n ApiFundingMethod,\n ApiFundingSubmit,\n ApiPortalKey,\n ApiPortalKeyCreated,\n ApiPortalMe,\n ApiPricing,\n ApiResponse,\n} from \"../../types/api.js\";\n\nexport interface FundingApi {\n methods(): Promise<ApiFundingMethod[]>;\n create(input: { method: string; params: Record<string, unknown> }): Promise<ApiFundingIntent>;\n get(id: string): Promise<ApiFundingIntent>;\n challenge(id: string, payer: string): Promise<{ typedData: unknown }>;\n authorize(id: string, input: { payer: string; signature: string[] }): Promise<{ instructions: ApiFundingInstructions }>;\n submit(id: string, txHash: string): Promise<ApiFundingSubmit>;\n cancel(id: string): Promise<{ status: string }>;\n}\n\nexport interface PortalApi {\n me(): Promise<ApiPortalMe>;\n apiKeys(): Promise<ApiPortalKey[]>;\n createApiKey(input: { label?: string } | undefined, confirmation: ApiKeyConfirmation): Promise<ApiPortalKeyCreated>;\n deleteApiKey(id: string, confirmation: ApiKeyConfirmation): Promise<{ id: string }>;\n creditHistory(): Promise<ApiCreditPayment[]>;\n checkDeposit(txHash: string): Promise<{ deposits: number }>;\n pricing(): Promise<ApiPricing>;\n funding: FundingApi;\n}\n\nexport function createPortalApi(t: Transport): PortalApi {\n const data = async <T>(promise: Promise<ApiResponse<T>>): Promise<T> => (await promise).data;\n const fundingPath = (id: string) => `/v1/portal/funding/${encodeURIComponent(id)}`;\n return {\n me: () => data(t.get(\"/v1/portal/me\")),\n apiKeys: () => data(t.get(\"/v1/portal/keys\")),\n createApiKey: (input, confirmation) => data(t.post(\"/v1/portal/keys\", { ...(input ?? {}), confirmation })),\n deleteApiKey: (id, confirmation) => data(t.delete(`/v1/portal/keys/${id}`, { confirmation })),\n creditHistory: () => data(t.get(\"/v1/portal/credits/history\")),\n checkDeposit: (txHash) => data(t.post(\"/v1/portal/credits/check\", { txHash })),\n pricing: () => t.get(\"/v1/pricing\"),\n funding: {\n methods: () => data(t.get(\"/v1/portal/funding/methods\")),\n create: (input) => data(t.post(\"/v1/portal/funding\", { method: input.method, params: input.params })),\n get: (id) => data(t.get(fundingPath(id))),\n challenge: (id, payer) => data(t.post(`${fundingPath(id)}/challenge`, { payer })),\n authorize: (id, input) => data(t.post(`${fundingPath(id)}/authorize`, { payer: input.payer, signature: input.signature })),\n submit: (id, txHash) => data(t.post(`${fundingPath(id)}/submit`, { txHash })),\n cancel: (id) => data(t.post(`${fundingPath(id)}/cancel`, {})),\n },\n };\n}\n","import type { z } from \"zod\";\nimport type { Transport } from \"../transport.js\";\nimport type * as provisioning from \"../../contract/provisioning.js\";\nimport type { ApiBusinessProvisioning, ApiEmissionResult, ApiResponse, EmissionParams } from \"../../types/api.js\";\n\nexport type ProvisioningResult = ApiResponse<ApiBusinessProvisioning> & { reusedExistingWallet?: boolean };\n\nexport interface BusinessApi {\n emit(params: EmissionParams): Promise<ApiEmissionResult>;\n registerProvisioning(params: z.input<typeof provisioning.provisioningRegisterSchema>): Promise<ProvisioningResult>;\n}\n\nexport function createBusinessApi(t: Transport): BusinessApi {\n return {\n async emit(params) {\n return (await t.post<ApiResponse<ApiEmissionResult>>(\"/v1/business/issuance/emission\", params)).data;\n },\n registerProvisioning(params) {\n return t.post(\"/v1/business/provisioning\", { chain: params.chain ?? \"STARKNET\", email: params.email });\n },\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type {\n ApiRemixOffer,\n ApiRemixOffersQuery,\n AutoRemixOfferParams,\n ConfirmRemixOfferParams,\n ConfirmSelfRemixParams,\n CreateRemixOfferParams,\n ApiResponse,\n} from \"../../types/api.js\";\n\nexport interface RemixApi {\n submit(params: CreateRemixOfferParams): Promise<ApiRemixOffer>;\n submitAuto(params: AutoRemixOfferParams): Promise<ApiRemixOffer>;\n confirmSelf(params: ConfirmSelfRemixParams): Promise<ApiRemixOffer>;\n list(query: ApiRemixOffersQuery): Promise<ApiResponse<ApiRemixOffer[]>>;\n get(id: string): Promise<ApiRemixOffer>;\n confirm(id: string, params: ConfirmRemixOfferParams): Promise<ApiRemixOffer>;\n reject(id: string): Promise<ApiRemixOffer>;\n extend(id: string, days: number): Promise<ApiRemixOffer>;\n}\n\nexport function createRemixApi(t: Transport): RemixApi {\n const one = async (promise: Promise<ApiResponse<ApiRemixOffer>>): Promise<ApiRemixOffer> => (await promise).data;\n return {\n submit: (params) => one(t.post(\"/v1/remix-offers\", params)),\n submitAuto: (params) => one(t.post(\"/v1/remix-offers/auto\", params)),\n confirmSelf: (params) => one(t.post(\"/v1/remix-offers/self/confirm\", params)),\n list: (query) =>\n t.get(\"/v1/remix-offers\", { role: query.role, status: query.status, page: query.page, limit: query.limit }),\n get: (id) => one(t.get(`/v1/remix-offers/${id}`)),\n confirm: (id, params) => one(t.post(`/v1/remix-offers/${id}/confirm`, params)),\n reject: (id) => one(t.post(`/v1/remix-offers/${id}/reject`, {})),\n extend: (id, days) => one(t.post(`/v1/remix-offers/${id}/extend`, { days })),\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type {\n ApiCoin,\n ApiCoinClaimResult,\n ApiCoinPrices,\n ApiCoinsQuery,\n ApiCollectionClaim,\n ApiResponse,\n} from \"../../types/api.js\";\n\nexport interface CoinsApi {\n list(opts?: ApiCoinsQuery): Promise<ApiResponse<ApiCoin[]>>;\n get(contract: string): Promise<ApiCoin>;\n prices(): Promise<ApiCoinPrices>;\n claim(coinAddress: string): Promise<ApiCoinClaimResult>;\n claims(status?: string): Promise<ApiResponse<ApiCollectionClaim[]>>;\n updateProfile(contract: string, data: { image?: string | null; description?: string | null }): Promise<ApiCoin>;\n sync(coinAddress: string, owner?: string): Promise<ApiCoin>;\n}\n\nexport function createCoinsApi(t: Transport): CoinsApi {\n return {\n list(opts = {}) {\n return t.get(\"/v1/coins\", {\n page: opts.page || undefined,\n limit: opts.limit || undefined,\n service: opts.service,\n sort: opts.sort,\n creator: opts.creator ? t.addr(opts.creator) : undefined,\n chain: opts.chain,\n });\n },\n async get(contract) {\n return (await t.get<{ data: ApiCoin }>(`/v1/coins/${t.addr(contract)}`)).data;\n },\n async prices() {\n return (await t.get<ApiResponse<ApiCoinPrices>>(\"/v1/coins/prices\")).data;\n },\n claim(coinAddress) {\n return t.post(\"/v1/coins/claim\", { coinAddress });\n },\n claims(status = \"PENDING\") {\n return t.get(\"/v1/coins/claims\", { status });\n },\n async updateProfile(contract, data) {\n return (await t.patch<ApiResponse<ApiCoin>>(`/v1/coins/${t.addr(contract)}`, data)).data;\n },\n async sync(coinAddress, owner) {\n return (await t.post<{ data: ApiCoin }>(\"/v1/coins/sync\", { coinAddress, ...(owner ? { owner } : {}) })).data;\n },\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type { ApiDrop, ApiDropFee, ApiDropListStatus, ApiDropMint, ApiResponse } from \"../../types/api.js\";\n\nexport interface DropsApi {\n fee(): Promise<ApiDropFee>;\n list(query?: { status?: ApiDropListStatus; organizer?: string; page?: number; limit?: number }): Promise<ApiResponse<ApiDrop[]>>;\n find(contract: string): Promise<ApiDrop | null>;\n mints(contract: string, opts?: { page?: number; limit?: number }): Promise<ApiResponse<ApiDropMint[]>>;\n}\n\nexport function createDropsApi(t: Transport): DropsApi {\n return {\n async fee() {\n return (await t.get<{ data: ApiDropFee }>(\"/v1/drops/fee\")).data;\n },\n list(query = {}) {\n return t.get(\"/v1/drops\", {\n status: query.status,\n organizer: query.organizer ? t.addr(query.organizer) : undefined,\n page: query.page,\n limit: query.limit,\n });\n },\n async find(contract) {\n const res = await t.find<{ data: ApiDrop }>(`/v1/drops/${t.addr(contract)}`);\n return res?.data ?? null;\n },\n mints(contract, opts = {}) {\n return t.get(`/v1/drops/${t.addr(contract)}/mints`, { page: opts.page, limit: opts.limit });\n },\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type {\n ApiResponse,\n ApiSponsorshipBid,\n ApiSponsorshipLicense,\n ApiSponsorshipLicensesQuery,\n ApiSponsorshipOffer,\n ApiSponsorshipOffersQuery,\n ApiSponsorshipProposal,\n ApiSponsorshipProposalsQuery,\n} from \"../../types/api.js\";\n\nexport interface SponsorshipApi {\n offers(query?: ApiSponsorshipOffersQuery): Promise<ApiResponse<ApiSponsorshipOffer[]>>;\n findOffer(offerId: string): Promise<ApiSponsorshipOffer | null>;\n bids(offerId: string): Promise<ApiSponsorshipBid[]>;\n proposals(query?: ApiSponsorshipProposalsQuery): Promise<ApiResponse<ApiSponsorshipProposal[]>>;\n findProposal(proposalId: string): Promise<ApiSponsorshipProposal | null>;\n licenses(query?: ApiSponsorshipLicensesQuery): Promise<ApiResponse<ApiSponsorshipLicense[]>>;\n}\n\nexport function createSponsorshipApi(t: Transport): SponsorshipApi {\n return {\n offers(query = {}) {\n return t.get(\"/v1/sponsorship/offers\", {\n limit: query.limit ?? 50,\n nftContract: query.nftContract,\n author: query.author,\n owner: query.owner,\n open: query.open,\n });\n },\n async findOffer(offerId) {\n const res = await t.find<{ data: ApiSponsorshipOffer }>(`/v1/sponsorship/offers/${encodeURIComponent(offerId)}`);\n return res?.data ?? null;\n },\n async bids(offerId) {\n return (await t.get<{ data: ApiSponsorshipBid[] }>(`/v1/sponsorship/offers/${encodeURIComponent(offerId)}/bids`)).data;\n },\n proposals(query = {}) {\n return t.get(\"/v1/sponsorship/proposals\", {\n limit: query.limit ?? 50,\n nftContract: query.nftContract,\n proposer: query.proposer,\n owner: query.owner,\n open: query.open,\n });\n },\n async findProposal(proposalId) {\n const res = await t.find<{ data: ApiSponsorshipProposal }>(`/v1/sponsorship/proposals/${encodeURIComponent(proposalId)}`);\n return res?.data ?? null;\n },\n licenses(query = {}) {\n return t.get(\"/v1/sponsorship/licenses\", { limit: query.limit ?? 50, holder: query.holder, author: query.author });\n },\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type {\n ApiPointEvent,\n ApiResponse,\n ApiRewardsBatchEntry,\n ApiRewardsConfig,\n ApiRewardsLeaderboardEntry,\n ApiUserRewards,\n} from \"../../types/api.js\";\n\nexport interface RewardsApi {\n get(address: string): Promise<ApiUserRewards>;\n leaderboard(opts?: { page?: number; limit?: number }): Promise<ApiResponse<ApiRewardsLeaderboardEntry[]>>;\n events(address: string, opts?: { page?: number; limit?: number }): Promise<ApiResponse<ApiPointEvent[]>>;\n config(): Promise<ApiRewardsConfig>;\n batch(addresses: string[]): Promise<ApiRewardsBatchEntry[]>;\n}\n\nexport function createRewardsApi(t: Transport): RewardsApi {\n return {\n async get(address) {\n return (await t.get<{ data: ApiUserRewards }>(`/v1/rewards/${t.addr(address)}`)).data;\n },\n leaderboard(opts = {}) {\n return t.get(\"/v1/rewards\", { page: opts.page ?? 1, limit: opts.limit ?? 50 });\n },\n events(address, opts = {}) {\n return t.get(`/v1/rewards/${t.addr(address)}/events`, { page: opts.page ?? 1, limit: opts.limit ?? 20 });\n },\n async config() {\n return (await t.get<{ data: ApiRewardsConfig }>(\"/v1/rewards/config\")).data;\n },\n async batch(addresses) {\n if (addresses.length === 0) return [];\n const res = await t.get<{ data: ApiRewardsBatchEntry[] }>(\"/v1/rewards/batch\", {\n addresses: addresses.map((a) => t.addr(a)).join(\",\"),\n });\n return res.data;\n },\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type { ApiPlatformStats, ApiSubmitReport, ApiSwapQuote, ApiSwapQuoteRequest } from \"../../types/api.js\";\n\nexport interface PlatformApi {\n stats(): Promise<ApiPlatformStats>;\n swapQuote(body: ApiSwapQuoteRequest): Promise<ApiSwapQuote>;\n submitReport(report: ApiSubmitReport): Promise<void>;\n}\n\nexport function createPlatformApi(t: Transport): PlatformApi {\n return {\n async stats() {\n return (await t.get<{ data: ApiPlatformStats }>(\"/v1/stats\")).data;\n },\n async swapQuote(body) {\n return (await t.post<{ quote: ApiSwapQuote }>(\"/v1/swap/quote\", body)).quote;\n },\n async submitReport(report) {\n const targetContract = report.targetContract ? t.addr(report.targetContract) : undefined;\n const targetAddress = report.targetAddress ? t.addr(report.targetAddress) : undefined;\n let targetKey: string | null = null;\n if (report.targetType === \"TOKEN\" && targetContract && report.targetTokenId) {\n targetKey = `TOKEN:${targetContract}:${report.targetTokenId}`;\n } else if (report.targetType === \"COLLECTION\" && targetContract) {\n targetKey = `COLLECTION:${targetContract}`;\n } else if (report.targetType === \"CREATOR\" && targetAddress) {\n targetKey = `CREATOR:${targetAddress}`;\n } else if (report.targetType === \"COMMENT\" && report.targetId) {\n targetKey = `COMMENT::${report.targetId}`;\n }\n if (!targetKey) throw new Error(`A ${report.targetType} report needs its target`);\n await t.post(\"/v1/reports\", { ...report, targetKey, targetContract, targetAddress });\n },\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type { CreatorCoinGuarantees } from \"../../starknet/services/creatorCoin.js\";\nimport type { PopClaimInfo } from \"../../starknet/pop-claim.js\";\nimport type { DropOnchain } from \"../../starknet/drop-state.js\";\nimport { dropStateFromWire, type DropStateWire } from \"../../contract/chainReads.js\";\nimport type { ApiIpNftTokenData, ApiTierOnchain } from \"../../types/api.js\";\n\nexport interface ChainReadsApi {\n ticket(contract: string, tokenId: string): Promise<ApiTierOnchain>;\n ticketCount(contract: string): Promise<number>;\n clubMembershipCount(contract: string): Promise<number>;\n clubMembership(contract: string, tokenId: string): Promise<ApiTierOnchain>;\n isClubMember(contract: string, tokenId: string, wallet: string): Promise<boolean>;\n ipNftTokenData(contract: string, tokenId: string): Promise<ApiIpNftTokenData | null>;\n coinGuarantees(contract: string): Promise<CreatorCoinGuarantees | null>;\n popClaimInfo(collection: string): Promise<PopClaimInfo | null>;\n dropState(contract: string): Promise<DropOnchain | null>;\n}\n\nexport function createChainReadsApi(t: Transport): ChainReadsApi {\n const data = async <T>(path: string): Promise<T> => (await t.get<{ data: T }>(path)).data;\n return {\n ticket: (contract, tokenId) => data(`/v1/tickets/${t.addr(contract)}/${tokenId}`),\n ticketCount: async (contract) => (await data<{ count: number }>(`/v1/tickets/${t.addr(contract)}/count`)).count,\n clubMembershipCount: async (contract) => (await data<{ count: number }>(`/v1/club/${t.addr(contract)}/count`)).count,\n clubMembership: (contract, tokenId) => data(`/v1/club/${t.addr(contract)}/${tokenId}`),\n isClubMember: async (contract, tokenId, wallet) =>\n (await data<{ isMember: boolean }>(`/v1/club/${t.addr(contract)}/${tokenId}/member/${t.addr(wallet)}`)).isMember,\n ipNftTokenData: (contract, tokenId) => data(`/v1/ipnft/${t.addr(contract)}/${tokenId}`),\n coinGuarantees: (contract) => data(`/v1/coins/${t.addr(contract)}/guarantees`),\n popClaimInfo: (collection) => data(`/v1/pop/${t.addr(collection)}/claim-info`),\n async dropState(contract) {\n const wire = await data<DropStateWire | null>(`/v1/drops/${t.addr(contract)}/state`);\n return wire ? dropStateFromWire(wire) : null;\n },\n };\n}\n","import { MedialaneApiError, parseRetryAfter } from \"../errors.js\";\nimport { Transport, type BearerSource, type TransportOptions } from \"./transport.js\";\nimport { createOrdersApi, type OrdersApi } from \"./domains/orders.js\";\nimport { createTokensApi, type TokensApi } from \"./domains/tokens.js\";\nimport { createCollectionsApi, type CollectionsApi } from \"./domains/collections.js\";\nimport { createActivityApi, createSearchApi, type ActivityApi, type SearchApi } from \"./domains/activity.js\";\nimport { createIntentsApi, type IntentsApi } from \"./domains/intents.js\";\nimport { createMetadataApi, type MetadataApi } from \"./domains/metadata.js\";\nimport { createCreatorsApi, type CreatorsApi } from \"./domains/creators.js\";\nimport { createAccountApi, type AccountApi } from \"./domains/account.js\";\nimport { createPortalApi, type PortalApi } from \"./domains/portal.js\";\nimport { createBusinessApi, type BusinessApi } from \"./domains/business.js\";\nimport { createRemixApi, type RemixApi } from \"./domains/remix.js\";\nimport { createCoinsApi, type CoinsApi } from \"./domains/coins.js\";\nimport { createDropsApi, type DropsApi } from \"./domains/drops.js\";\nimport { createSponsorshipApi, type SponsorshipApi } from \"./domains/sponsorship.js\";\nimport { createRewardsApi, type RewardsApi } from \"./domains/rewards.js\";\nimport { createPlatformApi, type PlatformApi } from \"./domains/platform.js\";\nimport { createChainReadsApi, type ChainReadsApi } from \"./domains/chainReads.js\";\n\nexport { MedialaneApiError, parseRetryAfter };\n\nexport type ApiClientOptions = TransportOptions;\n\nexport class ApiClient {\n private readonly transport: Transport;\n\n readonly orders: OrdersApi;\n readonly tokens: TokensApi;\n readonly collections: CollectionsApi;\n readonly activity: ActivityApi;\n readonly search: SearchApi;\n readonly intents: IntentsApi;\n readonly metadata: MetadataApi;\n readonly creators: CreatorsApi;\n readonly account: AccountApi;\n readonly portal: PortalApi;\n readonly business: BusinessApi;\n readonly remix: RemixApi;\n readonly coins: CoinsApi;\n readonly drops: DropsApi;\n readonly sponsorship: SponsorshipApi;\n readonly rewards: RewardsApi;\n readonly platform: PlatformApi;\n readonly chainReads: ChainReadsApi;\n\n constructor(options: ApiClientOptions) {\n this.transport = new Transport(options);\n const t = this.transport;\n this.orders = createOrdersApi(t);\n this.tokens = createTokensApi(t);\n this.collections = createCollectionsApi(t);\n this.activity = createActivityApi(t);\n this.search = createSearchApi(t);\n this.intents = createIntentsApi(t);\n this.metadata = createMetadataApi(t);\n this.creators = createCreatorsApi(t);\n this.account = createAccountApi(t);\n this.portal = createPortalApi(t);\n this.business = createBusinessApi(t);\n this.remix = createRemixApi(t);\n this.coins = createCoinsApi(t);\n this.drops = createDropsApi(t);\n this.sponsorship = createSponsorshipApi(t);\n this.rewards = createRewardsApi(t);\n this.platform = createPlatformApi(t);\n this.chainReads = createChainReadsApi(t);\n }\n\n withBearer(bearer: BearerSource | undefined): ApiClient {\n return new ApiClient({ ...this.transport.settings(), bearer });\n }\n}\n","export class PasskeyCancelledError extends Error {\n constructor(message = \"Passkey prompt was cancelled.\") {\n super(message);\n this.name = \"PasskeyCancelledError\";\n }\n}\n\nexport class DeviceKeyMissingError extends Error {\n constructor() {\n super(\"This browser no longer holds the wallet key. Recover the wallet with its recovery key.\");\n this.name = \"DeviceKeyMissingError\";\n }\n}\n\nexport type PasskeyUnsupportedReason = \"no-webauthn\" | \"no-prf\";\n\nexport class PasskeyUnsupportedError extends Error {\n readonly reason: PasskeyUnsupportedReason;\n constructor(reason: PasskeyUnsupportedReason) {\n super(\n reason === \"no-webauthn\"\n ? \"Passkeys are not available in this environment.\"\n : \"This passkey did not return a PRF secret, so it cannot seal a wallet key.\",\n );\n this.name = \"PasskeyUnsupportedError\";\n this.reason = reason;\n }\n}\n","import { getCoordinates } from \"./chains.js\";\n\nconst SN = getCoordinates(\"STARKNET\");\n\nexport const STARKNET_MARKETPLACE_721_CONTRACT = SN.marketplace721;\nexport const STARKNET_MARKETPLACE_1155_CONTRACT = SN.marketplace1155;\n\nexport const STARKNET_COLLECTION_721_CONTRACT = SN.collection721;\nexport const STARKNET_DATA_TOKENIZATION_721_CONTRACT = SN.dataTokenization721;\nexport const STARKNET_COLLECTION_1155_CONTRACT = SN.collection1155;\n\nexport const STARKNET_POP_FACTORY_CONTRACT = SN.popFactory;\nexport const STARKNET_POP_FACTORY_START_BLOCK = SN.popFactoryStartBlock;\nexport const STARKNET_DROP_FACTORY_CONTRACT = SN.dropFactory;\nexport const STARKNET_DROP_FACTORY_START_BLOCK = SN.dropFactoryStartBlock;\nexport const STARKNET_NFTCOMMENTS_CONTRACT = SN.nftComments;\n\nexport const STARKNET_IP_TICKETS_FACTORY_CONTRACT = SN.ipTicketsFactory;\nexport const STARKNET_IP_CLUB_FACTORY_CONTRACT = SN.ipClubFactory;\nexport const STARKNET_IP_SPONSORSHIP_CONTRACT = SN.ipSponsorship;\n\nexport const STARKNET_MEDIAWALLET_CLASS_HASH = SN.mediaWalletClassHash;\n\nexport const STARKNET_CREATOR_COIN_FACTORY_CONTRACT = SN.creatorCoinFactory;\n\nexport const STARKNET_GENESIS_MINT_CONTRACT = SN.genesisMint;\nexport const STARKNET_GENESIS_NFT_URI = \"ipfs://bafkreiag6wzov7migmxwx3wrtudvbx4ajrlbjopqw7uni7nn2nsxv4eykm\";\n\nexport const SUPPORTED_TOKENS = [\n {\n\n symbol: \"USDC\",\n address:\n \"0x033068f6539f8e6e6b131e6b2b814e6c34a5224bc66947c47dab9dfee93b35fb\",\n decimals: 6,\n listable: true,\n },\n {\n symbol: \"USDT\",\n address:\n \"0x068f5c6a61780768455de69077e07e89787839bf8166decfbf92b645209c0fb8\",\n decimals: 6,\n listable: true,\n },\n {\n symbol: \"ETH\",\n address:\n \"0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7\",\n decimals: 18,\n listable: true,\n },\n {\n symbol: \"STRK\",\n address:\n \"0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d\",\n decimals: 18,\n listable: true,\n },\n {\n symbol: \"WBTC\",\n address:\n \"0x03fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac\",\n decimals: 8,\n listable: true,\n },\n] as const;\n\nexport type SupportedTokenSymbol = (typeof SUPPORTED_TOKENS)[number][\"symbol\"];\n\nexport const DEFAULT_CURRENCY: SupportedTokenSymbol = \"USDC\";\n","import { SUPPORTED_TOKENS } from \"../constants.js\";\n\nexport type SupportedToken = (typeof SUPPORTED_TOKENS)[number];\n\nexport function parseAmount(human: string, decimals: number): string {\n const [whole, frac = \"\"] = human.split(\".\");\n const fracPadded = frac.padEnd(decimals, \"0\").slice(0, decimals);\n return (BigInt(whole) * BigInt(10) ** BigInt(decimals) + BigInt(fracPadded)).toString();\n}\n\nexport function formatAmount(raw: string, decimals: number): string {\n const value = BigInt(raw);\n const factor = 10n ** BigInt(decimals);\n const whole = value / factor;\n const remainder = value % factor;\n const fractional = remainder.toString().padStart(decimals, \"0\").replace(/0+$/, \"\");\n return fractional ? `${whole}.${fractional}` : whole.toString();\n}\n\nexport function getTokenByAddress(address: string | null | undefined): SupportedToken | undefined {\n if (typeof address !== \"string\" || address.trim() === \"\") return undefined;\n\n let target: bigint | null = null;\n try {\n target = BigInt(address);\n } catch {\n target = null;\n }\n return SUPPORTED_TOKENS.find((t) => {\n if (target !== null) {\n try {\n return BigInt(t.address) === target;\n } catch {\n\n }\n }\n return t.address.toLowerCase() === address.toLowerCase();\n });\n}\n\nexport function getTokenBySymbol(symbol: string | null | undefined): SupportedToken | undefined {\n if (typeof symbol !== \"string\") return undefined;\n const upper = symbol.toUpperCase();\n return SUPPORTED_TOKENS.find((t) => t.symbol === upper);\n}\n\nexport function getListableTokens(): ReadonlyArray<SupportedToken> {\n return SUPPORTED_TOKENS.filter((t) => t.listable);\n}\n"]}
|
|
@@ -585,7 +585,6 @@ function createPortalApi(t) {
|
|
|
585
585
|
createApiKey: (input, confirmation) => data(t.post("/v1/portal/keys", { ...input ?? {}, confirmation })),
|
|
586
586
|
deleteApiKey: (id, confirmation) => data(t.delete(`/v1/portal/keys/${id}`, { confirmation })),
|
|
587
587
|
creditHistory: () => data(t.get("/v1/portal/credits/history")),
|
|
588
|
-
spend: () => data(t.get("/v1/portal/credits/spend")),
|
|
589
588
|
checkDeposit: (txHash) => data(t.post("/v1/portal/credits/check", { txHash })),
|
|
590
589
|
pricing: () => t.get("/v1/pricing"),
|
|
591
590
|
funding: {
|
|
@@ -975,5 +974,5 @@ exports.normalizeAddress = normalizeAddress;
|
|
|
975
974
|
exports.normalizeHash = normalizeHash;
|
|
976
975
|
exports.parseAmount = parseAmount;
|
|
977
976
|
exports.shortenAddress = shortenAddress;
|
|
978
|
-
//# sourceMappingURL=chunk-
|
|
979
|
-
//# sourceMappingURL=chunk-
|
|
977
|
+
//# sourceMappingURL=chunk-3V3L2R5O.cjs.map
|
|
978
|
+
//# sourceMappingURL=chunk-3V3L2R5O.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/errors.ts","../src/utils/address.ts","../src/utils/retry.ts","../src/api/transport.ts","../src/api/domains/orders.ts","../src/api/domains/tokens.ts","../src/api/domains/collections.ts","../src/api/domains/activity.ts","../src/api/domains/intents.ts","../src/api/domains/metadata.ts","../src/api/domains/creators.ts","../src/api/domains/account.ts","../src/api/domains/portal.ts","../src/api/domains/business.ts","../src/api/domains/remix.ts","../src/api/domains/coins.ts","../src/api/domains/drops.ts","../src/api/domains/sponsorship.ts","../src/api/domains/rewards.ts","../src/api/domains/platform.ts","../src/api/domains/chainReads.ts","../src/api/client.ts","../src/wallet/passkey-errors.ts","../src/constants.ts","../src/utils/token.ts"],"names":["keccak_256","base58","base32","intentPath","dropStateFromWire","getCoordinates"],"mappings":"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","file":"chunk-3V3L2R5O.cjs","sourcesContent":["import type { MedialaneErrorCode } from \"./types/errors.js\";\n\nexport class UserFacingError extends Error {\n readonly retryable: boolean;\n\n constructor(message: string, options: { retryable?: boolean } = {}) {\n super(message);\n this.name = \"UserFacingError\";\n this.retryable = options.retryable ?? true;\n }\n}\n\nexport class MedialaneError extends Error {\n constructor(\n message: string,\n public readonly code: MedialaneErrorCode = \"UNKNOWN\",\n public readonly cause?: unknown,\n ) {\n super(message);\n this.name = \"MedialaneError\";\n }\n}\n\nconst RESOURCE_NOT_FOUND: ReadonlyArray<readonly [string, MedialaneErrorCode]> = [\n [\"/v1/orders\", \"ORDER_NOT_FOUND\"],\n [\"/v1/tokens\", \"TOKEN_NOT_FOUND\"],\n [\"/v1/collections\", \"COLLECTION_NOT_FOUND\"],\n [\"/v1/intents\", \"INTENT_NOT_FOUND\"],\n];\n\nexport function errorCodeFor(status: number, path = \"\"): MedialaneErrorCode {\n if (status === 404) {\n return RESOURCE_NOT_FOUND.find(([prefix]) => path.startsWith(prefix))?.[1] ?? \"NOT_FOUND\";\n }\n if (status === 429) return \"RATE_LIMITED\";\n if (status === 410) return \"INTENT_EXPIRED\";\n if (status === 401 || status === 403) return \"UNAUTHORIZED\";\n if (status === 400) return \"INVALID_PARAMS\";\n return \"UNKNOWN\";\n}\n\nexport class MedialaneApiError extends MedialaneError {\n constructor(\n public readonly status: number,\n message: string,\n public readonly retryAfterMs?: number,\n public readonly details?: unknown,\n path?: string,\n public readonly serverCode?: string,\n public readonly requestId?: string,\n ) {\n super(message, errorCodeFor(status, path));\n this.name = \"MedialaneApiError\";\n }\n}\n\nexport function parseRetryAfter(value: string | null): number | undefined {\n if (!value) return undefined;\n const seconds = Number(value);\n if (Number.isFinite(seconds)) return Math.max(0, seconds * 1000);\n const date = Date.parse(value);\n if (!Number.isNaN(date)) return Math.max(0, date - Date.now());\n return undefined;\n}\n","import { keccak_256 } from \"@noble/hashes/sha3.js\";\nimport { base32, base58 } from \"@scure/base\";\nimport type { Chain } from \"../chains.js\";\n\nexport function normalizeAddress(chain: Chain, address: string): string {\n switch (chain) {\n case \"STARKNET\":\n return normalizeStarknet(address);\n case \"ETHEREUM\":\n case \"BASE\":\n return normalizeEvm(address);\n case \"SOLANA\":\n return normalizeSolana(address);\n case \"STELLAR\":\n return normalizeStellar(address);\n case \"BITCOIN\":\n throw new Error(\"BITCOIN address normalization not implemented\");\n }\n}\n\nfunction normalizeStarknet(address: string): string {\n try {\n const hex = BigInt(address).toString(16);\n return \"0x\" + hex.padStart(64, \"0\").toLowerCase();\n } catch {\n throw new Error(`Invalid STARKNET address: \"${address}\"`);\n }\n}\n\nfunction normalizeEvm(address: string): string {\n const m = /^0x([0-9a-fA-F]{40})$/.exec(address);\n if (!m) throw new Error(`Invalid ETHEREUM/BASE address: \"${address}\"`);\n const lower = m[1].toLowerCase();\n\n const hash = keccak_256(new TextEncoder().encode(lower));\n let out = \"0x\";\n for (let i = 0; i < 40; i++) {\n const nibble = (hash[i >> 1]! >> (i % 2 === 0 ? 4 : 0)) & 0xf;\n out += nibble >= 8 ? lower[i]!.toUpperCase() : lower[i];\n }\n return out;\n}\n\nfunction normalizeSolana(address: string): string {\n try {\n const bytes = base58.decode(address);\n if (bytes.length !== 32) throw new Error(\"not a 32-byte key\");\n return address;\n } catch {\n throw new Error(`Invalid SOLANA address: \"${address}\"`);\n }\n}\n\nconst STELLAR_VERSION_BYTES = new Set([6 << 3, 2 << 3]);\n\nfunction normalizeStellar(address: string): string {\n const upper = address.toUpperCase();\n if (!/^[GC][A-Z2-7]{55}$/.test(upper)) {\n throw new Error(`Invalid STELLAR address: \"${address}\"`);\n }\n let decoded: Uint8Array;\n try {\n decoded = base32.decode(upper);\n } catch {\n throw new Error(`Invalid STELLAR address: \"${address}\"`);\n }\n if (decoded.length !== 35 || !STELLAR_VERSION_BYTES.has(decoded[0]!)) {\n throw new Error(`Invalid STELLAR address: \"${address}\"`);\n }\n const payload = decoded.subarray(0, 33);\n const checksum = decoded[33]! | (decoded[34]! << 8);\n if (crc16xmodem(payload) !== checksum) {\n throw new Error(`Invalid STELLAR address: \"${address}\"`);\n }\n return upper;\n}\n\nfunction crc16xmodem(bytes: Uint8Array): number {\n let crc = 0;\n for (const byte of bytes) {\n crc ^= byte << 8;\n for (let i = 0; i < 8; i++) {\n crc = crc & 0x8000 ? ((crc << 1) ^ 0x1021) & 0xffff : (crc << 1) & 0xffff;\n }\n }\n return crc;\n}\n\ndeclare const canonicalHashBrand: unique symbol;\n\nexport type CanonicalHash = string & { readonly [canonicalHashBrand]: true };\n\nexport function normalizeHash(hash: string): CanonicalHash {\n try {\n const hex = BigInt(hash).toString(16);\n return (\"0x\" + hex.padStart(64, \"0\").toLowerCase()) as CanonicalHash;\n } catch {\n throw new Error(`Invalid hash: \"${hash}\"`);\n }\n}\n\nexport function shortenAddress(chain: Chain, address: string, chars = 4): string {\n const norm = normalizeAddress(chain, address);\n return `${norm.slice(0, chars + 2)}...${norm.slice(-chars)}`;\n}\n","import { MedialaneApiError } from \"../errors.js\";\n\nexport interface RetryOptions {\n maxAttempts?: number;\n baseDelayMs?: number;\n maxDelayMs?: number;\n}\n\nconst DEFAULT_MAX_ATTEMPTS = 3;\nconst DEFAULT_BASE_DELAY_MS = 300;\nconst DEFAULT_MAX_DELAY_MS = 5000;\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport function isRetryableFor(method: string, err: unknown): boolean {\n if (err instanceof MedialaneApiError && err.status === 429) return true;\n const isRead = method === \"GET\" || method === \"HEAD\";\n if (!isRead) return false;\n return (err instanceof MedialaneApiError && err.status >= 500) || err instanceof TypeError;\n}\n\nexport async function withRetry<T>(\n fn: () => Promise<T>,\n opts?: RetryOptions,\n method = \"GET\",\n): Promise<T> {\n const maxAttempts = opts?.maxAttempts ?? DEFAULT_MAX_ATTEMPTS;\n const baseDelayMs = opts?.baseDelayMs ?? DEFAULT_BASE_DELAY_MS;\n const maxDelayMs = opts?.maxDelayMs ?? DEFAULT_MAX_DELAY_MS;\n\n let lastError: unknown;\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n try {\n return await fn();\n } catch (err) {\n lastError = err;\n\n if (!isRetryableFor(method, err) || attempt === maxAttempts - 1) {\n throw err;\n }\n\n const retryAfterMs = err instanceof MedialaneApiError ? err.retryAfterMs : undefined;\n const backoff = baseDelayMs * Math.pow(2, attempt) + Math.random() * baseDelayMs;\n const delay = Math.min(retryAfterMs ?? backoff, maxDelayMs);\n await sleep(delay);\n }\n }\n\n throw lastError;\n}\n","import type { Chain } from \"../chains.js\";\nimport { MedialaneApiError, parseRetryAfter } from \"../errors.js\";\nimport { normalizeAddress } from \"../utils/address.js\";\nimport type { FetchLike } from \"../utils/fetch.js\";\nimport { withRetry, type RetryOptions } from \"../utils/retry.js\";\n\nexport type BearerSource = string | (() => string | undefined);\n\nexport interface TransportOptions {\n baseUrl: string;\n apiKey?: string;\n bearer?: BearerSource;\n retry?: RetryOptions;\n chain?: Chain;\n fetch?: FetchLike;\n}\n\nexport type QueryValue = string | number | boolean | null | undefined;\n\nexport interface RequestOptions {\n method?: \"GET\" | \"POST\" | \"PATCH\" | \"PUT\" | \"DELETE\";\n body?: unknown;\n query?: Record<string, QueryValue>;\n bearer?: string;\n absent?: readonly number[];\n}\n\nexport function queryString(query: Record<string, QueryValue> | undefined): string {\n if (!query) return \"\";\n const params = new URLSearchParams();\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined && value !== null && value !== \"\") params.set(key, String(value));\n }\n const qs = params.toString();\n return qs ? `?${qs}` : \"\";\n}\n\nasync function failureFrom(response: Response, path: string): Promise<MedialaneApiError> {\n const text = await response.text().catch(() => response.statusText);\n let message = `Request failed with status ${response.status}`;\n let details: unknown = text;\n let serverCode: string | undefined;\n try {\n const body = JSON.parse(text) as { error?: unknown; code?: unknown };\n if (typeof body.error === \"string\" && body.error.trim() !== \"\") message = body.error;\n if (typeof body.code === \"string\") serverCode = body.code;\n details = body;\n } catch {\n details = text;\n }\n return new MedialaneApiError(\n response.status,\n message,\n parseRetryAfter(response.headers.get(\"retry-after\")),\n details,\n path,\n serverCode,\n response.headers.get(\"x-request-id\") ?? undefined,\n );\n}\n\nexport class Transport {\n readonly chain: Chain;\n private readonly baseUrl: string;\n private readonly headers: Record<string, string>;\n\n constructor(private readonly options: TransportOptions) {\n this.baseUrl = options.baseUrl.replace(/\\/$/, \"\");\n this.headers = options.apiKey ? { \"x-api-key\": options.apiKey } : {};\n this.chain = options.chain ?? \"STARKNET\";\n }\n\n withBearer(bearer: BearerSource | undefined): Transport {\n return new Transport({ ...this.options, bearer });\n }\n\n settings(): TransportOptions {\n return this.options;\n }\n\n addr(address: string): string {\n return normalizeAddress(this.chain, address);\n }\n\n async request<T>(path: string, opts: RequestOptions = {}): Promise<T> {\n const method = opts.method ?? \"GET\";\n const url = `${this.baseUrl}${path}${queryString(opts.query)}`;\n const headers: Record<string, string> = { ...this.headers };\n const token = opts.bearer ?? this.defaultBearer();\n if (token) headers.Authorization = `Bearer ${token}`;\n\n let body: BodyInit | undefined;\n if (opts.body instanceof FormData) {\n body = opts.body;\n } else if (opts.body !== undefined) {\n headers[\"Content-Type\"] = \"application/json\";\n body = JSON.stringify(opts.body);\n }\n\n const absent = (status: number) => opts.absent?.includes(status) === true;\n const response = await withRetry(\n async () => {\n const res = await (this.options.fetch ?? globalThis.fetch)(url, { method, headers, body });\n if (!res.ok && !absent(res.status)) throw await failureFrom(res, path);\n return res;\n },\n this.options.retry,\n method,\n );\n\n if (absent(response.status)) return null as T;\n return response.json() as Promise<T>;\n }\n\n get<T>(path: string, query?: Record<string, QueryValue>): Promise<T> {\n return this.request<T>(path, { query });\n }\n\n post<T>(path: string, body?: unknown, opts: Omit<RequestOptions, \"method\" | \"body\"> = {}): Promise<T> {\n return this.request<T>(path, { ...opts, method: \"POST\", body: body ?? {} });\n }\n\n patch<T>(path: string, body: unknown, opts: Omit<RequestOptions, \"method\" | \"body\"> = {}): Promise<T> {\n return this.request<T>(path, { ...opts, method: \"PATCH\", body });\n }\n\n delete<T>(path: string, body?: unknown, opts: Omit<RequestOptions, \"method\" | \"body\"> = {}): Promise<T> {\n return this.request<T>(path, { ...opts, method: \"DELETE\", body });\n }\n\n find<T>(path: string, opts: Omit<RequestOptions, \"absent\"> & { also?: readonly number[] } = {}): Promise<T | null> {\n const { also, ...rest } = opts;\n return this.request<T | null>(path, { ...rest, absent: [404, ...(also ?? [])] });\n }\n\n private defaultBearer(): string | undefined {\n const source = this.options.bearer;\n return typeof source === \"function\" ? source() : source;\n }\n}\n","import type { Transport } from \"../transport.js\";\nimport type { ApiOrder, ApiOrdersQuery, ApiCounterOffersQuery, ApiResponse } from \"../../types/api.js\";\n\nexport interface OrdersApi {\n list(query?: ApiOrdersQuery): Promise<ApiResponse<ApiOrder[]>>;\n get(orderHash: string): Promise<ApiOrder>;\n forToken(contract: string, tokenId: string): Promise<ApiResponse<ApiOrder[]>>;\n receivedBy(address: string, opts?: { page?: number; limit?: number }): Promise<ApiResponse<ApiOrder[]>>;\n byUser(address: string, opts?: { page?: number; limit?: number }): Promise<ApiResponse<ApiOrder[]>>;\n counterOffers(query: ApiCounterOffersQuery): Promise<ApiResponse<ApiOrder[]>>;\n}\n\nexport function createOrdersApi(t: Transport): OrdersApi {\n return {\n list(query = {}) {\n return t.get(\"/v1/orders\", {\n status: query.status,\n collection: query.collection,\n currency: query.currency,\n sort: query.sort,\n page: query.page,\n limit: query.limit,\n offerer: query.offerer ? t.addr(query.offerer) : undefined,\n minPrice: query.minPrice,\n maxPrice: query.maxPrice,\n chain: query.chain,\n });\n },\n async get(orderHash) {\n return (await t.get<ApiResponse<ApiOrder>>(`/v1/orders/${orderHash}`)).data;\n },\n forToken(contract, tokenId) {\n return t.get(`/v1/orders/token/${t.addr(contract)}/${tokenId}`);\n },\n receivedBy(address, opts = {}) {\n return t.get(`/v1/orders/received/${t.addr(address)}`, { page: opts.page ?? 1, limit: opts.limit ?? 50 });\n },\n byUser(address, opts = {}) {\n return t.get(`/v1/orders/user/${t.addr(address)}`, { page: opts.page ?? 1, limit: opts.limit ?? 20 });\n },\n counterOffers(query) {\n return t.get(\"/v1/orders/counter-offers\", {\n originalOrderHash: query.originalOrderHash,\n sellerAddress: query.sellerAddress,\n page: query.page,\n limit: query.limit,\n });\n },\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type {\n ApiActivity,\n ApiComment,\n ApiPublicRemix,\n ApiResponse,\n ApiToken,\n ApiTokenBalance,\n ApiTokensQuery,\n} from \"../../types/api.js\";\n\ninterface Paging {\n page?: number;\n limit?: number;\n}\n\nexport interface TokensApi {\n list(query?: ApiTokensQuery): Promise<ApiResponse<ApiToken[]>>;\n get(contract: string, tokenId: string, opts?: { wait?: boolean }): Promise<ApiToken>;\n balance(contract: string, tokenId: string, owner: string): Promise<ApiTokenBalance>;\n ownedBy(address: string, opts?: Paging): Promise<ApiResponse<ApiToken[]>>;\n history(contract: string, tokenId: string, opts?: Paging): Promise<ApiResponse<ApiActivity[]>>;\n comments(contract: string, tokenId: string, opts?: Paging): Promise<ApiResponse<ApiComment[]>>;\n remixes(contract: string, tokenId: string, opts?: Paging): Promise<ApiResponse<ApiPublicRemix[]>>;\n}\n\nexport function createTokensApi(t: Transport): TokensApi {\n return {\n list(query = {}) {\n return t.get(\"/v1/tokens\", {\n page: query.page,\n limit: query.limit,\n sort: query.sort,\n ipType: query.ipType,\n derivatives: query.derivatives,\n });\n },\n async get(contract, tokenId, opts = {}) {\n const res = await t.get<ApiResponse<ApiToken>>(`/v1/tokens/${contract}/${tokenId}`, opts.wait ? { wait: \"true\" } : undefined);\n return res.data;\n },\n async balance(contract, tokenId, owner) {\n return (await t.get<ApiResponse<ApiTokenBalance>>(`/v1/tokens/${contract}/${tokenId}/balances/${t.addr(owner)}`)).data;\n },\n ownedBy(address, opts = {}) {\n return t.get(`/v1/tokens/owned/${t.addr(address)}`, { page: opts.page ?? 1, limit: opts.limit ?? 20 });\n },\n history(contract, tokenId, opts = {}) {\n return t.get(`/v1/tokens/${contract}/${tokenId}/history`, { page: opts.page ?? 1, limit: opts.limit ?? 20 });\n },\n comments(contract, tokenId, opts = {}) {\n return t.get(`/v1/tokens/${t.addr(contract)}/${tokenId}/comments`, { page: opts.page, limit: opts.limit });\n },\n remixes(contract, tokenId, opts = {}) {\n return t.get(`/v1/tokens/${t.addr(contract)}/${tokenId}/remixes`, { page: opts.page, limit: opts.limit });\n },\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type {\n ApiCollection,\n ApiCollectionClaim,\n ApiCollectionProfile,\n ApiCollectionSlugClaim,\n ApiCollectionsListQuery,\n ApiResponse,\n ApiToken,\n CollectionTokensSort,\n UpdateCollectionProfileInput,\n} from \"../../types/api.js\";\n\nexport interface GatedContent {\n title: string;\n url: string;\n type: string;\n}\n\nexport interface CollectionsApi {\n list(query?: ApiCollectionsListQuery): Promise<ApiResponse<ApiCollection[]>>;\n get(contract: string): Promise<ApiCollection>;\n findBySlug(slug: string): Promise<ApiCollection | null>;\n tokens(contract: string, opts?: { page?: number; limit?: number; sort?: CollectionTokensSort }): Promise<ApiResponse<ApiToken[]>>;\n register(contractAddress: string): Promise<ApiCollection>;\n findProfile(contractAddress: string): Promise<ApiCollectionProfile | null>;\n updateProfile(contractAddress: string, data: UpdateCollectionProfileInput): Promise<ApiCollectionProfile>;\n findGatedContent(contractAddress: string): Promise<GatedContent | null>;\n claim(contractAddress: string, walletAddress: string): Promise<{ verified: boolean; collection?: ApiCollection; reason?: string }>;\n requestClaim(params: { contractAddress: string; walletAddress?: string; email: string; notes?: string }): Promise<{ claim: ApiCollectionClaim }>;\n slugAvailability(slug: string): Promise<{ available: boolean; reason?: string }>;\n submitSlugClaim(contractAddress: string, slug: string, notifyEmail?: string): Promise<{ claim: ApiCollectionSlugClaim }>;\n mySlugClaims(): Promise<{ claims: ApiCollectionSlugClaim[] }>;\n}\n\nconst slugOf = (slug: string) => encodeURIComponent(slug.toLowerCase().trim());\n\nexport function createCollectionsApi(t: Transport): CollectionsApi {\n return {\n list(query = {}) {\n return t.get(\"/v1/collections\", {\n page: query.page,\n limit: query.limit,\n owner: query.owner ? t.addr(query.owner) : undefined,\n service: query.service,\n sort: query.sort,\n isFeatured: query.isFeatured,\n hideEmpty: query.hideEmpty,\n standard: query.standard,\n chain: query.chain,\n });\n },\n async get(contract) {\n return (await t.get<ApiResponse<ApiCollection>>(`/v1/collections/${t.addr(contract)}`)).data;\n },\n async findBySlug(slug) {\n const res = await t.find<{ data: ApiCollection }>(`/v1/collections/by-slug/${slugOf(slug)}`);\n return res?.data ?? null;\n },\n tokens(contract, opts = {}) {\n return t.get(`/v1/collections/${t.addr(contract)}/tokens`, {\n page: opts.page ?? 1,\n limit: opts.limit ?? 20,\n sort: opts.sort ?? \"recent\",\n });\n },\n async register(contractAddress) {\n return (await t.post<{ data: ApiCollection }>(\"/v1/collections/register\", { contractAddress })).data;\n },\n findProfile(contractAddress) {\n return t.find(`/v1/collections/${t.addr(contractAddress)}/profile`);\n },\n updateProfile(contractAddress, data) {\n return t.patch(`/v1/collections/${t.addr(contractAddress)}/profile`, data);\n },\n findGatedContent(contractAddress) {\n return t.find(`/v1/collections/${t.addr(contractAddress)}/gated-content`, { also: [403] });\n },\n claim(contractAddress, walletAddress) {\n return t.post(\"/v1/collections/claim\", { contractAddress, walletAddress });\n },\n requestClaim(params) {\n return t.post(\"/v1/collections/claim/request\", params);\n },\n slugAvailability(slug) {\n return t.get(`/v1/collection-slug-claims/check/${slugOf(slug)}`);\n },\n submitSlugClaim(contractAddress, slug, notifyEmail) {\n return t.post(\"/v1/collection-slug-claims\", { contractAddress, slug, notifyEmail });\n },\n mySlugClaims() {\n return t.get(\"/v1/collection-slug-claims/me\");\n },\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type { ApiActivitiesQuery, ApiActivity, ApiResponse, ApiSearchResult, ApiWalletActivity, ChainFilter } from \"../../types/api.js\";\n\nexport interface ActivityApi {\n list(query?: ApiActivitiesQuery): Promise<ApiResponse<ApiActivity[]>>;\n byAddress(address: string, opts?: { page?: number; limit?: number }): Promise<ApiResponse<ApiActivity[]>>;\n wallet(address: string, chain?: \"STARKNET\"): Promise<ApiResponse<ApiWalletActivity[]>>;\n}\n\nexport interface SearchApi {\n (q: string, limit?: number, chain?: ChainFilter): Promise<ApiResponse<ApiSearchResult> & { query: string }>;\n}\n\nexport function createActivityApi(t: Transport): ActivityApi {\n return {\n list(query = {}) {\n return t.get(\"/v1/activities\", {\n type: query.type,\n contract: query.contract,\n page: query.page,\n limit: query.limit,\n chain: query.chain,\n });\n },\n byAddress(address, opts = {}) {\n return t.get(`/v1/activities/${t.addr(address)}`, { page: opts.page ?? 1, limit: opts.limit ?? 20 });\n },\n wallet(address, chain = \"STARKNET\") {\n return t.get(\"/v1/wallet-activity\", { address: t.addr(address), chain });\n },\n };\n}\n\nexport function createSearchApi(t: Transport): SearchApi {\n return (q, limit = 10, chain) => t.get(\"/v1/search\", { q, limit, chain });\n}\n","import type { Transport } from \"../transport.js\";\nimport { intentPath, type IntentKind } from \"../../contract/intents.js\";\nimport type {\n ApiCheckoutIntentResult,\n ApiIntent,\n ApiIntentCreated,\n ApiTxSyncResult,\n CreateCheckoutIntentParams,\n IntentParamsByKind,\n} from \"../../types/api.js\";\n\nexport interface IntentsApi {\n create<K extends IntentKind>(kind: K, params: IntentParamsByKind[K], opts?: { bearer?: string }): Promise<ApiIntentCreated>;\n checkout(params: CreateCheckoutIntentParams): Promise<ApiCheckoutIntentResult[]>;\n get(id: string): Promise<ApiIntent>;\n submitSignature(id: string, signature: string[]): Promise<ApiIntent>;\n confirm(id: string, txHash: string): Promise<ApiIntent>;\n syncTransaction(txHash: string): Promise<ApiTxSyncResult>;\n}\n\nexport function createIntentsApi(t: Transport): IntentsApi {\n return {\n async create(kind, params, opts) {\n const res = await t.post<{ data: ApiIntentCreated }>(intentPath(kind), params, { bearer: opts?.bearer });\n return res.data;\n },\n async checkout(params) {\n const res = await t.post<{ data: ApiCheckoutIntentResult[] }>(intentPath(\"checkout\"), params);\n return res.data;\n },\n async get(id) {\n return (await t.get<{ data: ApiIntent }>(`/v1/intents/${id}`)).data;\n },\n async submitSignature(id, signature) {\n return (await t.patch<{ data: ApiIntent }>(`/v1/intents/${id}/signature`, { signature })).data;\n },\n async confirm(id, txHash) {\n return (await t.patch<{ data: ApiIntent }>(`/v1/intents/${id}/confirm`, { txHash })).data;\n },\n async syncTransaction(txHash) {\n return (await t.post<{ data: ApiTxSyncResult }>(\"/v1/tx/sync\", { txHash })).data;\n },\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type { ApiMetadataSignedUrl, ApiMetadataUpload, ApiResponse } from \"../../types/api.js\";\n\nexport interface MetadataApi {\n signedUrl(kind?: \"image\" | \"document\" | \"media\"): Promise<ApiResponse<ApiMetadataSignedUrl>>;\n upload(metadata: Record<string, unknown>): Promise<ApiResponse<ApiMetadataUpload>>;\n uploadDirectory(files: { name: string; content: unknown }[]): Promise<{ cid: string; baseUri: string }>;\n resolve(uri: string): Promise<ApiResponse<unknown>>;\n uploadFile(file: File): Promise<ApiResponse<ApiMetadataUpload>>;\n}\n\nexport function createMetadataApi(t: Transport): MetadataApi {\n return {\n signedUrl(kind) {\n return t.get(\"/v1/metadata/signed-url\", { kind });\n },\n upload(metadata) {\n return t.post(\"/v1/metadata/upload\", metadata);\n },\n async uploadDirectory(files) {\n return (await t.post<{ data: { cid: string; baseUri: string } }>(\"/v1/metadata/upload-directory\", { files })).data;\n },\n resolve(uri) {\n return t.get(\"/v1/metadata/resolve\", { uri });\n },\n uploadFile(file) {\n const formData = new FormData();\n formData.append(\"file\", file);\n return t.request(\"/v1/metadata/upload-file\", { method: \"POST\", body: formData });\n },\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type { ApiCreatorListResult, ApiCreatorProfile, ApiUsernameClaim } from \"../../types/api.js\";\n\nexport interface CreatorsApi {\n list(opts?: { search?: string; page?: number; limit?: number }): Promise<ApiCreatorListResult>;\n findProfile(walletAddress: string): Promise<ApiCreatorProfile | null>;\n findByUsername(username: string): Promise<ApiCreatorProfile | null>;\n updateProfile(\n walletAddress: string,\n data: Partial<Omit<ApiCreatorProfile, \"walletAddress\" | \"chain\" | \"updatedAt\">>,\n ): Promise<ApiCreatorProfile>;\n isHidden(wallet: string): Promise<boolean>;\n myUsernameClaim(): Promise<{ username: string | null; claim: ApiUsernameClaim | null }>;\n usernameAvailability(username: string): Promise<{ available: boolean; reason?: string }>;\n submitUsernameClaim(username: string, notifyEmail?: string): Promise<ApiUsernameClaim>;\n}\n\nexport function createCreatorsApi(t: Transport): CreatorsApi {\n return {\n list(opts = {}) {\n return t.get(\"/v1/creators\", { search: opts.search, page: opts.page || undefined, limit: opts.limit || undefined });\n },\n findProfile(walletAddress) {\n return t.find(`/v1/creators/${t.addr(walletAddress)}/profile`);\n },\n findByUsername(username) {\n return t.find(`/v1/creators/by-username/${encodeURIComponent(username.toLowerCase().trim())}`);\n },\n updateProfile(walletAddress, data) {\n return t.patch(`/v1/creators/${t.addr(walletAddress)}/profile`, data);\n },\n async isHidden(wallet) {\n return (await t.get<{ isHidden: boolean }>(`/v1/creators/${t.addr(wallet)}/hidden`)).isHidden;\n },\n myUsernameClaim() {\n return t.get(\"/v1/username-claims/me\");\n },\n usernameAvailability(username) {\n return t.get(`/v1/username-claims/check/${encodeURIComponent(username)}`);\n },\n async submitUsernameClaim(username, notifyEmail) {\n const res = await t.post<{ claim: ApiUsernameClaim }>(\"/v1/username-claims\", {\n username,\n ...(notifyEmail ? { notifyEmail } : {}),\n });\n return res.claim;\n },\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type { ApiChain, ApiUserWallet } from \"../../types/api.js\";\n\nexport interface RegisteredUser {\n accountId: string;\n publicId: string;\n walletAddress: string;\n chain: string;\n provider: string;\n createdAt: string;\n}\n\nexport interface WalletRecovery {\n enabled: boolean;\n state: \"none\" | \"waiting\" | \"ready\";\n readyAt: number | null;\n newOwnerGuid: string | null;\n guardianPubkey: string | null;\n}\n\nexport interface AccountApi {\n registerUser(params: { walletAddress: string; walletType?: string; chain?: ApiChain }): Promise<RegisteredUser>;\n upsertMyWallet(options?: { walletType?: string; chain?: ApiChain; email?: string }): Promise<ApiUserWallet>;\n findMyWallet(): Promise<ApiUserWallet | null>;\n changeMyEmail(email: string): Promise<{ email: string }>;\n sessionWallet(): Promise<{ walletAddress: string; needsKeySetup: boolean } | null>;\n setupWalletKey(params: { newOwnerPubkey: string }): Promise<{ walletAddress: string; removeOwnerGuid: string | null }>;\n generateWallet(newWalletSiwsToken: string): Promise<{ walletAddress: string }>;\n walletRecovery(): Promise<WalletRecovery>;\n startWalletRecovery(params: { newOwnerPubkey: string }): Promise<WalletRecovery>;\n completeWalletRecovery(params: { newOwnerPubkey: string }): Promise<WalletRecovery>;\n emailExists(email: string): Promise<boolean>;\n requestEmailCode(email: string): Promise<void>;\n registerEmailAccount(email: string): Promise<void>;\n verifyEmailCode(email: string, code: string): Promise<void>;\n confirmEmail(token: string): Promise<{ email: string }>;\n}\n\nexport function createAccountApi(t: Transport): AccountApi {\n return {\n registerUser(params) {\n return t.post(\"/v1/users/register\", params);\n },\n upsertMyWallet(options = {}) {\n const body: Record<string, string> = { walletType: options.walletType ?? \"UNKNOWN\" };\n if (options.chain) body.chain = options.chain;\n if (options.email) body.email = options.email;\n return t.post(\"/v1/users/me\", body);\n },\n findMyWallet() {\n return t.find(\"/v1/users/me\");\n },\n changeMyEmail(email) {\n return t.post(\"/v1/users/me/email\", { email });\n },\n async sessionWallet() {\n const body = await t.post<{ walletAddress?: string | null; needsKeySetup?: boolean }>(\"/v1/users/me/wallet\", {});\n return body.walletAddress ? { walletAddress: body.walletAddress, needsKeySetup: body.needsKeySetup === true } : null;\n },\n setupWalletKey(params) {\n return t.post(\"/v1/users/me/wallet/key\", params);\n },\n generateWallet(newWalletSiwsToken) {\n return t.post(\"/v1/users/me/generate-wallet\", { newWalletSiwsToken });\n },\n walletRecovery() {\n return t.get(\"/v1/users/me/wallet/recovery\");\n },\n startWalletRecovery(params) {\n return t.post(\"/v1/users/me/wallet/recovery\", params);\n },\n completeWalletRecovery(params) {\n return t.post(\"/v1/users/me/wallet/recovery/complete\", params);\n },\n async emailExists(email) {\n return (await t.get<{ exists: boolean }>(\"/v1/auth/email/exists\", { email })).exists;\n },\n async requestEmailCode(email) {\n await t.post(\"/v1/auth/email/request-code\", { email });\n },\n async registerEmailAccount(email) {\n await t.post(\"/v1/auth/email/register-account\", { email });\n },\n async verifyEmailCode(email, code) {\n await t.post(\"/v1/auth/email/verify-code\", { email, code });\n },\n async confirmEmail(token) {\n const body = await t.post<{ ok: boolean; email: string }>(\"/v1/auth/email/confirm\", { token });\n return { email: body.email };\n },\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type { ApiKeyConfirmation } from \"../../starknet/api-key-confirmation.js\";\nimport type {\n ApiCreditPayment,\n ApiFundingInstructions,\n ApiFundingIntent,\n ApiFundingMethod,\n ApiFundingSubmit,\n ApiPortalKey,\n ApiPortalKeyCreated,\n ApiPortalMe,\n ApiPricing,\n ApiResponse,\n} from \"../../types/api.js\";\n\nexport interface FundingApi {\n methods(): Promise<ApiFundingMethod[]>;\n create(input: { method: string; params: Record<string, unknown> }): Promise<ApiFundingIntent>;\n get(id: string): Promise<ApiFundingIntent>;\n challenge(id: string, payer: string): Promise<{ typedData: unknown }>;\n authorize(id: string, input: { payer: string; signature: string[] }): Promise<{ instructions: ApiFundingInstructions }>;\n submit(id: string, txHash: string): Promise<ApiFundingSubmit>;\n cancel(id: string): Promise<{ status: string }>;\n}\n\nexport interface PortalApi {\n me(): Promise<ApiPortalMe>;\n apiKeys(): Promise<ApiPortalKey[]>;\n createApiKey(input: { label?: string } | undefined, confirmation: ApiKeyConfirmation): Promise<ApiPortalKeyCreated>;\n deleteApiKey(id: string, confirmation: ApiKeyConfirmation): Promise<{ id: string }>;\n creditHistory(): Promise<ApiCreditPayment[]>;\n checkDeposit(txHash: string): Promise<{ deposits: number }>;\n pricing(): Promise<ApiPricing>;\n funding: FundingApi;\n}\n\nexport function createPortalApi(t: Transport): PortalApi {\n const data = async <T>(promise: Promise<ApiResponse<T>>): Promise<T> => (await promise).data;\n const fundingPath = (id: string) => `/v1/portal/funding/${encodeURIComponent(id)}`;\n return {\n me: () => data(t.get(\"/v1/portal/me\")),\n apiKeys: () => data(t.get(\"/v1/portal/keys\")),\n createApiKey: (input, confirmation) => data(t.post(\"/v1/portal/keys\", { ...(input ?? {}), confirmation })),\n deleteApiKey: (id, confirmation) => data(t.delete(`/v1/portal/keys/${id}`, { confirmation })),\n creditHistory: () => data(t.get(\"/v1/portal/credits/history\")),\n checkDeposit: (txHash) => data(t.post(\"/v1/portal/credits/check\", { txHash })),\n pricing: () => t.get(\"/v1/pricing\"),\n funding: {\n methods: () => data(t.get(\"/v1/portal/funding/methods\")),\n create: (input) => data(t.post(\"/v1/portal/funding\", { method: input.method, params: input.params })),\n get: (id) => data(t.get(fundingPath(id))),\n challenge: (id, payer) => data(t.post(`${fundingPath(id)}/challenge`, { payer })),\n authorize: (id, input) => data(t.post(`${fundingPath(id)}/authorize`, { payer: input.payer, signature: input.signature })),\n submit: (id, txHash) => data(t.post(`${fundingPath(id)}/submit`, { txHash })),\n cancel: (id) => data(t.post(`${fundingPath(id)}/cancel`, {})),\n },\n };\n}\n","import type { z } from \"zod\";\nimport type { Transport } from \"../transport.js\";\nimport type * as provisioning from \"../../contract/provisioning.js\";\nimport type { ApiBusinessProvisioning, ApiEmissionResult, ApiResponse, EmissionParams } from \"../../types/api.js\";\n\nexport type ProvisioningResult = ApiResponse<ApiBusinessProvisioning> & { reusedExistingWallet?: boolean };\n\nexport interface BusinessApi {\n emit(params: EmissionParams): Promise<ApiEmissionResult>;\n registerProvisioning(params: z.input<typeof provisioning.provisioningRegisterSchema>): Promise<ProvisioningResult>;\n}\n\nexport function createBusinessApi(t: Transport): BusinessApi {\n return {\n async emit(params) {\n return (await t.post<ApiResponse<ApiEmissionResult>>(\"/v1/business/issuance/emission\", params)).data;\n },\n registerProvisioning(params) {\n return t.post(\"/v1/business/provisioning\", { chain: params.chain ?? \"STARKNET\", email: params.email });\n },\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type {\n ApiRemixOffer,\n ApiRemixOffersQuery,\n AutoRemixOfferParams,\n ConfirmRemixOfferParams,\n ConfirmSelfRemixParams,\n CreateRemixOfferParams,\n ApiResponse,\n} from \"../../types/api.js\";\n\nexport interface RemixApi {\n submit(params: CreateRemixOfferParams): Promise<ApiRemixOffer>;\n submitAuto(params: AutoRemixOfferParams): Promise<ApiRemixOffer>;\n confirmSelf(params: ConfirmSelfRemixParams): Promise<ApiRemixOffer>;\n list(query: ApiRemixOffersQuery): Promise<ApiResponse<ApiRemixOffer[]>>;\n get(id: string): Promise<ApiRemixOffer>;\n confirm(id: string, params: ConfirmRemixOfferParams): Promise<ApiRemixOffer>;\n reject(id: string): Promise<ApiRemixOffer>;\n extend(id: string, days: number): Promise<ApiRemixOffer>;\n}\n\nexport function createRemixApi(t: Transport): RemixApi {\n const one = async (promise: Promise<ApiResponse<ApiRemixOffer>>): Promise<ApiRemixOffer> => (await promise).data;\n return {\n submit: (params) => one(t.post(\"/v1/remix-offers\", params)),\n submitAuto: (params) => one(t.post(\"/v1/remix-offers/auto\", params)),\n confirmSelf: (params) => one(t.post(\"/v1/remix-offers/self/confirm\", params)),\n list: (query) =>\n t.get(\"/v1/remix-offers\", { role: query.role, status: query.status, page: query.page, limit: query.limit }),\n get: (id) => one(t.get(`/v1/remix-offers/${id}`)),\n confirm: (id, params) => one(t.post(`/v1/remix-offers/${id}/confirm`, params)),\n reject: (id) => one(t.post(`/v1/remix-offers/${id}/reject`, {})),\n extend: (id, days) => one(t.post(`/v1/remix-offers/${id}/extend`, { days })),\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type {\n ApiCoin,\n ApiCoinClaimResult,\n ApiCoinPrices,\n ApiCoinsQuery,\n ApiCollectionClaim,\n ApiResponse,\n} from \"../../types/api.js\";\n\nexport interface CoinsApi {\n list(opts?: ApiCoinsQuery): Promise<ApiResponse<ApiCoin[]>>;\n get(contract: string): Promise<ApiCoin>;\n prices(): Promise<ApiCoinPrices>;\n claim(coinAddress: string): Promise<ApiCoinClaimResult>;\n claims(status?: string): Promise<ApiResponse<ApiCollectionClaim[]>>;\n updateProfile(contract: string, data: { image?: string | null; description?: string | null }): Promise<ApiCoin>;\n sync(coinAddress: string, owner?: string): Promise<ApiCoin>;\n}\n\nexport function createCoinsApi(t: Transport): CoinsApi {\n return {\n list(opts = {}) {\n return t.get(\"/v1/coins\", {\n page: opts.page || undefined,\n limit: opts.limit || undefined,\n service: opts.service,\n sort: opts.sort,\n creator: opts.creator ? t.addr(opts.creator) : undefined,\n chain: opts.chain,\n });\n },\n async get(contract) {\n return (await t.get<{ data: ApiCoin }>(`/v1/coins/${t.addr(contract)}`)).data;\n },\n async prices() {\n return (await t.get<ApiResponse<ApiCoinPrices>>(\"/v1/coins/prices\")).data;\n },\n claim(coinAddress) {\n return t.post(\"/v1/coins/claim\", { coinAddress });\n },\n claims(status = \"PENDING\") {\n return t.get(\"/v1/coins/claims\", { status });\n },\n async updateProfile(contract, data) {\n return (await t.patch<ApiResponse<ApiCoin>>(`/v1/coins/${t.addr(contract)}`, data)).data;\n },\n async sync(coinAddress, owner) {\n return (await t.post<{ data: ApiCoin }>(\"/v1/coins/sync\", { coinAddress, ...(owner ? { owner } : {}) })).data;\n },\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type { ApiDrop, ApiDropFee, ApiDropListStatus, ApiDropMint, ApiResponse } from \"../../types/api.js\";\n\nexport interface DropsApi {\n fee(): Promise<ApiDropFee>;\n list(query?: { status?: ApiDropListStatus; organizer?: string; page?: number; limit?: number }): Promise<ApiResponse<ApiDrop[]>>;\n find(contract: string): Promise<ApiDrop | null>;\n mints(contract: string, opts?: { page?: number; limit?: number }): Promise<ApiResponse<ApiDropMint[]>>;\n}\n\nexport function createDropsApi(t: Transport): DropsApi {\n return {\n async fee() {\n return (await t.get<{ data: ApiDropFee }>(\"/v1/drops/fee\")).data;\n },\n list(query = {}) {\n return t.get(\"/v1/drops\", {\n status: query.status,\n organizer: query.organizer ? t.addr(query.organizer) : undefined,\n page: query.page,\n limit: query.limit,\n });\n },\n async find(contract) {\n const res = await t.find<{ data: ApiDrop }>(`/v1/drops/${t.addr(contract)}`);\n return res?.data ?? null;\n },\n mints(contract, opts = {}) {\n return t.get(`/v1/drops/${t.addr(contract)}/mints`, { page: opts.page, limit: opts.limit });\n },\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type {\n ApiResponse,\n ApiSponsorshipBid,\n ApiSponsorshipLicense,\n ApiSponsorshipLicensesQuery,\n ApiSponsorshipOffer,\n ApiSponsorshipOffersQuery,\n ApiSponsorshipProposal,\n ApiSponsorshipProposalsQuery,\n} from \"../../types/api.js\";\n\nexport interface SponsorshipApi {\n offers(query?: ApiSponsorshipOffersQuery): Promise<ApiResponse<ApiSponsorshipOffer[]>>;\n findOffer(offerId: string): Promise<ApiSponsorshipOffer | null>;\n bids(offerId: string): Promise<ApiSponsorshipBid[]>;\n proposals(query?: ApiSponsorshipProposalsQuery): Promise<ApiResponse<ApiSponsorshipProposal[]>>;\n findProposal(proposalId: string): Promise<ApiSponsorshipProposal | null>;\n licenses(query?: ApiSponsorshipLicensesQuery): Promise<ApiResponse<ApiSponsorshipLicense[]>>;\n}\n\nexport function createSponsorshipApi(t: Transport): SponsorshipApi {\n return {\n offers(query = {}) {\n return t.get(\"/v1/sponsorship/offers\", {\n limit: query.limit ?? 50,\n nftContract: query.nftContract,\n author: query.author,\n owner: query.owner,\n open: query.open,\n });\n },\n async findOffer(offerId) {\n const res = await t.find<{ data: ApiSponsorshipOffer }>(`/v1/sponsorship/offers/${encodeURIComponent(offerId)}`);\n return res?.data ?? null;\n },\n async bids(offerId) {\n return (await t.get<{ data: ApiSponsorshipBid[] }>(`/v1/sponsorship/offers/${encodeURIComponent(offerId)}/bids`)).data;\n },\n proposals(query = {}) {\n return t.get(\"/v1/sponsorship/proposals\", {\n limit: query.limit ?? 50,\n nftContract: query.nftContract,\n proposer: query.proposer,\n owner: query.owner,\n open: query.open,\n });\n },\n async findProposal(proposalId) {\n const res = await t.find<{ data: ApiSponsorshipProposal }>(`/v1/sponsorship/proposals/${encodeURIComponent(proposalId)}`);\n return res?.data ?? null;\n },\n licenses(query = {}) {\n return t.get(\"/v1/sponsorship/licenses\", { limit: query.limit ?? 50, holder: query.holder, author: query.author });\n },\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type {\n ApiPointEvent,\n ApiResponse,\n ApiRewardsBatchEntry,\n ApiRewardsConfig,\n ApiRewardsLeaderboardEntry,\n ApiUserRewards,\n} from \"../../types/api.js\";\n\nexport interface RewardsApi {\n get(address: string): Promise<ApiUserRewards>;\n leaderboard(opts?: { page?: number; limit?: number }): Promise<ApiResponse<ApiRewardsLeaderboardEntry[]>>;\n events(address: string, opts?: { page?: number; limit?: number }): Promise<ApiResponse<ApiPointEvent[]>>;\n config(): Promise<ApiRewardsConfig>;\n batch(addresses: string[]): Promise<ApiRewardsBatchEntry[]>;\n}\n\nexport function createRewardsApi(t: Transport): RewardsApi {\n return {\n async get(address) {\n return (await t.get<{ data: ApiUserRewards }>(`/v1/rewards/${t.addr(address)}`)).data;\n },\n leaderboard(opts = {}) {\n return t.get(\"/v1/rewards\", { page: opts.page ?? 1, limit: opts.limit ?? 50 });\n },\n events(address, opts = {}) {\n return t.get(`/v1/rewards/${t.addr(address)}/events`, { page: opts.page ?? 1, limit: opts.limit ?? 20 });\n },\n async config() {\n return (await t.get<{ data: ApiRewardsConfig }>(\"/v1/rewards/config\")).data;\n },\n async batch(addresses) {\n if (addresses.length === 0) return [];\n const res = await t.get<{ data: ApiRewardsBatchEntry[] }>(\"/v1/rewards/batch\", {\n addresses: addresses.map((a) => t.addr(a)).join(\",\"),\n });\n return res.data;\n },\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type { ApiPlatformStats, ApiSubmitReport, ApiSwapQuote, ApiSwapQuoteRequest } from \"../../types/api.js\";\n\nexport interface PlatformApi {\n stats(): Promise<ApiPlatformStats>;\n swapQuote(body: ApiSwapQuoteRequest): Promise<ApiSwapQuote>;\n submitReport(report: ApiSubmitReport): Promise<void>;\n}\n\nexport function createPlatformApi(t: Transport): PlatformApi {\n return {\n async stats() {\n return (await t.get<{ data: ApiPlatformStats }>(\"/v1/stats\")).data;\n },\n async swapQuote(body) {\n return (await t.post<{ quote: ApiSwapQuote }>(\"/v1/swap/quote\", body)).quote;\n },\n async submitReport(report) {\n const targetContract = report.targetContract ? t.addr(report.targetContract) : undefined;\n const targetAddress = report.targetAddress ? t.addr(report.targetAddress) : undefined;\n let targetKey: string | null = null;\n if (report.targetType === \"TOKEN\" && targetContract && report.targetTokenId) {\n targetKey = `TOKEN:${targetContract}:${report.targetTokenId}`;\n } else if (report.targetType === \"COLLECTION\" && targetContract) {\n targetKey = `COLLECTION:${targetContract}`;\n } else if (report.targetType === \"CREATOR\" && targetAddress) {\n targetKey = `CREATOR:${targetAddress}`;\n } else if (report.targetType === \"COMMENT\" && report.targetId) {\n targetKey = `COMMENT::${report.targetId}`;\n }\n if (!targetKey) throw new Error(`A ${report.targetType} report needs its target`);\n await t.post(\"/v1/reports\", { ...report, targetKey, targetContract, targetAddress });\n },\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type { CreatorCoinGuarantees } from \"../../starknet/services/creatorCoin.js\";\nimport type { PopClaimInfo } from \"../../starknet/pop-claim.js\";\nimport type { DropOnchain } from \"../../starknet/drop-state.js\";\nimport { dropStateFromWire, type DropStateWire } from \"../../contract/chainReads.js\";\nimport type { ApiIpNftTokenData, ApiTierOnchain } from \"../../types/api.js\";\n\nexport interface ChainReadsApi {\n ticket(contract: string, tokenId: string): Promise<ApiTierOnchain>;\n ticketCount(contract: string): Promise<number>;\n clubMembershipCount(contract: string): Promise<number>;\n clubMembership(contract: string, tokenId: string): Promise<ApiTierOnchain>;\n isClubMember(contract: string, tokenId: string, wallet: string): Promise<boolean>;\n ipNftTokenData(contract: string, tokenId: string): Promise<ApiIpNftTokenData | null>;\n coinGuarantees(contract: string): Promise<CreatorCoinGuarantees | null>;\n popClaimInfo(collection: string): Promise<PopClaimInfo | null>;\n dropState(contract: string): Promise<DropOnchain | null>;\n}\n\nexport function createChainReadsApi(t: Transport): ChainReadsApi {\n const data = async <T>(path: string): Promise<T> => (await t.get<{ data: T }>(path)).data;\n return {\n ticket: (contract, tokenId) => data(`/v1/tickets/${t.addr(contract)}/${tokenId}`),\n ticketCount: async (contract) => (await data<{ count: number }>(`/v1/tickets/${t.addr(contract)}/count`)).count,\n clubMembershipCount: async (contract) => (await data<{ count: number }>(`/v1/club/${t.addr(contract)}/count`)).count,\n clubMembership: (contract, tokenId) => data(`/v1/club/${t.addr(contract)}/${tokenId}`),\n isClubMember: async (contract, tokenId, wallet) =>\n (await data<{ isMember: boolean }>(`/v1/club/${t.addr(contract)}/${tokenId}/member/${t.addr(wallet)}`)).isMember,\n ipNftTokenData: (contract, tokenId) => data(`/v1/ipnft/${t.addr(contract)}/${tokenId}`),\n coinGuarantees: (contract) => data(`/v1/coins/${t.addr(contract)}/guarantees`),\n popClaimInfo: (collection) => data(`/v1/pop/${t.addr(collection)}/claim-info`),\n async dropState(contract) {\n const wire = await data<DropStateWire | null>(`/v1/drops/${t.addr(contract)}/state`);\n return wire ? dropStateFromWire(wire) : null;\n },\n };\n}\n","import { MedialaneApiError, parseRetryAfter } from \"../errors.js\";\nimport { Transport, type BearerSource, type TransportOptions } from \"./transport.js\";\nimport { createOrdersApi, type OrdersApi } from \"./domains/orders.js\";\nimport { createTokensApi, type TokensApi } from \"./domains/tokens.js\";\nimport { createCollectionsApi, type CollectionsApi } from \"./domains/collections.js\";\nimport { createActivityApi, createSearchApi, type ActivityApi, type SearchApi } from \"./domains/activity.js\";\nimport { createIntentsApi, type IntentsApi } from \"./domains/intents.js\";\nimport { createMetadataApi, type MetadataApi } from \"./domains/metadata.js\";\nimport { createCreatorsApi, type CreatorsApi } from \"./domains/creators.js\";\nimport { createAccountApi, type AccountApi } from \"./domains/account.js\";\nimport { createPortalApi, type PortalApi } from \"./domains/portal.js\";\nimport { createBusinessApi, type BusinessApi } from \"./domains/business.js\";\nimport { createRemixApi, type RemixApi } from \"./domains/remix.js\";\nimport { createCoinsApi, type CoinsApi } from \"./domains/coins.js\";\nimport { createDropsApi, type DropsApi } from \"./domains/drops.js\";\nimport { createSponsorshipApi, type SponsorshipApi } from \"./domains/sponsorship.js\";\nimport { createRewardsApi, type RewardsApi } from \"./domains/rewards.js\";\nimport { createPlatformApi, type PlatformApi } from \"./domains/platform.js\";\nimport { createChainReadsApi, type ChainReadsApi } from \"./domains/chainReads.js\";\n\nexport { MedialaneApiError, parseRetryAfter };\n\nexport type ApiClientOptions = TransportOptions;\n\nexport class ApiClient {\n private readonly transport: Transport;\n\n readonly orders: OrdersApi;\n readonly tokens: TokensApi;\n readonly collections: CollectionsApi;\n readonly activity: ActivityApi;\n readonly search: SearchApi;\n readonly intents: IntentsApi;\n readonly metadata: MetadataApi;\n readonly creators: CreatorsApi;\n readonly account: AccountApi;\n readonly portal: PortalApi;\n readonly business: BusinessApi;\n readonly remix: RemixApi;\n readonly coins: CoinsApi;\n readonly drops: DropsApi;\n readonly sponsorship: SponsorshipApi;\n readonly rewards: RewardsApi;\n readonly platform: PlatformApi;\n readonly chainReads: ChainReadsApi;\n\n constructor(options: ApiClientOptions) {\n this.transport = new Transport(options);\n const t = this.transport;\n this.orders = createOrdersApi(t);\n this.tokens = createTokensApi(t);\n this.collections = createCollectionsApi(t);\n this.activity = createActivityApi(t);\n this.search = createSearchApi(t);\n this.intents = createIntentsApi(t);\n this.metadata = createMetadataApi(t);\n this.creators = createCreatorsApi(t);\n this.account = createAccountApi(t);\n this.portal = createPortalApi(t);\n this.business = createBusinessApi(t);\n this.remix = createRemixApi(t);\n this.coins = createCoinsApi(t);\n this.drops = createDropsApi(t);\n this.sponsorship = createSponsorshipApi(t);\n this.rewards = createRewardsApi(t);\n this.platform = createPlatformApi(t);\n this.chainReads = createChainReadsApi(t);\n }\n\n withBearer(bearer: BearerSource | undefined): ApiClient {\n return new ApiClient({ ...this.transport.settings(), bearer });\n }\n}\n","export class PasskeyCancelledError extends Error {\n constructor(message = \"Passkey prompt was cancelled.\") {\n super(message);\n this.name = \"PasskeyCancelledError\";\n }\n}\n\nexport class DeviceKeyMissingError extends Error {\n constructor() {\n super(\"This browser no longer holds the wallet key. Recover the wallet with its recovery key.\");\n this.name = \"DeviceKeyMissingError\";\n }\n}\n\nexport type PasskeyUnsupportedReason = \"no-webauthn\" | \"no-prf\";\n\nexport class PasskeyUnsupportedError extends Error {\n readonly reason: PasskeyUnsupportedReason;\n constructor(reason: PasskeyUnsupportedReason) {\n super(\n reason === \"no-webauthn\"\n ? \"Passkeys are not available in this environment.\"\n : \"This passkey did not return a PRF secret, so it cannot seal a wallet key.\",\n );\n this.name = \"PasskeyUnsupportedError\";\n this.reason = reason;\n }\n}\n","import { getCoordinates } from \"./chains.js\";\n\nconst SN = getCoordinates(\"STARKNET\");\n\nexport const STARKNET_MARKETPLACE_721_CONTRACT = SN.marketplace721;\nexport const STARKNET_MARKETPLACE_1155_CONTRACT = SN.marketplace1155;\n\nexport const STARKNET_COLLECTION_721_CONTRACT = SN.collection721;\nexport const STARKNET_DATA_TOKENIZATION_721_CONTRACT = SN.dataTokenization721;\nexport const STARKNET_COLLECTION_1155_CONTRACT = SN.collection1155;\n\nexport const STARKNET_POP_FACTORY_CONTRACT = SN.popFactory;\nexport const STARKNET_POP_FACTORY_START_BLOCK = SN.popFactoryStartBlock;\nexport const STARKNET_DROP_FACTORY_CONTRACT = SN.dropFactory;\nexport const STARKNET_DROP_FACTORY_START_BLOCK = SN.dropFactoryStartBlock;\nexport const STARKNET_NFTCOMMENTS_CONTRACT = SN.nftComments;\n\nexport const STARKNET_IP_TICKETS_FACTORY_CONTRACT = SN.ipTicketsFactory;\nexport const STARKNET_IP_CLUB_FACTORY_CONTRACT = SN.ipClubFactory;\nexport const STARKNET_IP_SPONSORSHIP_CONTRACT = SN.ipSponsorship;\n\nexport const STARKNET_MEDIAWALLET_CLASS_HASH = SN.mediaWalletClassHash;\n\nexport const STARKNET_CREATOR_COIN_FACTORY_CONTRACT = SN.creatorCoinFactory;\n\nexport const STARKNET_GENESIS_MINT_CONTRACT = SN.genesisMint;\nexport const STARKNET_GENESIS_NFT_URI = \"ipfs://bafkreiag6wzov7migmxwx3wrtudvbx4ajrlbjopqw7uni7nn2nsxv4eykm\";\n\nexport const SUPPORTED_TOKENS = [\n {\n\n symbol: \"USDC\",\n address:\n \"0x033068f6539f8e6e6b131e6b2b814e6c34a5224bc66947c47dab9dfee93b35fb\",\n decimals: 6,\n listable: true,\n },\n {\n symbol: \"USDT\",\n address:\n \"0x068f5c6a61780768455de69077e07e89787839bf8166decfbf92b645209c0fb8\",\n decimals: 6,\n listable: true,\n },\n {\n symbol: \"ETH\",\n address:\n \"0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7\",\n decimals: 18,\n listable: true,\n },\n {\n symbol: \"STRK\",\n address:\n \"0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d\",\n decimals: 18,\n listable: true,\n },\n {\n symbol: \"WBTC\",\n address:\n \"0x03fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac\",\n decimals: 8,\n listable: true,\n },\n] as const;\n\nexport type SupportedTokenSymbol = (typeof SUPPORTED_TOKENS)[number][\"symbol\"];\n\nexport const DEFAULT_CURRENCY: SupportedTokenSymbol = \"USDC\";\n","import { SUPPORTED_TOKENS } from \"../constants.js\";\n\nexport type SupportedToken = (typeof SUPPORTED_TOKENS)[number];\n\nexport function parseAmount(human: string, decimals: number): string {\n const [whole, frac = \"\"] = human.split(\".\");\n const fracPadded = frac.padEnd(decimals, \"0\").slice(0, decimals);\n return (BigInt(whole) * BigInt(10) ** BigInt(decimals) + BigInt(fracPadded)).toString();\n}\n\nexport function formatAmount(raw: string, decimals: number): string {\n const value = BigInt(raw);\n const factor = 10n ** BigInt(decimals);\n const whole = value / factor;\n const remainder = value % factor;\n const fractional = remainder.toString().padStart(decimals, \"0\").replace(/0+$/, \"\");\n return fractional ? `${whole}.${fractional}` : whole.toString();\n}\n\nexport function getTokenByAddress(address: string | null | undefined): SupportedToken | undefined {\n if (typeof address !== \"string\" || address.trim() === \"\") return undefined;\n\n let target: bigint | null = null;\n try {\n target = BigInt(address);\n } catch {\n target = null;\n }\n return SUPPORTED_TOKENS.find((t) => {\n if (target !== null) {\n try {\n return BigInt(t.address) === target;\n } catch {\n\n }\n }\n return t.address.toLowerCase() === address.toLowerCase();\n });\n}\n\nexport function getTokenBySymbol(symbol: string | null | undefined): SupportedToken | undefined {\n if (typeof symbol !== \"string\") return undefined;\n const upper = symbol.toUpperCase();\n return SUPPORTED_TOKENS.find((t) => t.symbol === upper);\n}\n\nexport function getListableTokens(): ReadonlyArray<SupportedToken> {\n return SUPPORTED_TOKENS.filter((t) => t.listable);\n}\n"]}
|