@medialane/sdk 0.195.0 → 0.198.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-7G7YIGXJ.cjs → chunk-2R7XBA34.cjs} +81 -49
- package/dist/chunk-2R7XBA34.cjs.map +1 -0
- package/dist/{chunk-ZCHP5D7S.js → chunk-6WVUUBFI.js} +80 -50
- package/dist/chunk-6WVUUBFI.js.map +1 -0
- package/dist/{errors-C39AqEX6.d.cts → errors-CZm-NZK0.d.cts} +12 -6
- package/dist/{errors-Cc9W7FFi.d.ts → errors-h6H6cj3Q.d.ts} +12 -6
- package/dist/index.cjs +79 -73
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -3
- package/dist/index.d.ts +4 -3
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/starknet/index.cjs +75 -67
- package/dist/starknet/index.d.cts +2 -2
- package/dist/starknet/index.d.ts +2 -2
- package/dist/starknet/index.js +2 -2
- package/package.json +1 -1
- package/dist/chunk-7G7YIGXJ.cjs.map +0 -1
- package/dist/chunk-ZCHP5D7S.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/fee/config.ts","../src/fee/app-config.ts","../src/config.ts","../src/utils/address.ts","../src/utils/retry.ts","../src/api/client.ts","../src/starknet/passkey-wallet/crypto.ts","../src/constants.ts","../src/starknet/media-wallet/account.ts","../src/wallet/device-keys.ts","../src/wallet/passkey.ts","../src/routes.ts","../src/services/registry.ts","../src/utils/token.ts","../src/utils/bigint.ts","../src/errors.ts"],"names":["z","hash","num","SN"],"mappings":"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","file":"chunk-6WVUUBFI.js","sourcesContent":["import { z } from \"zod\";\n\nexport const FeeConfigSchema = z.object({\n enabled: z.boolean().default(true),\n fundAddress: z.string().min(1).optional(),\n marketplaceBps: z.number().int().min(0).max(10000).default(100),\n launchpadBps: z.number().int().min(0).max(10000).default(100),\n sponsorshipBps: z.number().int().min(0).max(10000).default(100),\n});\n\nexport type FeeConfig = z.input<typeof FeeConfigSchema>;\n\nexport interface ResolvedFeeConfig {\n enabled: boolean;\n fundAddress: string | undefined;\n marketplaceBps: number;\n launchpadBps: number;\n sponsorshipBps: number;\n}\n\nexport function resolveFeeConfig(raw: FeeConfig | undefined): ResolvedFeeConfig {\n const p = FeeConfigSchema.parse(raw ?? {});\n return {\n enabled: p.enabled,\n fundAddress: p.fundAddress,\n marketplaceBps: p.marketplaceBps,\n launchpadBps: p.launchpadBps,\n sponsorshipBps: p.sponsorshipBps,\n };\n}\n","import { resolveFeeConfig, type ResolvedFeeConfig } from \"./config.js\";\n\nexport interface FeeEnv {\n NEXT_PUBLIC_FEE_ENABLED?: string;\n NEXT_PUBLIC_FEE_FUND_ADDRESS?: string;\n NEXT_PUBLIC_FEE_MARKETPLACE_BPS?: string;\n NEXT_PUBLIC_FEE_LAUNCHPAD_BPS?: string;\n}\n\nconst DEFAULT_BPS = 100;\n\nfunction bps(raw: string | undefined): number {\n if (!raw) return DEFAULT_BPS;\n const n = Number(raw);\n return Number.isFinite(n) ? n : DEFAULT_BPS;\n}\n\nexport function resolveAppFeeConfig(env: FeeEnv = {}): ResolvedFeeConfig {\n return resolveFeeConfig({\n enabled: env.NEXT_PUBLIC_FEE_ENABLED !== \"false\",\n fundAddress: env.NEXT_PUBLIC_FEE_FUND_ADDRESS || undefined,\n marketplaceBps: bps(env.NEXT_PUBLIC_FEE_MARKETPLACE_BPS),\n launchpadBps: bps(env.NEXT_PUBLIC_FEE_LAUNCHPAD_BPS),\n });\n}\n","import { z } from \"zod\";\nimport { CHAINS, getCoordinates, DEFAULT_CHAIN, type Chain } from \"./chains.js\";\nimport type { RetryOptions } from \"./utils/retry.js\";\nimport { FeeConfigSchema, resolveFeeConfig, type ResolvedFeeConfig } from \"./fee/index.js\";\n\nexport const MedialaneConfigSchema = z.object({\n\n chain: z.enum(CHAINS).default(DEFAULT_CHAIN),\n backendUrl: z.string().url().optional(),\n apiKey: z.string().optional(),\n\n marketplace721Contract: z.string().optional(),\n marketplaceContract: z.string().optional(),\n marketplace1155Contract: z.string().optional(),\n collection721Contract: z.string().optional(),\n collectionContract: z.string().optional(),\n collection1155Contract: z.string().optional(),\n retryOptions: z.object({\n maxAttempts: z.number().int().min(1).max(10).optional(),\n baseDelayMs: z.number().int().min(0).optional(),\n maxDelayMs: z.number().int().min(0).optional(),\n }).optional(),\n feeConfig: FeeConfigSchema.optional(),\n});\n\nexport type MedialaneConfig = z.input<typeof MedialaneConfigSchema>;\n\nexport interface ResolvedConfig {\n chain: Chain;\n backendUrl: string | undefined;\n apiKey: string | undefined;\n marketplace721Contract: string;\n marketplaceContract: string;\n marketplace1155Contract: string;\n collection721Contract: string;\n collectionContract: string;\n collection1155Contract: string;\n retryOptions?: RetryOptions;\n feeConfig: ResolvedFeeConfig;\n}\n\nexport function resolveConfig(raw: MedialaneConfig): ResolvedConfig {\n const parsed = MedialaneConfigSchema.parse(raw);\n const coords = getCoordinates(parsed.chain);\n\n const sn = (parsed.chain === \"STARKNET\" ? coords : {}) as import(\"./chains.js\").StarknetCoordinates;\n\n const marketplace721Contract =\n parsed.marketplace721Contract ?? parsed.marketplaceContract ?? sn.marketplace721!;\n const collection721Contract =\n parsed.collection721Contract ?? parsed.collectionContract ?? sn.collection721!;\n\n return {\n chain: parsed.chain,\n backendUrl: parsed.backendUrl,\n apiKey: parsed.apiKey,\n marketplace721Contract,\n marketplaceContract: marketplace721Contract,\n marketplace1155Contract: parsed.marketplace1155Contract ?? sn.marketplace1155!,\n collection721Contract,\n collectionContract: collection721Contract,\n collection1155Contract: parsed.collection1155Contract ?? sn.collection1155!,\n retryOptions: parsed.retryOptions,\n feeConfig: resolveFeeConfig(parsed.feeConfig),\n };\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 \"../api/client.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 { normalizeAddress } from \"../utils/address.js\";\nimport type { Chain } from \"../chains.js\";\nimport type { ChainFilter } from \"../types/api.js\";\nimport type { MedialaneErrorCode } from \"../types/errors.js\";\nimport { withRetry, type RetryOptions } from \"../utils/retry.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 type { ApiKeyConfirmation } from \"../starknet/api-key-confirmation.js\";\nimport type {\n ApiOrder,\n ApiOrdersQuery,\n ApiCounterOffersQuery,\n ApiToken,\n ApiTokenBalance,\n ApiCollection,\n ApiCoin,\n ApiCoinPrices,\n ApiCoinClaimResult,\n ApiUserRewards,\n ApiRewardsLeaderboardEntry,\n ApiRewardsConfig,\n ApiRewardsBatchEntry,\n ApiPointEvent,\n ApiCoinsQuery,\n ApiCollectionProfile,\n UpdateCollectionProfileInput,\n ApiCreatorProfile,\n ApiCreatorListResult,\n ApiCollectionClaim,\n ApiCollectionSlugClaim,\n ApiBusinessProvisioning,\n ApiWalletActivity,\n ApiUserWallet,\n ApiChain,\n ApiActivity,\n ApiActivitiesQuery,\n ApiComment,\n ApiRemixOffer,\n ApiRemixOffersQuery,\n ApiPublicRemix,\n ApiSearchResult,\n ApiIntent,\n ApiIntentCreated,\n ApiTxSyncResult,\n ApiMetadataSignedUrl,\n ApiMetadataUpload,\n ApiPortalMe,\n ApiPortalKey,\n ApiPortalKeyCreated,\n ApiCreditPayment,\n ApiFundingInstructions,\n ApiFundingIntent,\n ApiFundingMethod,\n ApiFundingSubmit,\n ApiPortalSpend,\n CreateListingIntentParams,\n MakeOfferIntentParams,\n FulfillOrderIntentParams,\n CancelOrderIntentParams,\n CreateMintIntentParams,\n CreateTransferTokenIntentParams,\n CreateTransferNftIntentParams,\n CreateTransferCollectionOwnershipIntentParams,\n CreateCommentIntentParams,\n CreateGenesisMintIntentParams,\n CreatePopClaimIntentParams,\n CreatePopBurnIntentParams,\n CreateDropClaimIntentParams,\n CreateWalletManageIntentParams,\n CreateSwapIntentParams,\n CreateFundingTransferIntentParams,\n CreateDropManageIntentParams,\n CreatePopManageIntentParams,\n CreateCollectionIntentParams,\n CreateTierIntentParams,\n EmissionParams,\n ApiEmissionResult,\n CreateCoinIntentParams,\n LaunchCoinIntentParams,\n CreateSponsorshipOfferIntentParams,\n SetSponsorshipOfferOpenIntentParams,\n PlaceSponsorshipBidIntentParams,\n RetractSponsorshipBidIntentParams,\n AcceptSponsorshipBidIntentParams,\n CreateSponsorshipProposalIntentParams,\n WithdrawSponsorshipProposalIntentParams,\n AcceptSponsorshipProposalIntentParams,\n RejectSponsorshipProposalIntentParams,\n CreateCheckoutIntentParams,\n ApiCheckoutIntentResult,\n CreateCounterOfferIntentParams,\n CreateRemixOfferParams,\n AutoRemixOfferParams,\n ConfirmSelfRemixParams,\n ConfirmRemixOfferParams,\n ApiResponse,\n CollectionTokensSort,\n ApiPlatformStats,\n ApiDrop,\n ApiDropFee,\n ApiDropMint,\n ApiDropListStatus,\n ApiTierOnchain,\n ApiIpNftTokenData,\n ApiSwapQuote,\n ApiSwapQuoteRequest,\n ApiTokensQuery,\n ApiUsernameClaim,\n ApiSubmitReport,\n ApiSponsorshipOffer,\n ApiSponsorshipBid,\n ApiSponsorshipProposal,\n ApiSponsorshipLicense,\n ApiSponsorshipOffersQuery,\n ApiSponsorshipProposalsQuery,\n ApiSponsorshipLicensesQuery,\n ApiCollectionsListQuery,\n ApiPricing,\n} from \"../types/api.js\";\nimport type { z } from \"zod\";\nimport type * as provisioning from \"../contract/provisioning.js\";\n\nfunction deriveErrorCode(status: number): MedialaneErrorCode {\n if (status === 404) return \"TOKEN_NOT_FOUND\";\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 Error {\n readonly code: MedialaneErrorCode;\n constructor(\n public readonly status: number,\n message: string,\n\n public readonly retryAfterMs?: number,\n public readonly details?: unknown,\n ) {\n super(message);\n this.name = \"MedialaneApiError\";\n this.code = deriveErrorCode(status);\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\nexport class ApiClient {\n private readonly baseHeaders: Record<string, string>;\n private readonly retryOptions: RetryOptions | undefined;\n\n constructor(\n private readonly baseUrl: string,\n apiKey?: string,\n retryOptions?: RetryOptions,\n private readonly chain: Chain = \"STARKNET\"\n ) {\n this.baseHeaders = apiKey ? { \"x-api-key\": apiKey } : {};\n this.retryOptions = retryOptions;\n }\n\n private addr(a: string): string {\n return normalizeAddress(this.chain, a);\n }\n\n private async request<T>(\n path: string,\n init?: RequestInit,\n opts?: { allow404?: boolean; allow403?: boolean },\n ): Promise<T> {\n const url = `${this.baseUrl.replace(/\\/$/, \"\")}${path}`;\n const headers: Record<string, string> = { ...this.baseHeaders };\n if (init?.body != null && !(init.body instanceof FormData)) {\n headers[\"Content-Type\"] = \"application/json\";\n }\n const allowed = (status: number): boolean =>\n (opts?.allow404 === true && status === 404) || (opts?.allow403 === true && status === 403);\n\n const res = await withRetry(async () => {\n const response = await fetch(url, {\n ...init,\n headers: { ...headers, ...(init?.headers as Record<string, string> | undefined) },\n });\n if (!response.ok && !allowed(response.status)) {\n const text = await response.text().catch(() => response.statusText);\n let message = `Request failed with status ${response.status}`;\n let details: unknown = text;\n try {\n const body = JSON.parse(text) as { error?: string };\n if (typeof body.error === \"string\" && body.error.trim() !== \"\") {\n message = body.error;\n }\n details = body;\n } catch {\n\n }\n throw new MedialaneApiError(\n response.status,\n message,\n parseRetryAfter(response.headers.get(\"retry-after\")),\n details,\n );\n }\n return response;\n }, this.retryOptions, (init?.method ?? \"GET\").toUpperCase());\n\n if (allowed(res.status)) return null as T;\n return res.json() as Promise<T>;\n }\n\n private get<T>(path: string): Promise<T> {\n return this.request<T>(path, { method: \"GET\" });\n }\n\n private post<T>(path: string, body: unknown): Promise<T> {\n return this.request<T>(path, { method: \"POST\", body: JSON.stringify(body) });\n }\n\n private patch<T>(path: string, body: unknown): Promise<T> {\n return this.request<T>(path, { method: \"PATCH\", body: JSON.stringify(body) });\n }\n\n private bearer(siwsToken?: string): Record<string, string> {\n return siwsToken ? { Authorization: `Bearer ${siwsToken}` } : {};\n }\n\n\n getOrders(query: ApiOrdersQuery = {}): Promise<ApiResponse<ApiOrder[]>> {\n const params = new URLSearchParams();\n if (query.status) params.set(\"status\", query.status);\n if (query.collection) params.set(\"collection\", query.collection);\n if (query.currency) params.set(\"currency\", query.currency);\n if (query.sort) params.set(\"sort\", query.sort);\n if (query.page !== undefined) params.set(\"page\", String(query.page));\n if (query.limit !== undefined) params.set(\"limit\", String(query.limit));\n if (query.offerer) params.set(\"offerer\", this.addr(query.offerer));\n if (query.minPrice) params.set(\"minPrice\", query.minPrice);\n if (query.maxPrice) params.set(\"maxPrice\", query.maxPrice);\n if (query.chain) params.set(\"chain\", query.chain);\n const qs = params.toString();\n return this.get<ApiResponse<ApiOrder[]>>(`/v1/orders${qs ? `?${qs}` : \"\"}`);\n }\n\n getOrder(orderHash: string): Promise<ApiResponse<ApiOrder>> {\n return this.get<ApiResponse<ApiOrder>>(`/v1/orders/${orderHash}`);\n }\n\n getActiveOrdersForToken(contract: string, tokenId: string): Promise<ApiResponse<ApiOrder[]>> {\n return this.get<ApiResponse<ApiOrder[]>>(`/v1/orders/token/${this.addr(contract)}/${tokenId}`);\n }\n\n getReceivedOffers(address: string, opts: { page?: number; limit?: number } = {}): Promise<ApiResponse<ApiOrder[]>> {\n const params = new URLSearchParams({ page: String(opts.page ?? 1), limit: String(opts.limit ?? 50) });\n return this.get<ApiResponse<ApiOrder[]>>(`/v1/orders/received/${this.addr(address)}?${params}`);\n }\n\n getOrdersByUser(address: string, page = 1, limit = 20): Promise<ApiResponse<ApiOrder[]>> {\n return this.get<ApiResponse<ApiOrder[]>>(\n `/v1/orders/user/${this.addr(address)}?page=${page}&limit=${limit}`\n );\n }\n\n getToken(contract: string, tokenId: string, wait = false): Promise<ApiResponse<ApiToken>> {\n return this.get<ApiResponse<ApiToken>>(\n `/v1/tokens/${contract}/${tokenId}${wait ? \"?wait=true\" : \"\"}`\n );\n }\n\n getTokenBalance(contract: string, tokenId: string, owner: string): Promise<ApiResponse<ApiTokenBalance>> {\n return this.get<ApiResponse<ApiTokenBalance>>(\n `/v1/tokens/${contract}/${tokenId}/balances/${this.addr(owner)}`\n );\n }\n\n getTokensByOwner(address: string, page = 1, limit = 20): Promise<ApiResponse<ApiToken[]>> {\n return this.get<ApiResponse<ApiToken[]>>(\n `/v1/tokens/owned/${this.addr(address)}?page=${page}&limit=${limit}`\n );\n }\n\n getTokenHistory(\n contract: string,\n tokenId: string,\n page = 1,\n limit = 20\n ): Promise<ApiResponse<ApiActivity[]>> {\n return this.get<ApiResponse<ApiActivity[]>>(\n `/v1/tokens/${contract}/${tokenId}/history?page=${page}&limit=${limit}`\n );\n }\n\n getCollection(contract: string): Promise<ApiResponse<ApiCollection>> {\n return this.get<ApiResponse<ApiCollection>>(`/v1/collections/${this.addr(contract)}`);\n }\n\n getCollectionTokens(\n contract: string,\n page = 1,\n limit = 20,\n sort: CollectionTokensSort = \"recent\"\n ): Promise<ApiResponse<ApiToken[]>> {\n return this.get<ApiResponse<ApiToken[]>>(\n `/v1/collections/${this.addr(contract)}/tokens?page=${page}&limit=${limit}&sort=${sort}`\n );\n }\n\n getActivities(query: ApiActivitiesQuery = {}): Promise<ApiResponse<ApiActivity[]>> {\n const params = new URLSearchParams();\n if (query.type) params.set(\"type\", query.type);\n if (query.contract) params.set(\"contract\", query.contract);\n if (query.page !== undefined) params.set(\"page\", String(query.page));\n if (query.limit !== undefined) params.set(\"limit\", String(query.limit));\n if (query.chain) params.set(\"chain\", query.chain);\n const qs = params.toString();\n return this.get<ApiResponse<ApiActivity[]>>(`/v1/activities${qs ? `?${qs}` : \"\"}`);\n }\n\n getActivitiesByAddress(\n address: string,\n page = 1,\n limit = 20\n ): Promise<ApiResponse<ApiActivity[]>> {\n return this.get<ApiResponse<ApiActivity[]>>(\n `/v1/activities/${this.addr(address)}?page=${page}&limit=${limit}`\n );\n }\n\n getTokenComments(\n contract: string,\n tokenId: string,\n opts: { page?: number; limit?: number } = {}\n ): Promise<ApiResponse<ApiComment[]>> {\n const params = new URLSearchParams();\n if (opts.page !== undefined) params.set(\"page\", String(opts.page));\n if (opts.limit !== undefined) params.set(\"limit\", String(opts.limit));\n const qs = params.toString();\n return this.get<ApiResponse<ApiComment[]>>(\n `/v1/tokens/${this.addr(contract)}/${tokenId}/comments${qs ? `?${qs}` : \"\"}`\n );\n }\n\n search(q: string, limit = 10, chain?: ChainFilter): Promise<ApiResponse<ApiSearchResult> & { query: string }> {\n const params = new URLSearchParams({ q, limit: String(limit) });\n if (chain) params.set(\"chain\", chain);\n return this.get<ApiResponse<ApiSearchResult> & { query: string }>(\n `/v1/search?${params.toString()}`\n );\n }\n\n createListingIntent(\n params: CreateListingIntentParams\n ): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/listing\", params);\n }\n\n createOfferIntent(\n params: MakeOfferIntentParams\n ): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/offer\", params);\n }\n\n createFulfillIntent(\n params: FulfillOrderIntentParams\n ): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/fulfill\", params);\n }\n\n createCancelIntent(\n params: CancelOrderIntentParams\n ): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/cancel\", params);\n }\n\n createCheckoutIntent(\n params: CreateCheckoutIntentParams\n ): Promise<{ data: ApiCheckoutIntentResult[] }> {\n return this.post<{ data: ApiCheckoutIntentResult[] }>(\"/v1/intents/checkout\", params);\n }\n\n getIntent(id: string): Promise<ApiResponse<ApiIntent>> {\n return this.get<ApiResponse<ApiIntent>>(`/v1/intents/${id}`);\n }\n\n submitIntentSignature(id: string, signature: string[]): Promise<ApiResponse<ApiIntent>> {\n return this.patch<ApiResponse<ApiIntent>>(`/v1/intents/${id}/signature`, { signature });\n }\n\n confirmIntent(id: string, txHash: string): Promise<ApiResponse<ApiIntent>> {\n return this.patch<ApiResponse<ApiIntent>>(`/v1/intents/${id}/confirm`, { txHash });\n }\n\n syncTransaction(txHash: string): Promise<ApiResponse<ApiTxSyncResult>> {\n return this.post<ApiResponse<ApiTxSyncResult>>(\"/v1/tx/sync\", { txHash });\n }\n\n createMintIntent(params: CreateMintIntentParams): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/mint\", params);\n }\n\n createTransferTokenIntent(params: CreateTransferTokenIntentParams): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/transfer-token\", params);\n }\n\n createTransferNftIntent(params: CreateTransferNftIntentParams): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/transfer-nft\", params);\n }\n\n createTransferCollectionOwnershipIntent(params: CreateTransferCollectionOwnershipIntentParams): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/transfer-collection-ownership\", params);\n }\n\n createCommentIntent(params: CreateCommentIntentParams): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/comment\", params);\n }\n\n createGenesisMintIntent(params: CreateGenesisMintIntentParams): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/genesis-mint\", params);\n }\n\n createPopClaimIntent(params: CreatePopClaimIntentParams): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/pop-claim\", params);\n }\n\n createPopBurnIntent(params: CreatePopBurnIntentParams): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/pop-burn\", params);\n }\n\n createDropClaimIntent(params: CreateDropClaimIntentParams): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/drop-claim\", params);\n }\n\n createWalletManageIntent(params: CreateWalletManageIntentParams): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/wallet-manage\", params);\n }\n\n createSwapIntent(params: CreateSwapIntentParams): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/swap\", params);\n }\n\n createFundingTransferIntent(params: CreateFundingTransferIntentParams): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/funding-transfer\", params);\n }\n\n createDropManageIntent(params: CreateDropManageIntentParams): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/drop-manage\", params);\n }\n\n createPopManageIntent(params: CreatePopManageIntentParams): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/pop-manage\", params);\n }\n\n createCollectionIntent(params: CreateCollectionIntentParams): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/create-collection\", params);\n }\n\n createTierIntent(params: CreateTierIntentParams): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/create-tier\", params);\n }\n\n emitToRecipients(params: EmissionParams): Promise<ApiResponse<ApiEmissionResult>> {\n return this.post<ApiResponse<ApiEmissionResult>>(\"/v1/business/issuance/emission\", params);\n }\n\n createCoinIntent(params: CreateCoinIntentParams): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/create-coin\", params);\n }\n\n launchCoinIntent(params: LaunchCoinIntentParams): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/launch-coin\", params);\n }\n\n createSponsorshipOfferIntent(params: CreateSponsorshipOfferIntentParams): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/sponsorship-offer\", params);\n }\n\n setSponsorshipOfferOpenIntent(params: SetSponsorshipOfferOpenIntentParams): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/sponsorship-offer-open\", params);\n }\n\n placeSponsorshipBidIntent(params: PlaceSponsorshipBidIntentParams): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/sponsorship-bid\", params);\n }\n\n retractSponsorshipBidIntent(params: RetractSponsorshipBidIntentParams): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/sponsorship-bid-retract\", params);\n }\n\n acceptSponsorshipBidIntent(params: AcceptSponsorshipBidIntentParams): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/sponsorship-bid-accept\", params);\n }\n\n createSponsorshipProposalIntent(params: CreateSponsorshipProposalIntentParams): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/sponsorship-proposal\", params);\n }\n\n withdrawSponsorshipProposalIntent(params: WithdrawSponsorshipProposalIntentParams): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/sponsorship-proposal-withdraw\", params);\n }\n\n acceptSponsorshipProposalIntent(params: AcceptSponsorshipProposalIntentParams): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/sponsorship-proposal-accept\", params);\n }\n\n rejectSponsorshipProposalIntent(params: RejectSponsorshipProposalIntentParams): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/sponsorship-proposal-reject\", params);\n }\n\n createCounterOfferIntent(\n params: CreateCounterOfferIntentParams,\n siwsToken?: string\n ): Promise<ApiResponse<ApiIntentCreated>> {\n const extraHeaders: Record<string, string> = siwsToken ? { \"Authorization\": `Bearer ${siwsToken}` } : {};\n return this.request<ApiResponse<ApiIntentCreated>>(\"/v1/intents/counter-offer\", {\n method: \"POST\",\n body: JSON.stringify(params),\n headers: extraHeaders,\n });\n }\n\n getCounterOffers(query: ApiCounterOffersQuery): Promise<ApiResponse<ApiOrder[]>> {\n const params = new URLSearchParams();\n if (query.originalOrderHash) params.set(\"originalOrderHash\", query.originalOrderHash);\n if (query.sellerAddress) params.set(\"sellerAddress\", query.sellerAddress);\n if (query.page !== undefined) params.set(\"page\", String(query.page));\n if (query.limit !== undefined) params.set(\"limit\", String(query.limit));\n return this.get<ApiResponse<ApiOrder[]>>(`/v1/orders/counter-offers?${params}`);\n }\n\n getMetadataSignedUrl(kind?: \"image\" | \"document\" | \"media\"): Promise<ApiResponse<ApiMetadataSignedUrl>> {\n const params = kind ? `?kind=${kind}` : \"\";\n return this.get<ApiResponse<ApiMetadataSignedUrl>>(`/v1/metadata/signed-url${params}`);\n }\n\n uploadMetadata(metadata: Record<string, unknown>): Promise<ApiResponse<ApiMetadataUpload>> {\n return this.post<ApiResponse<ApiMetadataUpload>>(\"/v1/metadata/upload\", metadata);\n }\n\n async uploadMetadataDirectory(files: { name: string; content: unknown }[]): Promise<{ cid: string; baseUri: string }> {\n const res = await this.post<{ data: { cid: string; baseUri: string } }>(\"/v1/metadata/upload-directory\", { files });\n return res.data;\n }\n\n resolveMetadata(uri: string): Promise<ApiResponse<unknown>> {\n const params = new URLSearchParams({ uri });\n return this.get<ApiResponse<unknown>>(`/v1/metadata/resolve?${params.toString()}`);\n }\n\n uploadFile(file: File): Promise<ApiResponse<ApiMetadataUpload>> {\n const formData = new FormData();\n formData.append(\"file\", file);\n\n return this.request<ApiResponse<ApiMetadataUpload>>(\"/v1/metadata/upload-file\", {\n method: \"POST\",\n body: formData,\n });\n }\n\n getMe(): Promise<ApiResponse<ApiPortalMe>> {\n return this.request<ApiResponse<ApiPortalMe>>(\"/v1/portal/me\", {\n method: \"GET\",\n });\n }\n\n getApiKeys(): Promise<ApiResponse<ApiPortalKey[]>> {\n return this.request<ApiResponse<ApiPortalKey[]>>(\"/v1/portal/keys\", {\n method: \"GET\",\n });\n }\n\n /** `confirmation`: the account's wallet signature over `apiKeyConfirmationTypedData` for this change. */\n createApiKey(\n input: { label?: string } | undefined,\n confirmation: ApiKeyConfirmation,\n ): Promise<ApiResponse<ApiPortalKeyCreated>> {\n return this.request<ApiResponse<ApiPortalKeyCreated>>(\"/v1/portal/keys\", {\n method: \"POST\",\n body: JSON.stringify({ ...(input ?? {}), confirmation }),\n });\n }\n\n /** `confirmation`: the account's wallet signature over `apiKeyConfirmationTypedData` for this change. */\n deleteApiKey(id: string, confirmation: ApiKeyConfirmation): Promise<ApiResponse<{ id: string }>> {\n return this.request<ApiResponse<{ id: string }>>(`/v1/portal/keys/${id}`, {\n method: \"DELETE\",\n body: JSON.stringify({ confirmation }),\n });\n }\n\n getCreditHistory(): Promise<ApiResponse<ApiCreditPayment[]>> {\n return this.request<ApiResponse<ApiCreditPayment[]>>(\"/v1/portal/credits/history\", {\n method: \"GET\",\n });\n }\n\n getSpend(): Promise<ApiResponse<ApiPortalSpend>> {\n return this.request<ApiResponse<ApiPortalSpend>>(\"/v1/portal/credits/spend\", {\n method: \"GET\",\n });\n }\n\n checkDeposit(txHash: string): Promise<ApiResponse<{ deposits: number }>> {\n return this.request<ApiResponse<{ deposits: number }>>(\"/v1/portal/credits/check\", {\n method: \"POST\",\n body: JSON.stringify({ txHash }),\n });\n }\n\n getFundingMethods(): Promise<ApiResponse<ApiFundingMethod[]>> {\n return this.request<ApiResponse<ApiFundingMethod[]>>(\"/v1/portal/funding/methods\", {\n method: \"GET\",\n });\n }\n\n createFunding(\n input: { method: string; params: Record<string, unknown> }\n ): Promise<ApiResponse<ApiFundingIntent>> {\n return this.request<ApiResponse<ApiFundingIntent>>(\"/v1/portal/funding\", {\n method: \"POST\",\n body: JSON.stringify({ method: input.method, params: input.params }),\n });\n }\n\n getFunding(id: string): Promise<ApiResponse<ApiFundingIntent>> {\n return this.request<ApiResponse<ApiFundingIntent>>(`/v1/portal/funding/${encodeURIComponent(id)}`, {\n method: \"GET\",\n });\n }\n\n getFundingChallenge(id: string, payer: string): Promise<ApiResponse<{ typedData: unknown }>> {\n return this.request<ApiResponse<{ typedData: unknown }>>(`/v1/portal/funding/${encodeURIComponent(id)}/challenge`, {\n method: \"POST\",\n body: JSON.stringify({ payer }),\n });\n }\n\n authorizeFunding(\n id: string,\n input: { payer: string; signature: string[] }\n ): Promise<ApiResponse<{ instructions: ApiFundingInstructions }>> {\n return this.request<ApiResponse<{ instructions: ApiFundingInstructions }>>(\n `/v1/portal/funding/${encodeURIComponent(id)}/authorize`,\n { method: \"POST\", body: JSON.stringify({ payer: input.payer, signature: input.signature }) },\n );\n }\n\n submitFunding(id: string, txHash: string): Promise<ApiResponse<ApiFundingSubmit>> {\n return this.request<ApiResponse<ApiFundingSubmit>>(`/v1/portal/funding/${encodeURIComponent(id)}/submit`, {\n method: \"POST\",\n body: JSON.stringify({ txHash }),\n });\n }\n\n cancelFunding(id: string): Promise<ApiResponse<{ status: string }>> {\n return this.request<ApiResponse<{ status: string }>>(`/v1/portal/funding/${encodeURIComponent(id)}/cancel`, {\n method: \"POST\",\n body: JSON.stringify({}),\n });\n }\n\n async claimCollection(\n contractAddress: string,\n walletAddress: string,\n siwsToken?: string\n ): Promise<{ verified: boolean; collection?: ApiCollection; reason?: string }> {\n return this.request(\"/v1/collections/claim\", {\n method: \"POST\",\n body: JSON.stringify({ contractAddress, walletAddress }),\n headers: this.bearer(siwsToken),\n });\n }\n\n requestCollectionClaim(params: {\n contractAddress: string;\n walletAddress?: string;\n email: string;\n notes?: string;\n }): Promise<{ claim: ApiCollectionClaim }> {\n return this.request(\"/v1/collections/claim/request\", {\n method: \"POST\",\n body: JSON.stringify(params),\n });\n }\n\n registerBusinessProvisioning(params: z.input<typeof provisioning.provisioningRegisterSchema>): Promise<ApiResponse<ApiBusinessProvisioning> & { reusedExistingWallet?: boolean }> {\n return this.post<ApiResponse<ApiBusinessProvisioning> & { reusedExistingWallet?: boolean }>(\n \"/v1/business/provisioning\",\n { chain: params.chain ?? \"STARKNET\", email: params.email },\n );\n }\n\n getCollectionProfile(contractAddress: string): Promise<ApiCollectionProfile | null> {\n return this.request<ApiCollectionProfile | null>(\n `/v1/collections/${this.addr(contractAddress)}/profile`,\n { method: \"GET\" },\n { allow404: true },\n );\n }\n\n updateCollectionProfile(\n contractAddress: string,\n data: UpdateCollectionProfileInput,\n siwsToken?: string\n ): Promise<ApiCollectionProfile> {\n return this.request<ApiCollectionProfile>(\n `/v1/collections/${this.addr(contractAddress)}/profile`,\n { method: \"PATCH\", body: JSON.stringify(data), headers: this.bearer(siwsToken) },\n );\n }\n\n getWalletActivity(\n address: string,\n chain: \"STARKNET\" = \"STARKNET\",\n ): Promise<ApiResponse<ApiWalletActivity[]>> {\n return this.get<ApiResponse<ApiWalletActivity[]>>(\n `/v1/wallet-activity?address=${this.addr(address)}&chain=${chain}`,\n );\n }\n\n getGatedContent(\n contractAddress: string,\n siwsToken?: string\n ): Promise<{ title: string; url: string; type: string } | null> {\n return this.request<{ title: string; url: string; type: string } | null>(\n `/v1/collections/${this.addr(contractAddress)}/gated-content`,\n { method: \"GET\", headers: this.bearer(siwsToken) },\n { allow404: true, allow403: true },\n );\n }\n\n getCreators(opts: { search?: string; page?: number; limit?: number } = {}): Promise<ApiCreatorListResult> {\n const params = new URLSearchParams();\n if (opts.search) params.set(\"search\", opts.search);\n if (opts.page) params.set(\"page\", String(opts.page));\n if (opts.limit) params.set(\"limit\", String(opts.limit));\n const qs = params.toString();\n return this.get<ApiCreatorListResult>(`/v1/creators${qs ? `?${qs}` : \"\"}`);\n }\n\n getCreatorProfile(walletAddress: string): Promise<ApiCreatorProfile | null> {\n return this.request<ApiCreatorProfile | null>(\n `/v1/creators/${this.addr(walletAddress)}/profile`,\n { method: \"GET\" },\n { allow404: true },\n );\n }\n\n getCreatorByUsername(username: string): Promise<ApiCreatorProfile | null> {\n return this.request<ApiCreatorProfile | null>(\n `/v1/creators/by-username/${encodeURIComponent(username.toLowerCase().trim())}`,\n { method: \"GET\" },\n { allow404: true },\n );\n }\n\n updateCreatorProfile(\n walletAddress: string,\n data: Partial<Omit<ApiCreatorProfile, \"walletAddress\" | \"chain\" | \"updatedAt\">>,\n siwsToken?: string\n ): Promise<ApiCreatorProfile> {\n return this.request<ApiCreatorProfile>(\n `/v1/creators/${this.addr(walletAddress)}/profile`,\n { method: \"PATCH\", body: JSON.stringify(data), headers: this.bearer(siwsToken) },\n );\n }\n\n checkCollectionSlugAvailability(slug: string): Promise<{ available: boolean; reason?: string }> {\n return this.get<{ available: boolean; reason?: string }>(\n `/v1/collection-slug-claims/check/${encodeURIComponent(slug.toLowerCase().trim())}`,\n );\n }\n\n submitCollectionSlugClaim(\n contractAddress: string,\n slug: string,\n siwsToken?: string,\n notifyEmail?: string\n ): Promise<{ claim: ApiCollectionSlugClaim }> {\n return this.request<{ claim: ApiCollectionSlugClaim }>(\"/v1/collection-slug-claims\", {\n method: \"POST\",\n body: JSON.stringify({ contractAddress, slug, notifyEmail }),\n headers: this.bearer(siwsToken),\n });\n }\n\n getMyCollectionSlugClaims(siwsToken?: string): Promise<{ claims: ApiCollectionSlugClaim[] }> {\n return this.request<{ claims: ApiCollectionSlugClaim[] }>(\"/v1/collection-slug-claims/me\", {\n method: \"GET\",\n headers: this.bearer(siwsToken),\n });\n }\n\n async getCollectionBySlug(slug: string): Promise<ApiCollection | null> {\n const res = await this.request<{ data: ApiCollection } | null>(\n `/v1/collections/by-slug/${encodeURIComponent(slug.toLowerCase().trim())}`,\n { method: \"GET\" },\n { allow404: true },\n );\n return res?.data ?? null;\n }\n\n async registerUser(params: {\n walletAddress: string;\n\n walletType?: string;\n chain?: ApiChain;\n }): Promise<{\n accountId: string;\n publicId: string;\n walletAddress: string;\n chain: string;\n\n provider: string;\n createdAt: string;\n }> {\n return this.post(\"/v1/users/register\", params);\n }\n\n async upsertMyWallet(\n siwsToken?: string,\n options: {\n\n walletType?: string;\n\n chain?: ApiChain;\n\n\n email?: string;\n } = {},\n ): Promise<ApiUserWallet> {\n const body: Record<string, string> = {\n walletType: options.walletType ?? \"UNKNOWN\",\n };\n if (options.chain) body.chain = options.chain;\n if (options.email) body.email = options.email;\n return this.request<ApiUserWallet>(\"/v1/users/me\", {\n method: \"POST\",\n body: JSON.stringify(body),\n headers: this.bearer(siwsToken),\n });\n }\n\n async checkEmail(email: string): Promise<{ exists: boolean }> {\n const body = await this.get<{ exists: boolean }>(`/v1/auth/email/exists?email=${encodeURIComponent(email)}`);\n return { exists: body.exists };\n }\n\n async requestEmailCode(email: string): Promise<void> {\n await this.post<unknown>(\"/v1/auth/email/request-code\", { email });\n }\n\n async registerEmailAccount(email: string): Promise<void> {\n await this.post<unknown>(\"/v1/auth/email/register-account\", { email });\n }\n\n async verifyEmailCode(email: string, code: string): Promise<void> {\n await this.post<unknown>(\"/v1/auth/email/verify-code\", { email, code });\n }\n\n async confirmEmail(token: string): Promise<{ email: string }> {\n const body = await this.post<{ ok: boolean; email: string }>(\"/v1/auth/email/confirm\", { token });\n return { email: body.email };\n }\n\n setupWalletKey(params: { newOwnerPubkey: string }): Promise<{ walletAddress: string; removeOwnerGuid: string | null }> {\n return this.post<{ walletAddress: string; removeOwnerGuid: string | null }>(\"/v1/users/me/wallet/key\", params);\n }\n\n async getSessionWallet(): Promise<{ walletAddress: string; needsKeySetup: boolean } | null> {\n const body = await this.post<{ walletAddress?: string | null; needsKeySetup?: boolean }>(\"/v1/users/me/wallet\", {});\n return body.walletAddress ? { walletAddress: body.walletAddress, needsKeySetup: body.needsKeySetup === true } : null;\n }\n\n\n getMyWallet(siwsToken?: string): Promise<ApiUserWallet | null> {\n return this.request<ApiUserWallet | null>(\n \"/v1/users/me\",\n { method: \"GET\", headers: this.bearer(siwsToken) },\n { allow404: true },\n );\n }\n\n changeMyEmail(email: string, siwsToken?: string): Promise<{ email: string }> {\n return this.request<{ email: string }>(\"/v1/users/me/email\", {\n method: \"POST\",\n headers: this.bearer(siwsToken),\n body: JSON.stringify({ email }),\n });\n }\n\n getTokenRemixes(\n contract: string,\n tokenId: string,\n opts: { page?: number; limit?: number } = {}\n ): Promise<ApiResponse<ApiPublicRemix[]>> {\n const params = new URLSearchParams();\n if (opts.page !== undefined) params.set(\"page\", String(opts.page));\n if (opts.limit !== undefined) params.set(\"limit\", String(opts.limit));\n const qs = params.toString();\n return this.get<ApiResponse<ApiPublicRemix[]>>(\n `/v1/tokens/${this.addr(contract)}/${tokenId}/remixes${qs ? `?${qs}` : \"\"}`\n );\n }\n\n submitRemixOffer(\n params: CreateRemixOfferParams,\n siwsToken?: string\n ): Promise<ApiResponse<ApiRemixOffer>> {\n return this.request<ApiResponse<ApiRemixOffer>>(\"/v1/remix-offers\", {\n method: \"POST\",\n body: JSON.stringify(params),\n headers: this.bearer(siwsToken),\n });\n }\n\n submitAutoRemixOffer(\n params: AutoRemixOfferParams,\n siwsToken?: string\n ): Promise<ApiResponse<ApiRemixOffer>> {\n return this.request<ApiResponse<ApiRemixOffer>>(\"/v1/remix-offers/auto\", {\n method: \"POST\",\n body: JSON.stringify(params),\n headers: this.bearer(siwsToken),\n });\n }\n\n confirmSelfRemix(\n params: ConfirmSelfRemixParams,\n siwsToken?: string\n ): Promise<ApiResponse<ApiRemixOffer>> {\n return this.request<ApiResponse<ApiRemixOffer>>(\"/v1/remix-offers/self/confirm\", {\n method: \"POST\",\n body: JSON.stringify(params),\n headers: this.bearer(siwsToken),\n });\n }\n\n getRemixOffers(\n query: ApiRemixOffersQuery,\n siwsToken?: string\n ): Promise<ApiResponse<ApiRemixOffer[]>> {\n const params = new URLSearchParams({ role: query.role });\n if (query.status) params.set(\"status\", query.status);\n if (query.page !== undefined) params.set(\"page\", String(query.page));\n if (query.limit !== undefined) params.set(\"limit\", String(query.limit));\n return this.request<ApiResponse<ApiRemixOffer[]>>(`/v1/remix-offers?${params}`, {\n method: \"GET\",\n headers: this.bearer(siwsToken),\n });\n }\n\n getRemixOffer(id: string, siwsToken?: string): Promise<ApiResponse<ApiRemixOffer>> {\n return this.request<ApiResponse<ApiRemixOffer>>(`/v1/remix-offers/${id}`, {\n method: \"GET\",\n headers: siwsToken ? this.bearer(siwsToken) : undefined,\n });\n }\n\n confirmRemixOffer(\n id: string,\n params: ConfirmRemixOfferParams,\n siwsToken?: string\n ): Promise<ApiResponse<ApiRemixOffer>> {\n return this.request<ApiResponse<ApiRemixOffer>>(`/v1/remix-offers/${id}/confirm`, {\n method: \"POST\",\n body: JSON.stringify(params),\n headers: this.bearer(siwsToken),\n });\n }\n\n rejectRemixOffer(id: string, siwsToken?: string): Promise<ApiResponse<ApiRemixOffer>> {\n return this.request<ApiResponse<ApiRemixOffer>>(`/v1/remix-offers/${id}/reject`, {\n method: \"POST\",\n body: JSON.stringify({}),\n headers: this.bearer(siwsToken),\n });\n }\n\n extendRemixOffer(id: string, days: number, siwsToken?: string): Promise<ApiResponse<ApiRemixOffer>> {\n return this.request<ApiResponse<ApiRemixOffer>>(`/v1/remix-offers/${id}/extend`, {\n method: \"POST\",\n body: JSON.stringify({ days }),\n headers: this.bearer(siwsToken),\n });\n }\n\n getCoins(opts: ApiCoinsQuery = {}): Promise<ApiResponse<ApiCoin[]>> {\n const params = new URLSearchParams();\n if (opts.page) params.set(\"page\", String(opts.page));\n if (opts.limit) params.set(\"limit\", String(opts.limit));\n if (opts.service) params.set(\"service\", opts.service);\n if (opts.sort) params.set(\"sort\", opts.sort);\n if (opts.creator) params.set(\"creator\", this.addr(opts.creator));\n if (opts.chain) params.set(\"chain\", opts.chain);\n const qs = params.toString();\n return this.get<ApiResponse<ApiCoin[]>>(`/v1/coins${qs ? `?${qs}` : \"\"}`);\n }\n\n getCoin(contract: string): Promise<{ data: ApiCoin }> {\n return this.get<{ data: ApiCoin }>(`/v1/coins/${this.addr(contract)}`);\n }\n\n getCoinPrices(): Promise<ApiResponse<ApiCoinPrices>> {\n return this.get<ApiResponse<ApiCoinPrices>>(\"/v1/coins/prices\");\n }\n\n claimCoin(coinAddress: string, siwsToken?: string): Promise<ApiCoinClaimResult> {\n return this.request<ApiCoinClaimResult>(\"/v1/coins/claim\", {\n method: \"POST\",\n headers: this.bearer(siwsToken),\n body: JSON.stringify({ coinAddress }),\n });\n }\n\n getCoinClaims(status = \"PENDING\"): Promise<ApiResponse<ApiCollectionClaim[]>> {\n return this.get<ApiResponse<ApiCollectionClaim[]>>(\n `/v1/coins/claims?status=${encodeURIComponent(status)}`,\n );\n }\n\n updateCoinProfile(\n contract: string,\n data: { image?: string | null; description?: string | null },\n siwsToken?: string\n ): Promise<ApiResponse<ApiCoin>> {\n return this.request<ApiResponse<ApiCoin>>(`/v1/coins/${this.addr(contract)}`, {\n method: \"PATCH\",\n body: JSON.stringify(data),\n headers: this.bearer(siwsToken),\n });\n }\n\n getDropFee(): Promise<ApiDropFee> {\n return this.get<{ data: ApiDropFee }>(\"/v1/drops/fee\").then((r) => r.data);\n }\n\n getDrops(query: { status?: ApiDropListStatus; organizer?: string; page?: number; limit?: number } = {}): Promise<ApiResponse<ApiDrop[]>> {\n const params = new URLSearchParams();\n if (query.status) params.set(\"status\", query.status);\n if (query.organizer) params.set(\"organizer\", this.addr(query.organizer));\n if (query.page !== undefined) params.set(\"page\", String(query.page));\n if (query.limit !== undefined) params.set(\"limit\", String(query.limit));\n const qs = params.toString();\n return this.get<ApiResponse<ApiDrop[]>>(`/v1/drops${qs ? `?${qs}` : \"\"}`);\n }\n\n async getDrop(contract: string): Promise<ApiDrop | null> {\n const res = await this.request<{ data: ApiDrop } | null>(`/v1/drops/${this.addr(contract)}`, { method: \"GET\" }, { allow404: true });\n return res?.data ?? null;\n }\n\n getDropMints(contract: string, opts: { page?: number; limit?: number } = {}): Promise<ApiResponse<ApiDropMint[]>> {\n const params = new URLSearchParams();\n if (opts.page !== undefined) params.set(\"page\", String(opts.page));\n if (opts.limit !== undefined) params.set(\"limit\", String(opts.limit));\n const qs = params.toString();\n return this.get<ApiResponse<ApiDropMint[]>>(`/v1/drops/${this.addr(contract)}/mints${qs ? `?${qs}` : \"\"}`);\n }\n\n async getTicket(contract: string, tokenId: string): Promise<ApiTierOnchain> {\n const res = await this.get<{ data: ApiTierOnchain }>(`/v1/tickets/${this.addr(contract)}/${tokenId}`);\n return res.data;\n }\n\n async getTicketCount(contract: string): Promise<number> {\n const res = await this.get<{ data: { count: number } }>(`/v1/tickets/${this.addr(contract)}/count`);\n return res.data.count;\n }\n\n async getClubMembershipCount(contract: string): Promise<number> {\n const res = await this.get<{ data: { count: number } }>(`/v1/club/${this.addr(contract)}/count`);\n return res.data.count;\n }\n\n async getClubMembership(contract: string, tokenId: string): Promise<ApiTierOnchain> {\n const res = await this.get<{ data: ApiTierOnchain }>(`/v1/club/${this.addr(contract)}/${tokenId}`);\n return res.data;\n }\n\n async isClubMember(contract: string, tokenId: string, wallet: string): Promise<boolean> {\n const res = await this.get<{ data: { isMember: boolean } }>(\n `/v1/club/${this.addr(contract)}/${tokenId}/member/${this.addr(wallet)}`\n );\n return res.data.isMember;\n }\n\n async getIpNftTokenData(contract: string, tokenId: string): Promise<ApiIpNftTokenData | null> {\n const res = await this.get<{ data: ApiIpNftTokenData | null }>(`/v1/ipnft/${this.addr(contract)}/${tokenId}`);\n return res.data;\n }\n\n async getCoinGuarantees(contract: string): Promise<CreatorCoinGuarantees | null> {\n const res = await this.get<{ data: CreatorCoinGuarantees | null }>(`/v1/coins/${this.addr(contract)}/guarantees`);\n return res.data;\n }\n\n async getPopClaimInfo(collection: string): Promise<PopClaimInfo | null> {\n const res = await this.get<{ data: PopClaimInfo | null }>(`/v1/pop/${this.addr(collection)}/claim-info`);\n return res.data;\n }\n\n async getDropState(contract: string): Promise<DropOnchain | null> {\n const res = await this.get<{\n data: (Omit<DropOnchain, \"price\" | \"maxPerWallet\" | \"maxSupply\" | \"totalMinted\"> & {\n price: string;\n maxPerWallet: string;\n maxSupply: string;\n totalMinted: string;\n }) | null;\n }>(`/v1/drops/${this.addr(contract)}/state`);\n if (!res.data) return null;\n return {\n ...res.data,\n price: BigInt(res.data.price),\n maxPerWallet: BigInt(res.data.maxPerWallet),\n maxSupply: BigInt(res.data.maxSupply),\n totalMinted: BigInt(res.data.totalMinted),\n };\n }\n\n async getSwapQuote(body: ApiSwapQuoteRequest): Promise<ApiSwapQuote> {\n const res = await this.post<{ quote: ApiSwapQuote }>(\"/v1/swap/quote\", body);\n return res.quote;\n }\n\n async getPlatformStats(): Promise<ApiPlatformStats> {\n const res = await this.get<{ data: ApiPlatformStats }>(\"/v1/stats\");\n return res.data;\n }\n\n getTokens(query: ApiTokensQuery = {}): Promise<ApiResponse<ApiToken[]>> {\n const params = new URLSearchParams();\n if (query.page !== undefined) params.set(\"page\", String(query.page));\n if (query.limit !== undefined) params.set(\"limit\", String(query.limit));\n if (query.sort) params.set(\"sort\", query.sort);\n if (query.ipType) params.set(\"ipType\", query.ipType);\n if (query.derivatives) params.set(\"derivatives\", query.derivatives);\n const qs = params.toString();\n return this.get<ApiResponse<ApiToken[]>>(`/v1/tokens${qs ? `?${qs}` : \"\"}`);\n }\n\n async isCreatorHidden(wallet: string): Promise<boolean> {\n const res = await this.get<{ isHidden: boolean }>(`/v1/creators/${this.addr(wallet)}/hidden`);\n return res.isHidden;\n }\n\n getMyUsernameClaim(siwsToken?: string): Promise<{ username: string | null; claim: ApiUsernameClaim | null }> {\n return this.request<{ username: string | null; claim: ApiUsernameClaim | null }>(\"/v1/username-claims/me\", {\n method: \"GET\",\n headers: this.bearer(siwsToken),\n });\n }\n\n checkUsernameAvailability(username: string): Promise<{ available: boolean; reason?: string }> {\n return this.get<{ available: boolean; reason?: string }>(\n `/v1/username-claims/check/${encodeURIComponent(username)}`\n );\n }\n\n async submitUsernameClaim(username: string, siwsToken?: string, notifyEmail?: string): Promise<ApiUsernameClaim> {\n const res = await this.request<{ claim: ApiUsernameClaim }>(\"/v1/username-claims\", {\n method: \"POST\",\n headers: this.bearer(siwsToken),\n body: JSON.stringify({ username, ...(notifyEmail ? { notifyEmail } : {}) }),\n });\n return res.claim;\n }\n\n async submitReport(report: ApiSubmitReport, siwsToken?: string): Promise<void> {\n const targetContract = report.targetContract ? this.addr(report.targetContract) : undefined;\n const targetAddress = report.targetAddress ? this.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\n await this.request<unknown>(\"/v1/reports\", {\n method: \"POST\",\n headers: this.bearer(siwsToken),\n body: JSON.stringify({ ...report, targetKey, targetContract, targetAddress }),\n });\n }\n\n getPricing(): Promise<ApiPricing> {\n return this.get<ApiPricing>(\"/v1/pricing\");\n }\n\n listCollections(query: ApiCollectionsListQuery = {}): Promise<ApiResponse<ApiCollection[]>> {\n const params = new URLSearchParams();\n if (query.page !== undefined) params.set(\"page\", String(query.page));\n if (query.limit !== undefined) params.set(\"limit\", String(query.limit));\n if (query.owner) params.set(\"owner\", this.addr(query.owner));\n if (query.service) params.set(\"service\", query.service);\n if (query.sort) params.set(\"sort\", query.sort);\n if (query.isFeatured !== undefined) params.set(\"isFeatured\", String(query.isFeatured));\n if (query.hideEmpty !== undefined) params.set(\"hideEmpty\", String(query.hideEmpty));\n if (query.standard) params.set(\"standard\", query.standard);\n if (query.chain) params.set(\"chain\", query.chain);\n const qs = params.toString();\n return this.get<ApiResponse<ApiCollection[]>>(`/v1/collections${qs ? `?${qs}` : \"\"}`);\n }\n\n generateWallet(newWalletSiwsToken: string, siwsToken?: string): Promise<{ walletAddress: string }> {\n return this.request<{ walletAddress: string }>(\"/v1/users/me/generate-wallet\", {\n method: \"POST\",\n headers: this.bearer(siwsToken),\n body: JSON.stringify({ newWalletSiwsToken }),\n });\n }\n\n syncCoin(coinAddress: string, owner?: string): Promise<{ data: ApiCoin }> {\n return this.post<{ data: ApiCoin }>(\"/v1/coins/sync\", { coinAddress, ...(owner ? { owner } : {}) });\n }\n\n registerCollection(contractAddress: string): Promise<{ data: ApiCollection }> {\n return this.post<{ data: ApiCollection }>(\"/v1/collections/register\", { contractAddress });\n }\n\n getSponsorshipOffers(query: ApiSponsorshipOffersQuery = {}): Promise<ApiResponse<ApiSponsorshipOffer[]>> {\n const params = new URLSearchParams({ limit: String(query.limit ?? 50) });\n if (query.nftContract) params.set(\"nftContract\", query.nftContract);\n if (query.author) params.set(\"author\", query.author);\n if (query.owner) params.set(\"owner\", query.owner);\n if (query.open !== undefined) params.set(\"open\", String(query.open));\n return this.get<ApiResponse<ApiSponsorshipOffer[]>>(`/v1/sponsorship/offers?${params}`);\n }\n\n async getSponsorshipOffer(offerId: string): Promise<ApiSponsorshipOffer | null> {\n const res = await this.request<{ data: ApiSponsorshipOffer } | null>(\n `/v1/sponsorship/offers/${encodeURIComponent(offerId)}`,\n { method: \"GET\" },\n { allow404: true },\n );\n return res?.data ?? null;\n }\n\n async getSponsorshipProposal(proposalId: string): Promise<ApiSponsorshipProposal | null> {\n const res = await this.request<{ data: ApiSponsorshipProposal } | null>(\n `/v1/sponsorship/proposals/${encodeURIComponent(proposalId)}`,\n { method: \"GET\" },\n { allow404: true },\n );\n return res?.data ?? null;\n }\n\n async getSponsorshipBids(offerId: string): Promise<ApiSponsorshipBid[]> {\n const res = await this.get<{ data: ApiSponsorshipBid[] }>(`/v1/sponsorship/offers/${encodeURIComponent(offerId)}/bids`);\n return res.data;\n }\n\n getSponsorshipProposals(query: ApiSponsorshipProposalsQuery = {}): Promise<ApiResponse<ApiSponsorshipProposal[]>> {\n const params = new URLSearchParams({ limit: String(query.limit ?? 50) });\n if (query.nftContract) params.set(\"nftContract\", query.nftContract);\n if (query.proposer) params.set(\"proposer\", query.proposer);\n if (query.owner) params.set(\"owner\", query.owner);\n if (query.open !== undefined) params.set(\"open\", String(query.open));\n return this.get<ApiResponse<ApiSponsorshipProposal[]>>(`/v1/sponsorship/proposals?${params}`);\n }\n\n getSponsorshipLicenses(query: ApiSponsorshipLicensesQuery = {}): Promise<ApiResponse<ApiSponsorshipLicense[]>> {\n const params = new URLSearchParams({ limit: String(query.limit ?? 50) });\n if (query.holder) params.set(\"holder\", query.holder);\n if (query.author) params.set(\"author\", query.author);\n return this.get<ApiResponse<ApiSponsorshipLicense[]>>(`/v1/sponsorship/licenses?${params}`);\n }\n\n async getRewards(address: string): Promise<ApiUserRewards> {\n const res = await this.get<{ data: ApiUserRewards }>(`/v1/rewards/${this.addr(address)}`);\n return res.data;\n }\n\n getRewardsLeaderboard(page = 1, limit = 50): Promise<ApiResponse<ApiRewardsLeaderboardEntry[]>> {\n return this.get<ApiResponse<ApiRewardsLeaderboardEntry[]>>(`/v1/rewards?page=${page}&limit=${limit}`);\n }\n\n getRewardsEvents(address: string, page = 1, limit = 20): Promise<ApiResponse<ApiPointEvent[]>> {\n return this.get<ApiResponse<ApiPointEvent[]>>(\n `/v1/rewards/${this.addr(address)}/events?page=${page}&limit=${limit}`\n );\n }\n\n async getRewardsConfig(): Promise<ApiRewardsConfig> {\n const res = await this.get<{ data: ApiRewardsConfig }>(`/v1/rewards/config`);\n return res.data;\n }\n\n async getRewardsBatch(addresses: string[]): Promise<ApiRewardsBatchEntry[]> {\n if (addresses.length === 0) return [];\n const params = new URLSearchParams({ addresses: addresses.map((a) => this.addr(a)).join(\",\") });\n const res = await this.get<{ data: ApiRewardsBatchEntry[] }>(`/v1/rewards/batch?${params}`);\n return res.data;\n }\n}\n","import { ec, num } from \"starknet\";\n\nexport async function deriveAesKey(prfSecret: Uint8Array, hkdfInfo: Uint8Array): Promise<CryptoKey> {\n const hkdf = await crypto.subtle.importKey(\"raw\", prfSecret as BufferSource, \"HKDF\", false, [\"deriveKey\"]);\n return crypto.subtle.deriveKey(\n { name: \"HKDF\", hash: \"SHA-256\", salt: new Uint8Array(0), info: hkdfInfo as BufferSource },\n hkdf,\n { name: \"AES-GCM\", length: 256 },\n false,\n [\"encrypt\", \"decrypt\"],\n );\n}\n\nexport function generateDeviceKey(): Promise<CryptoKey> {\n return crypto.subtle.generateKey({ name: \"AES-GCM\", length: 256 }, false, [\"encrypt\", \"decrypt\"]);\n}\n\nexport function generateStarkKeyPair(): { privateKeyHex: string; publicKeyHex: string } {\n const privateKeyHex =\n \"0x\" +\n Array.from(ec.starkCurve.utils.randomPrivateKey())\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n return { privateKeyHex, publicKeyHex: ec.starkCurve.getStarkKey(privateKeyHex) };\n}\n\nexport class InvalidStarkPrivateKeyError extends Error {\n constructor(reason: string) {\n super(`Not a valid Starknet private key: ${reason}`);\n this.name = \"InvalidStarkPrivateKeyError\";\n }\n}\n\nexport function starkKeyPairFromPrivateKey(input: string): { privateKeyHex: string; publicKeyHex: string } {\n const trimmed = input.trim().replace(/\\s+/g, \"\");\n const body = trimmed.startsWith(\"0x\") || trimmed.startsWith(\"0X\") ? trimmed.slice(2) : trimmed;\n\n if (body.length === 0) throw new InvalidStarkPrivateKeyError(\"it is empty\");\n if (!/^[0-9a-fA-F]+$/.test(body)) throw new InvalidStarkPrivateKeyError(\"it is not hexadecimal\");\n if (body.length > 64) throw new InvalidStarkPrivateKeyError(\"it is too long\");\n\n const value = BigInt(\"0x\" + body);\n if (value === 0n) throw new InvalidStarkPrivateKeyError(\"it is zero\");\n if (value >= ec.starkCurve.CURVE.n) throw new InvalidStarkPrivateKeyError(\"it is outside the curve order\");\n\n const privateKeyHex = \"0x\" + value.toString(16).padStart(64, \"0\");\n return { privateKeyHex, publicKeyHex: ec.starkCurve.getStarkKey(privateKeyHex) };\n}\n\nexport async function sealPrivateKey(\n aesKey: CryptoKey,\n iv: Uint8Array,\n privateKeyHex: string,\n): Promise<ArrayBuffer> {\n return crypto.subtle.encrypt(\n { name: \"AES-GCM\", iv: iv as BufferSource },\n aesKey,\n new TextEncoder().encode(privateKeyHex),\n );\n}\n\nexport async function unsealPrivateKey(\n aesKey: CryptoKey,\n iv: Uint8Array,\n ciphertext: BufferSource,\n): Promise<string> {\n const buf = await crypto.subtle.decrypt({ name: \"AES-GCM\", iv: iv as BufferSource }, aesKey, ciphertext);\n return new TextDecoder().decode(buf);\n}\n\nexport function signWithPrivateKey(privateKeyHex: string, msgHash: string): [string, string] {\n const sig = ec.starkCurve.sign(msgHash, privateKeyHex);\n return [num.toHex(sig.r), num.toHex(sig.s)];\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_721_CLASS_HASH = SN.marketplace721ClassHash!;\nexport const STARKNET_MARKETPLACE_721_START_BLOCK = SN.marketplace721StartBlock!;\nexport const STARKNET_MARKETPLACE_1155_CONTRACT = SN.marketplace1155!;\nexport const STARKNET_MARKETPLACE_1155_CLASS_HASH = SN.marketplace1155ClassHash!;\nexport const STARKNET_MARKETPLACE_1155_START_BLOCK = SN.marketplace1155StartBlock!;\n\nexport const STARKNET_COLLECTION_721_CONTRACT = SN.collection721!;\nexport const STARKNET_DATA_TOKENIZATION_721_CONTRACT = SN.dataTokenization721!;\nexport const STARKNET_COLLECTION_721_START_BLOCK = SN.collection721StartBlock!;\nexport const STARKNET_IPNFT_CLASS_HASH = SN.ipNftClassHash!;\nexport const STARKNET_IPCOLLECTION_CLASS_HASH = SN.ipCollectionClassHash!;\nexport const STARKNET_COLLECTION_1155_CONTRACT = SN.collection1155!;\nexport const STARKNET_COLLECTION_1155_FACTORY_CLASS_HASH = SN.collection1155FactoryClassHash!;\nexport const STARKNET_COLLECTION_1155_CLASS_HASH = SN.collection1155ClassHash!;\nexport const STARKNET_COLLECTION_1155_START_BLOCK = SN.collection1155StartBlock!;\n\nexport const STARKNET_POP_FACTORY_CONTRACT = SN.popFactory!;\nexport const STARKNET_POP_COLLECTION_CLASS_HASH = SN.popCollectionClassHash!;\nexport const STARKNET_POP_FACTORY_START_BLOCK = SN.popFactoryStartBlock;\nexport const STARKNET_DROP_FACTORY_CONTRACT = SN.dropFactory!;\nexport const STARKNET_DROP_COLLECTION_CLASS_HASH = SN.dropCollectionClassHash!;\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_TICKET_COLLECTION_CLASS_HASH = SN.ipTicketCollectionClassHash!;\nexport const STARKNET_IP_CLUB_FACTORY_CONTRACT = SN.ipClubFactory!;\nexport const STARKNET_IP_CLUB_COLLECTION_CLASS_HASH = SN.ipClubCollectionClassHash!;\nexport const STARKNET_IP_SPONSORSHIP_CONTRACT = SN.ipSponsorship!;\nexport const STARKNET_IP_SPONSORSHIP_CLASS_HASH = SN.ipSponsorshipClassHash!;\n\nexport const STARKNET_MEDIAWALLET_CLASS_HASH = SN.mediaWalletClassHash!;\n\nexport const STARKNET_CREATOR_COIN_FACTORY_CONTRACT = SN.creatorCoinFactory!;\nexport const STARKNET_CREATOR_COIN_EKUBO_LAUNCHER = SN.creatorCoinEkuboLauncher!;\nexport const STARKNET_CREATOR_COIN_CLASS_HASH = SN.creatorCoinClassHash!;\nexport const STARKNET_CREATOR_COIN_FACTORY_CLASS_HASH = SN.creatorCoinFactoryClassHash!;\nexport const STARKNET_CREATOR_COIN_START_BLOCK = SN.creatorCoinStartBlock!;\n\nexport const STARKNET_GENESIS_MINT_CONTRACT = SN.genesisMint!;\nexport const STARKNET_GENESIS_NFT_URI = \"ipfs://bafkreiag6wzov7migmxwx3wrtudvbx4ajrlbjopqw7uni7nn2nsxv4eykm\";\nexport const STARKNET_EKUBO_CORE = SN.ekuboCore!;\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 { hash, num, type BigNumberish } from \"starknet\";\nimport { STARKNET_MEDIAWALLET_CLASS_HASH } from \"../../constants.js\";\n\nexport function ownerConstructorCalldata(ownerPubkey: BigNumberish): string[] {\n return [\"0x0\", num.toHex(ownerPubkey), \"0x1\"];\n}\n\nexport function computeAccountAddress(ownerPubkey: BigNumberish, salt: BigNumberish = 0): string {\n return hash.calculateContractAddressFromHash(\n num.toHex(salt),\n STARKNET_MEDIAWALLET_CLASS_HASH,\n ownerConstructorCalldata(ownerPubkey),\n 0,\n );\n}\n","export interface DeviceKeyStore {\n save(credentialId: string, key: CryptoKey): Promise<void>;\n load(credentialId: string): Promise<CryptoKey | null>;\n}\n\nconst DATABASE = \"medialane-wallet\";\nconst STORE = \"device-keys\";\n\nfunction open(): Promise<IDBDatabase> {\n return new Promise((resolve, reject) => {\n const request = indexedDB.open(DATABASE, 1);\n request.onupgradeneeded = () => request.result.createObjectStore(STORE);\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(request.error);\n });\n}\n\nasync function run<T>(mode: IDBTransactionMode, act: (store: IDBObjectStore) => IDBRequest<T>): Promise<T> {\n const db = await open();\n try {\n return await new Promise<T>((resolve, reject) => {\n const request = act(db.transaction(STORE, mode).objectStore(STORE));\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(request.error);\n });\n } finally {\n db.close();\n }\n}\n\nexport const indexedDbDeviceKeys: DeviceKeyStore = {\n async save(credentialId, key) {\n await run(\"readwrite\", (store) => store.put(key, credentialId));\n },\n async load(credentialId) {\n return ((await run(\"readonly\", (store) => store.get(credentialId))) as CryptoKey | undefined) ?? null;\n },\n};\n","import {\n deriveAesKey,\n generateDeviceKey,\n generateStarkKeyPair,\n sealPrivateKey,\n starkKeyPairFromPrivateKey,\n unsealPrivateKey,\n} from \"../starknet/passkey-wallet/crypto.js\";\nimport { computeAccountAddress } from \"../starknet/media-wallet/account.js\";\nimport type { SealedOwner } from \"./types.js\";\nimport type { RecoveryKey } from \"./recovery-key.js\";\nimport { indexedDbDeviceKeys, type DeviceKeyStore } from \"./device-keys.js\";\n\nexport 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\nexport interface PasskeyConfig {\n appName: string;\n relyingPartyName: string;\n relyingPartyId: () => string;\n prfSalt: Uint8Array<ArrayBuffer>;\n hkdfInfo: Uint8Array<ArrayBuffer>;\n passkeyUser: () => Promise<PublicKeyCredentialUserEntity>;\n knownCredentials: () => PublicKeyCredentialDescriptor[];\n credentials?: CredentialsContainer;\n deviceKeys?: DeviceKeyStore;\n randomBytes?: (length: number) => Uint8Array<ArrayBuffer>;\n}\n\nexport interface CreatedOwner {\n sealed: SealedOwner;\n privateKeyHex: string;\n}\n\nexport interface PasskeyOwner {\n createOwnerKey(): Promise<CreatedOwner>;\n unlockOwnerKey(sealed: SealedOwner): Promise<string>;\n sealImportedOwnerKey(recovery: RecoveryKey): Promise<SealedOwner>;\n}\n\ninterface Registration {\n credentialId: string;\n prfFirst: ArrayBuffer | null;\n}\n\ninterface OwnerLock {\n aes: CryptoKey;\n lock?: \"device\";\n}\n\nconst encodeBase64 = (buf: ArrayBuffer | Uint8Array): string => {\n const bytes = buf instanceof Uint8Array ? buf : new Uint8Array(buf);\n let binary = \"\";\n for (const byte of bytes) binary += String.fromCharCode(byte);\n return btoa(binary);\n};\n\nconst decodeBase64 = (value: string): Uint8Array<ArrayBuffer> => {\n const binary = atob(value);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) bytes[i] = binary.charCodeAt(i);\n return bytes;\n};\n\nfunction isPasskeyCancellation(err: unknown): boolean {\n const name = (err as { name?: string } | null)?.name;\n return name === \"NotAllowedError\" || name === \"AbortError\";\n}\n\nexport function createPasskeyOwner(config: PasskeyConfig): PasskeyOwner {\n const randomBytes: (length: number) => Uint8Array<ArrayBuffer> =\n config.randomBytes ?? ((length: number) => crypto.getRandomValues(new Uint8Array(length)));\n const credentialsApi = (): CredentialsContainer => {\n const api = config.credentials ?? (typeof navigator === \"undefined\" ? undefined : navigator.credentials);\n if (!api) throw new PasskeyUnsupportedError(\"no-webauthn\");\n return api;\n };\n\n async function registerPasskey(): Promise<Registration> {\n let credential: PublicKeyCredential;\n try {\n credential = (await credentialsApi().create({\n publicKey: {\n challenge: randomBytes(32),\n rp: { name: config.relyingPartyName, id: config.relyingPartyId() },\n user: await config.passkeyUser(),\n excludeCredentials: config.knownCredentials(),\n pubKeyCredParams: [\n { type: \"public-key\", alg: -7 },\n { type: \"public-key\", alg: -257 },\n ],\n authenticatorSelection: {\n authenticatorAttachment: \"platform\",\n residentKey: \"required\",\n userVerification: \"required\",\n },\n extensions: { prf: { eval: { first: config.prfSalt } } } as AuthenticationExtensionsClientInputs,\n },\n })) as PublicKeyCredential;\n } catch (err) {\n if (isPasskeyCancellation(err)) throw new PasskeyCancelledError();\n throw err;\n }\n const prf = (\n credential.getClientExtensionResults() as {\n prf?: { enabled?: boolean; results?: { first?: ArrayBuffer } };\n }\n ).prf;\n return {\n credentialId: encodeBase64(credential.rawId),\n prfFirst: prf?.results?.first ?? null,\n };\n }\n\n async function assertPasskey(\n credentialId: string,\n extensions?: AuthenticationExtensionsClientInputs,\n ): Promise<PublicKeyCredential> {\n try {\n return (await credentialsApi().get({\n publicKey: {\n challenge: randomBytes(32),\n rpId: config.relyingPartyId(),\n allowCredentials: [{ type: \"public-key\", id: decodeBase64(credentialId) }],\n userVerification: \"required\",\n ...(extensions ? { extensions } : {}),\n },\n })) as PublicKeyCredential;\n } catch (err) {\n if (isPasskeyCancellation(err)) throw new PasskeyCancelledError();\n throw err;\n }\n }\n\n async function prfSecret(credentialId: string): Promise<Uint8Array<ArrayBuffer>> {\n const assertion = await assertPasskey(credentialId, {\n prf: { eval: { first: config.prfSalt } },\n } as AuthenticationExtensionsClientInputs);\n const result = (assertion.getClientExtensionResults() as { prf?: { results?: { first?: ArrayBuffer } } }).prf\n ?.results?.first;\n if (!result) throw new PasskeyUnsupportedError(\"no-prf\");\n return new Uint8Array(result);\n }\n\n const deviceKeys = config.deviceKeys ?? indexedDbDeviceKeys;\n\n async function lockFor(registration: Registration): Promise<OwnerLock> {\n if (registration.prfFirst) {\n return { aes: await deriveAesKey(new Uint8Array(registration.prfFirst), config.hkdfInfo) };\n }\n try {\n return { aes: await deriveAesKey(await prfSecret(registration.credentialId), config.hkdfInfo) };\n } catch (err) {\n if (!(err instanceof PasskeyUnsupportedError) || err.reason !== \"no-prf\") throw err;\n }\n const aes = await generateDeviceKey();\n await deviceKeys.save(registration.credentialId, aes);\n return { aes, lock: \"device\" };\n }\n\n async function unlockFor(sealed: SealedOwner): Promise<CryptoKey> {\n if (sealed.lock !== \"device\") return deriveAesKey(await prfSecret(sealed.credentialId), config.hkdfInfo);\n await assertPasskey(sealed.credentialId);\n const aes = await deviceKeys.load(sealed.credentialId);\n if (!aes) throw new DeviceKeyMissingError();\n return aes;\n }\n\n async function seal(aes: CryptoKey, privateKeyHex: string): Promise<{ iv: string; ciphertext: string }> {\n const iv = randomBytes(12);\n const ciphertext = await sealPrivateKey(aes, iv, privateKeyHex);\n return { iv: encodeBase64(iv), ciphertext: encodeBase64(ciphertext) };\n }\n\n return {\n async createOwnerKey() {\n const registration = await registerPasskey();\n const { aes, lock } = await lockFor(registration);\n const { privateKeyHex, publicKeyHex } = generateStarkKeyPair();\n const { iv, ciphertext } = await seal(aes, privateKeyHex);\n return {\n sealed: {\n credentialId: registration.credentialId,\n ownerPubKey: publicKeyHex,\n address: computeAccountAddress(publicKeyHex, 0),\n iv,\n ciphertext,\n ...(lock ? { lock } : {}),\n },\n privateKeyHex,\n };\n },\n\n async unlockOwnerKey(sealed) {\n const aes = await unlockFor(sealed);\n return unsealPrivateKey(aes, decodeBase64(sealed.iv), decodeBase64(sealed.ciphertext));\n },\n\n async sealImportedOwnerKey(recovery) {\n const { privateKeyHex, publicKeyHex } = starkKeyPairFromPrivateKey(recovery.privateKey);\n const registration = await registerPasskey();\n const { aes, lock } = await lockFor(registration);\n const { iv, ciphertext } = await seal(aes, privateKeyHex);\n return {\n credentialId: registration.credentialId,\n ownerPubKey: publicKeyHex,\n address: recovery.walletAddress,\n iv,\n ciphertext,\n ...(lock ? { lock } : {}),\n };\n },\n };\n}\n","import type { Chain } from \"./chains.js\";\n\nexport const SUPPORTED_URL_CHAINS = [\"STARKNET\"] as const satisfies readonly Chain[];\n\nexport function chainSlug(chain: Chain): string {\n return chain.toLowerCase();\n}\n\nexport function chainFromSlug(slug: string): Chain | null {\n const upper = slug.toUpperCase() as Chain;\n return (SUPPORTED_URL_CHAINS as readonly Chain[]).includes(upper) ? upper : null;\n}\n\ntype Idish = string | number | null | undefined;\nconst seg = (v: Idish): string => (v == null ? \"\" : String(v));\n\nexport function assetHref(chain: Chain, contract: Idish, tokenId: Idish): string {\n return `/asset/${chainSlug(chain)}/${seg(contract)}/${seg(tokenId)}`;\n}\n\nexport function collectionHref(chain: Chain, contract: Idish): string {\n return `/collections/${chainSlug(chain)}/${seg(contract)}`;\n}\n\nexport function dropHref(contract: Idish): string {\n return `/launchpad/drop/${seg(contract)}`;\n}\n\nexport function coinHref(chain: Chain, address: Idish): string {\n return `/coins/${chainSlug(chain)}/${seg(address)}`;\n}\n\nexport function profileHref(profile: { username?: string | null; address?: string | null }): string {\n const username = profile.username?.trim();\n if (username) return `/creator/${username}`;\n const address = profile.address?.trim();\n return address ? `/account/${address}` : \"/creators\";\n}\n","import type { ServiceDefinition, ServiceCapability } from \"../types/api.js\";\nimport { getStarknetCoordinates } from \"../chains.js\";\n\nconst SN = getStarknetCoordinates(\"STARKNET\");\n\nconst SERVICES = {\n \"mip-erc721\": {\n id: \"mip-erc721\",\n displayName: \"IP Collection\",\n description: \"Tokenize intellectual property as a per-creator ERC-721 collection.\",\n standard: \"ERC721\",\n provenance: \"MEDIALANE\",\n onchain: {\n STARKNET: {\n factoryAddress: SN.collection721!,\n startBlock: SN.collection721StartBlock!,\n },\n },\n uiVariant: \"standard\",\n capabilities: [\"list\", \"buy\", \"make_offer\", \"cancel\", \"transfer\", \"mint\", \"remix\", \"license\"],\n events: [\n { name: \"CollectionCreated\", emittedBy: \"factory\" },\n\n ],\n metadataSchema: { licenseDefault: \"CC BY-SA\" },\n },\n \"ip-erc721\": {\n id: \"ip-erc721\",\n displayName: \"Programmable IP\",\n description: \"One shared ERC-721 contract any wallet can mint into.\",\n standard: \"ERC721\",\n provenance: \"MEDIALANE\",\n uiVariant: \"standard\",\n capabilities: [\"list\", \"buy\", \"make_offer\", \"cancel\", \"transfer\", \"mint\", \"remix\", \"license\"],\n\n metadataSchema: { licenseDefault: \"CC BY-SA\" },\n },\n \"data-tokenization-erc721\": {\n id: \"data-tokenization-erc721\",\n displayName: \"Data Tokenization\",\n description: \"Establish verifiable ownership of your data, with licensing terms that hold up wherever it travels.\",\n standard: \"ERC721\",\n provenance: \"MEDIALANE\",\n onchain: {\n STARKNET: {\n factoryAddress: SN.dataTokenization721!,\n startBlock: SN.dataTokenization721StartBlock!,\n },\n },\n uiVariant: \"standard\",\n capabilities: [\"list\", \"buy\", \"make_offer\", \"cancel\", \"transfer\", \"mint\", \"remix\", \"license\"],\n events: [\n { name: \"CollectionCreated\", emittedBy: \"factory\" },\n ],\n metadataSchema: { licenseDefault: \"CC BY-SA\" },\n },\n \"mip-erc1155\": {\n id: \"mip-erc1155\",\n displayName: \"NFT Editions\",\n description: \"Per-creator ERC-1155 collection; creator mints editions.\",\n standard: \"ERC1155\",\n provenance: \"MEDIALANE\",\n onchain: {\n STARKNET: {\n factoryAddress: SN.collection1155!,\n classHash: SN.collection1155ClassHash!,\n startBlock: SN.collection1155StartBlock!,\n },\n },\n uiVariant: \"edition\",\n capabilities: [\"list\", \"buy\", \"make_offer\", \"cancel\", \"transfer\", \"mint\", \"remix\", \"license\"],\n events: [\n { name: \"CollectionDeployed\", emittedBy: \"factory\" },\n ],\n metadataSchema: { licenseDefault: \"CC BY-SA\" },\n },\n \"pop-protocol\": {\n id: \"pop-protocol\",\n displayName: \"POP Protocol\",\n description: \"Soulbound proof-of-presence collectibles per event.\",\n standard: \"ERC721\",\n provenance: \"MEDIALANE\",\n onchain: {\n STARKNET: {\n factoryAddress: SN.popFactory!,\n classHash: SN.popCollectionClassHash!,\n },\n },\n uiVariant: \"pop\",\n capabilities: [\"claim\", \"mint\"],\n events: [\n { name: \"CollectionCreated\", emittedBy: \"factory\" },\n ],\n metadataSchema: { licenseDefault: \"CC BY-SA\" },\n },\n \"certificate-emission\": {\n id: \"certificate-emission\",\n displayName: \"Certificate Emission\",\n description: \"Issue a soulbound credential to a list of recipients in one run — everyone gets a wallet and their certificate.\",\n standard: \"ERC721\",\n provenance: \"MEDIALANE\",\n onchain: {\n STARKNET: {\n factoryAddress: SN.popFactory!,\n classHash: SN.popCollectionClassHash!,\n },\n },\n uiVariant: \"pop\",\n capabilities: [\"mint\", \"airdrop\"],\n events: [\n { name: \"CollectionCreated\", emittedBy: \"factory\" },\n ],\n metadataSchema: { licenseDefault: \"CC BY-SA\" },\n },\n \"drop-collection\": {\n id: \"drop-collection\",\n displayName: \"Collection Drop\",\n description: \"Sell an edition or a collection at a fixed price, with a sale window and an optional allowlist.\",\n standard: \"ERC721\",\n provenance: \"MEDIALANE\",\n onchain: {\n STARKNET: {\n factoryAddress: SN.dropFactory!,\n classHash: SN.dropCollectionClassHash!,\n },\n },\n uiVariant: \"drop\",\n capabilities: [\"claim\", \"list\", \"buy\", \"make_offer\", \"cancel\", \"transfer\"],\n events: [\n { name: \"DropCreated\", emittedBy: \"factory\" },\n { name: \"Claimed\", emittedBy: \"instance\" },\n { name: \"Issued\", emittedBy: \"instance\" },\n { name: \"AllowlistRootSet\", emittedBy: \"instance\" },\n ],\n metadataSchema: { licenseDefault: \"CC BY-SA\" },\n },\n \"ip-tickets\": {\n id: \"ip-tickets\",\n displayName: \"IP Tickets\",\n description: \"Create verifiable on-chain tickets — mint to attendees, trade like any collection.\",\n standard: \"ERC1155\",\n provenance: \"MEDIALANE\",\n onchain: {\n STARKNET: {\n factoryAddress: SN.ipTicketsFactory!,\n classHash: SN.ipTicketCollectionClassHash!,\n },\n },\n uiVariant: \"ticket\",\n capabilities: [\"mint\", \"redeem\", \"list\", \"buy\", \"make_offer\", \"cancel\", \"transfer\"],\n events: [\n { name: \"CollectionDeployed\", emittedBy: \"factory\" },\n { name: \"TicketCreated\", emittedBy: \"instance\" },\n ],\n metadataSchema: { licenseDefault: \"CC BY-SA\" },\n },\n \"ip-ticketing\": {\n id: \"ip-ticketing\",\n displayName: \"IP Ticketing\",\n description: \"Distribute verifiable on-chain tickets to a list of recipients in one run — everyone gets a wallet and their ticket.\",\n standard: \"ERC1155\",\n provenance: \"MEDIALANE\",\n onchain: {\n STARKNET: {\n factoryAddress: SN.ipTicketsFactory!,\n classHash: SN.ipTicketCollectionClassHash!,\n },\n },\n uiVariant: \"ticket\",\n capabilities: [\"mint\", \"airdrop\", \"redeem\", \"list\", \"buy\", \"make_offer\", \"cancel\", \"transfer\"],\n events: [\n { name: \"CollectionDeployed\", emittedBy: \"factory\" },\n { name: \"TicketCreated\", emittedBy: \"instance\" },\n ],\n metadataSchema: { licenseDefault: \"CC BY-SA\" },\n },\n \"ip-club\": {\n id: \"ip-club\",\n displayName: \"IP Club\",\n description: \"Membership clubs — create tiers, mint membership cards, trade like any collection.\",\n standard: \"ERC1155\",\n provenance: \"MEDIALANE\",\n onchain: {\n STARKNET: {\n factoryAddress: SN.ipClubFactory!,\n classHash: SN.ipClubCollectionClassHash!,\n },\n },\n uiVariant: \"club\",\n capabilities: [\"mint\", \"list\", \"buy\", \"make_offer\", \"cancel\", \"transfer\"],\n events: [\n { name: \"ClubDeployed\", emittedBy: \"factory\" },\n { name: \"MembershipCreated\", emittedBy: \"instance\" },\n ],\n metadataSchema: { licenseDefault: \"CC BY-SA\" },\n },\n \"ip-sponsorship\": {\n id: \"ip-sponsorship\",\n displayName: \"IP Sponsorship\",\n description: \"Sponsorship offers and licenses anchored to an existing Medialane asset.\",\n standard: \"ERC721\",\n provenance: \"MEDIALANE\",\n onchain: {\n STARKNET: {\n factoryAddress: SN.ipSponsorship!,\n classHash: SN.ipSponsorshipClassHash!,\n startBlock: SN.ipSponsorshipStartBlock!,\n },\n },\n uiVariant: \"standard\",\n\n capabilities: [\"sponsor\", \"transfer\"],\n events: [\n { name: \"OfferCreated\", emittedBy: \"factory\" },\n { name: \"ProposalCreated\", emittedBy: \"factory\" },\n { name: \"LicenseMinted\", emittedBy: \"factory\" },\n ],\n metadataSchema: { licenseDefault: \"CC BY-SA\" },\n },\n \"creator-coin\": {\n id: \"creator-coin\",\n displayName: \"Creator Coin\",\n description:\n \"Launch a fixed-supply social token with permanently-locked Ekubo liquidity.\",\n standard: \"ERC20\",\n provenance: \"MEDIALANE\",\n onchain: {\n STARKNET: {\n factoryAddress: SN.creatorCoinFactory!,\n classHash: SN.creatorCoinFactoryClassHash!,\n startBlock: SN.creatorCoinStartBlock!,\n },\n },\n uiVariant: \"coin\",\n\n capabilities: [\"launch\", \"swap\", \"transfer\"],\n events: [\n { name: \"CreatorCoinCreated\", emittedBy: \"factory\" },\n { name: \"CreatorCoinLaunched\", emittedBy: \"factory\" },\n ],\n },\n \"medialane-marketplace-erc721\": {\n id: \"medialane-marketplace-erc721\",\n displayName: \"Medialane Marketplace (ERC-721)\",\n description: \"ERC-721 order matching venue.\",\n standard: \"ERC721\",\n provenance: \"MEDIALANE\",\n onchain: {\n STARKNET: {\n factoryAddress: SN.marketplace721!,\n classHash: SN.marketplace721ClassHash!,\n startBlock: SN.marketplace721StartBlock!,\n },\n },\n uiVariant: \"standard\",\n capabilities: [\"list\", \"buy\", \"make_offer\", \"cancel\"],\n events: [\n { name: \"OrderCreated\", emittedBy: \"factory\" },\n { name: \"OrderFulfilled\", emittedBy: \"factory\" },\n { name: \"OrderCancelled\", emittedBy: \"factory\" },\n ],\n },\n \"medialane-marketplace-erc1155\": {\n id: \"medialane-marketplace-erc1155\",\n displayName: \"Medialane Marketplace (ERC-1155)\",\n description: \"ERC-1155 order matching venue.\",\n standard: \"ERC1155\",\n provenance: \"MEDIALANE\",\n onchain: {\n STARKNET: {\n factoryAddress: SN.marketplace1155!,\n classHash: SN.marketplace1155ClassHash!,\n startBlock: SN.marketplace1155StartBlock!,\n },\n },\n uiVariant: \"edition\",\n capabilities: [\"list\", \"buy\", \"make_offer\", \"cancel\"],\n events: [\n { name: \"OrderCreated\", emittedBy: \"factory\" },\n { name: \"OrderFulfilled\", emittedBy: \"factory\" },\n { name: \"OrderCancelled\", emittedBy: \"factory\" },\n ],\n },\n \"unruggable-erc20\": {\n id: \"unruggable-erc20\",\n displayName: \"Unruggable\",\n description:\n \"An ERC-20 launched through the unruggable.meme protocol, the same contract Medialane's Creator Coin is forked from. Not deployed via a Medialane service, but exposes the same on-chain guarantees: capped team allocation, permanently locked liquidity, fixed supply. Brought in by owner claim or admin/partnership — never bulk-indexed.\",\n standard: \"ERC20\",\n provenance: \"EXTERNAL\",\n uiVariant: \"coin\",\n capabilities: [\"swap\", \"transfer\"],\n },\n \"external-erc20\": {\n id: \"external-erc20\",\n displayName: \"Memecoin\",\n description:\n \"A plain ERC-20 not deployed via a Medialane service and carrying no protocol-level guarantees. Brought in by owner claim or admin/partnership — never bulk-indexed. Generalizes to future chains.\",\n standard: \"ERC20\",\n provenance: \"EXTERNAL\",\n uiVariant: \"coin\",\n capabilities: [\"swap\", \"transfer\"],\n },\n \"external-erc721\": {\n id: \"external-erc721\",\n displayName: \"External ERC-721\",\n description: \"ERC-721 contract not deployed via a Medialane service.\",\n standard: \"ERC721\",\n provenance: \"EXTERNAL\",\n uiVariant: \"standard\",\n capabilities: [\"list\", \"buy\", \"make_offer\", \"cancel\", \"transfer\"],\n },\n \"external-erc1155\": {\n id: \"external-erc1155\",\n displayName: \"External ERC-1155\",\n description: \"ERC-1155 contract not deployed via a Medialane service.\",\n standard: \"ERC1155\",\n provenance: \"EXTERNAL\",\n uiVariant: \"edition\",\n capabilities: [\"list\", \"buy\", \"make_offer\", \"cancel\", \"transfer\"],\n },\n} as const satisfies Record<string, ServiceDefinition>;\n\nexport type ServiceId = keyof typeof SERVICES;\n\nexport function isServiceId(id: string | null | undefined): id is ServiceId {\n return typeof id === \"string\" && id in SERVICES;\n}\n\nexport function getService(id: string | null | undefined): ServiceDefinition | undefined {\n return id && id in SERVICES ? (SERVICES as Record<string, ServiceDefinition>)[id] : undefined;\n}\n\nexport function listServices(): ServiceDefinition[] {\n return Object.values(SERVICES);\n}\n\nexport function getServicesByCapability(cap: ServiceCapability): ServiceDefinition[] {\n return Object.values(SERVICES).filter(\n (s) => (s.capabilities as readonly ServiceCapability[]).includes(cap),\n );\n}\n\nexport function hasCapability(\n id: string | null | undefined,\n cap: ServiceCapability,\n): boolean {\n return getService(id)?.capabilities.includes(cap) ?? false;\n}\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","\nexport function stringifyBigInts(obj: unknown): unknown {\n if (typeof obj === \"bigint\") {\n return obj.toString();\n }\n if (Array.isArray(obj)) {\n return obj.map(stringifyBigInts);\n }\n if (obj !== null && typeof obj === \"object\") {\n return Object.fromEntries(\n Object.entries(obj as Record<string, unknown>).map(([key, value]) => [\n key,\n stringifyBigInts(value),\n ])\n );\n }\n return obj;\n}\n\nexport function u256ToBigInt(low: string, high: string): bigint {\n return BigInt(low) + (BigInt(high) << 128n);\n}\n\nexport function encodeU256(n: bigint): [string, string] {\n return [\n (n & 0xffffffffffffffffffffffffffffffffn).toString(),\n (n >> 128n).toString(),\n ];\n}\n","export class UserFacingError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"UserFacingError\";\n }\n}\n"]}
|
|
@@ -1595,6 +1595,7 @@ interface SealedOwner {
|
|
|
1595
1595
|
address: string;
|
|
1596
1596
|
iv: string;
|
|
1597
1597
|
ciphertext: string;
|
|
1598
|
+
lock?: "device";
|
|
1598
1599
|
}
|
|
1599
1600
|
interface OwnerSigner {
|
|
1600
1601
|
address: string;
|
|
@@ -1625,9 +1626,18 @@ interface RecoveryKey {
|
|
|
1625
1626
|
declare function encodeRecoveryKey(key: RecoveryKey): string;
|
|
1626
1627
|
declare function parseRecoveryKey(input: string): RecoveryKey;
|
|
1627
1628
|
|
|
1629
|
+
interface DeviceKeyStore {
|
|
1630
|
+
save(credentialId: string, key: CryptoKey): Promise<void>;
|
|
1631
|
+
load(credentialId: string): Promise<CryptoKey | null>;
|
|
1632
|
+
}
|
|
1633
|
+
declare const indexedDbDeviceKeys: DeviceKeyStore;
|
|
1634
|
+
|
|
1628
1635
|
declare class PasskeyCancelledError extends Error {
|
|
1629
1636
|
constructor(message?: string);
|
|
1630
1637
|
}
|
|
1638
|
+
declare class DeviceKeyMissingError extends Error {
|
|
1639
|
+
constructor();
|
|
1640
|
+
}
|
|
1631
1641
|
type PasskeyUnsupportedReason = "no-webauthn" | "no-prf";
|
|
1632
1642
|
declare class PasskeyUnsupportedError extends Error {
|
|
1633
1643
|
readonly reason: PasskeyUnsupportedReason;
|
|
@@ -1642,11 +1652,7 @@ interface PasskeyConfig {
|
|
|
1642
1652
|
passkeyUser: () => Promise<PublicKeyCredentialUserEntity>;
|
|
1643
1653
|
knownCredentials: () => PublicKeyCredentialDescriptor[];
|
|
1644
1654
|
credentials?: CredentialsContainer;
|
|
1645
|
-
|
|
1646
|
-
signalUnknownCredential?: (options: {
|
|
1647
|
-
rpId: string;
|
|
1648
|
-
credentialId: string;
|
|
1649
|
-
}) => Promise<void>;
|
|
1655
|
+
deviceKeys?: DeviceKeyStore;
|
|
1650
1656
|
randomBytes?: (length: number) => Uint8Array<ArrayBuffer>;
|
|
1651
1657
|
}
|
|
1652
1658
|
interface CreatedOwner {
|
|
@@ -1745,4 +1751,4 @@ declare class UserFacingError extends Error {
|
|
|
1745
1751
|
constructor(message: string);
|
|
1746
1752
|
}
|
|
1747
1753
|
|
|
1748
|
-
export { type ApiOrdersQuery as $, type AcceptSponsorshipBidIntentParams as A, type ApiCreditPayment as B, type ApiDrop as C, type ApiDropFee as D, type ApiDropListStatus as E, type ApiDropMint as F, type ApiEmissionCall as G, type ApiEmissionResult as H, type ApiFundingInstructions as I, type ApiFundingIntent as J, type ApiFundingMethod as K, type ApiFundingStatus as L, type ApiFundingSubmit as M, type ApiIntent as N, type ApiIntentCreated as O, type ApiIpNftTokenData as P, type ApiMeta as Q, type ResolvedFeeConfig as R, type ServiceDefinition as S, type ApiMetadataSignedUrl as T, type ApiMetadataUpload as U, type ApiOrder as V, type ApiOrderConsideration as W, type ApiOrderOffer as X, type ApiOrderPrice as Y, type ApiOrderTokenMeta as Z, type ApiOrderTxHash as _, type ServiceCapability as a, type CreateFundingTransferIntentParams as a$, type ApiPlatformStats as a0, type ApiPointEvent as a1, type ApiPortalKey as a2, type ApiPortalKeyCreated as a3, type ApiPortalMe as a4, type ApiPortalSpend as a5, type ApiPricing as a6, type ApiPricingRule as a7, type ApiPublicRemix as a8, type ApiRemixOffer as a9, type ApiToken as aA, type ApiTokenBalance as aB, type ApiTokenMetadata as aC, type ApiTokensQuery as aD, type ApiTxSyncResult as aE, type ApiUserRewards as aF, type ApiUserWallet as aG, type ApiUsernameClaim as aH, type ApiWalletActivity as aI, type AutoRemixOfferParams as aJ, type CancelOrderIntentParams as aK, type ChainFilter as aL, type CheckoutIntentItem as aM, type CollectionServiceId as aN, type CollectionSort as aO, type CollectionTokensSort as aP, type ConfirmRemixOfferParams as aQ, type ConfirmSelfRemixParams as aR, type ConsiderationItem as aS, type CreateCheckoutIntentParams as aT, type CreateCoinIntentParams as aU, type CreateCollectionIntentParams as aV, type CreateCommentIntentParams as aW, type CreateCounterOfferIntentParams as aX, type CreateDropClaimIntentParams as aY, type CreateDropManageIntentParams as aZ, type CreateDropParams as a_, type ApiRemixOfferPrice as aa, type ApiRemixOffersQuery as ab, type ApiReportTargetType as ac, type ApiResponse as ad, type ApiRewardsBadge as ae, type ApiRewardsBatchEntry as af, type ApiRewardsConfig as ag, type ApiRewardsLeaderboardEntry as ah, type ApiRewardsLevel as ai, type ApiSearchCollectionResult as aj, type ApiSearchCreatorResult as ak, type ApiSearchResult as al, type ApiSearchTokenResult as am, type ApiSession as an, type ApiSpendByAction as ao, type ApiSponsorshipBid as ap, type ApiSponsorshipLicense as aq, type ApiSponsorshipLicensesQuery as ar, type ApiSponsorshipOffer as as, type ApiSponsorshipOffersQuery as at, type ApiSponsorshipProposal as au, type ApiSponsorshipProposalsQuery as av, type ApiSubmitReport as aw, type ApiSwapQuote as ax, type ApiSwapQuoteRequest as ay, type ApiTierOnchain as az, type AcceptSponsorshipProposalIntentParams as b, type
|
|
1754
|
+
export { type ApiOrdersQuery as $, type AcceptSponsorshipBidIntentParams as A, type ApiCreditPayment as B, type ApiDrop as C, type ApiDropFee as D, type ApiDropListStatus as E, type ApiDropMint as F, type ApiEmissionCall as G, type ApiEmissionResult as H, type ApiFundingInstructions as I, type ApiFundingIntent as J, type ApiFundingMethod as K, type ApiFundingStatus as L, type ApiFundingSubmit as M, type ApiIntent as N, type ApiIntentCreated as O, type ApiIpNftTokenData as P, type ApiMeta as Q, type ResolvedFeeConfig as R, type ServiceDefinition as S, type ApiMetadataSignedUrl as T, type ApiMetadataUpload as U, type ApiOrder as V, type ApiOrderConsideration as W, type ApiOrderOffer as X, type ApiOrderPrice as Y, type ApiOrderTokenMeta as Z, type ApiOrderTxHash as _, type ServiceCapability as a, type CreateFundingTransferIntentParams as a$, type ApiPlatformStats as a0, type ApiPointEvent as a1, type ApiPortalKey as a2, type ApiPortalKeyCreated as a3, type ApiPortalMe as a4, type ApiPortalSpend as a5, type ApiPricing as a6, type ApiPricingRule as a7, type ApiPublicRemix as a8, type ApiRemixOffer as a9, type ApiToken as aA, type ApiTokenBalance as aB, type ApiTokenMetadata as aC, type ApiTokensQuery as aD, type ApiTxSyncResult as aE, type ApiUserRewards as aF, type ApiUserWallet as aG, type ApiUsernameClaim as aH, type ApiWalletActivity as aI, type AutoRemixOfferParams as aJ, type CancelOrderIntentParams as aK, type ChainFilter as aL, type CheckoutIntentItem as aM, type CollectionServiceId as aN, type CollectionSort as aO, type CollectionTokensSort as aP, type ConfirmRemixOfferParams as aQ, type ConfirmSelfRemixParams as aR, type ConsiderationItem as aS, type CreateCheckoutIntentParams as aT, type CreateCoinIntentParams as aU, type CreateCollectionIntentParams as aV, type CreateCommentIntentParams as aW, type CreateCounterOfferIntentParams as aX, type CreateDropClaimIntentParams as aY, type CreateDropManageIntentParams as aZ, type CreateDropParams as a_, type ApiRemixOfferPrice as aa, type ApiRemixOffersQuery as ab, type ApiReportTargetType as ac, type ApiResponse as ad, type ApiRewardsBadge as ae, type ApiRewardsBatchEntry as af, type ApiRewardsConfig as ag, type ApiRewardsLeaderboardEntry as ah, type ApiRewardsLevel as ai, type ApiSearchCollectionResult as aj, type ApiSearchCreatorResult as ak, type ApiSearchResult as al, type ApiSearchTokenResult as am, type ApiSession as an, type ApiSpendByAction as ao, type ApiSponsorshipBid as ap, type ApiSponsorshipLicense as aq, type ApiSponsorshipLicensesQuery as ar, type ApiSponsorshipOffer as as, type ApiSponsorshipOffersQuery as at, type ApiSponsorshipProposal as au, type ApiSponsorshipProposalsQuery as av, type ApiSubmitReport as aw, type ApiSwapQuote as ax, type ApiSwapQuoteRequest as ay, type ApiTierOnchain as az, type AcceptSponsorshipProposalIntentParams as b, type TierServiceId as b$, type CreateGenesisMintIntentParams as b0, type CreateListingIntentParams as b1, type CreateMembershipParams as b2, type CreateMintIntentParams as b3, type CreatePopBurnIntentParams as b4, type CreatePopClaimIntentParams as b5, type CreatePopCollectionParams as b6, type CreatePopManageIntentParams as b7, type CreateRemixOfferParams as b8, type CreateSponsorshipOfferIntentParams as b9, type MakeOfferIntentParams as bA, MedialaneApiError as bB, type MedialaneConfig as bC, type MedialaneErrorCode as bD, type MintMembershipsParams as bE, type MintTicketsParams as bF, OPEN_LICENSES as bG, type OfferItem as bH, type OpenLicense as bI, type Order as bJ, type OrderDetails as bK, type OrderParameters as bL, type OrderStatus as bM, PasskeyCancelledError as bN, PasskeyUnsupportedError as bO, type PasskeyUnsupportedReason as bP, type PlaceSponsorshipBidIntentParams as bQ, type PopManageAction as bR, type ProposeSponsorshipParams as bS, type RejectSponsorshipProposalIntentParams as bT, type RemixOfferStatus as bU, type ResolvedConfig as bV, type RetractSponsorshipBidIntentParams as bW, type RetryOptions as bX, type ServiceEventDeclaration as bY, type SetSponsorshipOfferOpenIntentParams as bZ, type SortOrder as b_, type CreateSponsorshipOfferParams as ba, type CreateSponsorshipProposalIntentParams as bb, type CreateSwapIntentParams as bc, type CreateTicketParams as bd, type CreateTierIntentParams as be, type CreateTransferCollectionOwnershipIntentParams as bf, type CreateTransferNftIntentParams as bg, type CreateTransferTokenIntentParams as bh, type CreateWalletManageIntentParams as bi, DeviceKeyMissingError as bj, type DropManageAction as bk, type DropTerms as bl, type DropTermsBody as bm, type EmissionParams as bn, type EnforcementDeclaration as bo, type FactoryFamilyServiceId as bp, type FeeConfig as bq, FeeConfigSchema as br, type FulfillOrderIntentParams as bs, type IPType as bt, type IntentCall as bu, type IntentStatus as bv, type IntentType as bw, type IpAttribute as bx, type IpNftMetadata as by, type LaunchCoinIntentParams as bz, type ActivityType as c, type TxResult as c0, type UpdateCollectionProfileInput as c1, UserFacingError as c2, type WalletManageAction as c3, type WithdrawSponsorshipProposalIntentParams as c4, resolveConfig as c5, resolveFeeConfig as c6, CreatorCoinService as c7, type SealedOwner as c8, type ReceiptProviderLike as c9, VALIDATED_EKUBO_PARAMS as cA, apiKeyConfirmationTypedData as cB, buildCreateCreatorCoinCall as cC, buildLaunchOnEkuboCalls as cD, buildPopAllowlist as cE, createPasskeyOwner as cF, decodePopClaimFragment as cG, dropClaimLinks as cH, dropClaimedBy as cI, dropMintState as cJ, encodePopClaimFragment as cK, encodeRecoveryKey as cL, getCreatorCoinGuarantees as cM, indexedDbDeviceKeys as cN, parseCreatorCoinCreated as cO, parseRecoveryKey as cP, popCalls as cQ, popClaimInfo as cR, popClaimLinks as cS, popClaimLinksCsv as cT, popClaimState as cU, priceToEkuboParams as cV, readDrop as cW, validatePrice as cX, verifyPopProof as cY, type WalletExecutor as ca, type ExecutedTransaction as cb, type PasskeyOwner as cc, type CreatedOwner as cd, type ApiKeyAction as ce, type ApiKeyConfirmation as cf, type ApiKeyConfirmationInput as cg, type CreateCreatorCoinParams as ch, type CreatorCoinGuarantees as ci, type CreatorCoinReceiptLike as cj, type DeviceKeyStore as ck, type DropMintState as cl, type DropMintStateKind as cm, type DropOnchain as cn, type EkuboLaunchParams as co, type EkuboPoolParams as cp, InvalidRecoveryKeyError as cq, MAX_HOLDERS_AT_LAUNCH as cr, MAX_TEAM_ALLOCATION_PERCENT as cs, type OwnerSigner as ct, type PasskeyConfig as cu, type PopAllowlist as cv, type PopClaimInfo as cw, type PopClaimLink as cx, type PopClaimState as cy, type RecoveryKey as cz, type ApiActivitiesQuery as d, type ApiActivity as e, type ApiActivityPrice as f, type ApiAdminCollectionClaim as g, type ApiBusinessProvisioning as h, type ApiChain as i, type ApiCheckoutIntentResult as j, ApiClient as k, type ApiCoin as l, type ApiCoinClaimResult as m, type ApiCoinPrice as n, type ApiCoinPrices as o, type ApiCoinsQuery as p, type ApiCollection as q, type ApiCollectionClaim as r, type ApiCollectionProfile as s, type ApiCollectionSlugClaim as t, type ApiCollectionsListQuery as u, type ApiCollectionsQuery as v, type ApiComment as w, type ApiCounterOffersQuery as x, type ApiCreatorListResult as y, type ApiCreatorProfile as z };
|
|
@@ -1595,6 +1595,7 @@ interface SealedOwner {
|
|
|
1595
1595
|
address: string;
|
|
1596
1596
|
iv: string;
|
|
1597
1597
|
ciphertext: string;
|
|
1598
|
+
lock?: "device";
|
|
1598
1599
|
}
|
|
1599
1600
|
interface OwnerSigner {
|
|
1600
1601
|
address: string;
|
|
@@ -1625,9 +1626,18 @@ interface RecoveryKey {
|
|
|
1625
1626
|
declare function encodeRecoveryKey(key: RecoveryKey): string;
|
|
1626
1627
|
declare function parseRecoveryKey(input: string): RecoveryKey;
|
|
1627
1628
|
|
|
1629
|
+
interface DeviceKeyStore {
|
|
1630
|
+
save(credentialId: string, key: CryptoKey): Promise<void>;
|
|
1631
|
+
load(credentialId: string): Promise<CryptoKey | null>;
|
|
1632
|
+
}
|
|
1633
|
+
declare const indexedDbDeviceKeys: DeviceKeyStore;
|
|
1634
|
+
|
|
1628
1635
|
declare class PasskeyCancelledError extends Error {
|
|
1629
1636
|
constructor(message?: string);
|
|
1630
1637
|
}
|
|
1638
|
+
declare class DeviceKeyMissingError extends Error {
|
|
1639
|
+
constructor();
|
|
1640
|
+
}
|
|
1631
1641
|
type PasskeyUnsupportedReason = "no-webauthn" | "no-prf";
|
|
1632
1642
|
declare class PasskeyUnsupportedError extends Error {
|
|
1633
1643
|
readonly reason: PasskeyUnsupportedReason;
|
|
@@ -1642,11 +1652,7 @@ interface PasskeyConfig {
|
|
|
1642
1652
|
passkeyUser: () => Promise<PublicKeyCredentialUserEntity>;
|
|
1643
1653
|
knownCredentials: () => PublicKeyCredentialDescriptor[];
|
|
1644
1654
|
credentials?: CredentialsContainer;
|
|
1645
|
-
|
|
1646
|
-
signalUnknownCredential?: (options: {
|
|
1647
|
-
rpId: string;
|
|
1648
|
-
credentialId: string;
|
|
1649
|
-
}) => Promise<void>;
|
|
1655
|
+
deviceKeys?: DeviceKeyStore;
|
|
1650
1656
|
randomBytes?: (length: number) => Uint8Array<ArrayBuffer>;
|
|
1651
1657
|
}
|
|
1652
1658
|
interface CreatedOwner {
|
|
@@ -1745,4 +1751,4 @@ declare class UserFacingError extends Error {
|
|
|
1745
1751
|
constructor(message: string);
|
|
1746
1752
|
}
|
|
1747
1753
|
|
|
1748
|
-
export { type ApiOrdersQuery as $, type AcceptSponsorshipBidIntentParams as A, type ApiCreditPayment as B, type ApiDrop as C, type ApiDropFee as D, type ApiDropListStatus as E, type ApiDropMint as F, type ApiEmissionCall as G, type ApiEmissionResult as H, type ApiFundingInstructions as I, type ApiFundingIntent as J, type ApiFundingMethod as K, type ApiFundingStatus as L, type ApiFundingSubmit as M, type ApiIntent as N, type ApiIntentCreated as O, type ApiIpNftTokenData as P, type ApiMeta as Q, type ResolvedFeeConfig as R, type ServiceDefinition as S, type ApiMetadataSignedUrl as T, type ApiMetadataUpload as U, type ApiOrder as V, type ApiOrderConsideration as W, type ApiOrderOffer as X, type ApiOrderPrice as Y, type ApiOrderTokenMeta as Z, type ApiOrderTxHash as _, type ServiceCapability as a, type CreateFundingTransferIntentParams as a$, type ApiPlatformStats as a0, type ApiPointEvent as a1, type ApiPortalKey as a2, type ApiPortalKeyCreated as a3, type ApiPortalMe as a4, type ApiPortalSpend as a5, type ApiPricing as a6, type ApiPricingRule as a7, type ApiPublicRemix as a8, type ApiRemixOffer as a9, type ApiToken as aA, type ApiTokenBalance as aB, type ApiTokenMetadata as aC, type ApiTokensQuery as aD, type ApiTxSyncResult as aE, type ApiUserRewards as aF, type ApiUserWallet as aG, type ApiUsernameClaim as aH, type ApiWalletActivity as aI, type AutoRemixOfferParams as aJ, type CancelOrderIntentParams as aK, type ChainFilter as aL, type CheckoutIntentItem as aM, type CollectionServiceId as aN, type CollectionSort as aO, type CollectionTokensSort as aP, type ConfirmRemixOfferParams as aQ, type ConfirmSelfRemixParams as aR, type ConsiderationItem as aS, type CreateCheckoutIntentParams as aT, type CreateCoinIntentParams as aU, type CreateCollectionIntentParams as aV, type CreateCommentIntentParams as aW, type CreateCounterOfferIntentParams as aX, type CreateDropClaimIntentParams as aY, type CreateDropManageIntentParams as aZ, type CreateDropParams as a_, type ApiRemixOfferPrice as aa, type ApiRemixOffersQuery as ab, type ApiReportTargetType as ac, type ApiResponse as ad, type ApiRewardsBadge as ae, type ApiRewardsBatchEntry as af, type ApiRewardsConfig as ag, type ApiRewardsLeaderboardEntry as ah, type ApiRewardsLevel as ai, type ApiSearchCollectionResult as aj, type ApiSearchCreatorResult as ak, type ApiSearchResult as al, type ApiSearchTokenResult as am, type ApiSession as an, type ApiSpendByAction as ao, type ApiSponsorshipBid as ap, type ApiSponsorshipLicense as aq, type ApiSponsorshipLicensesQuery as ar, type ApiSponsorshipOffer as as, type ApiSponsorshipOffersQuery as at, type ApiSponsorshipProposal as au, type ApiSponsorshipProposalsQuery as av, type ApiSubmitReport as aw, type ApiSwapQuote as ax, type ApiSwapQuoteRequest as ay, type ApiTierOnchain as az, type AcceptSponsorshipProposalIntentParams as b, type
|
|
1754
|
+
export { type ApiOrdersQuery as $, type AcceptSponsorshipBidIntentParams as A, type ApiCreditPayment as B, type ApiDrop as C, type ApiDropFee as D, type ApiDropListStatus as E, type ApiDropMint as F, type ApiEmissionCall as G, type ApiEmissionResult as H, type ApiFundingInstructions as I, type ApiFundingIntent as J, type ApiFundingMethod as K, type ApiFundingStatus as L, type ApiFundingSubmit as M, type ApiIntent as N, type ApiIntentCreated as O, type ApiIpNftTokenData as P, type ApiMeta as Q, type ResolvedFeeConfig as R, type ServiceDefinition as S, type ApiMetadataSignedUrl as T, type ApiMetadataUpload as U, type ApiOrder as V, type ApiOrderConsideration as W, type ApiOrderOffer as X, type ApiOrderPrice as Y, type ApiOrderTokenMeta as Z, type ApiOrderTxHash as _, type ServiceCapability as a, type CreateFundingTransferIntentParams as a$, type ApiPlatformStats as a0, type ApiPointEvent as a1, type ApiPortalKey as a2, type ApiPortalKeyCreated as a3, type ApiPortalMe as a4, type ApiPortalSpend as a5, type ApiPricing as a6, type ApiPricingRule as a7, type ApiPublicRemix as a8, type ApiRemixOffer as a9, type ApiToken as aA, type ApiTokenBalance as aB, type ApiTokenMetadata as aC, type ApiTokensQuery as aD, type ApiTxSyncResult as aE, type ApiUserRewards as aF, type ApiUserWallet as aG, type ApiUsernameClaim as aH, type ApiWalletActivity as aI, type AutoRemixOfferParams as aJ, type CancelOrderIntentParams as aK, type ChainFilter as aL, type CheckoutIntentItem as aM, type CollectionServiceId as aN, type CollectionSort as aO, type CollectionTokensSort as aP, type ConfirmRemixOfferParams as aQ, type ConfirmSelfRemixParams as aR, type ConsiderationItem as aS, type CreateCheckoutIntentParams as aT, type CreateCoinIntentParams as aU, type CreateCollectionIntentParams as aV, type CreateCommentIntentParams as aW, type CreateCounterOfferIntentParams as aX, type CreateDropClaimIntentParams as aY, type CreateDropManageIntentParams as aZ, type CreateDropParams as a_, type ApiRemixOfferPrice as aa, type ApiRemixOffersQuery as ab, type ApiReportTargetType as ac, type ApiResponse as ad, type ApiRewardsBadge as ae, type ApiRewardsBatchEntry as af, type ApiRewardsConfig as ag, type ApiRewardsLeaderboardEntry as ah, type ApiRewardsLevel as ai, type ApiSearchCollectionResult as aj, type ApiSearchCreatorResult as ak, type ApiSearchResult as al, type ApiSearchTokenResult as am, type ApiSession as an, type ApiSpendByAction as ao, type ApiSponsorshipBid as ap, type ApiSponsorshipLicense as aq, type ApiSponsorshipLicensesQuery as ar, type ApiSponsorshipOffer as as, type ApiSponsorshipOffersQuery as at, type ApiSponsorshipProposal as au, type ApiSponsorshipProposalsQuery as av, type ApiSubmitReport as aw, type ApiSwapQuote as ax, type ApiSwapQuoteRequest as ay, type ApiTierOnchain as az, type AcceptSponsorshipProposalIntentParams as b, type TierServiceId as b$, type CreateGenesisMintIntentParams as b0, type CreateListingIntentParams as b1, type CreateMembershipParams as b2, type CreateMintIntentParams as b3, type CreatePopBurnIntentParams as b4, type CreatePopClaimIntentParams as b5, type CreatePopCollectionParams as b6, type CreatePopManageIntentParams as b7, type CreateRemixOfferParams as b8, type CreateSponsorshipOfferIntentParams as b9, type MakeOfferIntentParams as bA, MedialaneApiError as bB, type MedialaneConfig as bC, type MedialaneErrorCode as bD, type MintMembershipsParams as bE, type MintTicketsParams as bF, OPEN_LICENSES as bG, type OfferItem as bH, type OpenLicense as bI, type Order as bJ, type OrderDetails as bK, type OrderParameters as bL, type OrderStatus as bM, PasskeyCancelledError as bN, PasskeyUnsupportedError as bO, type PasskeyUnsupportedReason as bP, type PlaceSponsorshipBidIntentParams as bQ, type PopManageAction as bR, type ProposeSponsorshipParams as bS, type RejectSponsorshipProposalIntentParams as bT, type RemixOfferStatus as bU, type ResolvedConfig as bV, type RetractSponsorshipBidIntentParams as bW, type RetryOptions as bX, type ServiceEventDeclaration as bY, type SetSponsorshipOfferOpenIntentParams as bZ, type SortOrder as b_, type CreateSponsorshipOfferParams as ba, type CreateSponsorshipProposalIntentParams as bb, type CreateSwapIntentParams as bc, type CreateTicketParams as bd, type CreateTierIntentParams as be, type CreateTransferCollectionOwnershipIntentParams as bf, type CreateTransferNftIntentParams as bg, type CreateTransferTokenIntentParams as bh, type CreateWalletManageIntentParams as bi, DeviceKeyMissingError as bj, type DropManageAction as bk, type DropTerms as bl, type DropTermsBody as bm, type EmissionParams as bn, type EnforcementDeclaration as bo, type FactoryFamilyServiceId as bp, type FeeConfig as bq, FeeConfigSchema as br, type FulfillOrderIntentParams as bs, type IPType as bt, type IntentCall as bu, type IntentStatus as bv, type IntentType as bw, type IpAttribute as bx, type IpNftMetadata as by, type LaunchCoinIntentParams as bz, type ActivityType as c, type TxResult as c0, type UpdateCollectionProfileInput as c1, UserFacingError as c2, type WalletManageAction as c3, type WithdrawSponsorshipProposalIntentParams as c4, resolveConfig as c5, resolveFeeConfig as c6, CreatorCoinService as c7, type SealedOwner as c8, type ReceiptProviderLike as c9, VALIDATED_EKUBO_PARAMS as cA, apiKeyConfirmationTypedData as cB, buildCreateCreatorCoinCall as cC, buildLaunchOnEkuboCalls as cD, buildPopAllowlist as cE, createPasskeyOwner as cF, decodePopClaimFragment as cG, dropClaimLinks as cH, dropClaimedBy as cI, dropMintState as cJ, encodePopClaimFragment as cK, encodeRecoveryKey as cL, getCreatorCoinGuarantees as cM, indexedDbDeviceKeys as cN, parseCreatorCoinCreated as cO, parseRecoveryKey as cP, popCalls as cQ, popClaimInfo as cR, popClaimLinks as cS, popClaimLinksCsv as cT, popClaimState as cU, priceToEkuboParams as cV, readDrop as cW, validatePrice as cX, verifyPopProof as cY, type WalletExecutor as ca, type ExecutedTransaction as cb, type PasskeyOwner as cc, type CreatedOwner as cd, type ApiKeyAction as ce, type ApiKeyConfirmation as cf, type ApiKeyConfirmationInput as cg, type CreateCreatorCoinParams as ch, type CreatorCoinGuarantees as ci, type CreatorCoinReceiptLike as cj, type DeviceKeyStore as ck, type DropMintState as cl, type DropMintStateKind as cm, type DropOnchain as cn, type EkuboLaunchParams as co, type EkuboPoolParams as cp, InvalidRecoveryKeyError as cq, MAX_HOLDERS_AT_LAUNCH as cr, MAX_TEAM_ALLOCATION_PERCENT as cs, type OwnerSigner as ct, type PasskeyConfig as cu, type PopAllowlist as cv, type PopClaimInfo as cw, type PopClaimLink as cx, type PopClaimState as cy, type RecoveryKey as cz, type ApiActivitiesQuery as d, type ApiActivity as e, type ApiActivityPrice as f, type ApiAdminCollectionClaim as g, type ApiBusinessProvisioning as h, type ApiChain as i, type ApiCheckoutIntentResult as j, ApiClient as k, type ApiCoin as l, type ApiCoinClaimResult as m, type ApiCoinPrice as n, type ApiCoinPrices as o, type ApiCoinsQuery as p, type ApiCollection as q, type ApiCollectionClaim as r, type ApiCollectionProfile as s, type ApiCollectionSlugClaim as t, type ApiCollectionsListQuery as u, type ApiCollectionsQuery as v, type ApiComment as w, type ApiCounterOffersQuery as x, type ApiCreatorListResult as y, type ApiCreatorProfile as z };
|