@medialane/sdk 0.205.0 → 0.206.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-GIBIHGSV.js → chunk-EPU52YSA.js} +24 -11
- package/dist/chunk-EPU52YSA.js.map +1 -0
- package/dist/{chunk-KGAGWULG.js → chunk-GENBWVGK.js} +8 -5
- package/dist/chunk-GENBWVGK.js.map +1 -0
- package/dist/{chunk-3HPMEDYH.cjs → chunk-MCVAZVLN.cjs} +8 -5
- package/dist/chunk-MCVAZVLN.cjs.map +1 -0
- package/dist/{chunk-ZLMIHQWM.cjs → chunk-ZYRSMDMJ.cjs} +36 -23
- package/dist/chunk-ZYRSMDMJ.cjs.map +1 -0
- package/dist/index.cjs +35 -35
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/{services-OAVVjxQd.d.cts → services-Cy5FH8sP.d.cts} +6 -2
- package/dist/{services-DlgtOLil.d.ts → services-DWmXVwTV.d.ts} +6 -2
- package/dist/starknet/index.cjs +84 -84
- package/dist/starknet/index.d.cts +17 -4
- package/dist/starknet/index.d.ts +17 -4
- package/dist/starknet/index.js +3 -3
- package/dist/wallet/index.cjs +59 -59
- package/dist/wallet/index.js +2 -2
- package/package.json +1 -1
- package/dist/chunk-3HPMEDYH.cjs.map +0 -1
- package/dist/chunk-GIBIHGSV.js.map +0 -1
- package/dist/chunk-KGAGWULG.js.map +0 -1
- package/dist/chunk-ZLMIHQWM.cjs.map +0 -1
|
@@ -7,9 +7,10 @@ var base = require('@scure/base');
|
|
|
7
7
|
|
|
8
8
|
// src/errors.ts
|
|
9
9
|
var UserFacingError = class extends Error {
|
|
10
|
-
constructor(message) {
|
|
10
|
+
constructor(message, options = {}) {
|
|
11
11
|
super(message);
|
|
12
12
|
this.name = "UserFacingError";
|
|
13
|
+
this.retryable = options.retryable ?? true;
|
|
13
14
|
}
|
|
14
15
|
};
|
|
15
16
|
var MedialaneError = class extends Error {
|
|
@@ -37,12 +38,13 @@ function errorCodeFor(status, path = "") {
|
|
|
37
38
|
return "UNKNOWN";
|
|
38
39
|
}
|
|
39
40
|
var MedialaneApiError = class extends MedialaneError {
|
|
40
|
-
constructor(status, message, retryAfterMs, details, path, serverCode) {
|
|
41
|
+
constructor(status, message, retryAfterMs, details, path, serverCode, requestId) {
|
|
41
42
|
super(message, errorCodeFor(status, path));
|
|
42
43
|
this.status = status;
|
|
43
44
|
this.retryAfterMs = retryAfterMs;
|
|
44
45
|
this.details = details;
|
|
45
46
|
this.serverCode = serverCode;
|
|
47
|
+
this.requestId = requestId;
|
|
46
48
|
this.name = "MedialaneApiError";
|
|
47
49
|
}
|
|
48
50
|
};
|
|
@@ -207,7 +209,8 @@ async function failureFrom(response, path) {
|
|
|
207
209
|
parseRetryAfter(response.headers.get("retry-after")),
|
|
208
210
|
details,
|
|
209
211
|
path,
|
|
210
|
-
serverCode
|
|
212
|
+
serverCode,
|
|
213
|
+
response.headers.get("x-request-id") ?? void 0
|
|
211
214
|
);
|
|
212
215
|
}
|
|
213
216
|
var Transport = class _Transport {
|
|
@@ -963,5 +966,5 @@ exports.normalizeAddress = normalizeAddress;
|
|
|
963
966
|
exports.normalizeHash = normalizeHash;
|
|
964
967
|
exports.parseAmount = parseAmount;
|
|
965
968
|
exports.shortenAddress = shortenAddress;
|
|
966
|
-
//# sourceMappingURL=chunk-
|
|
967
|
-
//# sourceMappingURL=chunk-
|
|
969
|
+
//# sourceMappingURL=chunk-MCVAZVLN.cjs.map
|
|
970
|
+
//# sourceMappingURL=chunk-MCVAZVLN.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/errors.ts","../src/utils/address.ts","../src/utils/retry.ts","../src/api/transport.ts","../src/api/domains/orders.ts","../src/api/domains/tokens.ts","../src/api/domains/collections.ts","../src/api/domains/activity.ts","../src/api/domains/intents.ts","../src/api/domains/metadata.ts","../src/api/domains/creators.ts","../src/api/domains/account.ts","../src/api/domains/portal.ts","../src/api/domains/business.ts","../src/api/domains/remix.ts","../src/api/domains/coins.ts","../src/api/domains/drops.ts","../src/api/domains/sponsorship.ts","../src/api/domains/rewards.ts","../src/api/domains/platform.ts","../src/api/domains/chainReads.ts","../src/api/client.ts","../src/wallet/passkey-errors.ts","../src/constants.ts","../src/utils/token.ts"],"names":["keccak_256","base58","base32","intentPath","dropStateFromWire","getCoordinates"],"mappings":"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","file":"chunk-MCVAZVLN.cjs","sourcesContent":["import type { MedialaneErrorCode } from \"./types/errors.js\";\n\nexport class UserFacingError extends Error {\n readonly retryable: boolean;\n\n constructor(message: string, options: { retryable?: boolean } = {}) {\n super(message);\n this.name = \"UserFacingError\";\n this.retryable = options.retryable ?? true;\n }\n}\n\nexport class MedialaneError extends Error {\n constructor(\n message: string,\n public readonly code: MedialaneErrorCode = \"UNKNOWN\",\n public readonly cause?: unknown,\n ) {\n super(message);\n this.name = \"MedialaneError\";\n }\n}\n\nconst RESOURCE_NOT_FOUND: ReadonlyArray<readonly [string, MedialaneErrorCode]> = [\n [\"/v1/orders\", \"ORDER_NOT_FOUND\"],\n [\"/v1/tokens\", \"TOKEN_NOT_FOUND\"],\n [\"/v1/collections\", \"COLLECTION_NOT_FOUND\"],\n [\"/v1/intents\", \"INTENT_NOT_FOUND\"],\n];\n\nexport function errorCodeFor(status: number, path = \"\"): MedialaneErrorCode {\n if (status === 404) {\n return RESOURCE_NOT_FOUND.find(([prefix]) => path.startsWith(prefix))?.[1] ?? \"NOT_FOUND\";\n }\n if (status === 429) return \"RATE_LIMITED\";\n if (status === 410) return \"INTENT_EXPIRED\";\n if (status === 401 || status === 403) return \"UNAUTHORIZED\";\n if (status === 400) return \"INVALID_PARAMS\";\n return \"UNKNOWN\";\n}\n\nexport class MedialaneApiError extends MedialaneError {\n constructor(\n public readonly status: number,\n message: string,\n public readonly retryAfterMs?: number,\n public readonly details?: unknown,\n path?: string,\n public readonly serverCode?: string,\n public readonly requestId?: string,\n ) {\n super(message, errorCodeFor(status, path));\n this.name = \"MedialaneApiError\";\n }\n}\n\nexport function parseRetryAfter(value: string | null): number | undefined {\n if (!value) return undefined;\n const seconds = Number(value);\n if (Number.isFinite(seconds)) return Math.max(0, seconds * 1000);\n const date = Date.parse(value);\n if (!Number.isNaN(date)) return Math.max(0, date - Date.now());\n return undefined;\n}\n","import { keccak_256 } from \"@noble/hashes/sha3.js\";\nimport { base32, base58 } from \"@scure/base\";\nimport type { Chain } from \"../chains.js\";\n\nexport function normalizeAddress(chain: Chain, address: string): string {\n switch (chain) {\n case \"STARKNET\":\n return normalizeStarknet(address);\n case \"ETHEREUM\":\n case \"BASE\":\n return normalizeEvm(address);\n case \"SOLANA\":\n return normalizeSolana(address);\n case \"STELLAR\":\n return normalizeStellar(address);\n case \"BITCOIN\":\n throw new Error(\"BITCOIN address normalization not implemented\");\n }\n}\n\nfunction normalizeStarknet(address: string): string {\n try {\n const hex = BigInt(address).toString(16);\n return \"0x\" + hex.padStart(64, \"0\").toLowerCase();\n } catch {\n throw new Error(`Invalid STARKNET address: \"${address}\"`);\n }\n}\n\nfunction normalizeEvm(address: string): string {\n const m = /^0x([0-9a-fA-F]{40})$/.exec(address);\n if (!m) throw new Error(`Invalid ETHEREUM/BASE address: \"${address}\"`);\n const lower = m[1].toLowerCase();\n\n const hash = keccak_256(new TextEncoder().encode(lower));\n let out = \"0x\";\n for (let i = 0; i < 40; i++) {\n const nibble = (hash[i >> 1]! >> (i % 2 === 0 ? 4 : 0)) & 0xf;\n out += nibble >= 8 ? lower[i]!.toUpperCase() : lower[i];\n }\n return out;\n}\n\nfunction normalizeSolana(address: string): string {\n try {\n const bytes = base58.decode(address);\n if (bytes.length !== 32) throw new Error(\"not a 32-byte key\");\n return address;\n } catch {\n throw new Error(`Invalid SOLANA address: \"${address}\"`);\n }\n}\n\nconst STELLAR_VERSION_BYTES = new Set([6 << 3, 2 << 3]);\n\nfunction normalizeStellar(address: string): string {\n const upper = address.toUpperCase();\n if (!/^[GC][A-Z2-7]{55}$/.test(upper)) {\n throw new Error(`Invalid STELLAR address: \"${address}\"`);\n }\n let decoded: Uint8Array;\n try {\n decoded = base32.decode(upper);\n } catch {\n throw new Error(`Invalid STELLAR address: \"${address}\"`);\n }\n if (decoded.length !== 35 || !STELLAR_VERSION_BYTES.has(decoded[0]!)) {\n throw new Error(`Invalid STELLAR address: \"${address}\"`);\n }\n const payload = decoded.subarray(0, 33);\n const checksum = decoded[33]! | (decoded[34]! << 8);\n if (crc16xmodem(payload) !== checksum) {\n throw new Error(`Invalid STELLAR address: \"${address}\"`);\n }\n return upper;\n}\n\nfunction crc16xmodem(bytes: Uint8Array): number {\n let crc = 0;\n for (const byte of bytes) {\n crc ^= byte << 8;\n for (let i = 0; i < 8; i++) {\n crc = crc & 0x8000 ? ((crc << 1) ^ 0x1021) & 0xffff : (crc << 1) & 0xffff;\n }\n }\n return crc;\n}\n\ndeclare const canonicalHashBrand: unique symbol;\n\nexport type CanonicalHash = string & { readonly [canonicalHashBrand]: true };\n\nexport function normalizeHash(hash: string): CanonicalHash {\n try {\n const hex = BigInt(hash).toString(16);\n return (\"0x\" + hex.padStart(64, \"0\").toLowerCase()) as CanonicalHash;\n } catch {\n throw new Error(`Invalid hash: \"${hash}\"`);\n }\n}\n\nexport function shortenAddress(chain: Chain, address: string, chars = 4): string {\n const norm = normalizeAddress(chain, address);\n return `${norm.slice(0, chars + 2)}...${norm.slice(-chars)}`;\n}\n","import { MedialaneApiError } from \"../errors.js\";\n\nexport interface RetryOptions {\n maxAttempts?: number;\n baseDelayMs?: number;\n maxDelayMs?: number;\n}\n\nconst DEFAULT_MAX_ATTEMPTS = 3;\nconst DEFAULT_BASE_DELAY_MS = 300;\nconst DEFAULT_MAX_DELAY_MS = 5000;\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport function isRetryableFor(method: string, err: unknown): boolean {\n if (err instanceof MedialaneApiError && err.status === 429) return true;\n const isRead = method === \"GET\" || method === \"HEAD\";\n if (!isRead) return false;\n return (err instanceof MedialaneApiError && err.status >= 500) || err instanceof TypeError;\n}\n\nexport async function withRetry<T>(\n fn: () => Promise<T>,\n opts?: RetryOptions,\n method = \"GET\",\n): Promise<T> {\n const maxAttempts = opts?.maxAttempts ?? DEFAULT_MAX_ATTEMPTS;\n const baseDelayMs = opts?.baseDelayMs ?? DEFAULT_BASE_DELAY_MS;\n const maxDelayMs = opts?.maxDelayMs ?? DEFAULT_MAX_DELAY_MS;\n\n let lastError: unknown;\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n try {\n return await fn();\n } catch (err) {\n lastError = err;\n\n if (!isRetryableFor(method, err) || attempt === maxAttempts - 1) {\n throw err;\n }\n\n const retryAfterMs = err instanceof MedialaneApiError ? err.retryAfterMs : undefined;\n const backoff = baseDelayMs * Math.pow(2, attempt) + Math.random() * baseDelayMs;\n const delay = Math.min(retryAfterMs ?? backoff, maxDelayMs);\n await sleep(delay);\n }\n }\n\n throw lastError;\n}\n","import type { Chain } from \"../chains.js\";\nimport { MedialaneApiError, parseRetryAfter } from \"../errors.js\";\nimport { normalizeAddress } from \"../utils/address.js\";\nimport type { FetchLike } from \"../utils/fetch.js\";\nimport { withRetry, type RetryOptions } from \"../utils/retry.js\";\n\nexport type BearerSource = string | (() => string | undefined);\n\nexport interface TransportOptions {\n baseUrl: string;\n apiKey?: string;\n bearer?: BearerSource;\n retry?: RetryOptions;\n chain?: Chain;\n fetch?: FetchLike;\n}\n\nexport type QueryValue = string | number | boolean | null | undefined;\n\nexport interface RequestOptions {\n method?: \"GET\" | \"POST\" | \"PATCH\" | \"PUT\" | \"DELETE\";\n body?: unknown;\n query?: Record<string, QueryValue>;\n bearer?: string;\n absent?: readonly number[];\n}\n\nexport function queryString(query: Record<string, QueryValue> | undefined): string {\n if (!query) return \"\";\n const params = new URLSearchParams();\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined && value !== null && value !== \"\") params.set(key, String(value));\n }\n const qs = params.toString();\n return qs ? `?${qs}` : \"\";\n}\n\nasync function failureFrom(response: Response, path: string): Promise<MedialaneApiError> {\n const text = await response.text().catch(() => response.statusText);\n let message = `Request failed with status ${response.status}`;\n let details: unknown = text;\n let serverCode: string | undefined;\n try {\n const body = JSON.parse(text) as { error?: unknown; code?: unknown };\n if (typeof body.error === \"string\" && body.error.trim() !== \"\") message = body.error;\n if (typeof body.code === \"string\") serverCode = body.code;\n details = body;\n } catch {\n details = text;\n }\n return new MedialaneApiError(\n response.status,\n message,\n parseRetryAfter(response.headers.get(\"retry-after\")),\n details,\n path,\n serverCode,\n response.headers.get(\"x-request-id\") ?? undefined,\n );\n}\n\nexport class Transport {\n readonly chain: Chain;\n private readonly baseUrl: string;\n private readonly headers: Record<string, string>;\n\n constructor(private readonly options: TransportOptions) {\n this.baseUrl = options.baseUrl.replace(/\\/$/, \"\");\n this.headers = options.apiKey ? { \"x-api-key\": options.apiKey } : {};\n this.chain = options.chain ?? \"STARKNET\";\n }\n\n withBearer(bearer: BearerSource | undefined): Transport {\n return new Transport({ ...this.options, bearer });\n }\n\n settings(): TransportOptions {\n return this.options;\n }\n\n addr(address: string): string {\n return normalizeAddress(this.chain, address);\n }\n\n async request<T>(path: string, opts: RequestOptions = {}): Promise<T> {\n const method = opts.method ?? \"GET\";\n const url = `${this.baseUrl}${path}${queryString(opts.query)}`;\n const headers: Record<string, string> = { ...this.headers };\n const token = opts.bearer ?? this.defaultBearer();\n if (token) headers.Authorization = `Bearer ${token}`;\n\n let body: BodyInit | undefined;\n if (opts.body instanceof FormData) {\n body = opts.body;\n } else if (opts.body !== undefined) {\n headers[\"Content-Type\"] = \"application/json\";\n body = JSON.stringify(opts.body);\n }\n\n const absent = (status: number) => opts.absent?.includes(status) === true;\n const response = await withRetry(\n async () => {\n const res = await (this.options.fetch ?? globalThis.fetch)(url, { method, headers, body });\n if (!res.ok && !absent(res.status)) throw await failureFrom(res, path);\n return res;\n },\n this.options.retry,\n method,\n );\n\n if (absent(response.status)) return null as T;\n return response.json() as Promise<T>;\n }\n\n get<T>(path: string, query?: Record<string, QueryValue>): Promise<T> {\n return this.request<T>(path, { query });\n }\n\n post<T>(path: string, body?: unknown, opts: Omit<RequestOptions, \"method\" | \"body\"> = {}): Promise<T> {\n return this.request<T>(path, { ...opts, method: \"POST\", body: body ?? {} });\n }\n\n patch<T>(path: string, body: unknown, opts: Omit<RequestOptions, \"method\" | \"body\"> = {}): Promise<T> {\n return this.request<T>(path, { ...opts, method: \"PATCH\", body });\n }\n\n delete<T>(path: string, body?: unknown, opts: Omit<RequestOptions, \"method\" | \"body\"> = {}): Promise<T> {\n return this.request<T>(path, { ...opts, method: \"DELETE\", body });\n }\n\n find<T>(path: string, opts: Omit<RequestOptions, \"absent\"> & { also?: readonly number[] } = {}): Promise<T | null> {\n const { also, ...rest } = opts;\n return this.request<T | null>(path, { ...rest, absent: [404, ...(also ?? [])] });\n }\n\n private defaultBearer(): string | undefined {\n const source = this.options.bearer;\n return typeof source === \"function\" ? source() : source;\n }\n}\n","import type { Transport } from \"../transport.js\";\nimport type { ApiOrder, ApiOrdersQuery, ApiCounterOffersQuery, ApiResponse } from \"../../types/api.js\";\n\nexport interface OrdersApi {\n list(query?: ApiOrdersQuery): Promise<ApiResponse<ApiOrder[]>>;\n get(orderHash: string): Promise<ApiOrder>;\n forToken(contract: string, tokenId: string): Promise<ApiResponse<ApiOrder[]>>;\n receivedBy(address: string, opts?: { page?: number; limit?: number }): Promise<ApiResponse<ApiOrder[]>>;\n byUser(address: string, opts?: { page?: number; limit?: number }): Promise<ApiResponse<ApiOrder[]>>;\n counterOffers(query: ApiCounterOffersQuery): Promise<ApiResponse<ApiOrder[]>>;\n}\n\nexport function createOrdersApi(t: Transport): OrdersApi {\n return {\n list(query = {}) {\n return t.get(\"/v1/orders\", {\n status: query.status,\n collection: query.collection,\n currency: query.currency,\n sort: query.sort,\n page: query.page,\n limit: query.limit,\n offerer: query.offerer ? t.addr(query.offerer) : undefined,\n minPrice: query.minPrice,\n maxPrice: query.maxPrice,\n chain: query.chain,\n });\n },\n async get(orderHash) {\n return (await t.get<ApiResponse<ApiOrder>>(`/v1/orders/${orderHash}`)).data;\n },\n forToken(contract, tokenId) {\n return t.get(`/v1/orders/token/${t.addr(contract)}/${tokenId}`);\n },\n receivedBy(address, opts = {}) {\n return t.get(`/v1/orders/received/${t.addr(address)}`, { page: opts.page ?? 1, limit: opts.limit ?? 50 });\n },\n byUser(address, opts = {}) {\n return t.get(`/v1/orders/user/${t.addr(address)}`, { page: opts.page ?? 1, limit: opts.limit ?? 20 });\n },\n counterOffers(query) {\n return t.get(\"/v1/orders/counter-offers\", {\n originalOrderHash: query.originalOrderHash,\n sellerAddress: query.sellerAddress,\n page: query.page,\n limit: query.limit,\n });\n },\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type {\n ApiActivity,\n ApiComment,\n ApiPublicRemix,\n ApiResponse,\n ApiToken,\n ApiTokenBalance,\n ApiTokensQuery,\n} from \"../../types/api.js\";\n\ninterface Paging {\n page?: number;\n limit?: number;\n}\n\nexport interface TokensApi {\n list(query?: ApiTokensQuery): Promise<ApiResponse<ApiToken[]>>;\n get(contract: string, tokenId: string, opts?: { wait?: boolean }): Promise<ApiToken>;\n balance(contract: string, tokenId: string, owner: string): Promise<ApiTokenBalance>;\n ownedBy(address: string, opts?: Paging): Promise<ApiResponse<ApiToken[]>>;\n history(contract: string, tokenId: string, opts?: Paging): Promise<ApiResponse<ApiActivity[]>>;\n comments(contract: string, tokenId: string, opts?: Paging): Promise<ApiResponse<ApiComment[]>>;\n remixes(contract: string, tokenId: string, opts?: Paging): Promise<ApiResponse<ApiPublicRemix[]>>;\n}\n\nexport function createTokensApi(t: Transport): TokensApi {\n return {\n list(query = {}) {\n return t.get(\"/v1/tokens\", {\n page: query.page,\n limit: query.limit,\n sort: query.sort,\n ipType: query.ipType,\n derivatives: query.derivatives,\n });\n },\n async get(contract, tokenId, opts = {}) {\n const res = await t.get<ApiResponse<ApiToken>>(`/v1/tokens/${contract}/${tokenId}`, opts.wait ? { wait: \"true\" } : undefined);\n return res.data;\n },\n async balance(contract, tokenId, owner) {\n return (await t.get<ApiResponse<ApiTokenBalance>>(`/v1/tokens/${contract}/${tokenId}/balances/${t.addr(owner)}`)).data;\n },\n ownedBy(address, opts = {}) {\n return t.get(`/v1/tokens/owned/${t.addr(address)}`, { page: opts.page ?? 1, limit: opts.limit ?? 20 });\n },\n history(contract, tokenId, opts = {}) {\n return t.get(`/v1/tokens/${contract}/${tokenId}/history`, { page: opts.page ?? 1, limit: opts.limit ?? 20 });\n },\n comments(contract, tokenId, opts = {}) {\n return t.get(`/v1/tokens/${t.addr(contract)}/${tokenId}/comments`, { page: opts.page, limit: opts.limit });\n },\n remixes(contract, tokenId, opts = {}) {\n return t.get(`/v1/tokens/${t.addr(contract)}/${tokenId}/remixes`, { page: opts.page, limit: opts.limit });\n },\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type {\n ApiCollection,\n ApiCollectionClaim,\n ApiCollectionProfile,\n ApiCollectionSlugClaim,\n ApiCollectionsListQuery,\n ApiResponse,\n ApiToken,\n CollectionTokensSort,\n UpdateCollectionProfileInput,\n} from \"../../types/api.js\";\n\nexport interface GatedContent {\n title: string;\n url: string;\n type: string;\n}\n\nexport interface CollectionsApi {\n list(query?: ApiCollectionsListQuery): Promise<ApiResponse<ApiCollection[]>>;\n get(contract: string): Promise<ApiCollection>;\n findBySlug(slug: string): Promise<ApiCollection | null>;\n tokens(contract: string, opts?: { page?: number; limit?: number; sort?: CollectionTokensSort }): Promise<ApiResponse<ApiToken[]>>;\n register(contractAddress: string): Promise<ApiCollection>;\n findProfile(contractAddress: string): Promise<ApiCollectionProfile | null>;\n updateProfile(contractAddress: string, data: UpdateCollectionProfileInput): Promise<ApiCollectionProfile>;\n findGatedContent(contractAddress: string): Promise<GatedContent | null>;\n claim(contractAddress: string, walletAddress: string): Promise<{ verified: boolean; collection?: ApiCollection; reason?: string }>;\n requestClaim(params: { contractAddress: string; walletAddress?: string; email: string; notes?: string }): Promise<{ claim: ApiCollectionClaim }>;\n slugAvailability(slug: string): Promise<{ available: boolean; reason?: string }>;\n submitSlugClaim(contractAddress: string, slug: string, notifyEmail?: string): Promise<{ claim: ApiCollectionSlugClaim }>;\n mySlugClaims(): Promise<{ claims: ApiCollectionSlugClaim[] }>;\n}\n\nconst slugOf = (slug: string) => encodeURIComponent(slug.toLowerCase().trim());\n\nexport function createCollectionsApi(t: Transport): CollectionsApi {\n return {\n list(query = {}) {\n return t.get(\"/v1/collections\", {\n page: query.page,\n limit: query.limit,\n owner: query.owner ? t.addr(query.owner) : undefined,\n service: query.service,\n sort: query.sort,\n isFeatured: query.isFeatured,\n hideEmpty: query.hideEmpty,\n standard: query.standard,\n chain: query.chain,\n });\n },\n async get(contract) {\n return (await t.get<ApiResponse<ApiCollection>>(`/v1/collections/${t.addr(contract)}`)).data;\n },\n async findBySlug(slug) {\n const res = await t.find<{ data: ApiCollection }>(`/v1/collections/by-slug/${slugOf(slug)}`);\n return res?.data ?? null;\n },\n tokens(contract, opts = {}) {\n return t.get(`/v1/collections/${t.addr(contract)}/tokens`, {\n page: opts.page ?? 1,\n limit: opts.limit ?? 20,\n sort: opts.sort ?? \"recent\",\n });\n },\n async register(contractAddress) {\n return (await t.post<{ data: ApiCollection }>(\"/v1/collections/register\", { contractAddress })).data;\n },\n findProfile(contractAddress) {\n return t.find(`/v1/collections/${t.addr(contractAddress)}/profile`);\n },\n updateProfile(contractAddress, data) {\n return t.patch(`/v1/collections/${t.addr(contractAddress)}/profile`, data);\n },\n findGatedContent(contractAddress) {\n return t.find(`/v1/collections/${t.addr(contractAddress)}/gated-content`, { also: [403] });\n },\n claim(contractAddress, walletAddress) {\n return t.post(\"/v1/collections/claim\", { contractAddress, walletAddress });\n },\n requestClaim(params) {\n return t.post(\"/v1/collections/claim/request\", params);\n },\n slugAvailability(slug) {\n return t.get(`/v1/collection-slug-claims/check/${slugOf(slug)}`);\n },\n submitSlugClaim(contractAddress, slug, notifyEmail) {\n return t.post(\"/v1/collection-slug-claims\", { contractAddress, slug, notifyEmail });\n },\n mySlugClaims() {\n return t.get(\"/v1/collection-slug-claims/me\");\n },\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type { ApiActivitiesQuery, ApiActivity, ApiResponse, ApiSearchResult, ApiWalletActivity, ChainFilter } from \"../../types/api.js\";\n\nexport interface ActivityApi {\n list(query?: ApiActivitiesQuery): Promise<ApiResponse<ApiActivity[]>>;\n byAddress(address: string, opts?: { page?: number; limit?: number }): Promise<ApiResponse<ApiActivity[]>>;\n wallet(address: string, chain?: \"STARKNET\"): Promise<ApiResponse<ApiWalletActivity[]>>;\n}\n\nexport interface SearchApi {\n (q: string, limit?: number, chain?: ChainFilter): Promise<ApiResponse<ApiSearchResult> & { query: string }>;\n}\n\nexport function createActivityApi(t: Transport): ActivityApi {\n return {\n list(query = {}) {\n return t.get(\"/v1/activities\", {\n type: query.type,\n contract: query.contract,\n page: query.page,\n limit: query.limit,\n chain: query.chain,\n });\n },\n byAddress(address, opts = {}) {\n return t.get(`/v1/activities/${t.addr(address)}`, { page: opts.page ?? 1, limit: opts.limit ?? 20 });\n },\n wallet(address, chain = \"STARKNET\") {\n return t.get(\"/v1/wallet-activity\", { address: t.addr(address), chain });\n },\n };\n}\n\nexport function createSearchApi(t: Transport): SearchApi {\n return (q, limit = 10, chain) => t.get(\"/v1/search\", { q, limit, chain });\n}\n","import type { Transport } from \"../transport.js\";\nimport { intentPath, type IntentKind } from \"../../contract/intents.js\";\nimport type {\n ApiCheckoutIntentResult,\n ApiIntent,\n ApiIntentCreated,\n ApiTxSyncResult,\n CreateCheckoutIntentParams,\n IntentParamsByKind,\n} from \"../../types/api.js\";\n\nexport interface IntentsApi {\n create<K extends IntentKind>(kind: K, params: IntentParamsByKind[K], opts?: { bearer?: string }): Promise<ApiIntentCreated>;\n checkout(params: CreateCheckoutIntentParams): Promise<ApiCheckoutIntentResult[]>;\n get(id: string): Promise<ApiIntent>;\n submitSignature(id: string, signature: string[]): Promise<ApiIntent>;\n confirm(id: string, txHash: string): Promise<ApiIntent>;\n syncTransaction(txHash: string): Promise<ApiTxSyncResult>;\n}\n\nexport function createIntentsApi(t: Transport): IntentsApi {\n return {\n async create(kind, params, opts) {\n const res = await t.post<{ data: ApiIntentCreated }>(intentPath(kind), params, { bearer: opts?.bearer });\n return res.data;\n },\n async checkout(params) {\n const res = await t.post<{ data: ApiCheckoutIntentResult[] }>(intentPath(\"checkout\"), params);\n return res.data;\n },\n async get(id) {\n return (await t.get<{ data: ApiIntent }>(`/v1/intents/${id}`)).data;\n },\n async submitSignature(id, signature) {\n return (await t.patch<{ data: ApiIntent }>(`/v1/intents/${id}/signature`, { signature })).data;\n },\n async confirm(id, txHash) {\n return (await t.patch<{ data: ApiIntent }>(`/v1/intents/${id}/confirm`, { txHash })).data;\n },\n async syncTransaction(txHash) {\n return (await t.post<{ data: ApiTxSyncResult }>(\"/v1/tx/sync\", { txHash })).data;\n },\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type { ApiMetadataSignedUrl, ApiMetadataUpload, ApiResponse } from \"../../types/api.js\";\n\nexport interface MetadataApi {\n signedUrl(kind?: \"image\" | \"document\" | \"media\"): Promise<ApiResponse<ApiMetadataSignedUrl>>;\n upload(metadata: Record<string, unknown>): Promise<ApiResponse<ApiMetadataUpload>>;\n uploadDirectory(files: { name: string; content: unknown }[]): Promise<{ cid: string; baseUri: string }>;\n resolve(uri: string): Promise<ApiResponse<unknown>>;\n uploadFile(file: File): Promise<ApiResponse<ApiMetadataUpload>>;\n}\n\nexport function createMetadataApi(t: Transport): MetadataApi {\n return {\n signedUrl(kind) {\n return t.get(\"/v1/metadata/signed-url\", { kind });\n },\n upload(metadata) {\n return t.post(\"/v1/metadata/upload\", metadata);\n },\n async uploadDirectory(files) {\n return (await t.post<{ data: { cid: string; baseUri: string } }>(\"/v1/metadata/upload-directory\", { files })).data;\n },\n resolve(uri) {\n return t.get(\"/v1/metadata/resolve\", { uri });\n },\n uploadFile(file) {\n const formData = new FormData();\n formData.append(\"file\", file);\n return t.request(\"/v1/metadata/upload-file\", { method: \"POST\", body: formData });\n },\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type { ApiCreatorListResult, ApiCreatorProfile, ApiUsernameClaim } from \"../../types/api.js\";\n\nexport interface CreatorsApi {\n list(opts?: { search?: string; page?: number; limit?: number }): Promise<ApiCreatorListResult>;\n findProfile(walletAddress: string): Promise<ApiCreatorProfile | null>;\n findByUsername(username: string): Promise<ApiCreatorProfile | null>;\n updateProfile(\n walletAddress: string,\n data: Partial<Omit<ApiCreatorProfile, \"walletAddress\" | \"chain\" | \"updatedAt\">>,\n ): Promise<ApiCreatorProfile>;\n isHidden(wallet: string): Promise<boolean>;\n myUsernameClaim(): Promise<{ username: string | null; claim: ApiUsernameClaim | null }>;\n usernameAvailability(username: string): Promise<{ available: boolean; reason?: string }>;\n submitUsernameClaim(username: string, notifyEmail?: string): Promise<ApiUsernameClaim>;\n}\n\nexport function createCreatorsApi(t: Transport): CreatorsApi {\n return {\n list(opts = {}) {\n return t.get(\"/v1/creators\", { search: opts.search, page: opts.page || undefined, limit: opts.limit || undefined });\n },\n findProfile(walletAddress) {\n return t.find(`/v1/creators/${t.addr(walletAddress)}/profile`);\n },\n findByUsername(username) {\n return t.find(`/v1/creators/by-username/${encodeURIComponent(username.toLowerCase().trim())}`);\n },\n updateProfile(walletAddress, data) {\n return t.patch(`/v1/creators/${t.addr(walletAddress)}/profile`, data);\n },\n async isHidden(wallet) {\n return (await t.get<{ isHidden: boolean }>(`/v1/creators/${t.addr(wallet)}/hidden`)).isHidden;\n },\n myUsernameClaim() {\n return t.get(\"/v1/username-claims/me\");\n },\n usernameAvailability(username) {\n return t.get(`/v1/username-claims/check/${encodeURIComponent(username)}`);\n },\n async submitUsernameClaim(username, notifyEmail) {\n const res = await t.post<{ claim: ApiUsernameClaim }>(\"/v1/username-claims\", {\n username,\n ...(notifyEmail ? { notifyEmail } : {}),\n });\n return res.claim;\n },\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type { ApiChain, ApiUserWallet } from \"../../types/api.js\";\n\nexport interface RegisteredUser {\n accountId: string;\n publicId: string;\n walletAddress: string;\n chain: string;\n provider: string;\n createdAt: string;\n}\n\nexport interface AccountApi {\n registerUser(params: { walletAddress: string; walletType?: string; chain?: ApiChain }): Promise<RegisteredUser>;\n upsertMyWallet(options?: { walletType?: string; chain?: ApiChain; email?: string }): Promise<ApiUserWallet>;\n findMyWallet(): Promise<ApiUserWallet | null>;\n changeMyEmail(email: string): Promise<{ email: string }>;\n sessionWallet(): Promise<{ walletAddress: string; needsKeySetup: boolean } | null>;\n setupWalletKey(params: { newOwnerPubkey: string }): Promise<{ walletAddress: string; removeOwnerGuid: string | null }>;\n generateWallet(newWalletSiwsToken: string): Promise<{ walletAddress: string }>;\n emailExists(email: string): Promise<boolean>;\n requestEmailCode(email: string): Promise<void>;\n registerEmailAccount(email: string): Promise<void>;\n verifyEmailCode(email: string, code: string): Promise<void>;\n confirmEmail(token: string): Promise<{ email: string }>;\n}\n\nexport function createAccountApi(t: Transport): AccountApi {\n return {\n registerUser(params) {\n return t.post(\"/v1/users/register\", params);\n },\n upsertMyWallet(options = {}) {\n const body: Record<string, string> = { walletType: options.walletType ?? \"UNKNOWN\" };\n if (options.chain) body.chain = options.chain;\n if (options.email) body.email = options.email;\n return t.post(\"/v1/users/me\", body);\n },\n findMyWallet() {\n return t.find(\"/v1/users/me\");\n },\n changeMyEmail(email) {\n return t.post(\"/v1/users/me/email\", { email });\n },\n async sessionWallet() {\n const body = await t.post<{ walletAddress?: string | null; needsKeySetup?: boolean }>(\"/v1/users/me/wallet\", {});\n return body.walletAddress ? { walletAddress: body.walletAddress, needsKeySetup: body.needsKeySetup === true } : null;\n },\n setupWalletKey(params) {\n return t.post(\"/v1/users/me/wallet/key\", params);\n },\n generateWallet(newWalletSiwsToken) {\n return t.post(\"/v1/users/me/generate-wallet\", { newWalletSiwsToken });\n },\n async emailExists(email) {\n return (await t.get<{ exists: boolean }>(\"/v1/auth/email/exists\", { email })).exists;\n },\n async requestEmailCode(email) {\n await t.post(\"/v1/auth/email/request-code\", { email });\n },\n async registerEmailAccount(email) {\n await t.post(\"/v1/auth/email/register-account\", { email });\n },\n async verifyEmailCode(email, code) {\n await t.post(\"/v1/auth/email/verify-code\", { email, code });\n },\n async confirmEmail(token) {\n const body = await t.post<{ ok: boolean; email: string }>(\"/v1/auth/email/confirm\", { token });\n return { email: body.email };\n },\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type { ApiKeyConfirmation } from \"../../starknet/api-key-confirmation.js\";\nimport type {\n ApiCreditPayment,\n ApiFundingInstructions,\n ApiFundingIntent,\n ApiFundingMethod,\n ApiFundingSubmit,\n ApiPortalKey,\n ApiPortalKeyCreated,\n ApiPortalMe,\n ApiPortalSpend,\n ApiPricing,\n ApiResponse,\n} from \"../../types/api.js\";\n\nexport interface FundingApi {\n methods(): Promise<ApiFundingMethod[]>;\n create(input: { method: string; params: Record<string, unknown> }): Promise<ApiFundingIntent>;\n get(id: string): Promise<ApiFundingIntent>;\n challenge(id: string, payer: string): Promise<{ typedData: unknown }>;\n authorize(id: string, input: { payer: string; signature: string[] }): Promise<{ instructions: ApiFundingInstructions }>;\n submit(id: string, txHash: string): Promise<ApiFundingSubmit>;\n cancel(id: string): Promise<{ status: string }>;\n}\n\nexport interface PortalApi {\n me(): Promise<ApiPortalMe>;\n apiKeys(): Promise<ApiPortalKey[]>;\n createApiKey(input: { label?: string } | undefined, confirmation: ApiKeyConfirmation): Promise<ApiPortalKeyCreated>;\n deleteApiKey(id: string, confirmation: ApiKeyConfirmation): Promise<{ id: string }>;\n creditHistory(): Promise<ApiCreditPayment[]>;\n spend(): Promise<ApiPortalSpend>;\n checkDeposit(txHash: string): Promise<{ deposits: number }>;\n pricing(): Promise<ApiPricing>;\n funding: FundingApi;\n}\n\nexport function createPortalApi(t: Transport): PortalApi {\n const data = async <T>(promise: Promise<ApiResponse<T>>): Promise<T> => (await promise).data;\n const fundingPath = (id: string) => `/v1/portal/funding/${encodeURIComponent(id)}`;\n return {\n me: () => data(t.get(\"/v1/portal/me\")),\n apiKeys: () => data(t.get(\"/v1/portal/keys\")),\n createApiKey: (input, confirmation) => data(t.post(\"/v1/portal/keys\", { ...(input ?? {}), confirmation })),\n deleteApiKey: (id, confirmation) => data(t.delete(`/v1/portal/keys/${id}`, { confirmation })),\n creditHistory: () => data(t.get(\"/v1/portal/credits/history\")),\n spend: () => data(t.get(\"/v1/portal/credits/spend\")),\n checkDeposit: (txHash) => data(t.post(\"/v1/portal/credits/check\", { txHash })),\n pricing: () => t.get(\"/v1/pricing\"),\n funding: {\n methods: () => data(t.get(\"/v1/portal/funding/methods\")),\n create: (input) => data(t.post(\"/v1/portal/funding\", { method: input.method, params: input.params })),\n get: (id) => data(t.get(fundingPath(id))),\n challenge: (id, payer) => data(t.post(`${fundingPath(id)}/challenge`, { payer })),\n authorize: (id, input) => data(t.post(`${fundingPath(id)}/authorize`, { payer: input.payer, signature: input.signature })),\n submit: (id, txHash) => data(t.post(`${fundingPath(id)}/submit`, { txHash })),\n cancel: (id) => data(t.post(`${fundingPath(id)}/cancel`, {})),\n },\n };\n}\n","import type { z } from \"zod\";\nimport type { Transport } from \"../transport.js\";\nimport type * as provisioning from \"../../contract/provisioning.js\";\nimport type { ApiBusinessProvisioning, ApiEmissionResult, ApiResponse, EmissionParams } from \"../../types/api.js\";\n\nexport type ProvisioningResult = ApiResponse<ApiBusinessProvisioning> & { reusedExistingWallet?: boolean };\n\nexport interface BusinessApi {\n emit(params: EmissionParams): Promise<ApiEmissionResult>;\n registerProvisioning(params: z.input<typeof provisioning.provisioningRegisterSchema>): Promise<ProvisioningResult>;\n}\n\nexport function createBusinessApi(t: Transport): BusinessApi {\n return {\n async emit(params) {\n return (await t.post<ApiResponse<ApiEmissionResult>>(\"/v1/business/issuance/emission\", params)).data;\n },\n registerProvisioning(params) {\n return t.post(\"/v1/business/provisioning\", { chain: params.chain ?? \"STARKNET\", email: params.email });\n },\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type {\n ApiRemixOffer,\n ApiRemixOffersQuery,\n AutoRemixOfferParams,\n ConfirmRemixOfferParams,\n ConfirmSelfRemixParams,\n CreateRemixOfferParams,\n ApiResponse,\n} from \"../../types/api.js\";\n\nexport interface RemixApi {\n submit(params: CreateRemixOfferParams): Promise<ApiRemixOffer>;\n submitAuto(params: AutoRemixOfferParams): Promise<ApiRemixOffer>;\n confirmSelf(params: ConfirmSelfRemixParams): Promise<ApiRemixOffer>;\n list(query: ApiRemixOffersQuery): Promise<ApiResponse<ApiRemixOffer[]>>;\n get(id: string): Promise<ApiRemixOffer>;\n confirm(id: string, params: ConfirmRemixOfferParams): Promise<ApiRemixOffer>;\n reject(id: string): Promise<ApiRemixOffer>;\n extend(id: string, days: number): Promise<ApiRemixOffer>;\n}\n\nexport function createRemixApi(t: Transport): RemixApi {\n const one = async (promise: Promise<ApiResponse<ApiRemixOffer>>): Promise<ApiRemixOffer> => (await promise).data;\n return {\n submit: (params) => one(t.post(\"/v1/remix-offers\", params)),\n submitAuto: (params) => one(t.post(\"/v1/remix-offers/auto\", params)),\n confirmSelf: (params) => one(t.post(\"/v1/remix-offers/self/confirm\", params)),\n list: (query) =>\n t.get(\"/v1/remix-offers\", { role: query.role, status: query.status, page: query.page, limit: query.limit }),\n get: (id) => one(t.get(`/v1/remix-offers/${id}`)),\n confirm: (id, params) => one(t.post(`/v1/remix-offers/${id}/confirm`, params)),\n reject: (id) => one(t.post(`/v1/remix-offers/${id}/reject`, {})),\n extend: (id, days) => one(t.post(`/v1/remix-offers/${id}/extend`, { days })),\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type {\n ApiCoin,\n ApiCoinClaimResult,\n ApiCoinPrices,\n ApiCoinsQuery,\n ApiCollectionClaim,\n ApiResponse,\n} from \"../../types/api.js\";\n\nexport interface CoinsApi {\n list(opts?: ApiCoinsQuery): Promise<ApiResponse<ApiCoin[]>>;\n get(contract: string): Promise<ApiCoin>;\n prices(): Promise<ApiCoinPrices>;\n claim(coinAddress: string): Promise<ApiCoinClaimResult>;\n claims(status?: string): Promise<ApiResponse<ApiCollectionClaim[]>>;\n updateProfile(contract: string, data: { image?: string | null; description?: string | null }): Promise<ApiCoin>;\n sync(coinAddress: string, owner?: string): Promise<ApiCoin>;\n}\n\nexport function createCoinsApi(t: Transport): CoinsApi {\n return {\n list(opts = {}) {\n return t.get(\"/v1/coins\", {\n page: opts.page || undefined,\n limit: opts.limit || undefined,\n service: opts.service,\n sort: opts.sort,\n creator: opts.creator ? t.addr(opts.creator) : undefined,\n chain: opts.chain,\n });\n },\n async get(contract) {\n return (await t.get<{ data: ApiCoin }>(`/v1/coins/${t.addr(contract)}`)).data;\n },\n async prices() {\n return (await t.get<ApiResponse<ApiCoinPrices>>(\"/v1/coins/prices\")).data;\n },\n claim(coinAddress) {\n return t.post(\"/v1/coins/claim\", { coinAddress });\n },\n claims(status = \"PENDING\") {\n return t.get(\"/v1/coins/claims\", { status });\n },\n async updateProfile(contract, data) {\n return (await t.patch<ApiResponse<ApiCoin>>(`/v1/coins/${t.addr(contract)}`, data)).data;\n },\n async sync(coinAddress, owner) {\n return (await t.post<{ data: ApiCoin }>(\"/v1/coins/sync\", { coinAddress, ...(owner ? { owner } : {}) })).data;\n },\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type { ApiDrop, ApiDropFee, ApiDropListStatus, ApiDropMint, ApiResponse } from \"../../types/api.js\";\n\nexport interface DropsApi {\n fee(): Promise<ApiDropFee>;\n list(query?: { status?: ApiDropListStatus; organizer?: string; page?: number; limit?: number }): Promise<ApiResponse<ApiDrop[]>>;\n find(contract: string): Promise<ApiDrop | null>;\n mints(contract: string, opts?: { page?: number; limit?: number }): Promise<ApiResponse<ApiDropMint[]>>;\n}\n\nexport function createDropsApi(t: Transport): DropsApi {\n return {\n async fee() {\n return (await t.get<{ data: ApiDropFee }>(\"/v1/drops/fee\")).data;\n },\n list(query = {}) {\n return t.get(\"/v1/drops\", {\n status: query.status,\n organizer: query.organizer ? t.addr(query.organizer) : undefined,\n page: query.page,\n limit: query.limit,\n });\n },\n async find(contract) {\n const res = await t.find<{ data: ApiDrop }>(`/v1/drops/${t.addr(contract)}`);\n return res?.data ?? null;\n },\n mints(contract, opts = {}) {\n return t.get(`/v1/drops/${t.addr(contract)}/mints`, { page: opts.page, limit: opts.limit });\n },\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type {\n ApiResponse,\n ApiSponsorshipBid,\n ApiSponsorshipLicense,\n ApiSponsorshipLicensesQuery,\n ApiSponsorshipOffer,\n ApiSponsorshipOffersQuery,\n ApiSponsorshipProposal,\n ApiSponsorshipProposalsQuery,\n} from \"../../types/api.js\";\n\nexport interface SponsorshipApi {\n offers(query?: ApiSponsorshipOffersQuery): Promise<ApiResponse<ApiSponsorshipOffer[]>>;\n findOffer(offerId: string): Promise<ApiSponsorshipOffer | null>;\n bids(offerId: string): Promise<ApiSponsorshipBid[]>;\n proposals(query?: ApiSponsorshipProposalsQuery): Promise<ApiResponse<ApiSponsorshipProposal[]>>;\n findProposal(proposalId: string): Promise<ApiSponsorshipProposal | null>;\n licenses(query?: ApiSponsorshipLicensesQuery): Promise<ApiResponse<ApiSponsorshipLicense[]>>;\n}\n\nexport function createSponsorshipApi(t: Transport): SponsorshipApi {\n return {\n offers(query = {}) {\n return t.get(\"/v1/sponsorship/offers\", {\n limit: query.limit ?? 50,\n nftContract: query.nftContract,\n author: query.author,\n owner: query.owner,\n open: query.open,\n });\n },\n async findOffer(offerId) {\n const res = await t.find<{ data: ApiSponsorshipOffer }>(`/v1/sponsorship/offers/${encodeURIComponent(offerId)}`);\n return res?.data ?? null;\n },\n async bids(offerId) {\n return (await t.get<{ data: ApiSponsorshipBid[] }>(`/v1/sponsorship/offers/${encodeURIComponent(offerId)}/bids`)).data;\n },\n proposals(query = {}) {\n return t.get(\"/v1/sponsorship/proposals\", {\n limit: query.limit ?? 50,\n nftContract: query.nftContract,\n proposer: query.proposer,\n owner: query.owner,\n open: query.open,\n });\n },\n async findProposal(proposalId) {\n const res = await t.find<{ data: ApiSponsorshipProposal }>(`/v1/sponsorship/proposals/${encodeURIComponent(proposalId)}`);\n return res?.data ?? null;\n },\n licenses(query = {}) {\n return t.get(\"/v1/sponsorship/licenses\", { limit: query.limit ?? 50, holder: query.holder, author: query.author });\n },\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type {\n ApiPointEvent,\n ApiResponse,\n ApiRewardsBatchEntry,\n ApiRewardsConfig,\n ApiRewardsLeaderboardEntry,\n ApiUserRewards,\n} from \"../../types/api.js\";\n\nexport interface RewardsApi {\n get(address: string): Promise<ApiUserRewards>;\n leaderboard(opts?: { page?: number; limit?: number }): Promise<ApiResponse<ApiRewardsLeaderboardEntry[]>>;\n events(address: string, opts?: { page?: number; limit?: number }): Promise<ApiResponse<ApiPointEvent[]>>;\n config(): Promise<ApiRewardsConfig>;\n batch(addresses: string[]): Promise<ApiRewardsBatchEntry[]>;\n}\n\nexport function createRewardsApi(t: Transport): RewardsApi {\n return {\n async get(address) {\n return (await t.get<{ data: ApiUserRewards }>(`/v1/rewards/${t.addr(address)}`)).data;\n },\n leaderboard(opts = {}) {\n return t.get(\"/v1/rewards\", { page: opts.page ?? 1, limit: opts.limit ?? 50 });\n },\n events(address, opts = {}) {\n return t.get(`/v1/rewards/${t.addr(address)}/events`, { page: opts.page ?? 1, limit: opts.limit ?? 20 });\n },\n async config() {\n return (await t.get<{ data: ApiRewardsConfig }>(\"/v1/rewards/config\")).data;\n },\n async batch(addresses) {\n if (addresses.length === 0) return [];\n const res = await t.get<{ data: ApiRewardsBatchEntry[] }>(\"/v1/rewards/batch\", {\n addresses: addresses.map((a) => t.addr(a)).join(\",\"),\n });\n return res.data;\n },\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type { ApiPlatformStats, ApiSubmitReport, ApiSwapQuote, ApiSwapQuoteRequest } from \"../../types/api.js\";\n\nexport interface PlatformApi {\n stats(): Promise<ApiPlatformStats>;\n swapQuote(body: ApiSwapQuoteRequest): Promise<ApiSwapQuote>;\n submitReport(report: ApiSubmitReport): Promise<void>;\n}\n\nexport function createPlatformApi(t: Transport): PlatformApi {\n return {\n async stats() {\n return (await t.get<{ data: ApiPlatformStats }>(\"/v1/stats\")).data;\n },\n async swapQuote(body) {\n return (await t.post<{ quote: ApiSwapQuote }>(\"/v1/swap/quote\", body)).quote;\n },\n async submitReport(report) {\n const targetContract = report.targetContract ? t.addr(report.targetContract) : undefined;\n const targetAddress = report.targetAddress ? t.addr(report.targetAddress) : undefined;\n let targetKey: string | null = null;\n if (report.targetType === \"TOKEN\" && targetContract && report.targetTokenId) {\n targetKey = `TOKEN:${targetContract}:${report.targetTokenId}`;\n } else if (report.targetType === \"COLLECTION\" && targetContract) {\n targetKey = `COLLECTION:${targetContract}`;\n } else if (report.targetType === \"CREATOR\" && targetAddress) {\n targetKey = `CREATOR:${targetAddress}`;\n } else if (report.targetType === \"COMMENT\" && report.targetId) {\n targetKey = `COMMENT::${report.targetId}`;\n }\n if (!targetKey) throw new Error(`A ${report.targetType} report needs its target`);\n await t.post(\"/v1/reports\", { ...report, targetKey, targetContract, targetAddress });\n },\n };\n}\n","import type { Transport } from \"../transport.js\";\nimport type { CreatorCoinGuarantees } from \"../../starknet/services/creatorCoin.js\";\nimport type { PopClaimInfo } from \"../../starknet/pop-claim.js\";\nimport type { DropOnchain } from \"../../starknet/drop-state.js\";\nimport { dropStateFromWire, type DropStateWire } from \"../../contract/chainReads.js\";\nimport type { ApiIpNftTokenData, ApiTierOnchain } from \"../../types/api.js\";\n\nexport interface ChainReadsApi {\n ticket(contract: string, tokenId: string): Promise<ApiTierOnchain>;\n ticketCount(contract: string): Promise<number>;\n clubMembershipCount(contract: string): Promise<number>;\n clubMembership(contract: string, tokenId: string): Promise<ApiTierOnchain>;\n isClubMember(contract: string, tokenId: string, wallet: string): Promise<boolean>;\n ipNftTokenData(contract: string, tokenId: string): Promise<ApiIpNftTokenData | null>;\n coinGuarantees(contract: string): Promise<CreatorCoinGuarantees | null>;\n popClaimInfo(collection: string): Promise<PopClaimInfo | null>;\n dropState(contract: string): Promise<DropOnchain | null>;\n}\n\nexport function createChainReadsApi(t: Transport): ChainReadsApi {\n const data = async <T>(path: string): Promise<T> => (await t.get<{ data: T }>(path)).data;\n return {\n ticket: (contract, tokenId) => data(`/v1/tickets/${t.addr(contract)}/${tokenId}`),\n ticketCount: async (contract) => (await data<{ count: number }>(`/v1/tickets/${t.addr(contract)}/count`)).count,\n clubMembershipCount: async (contract) => (await data<{ count: number }>(`/v1/club/${t.addr(contract)}/count`)).count,\n clubMembership: (contract, tokenId) => data(`/v1/club/${t.addr(contract)}/${tokenId}`),\n isClubMember: async (contract, tokenId, wallet) =>\n (await data<{ isMember: boolean }>(`/v1/club/${t.addr(contract)}/${tokenId}/member/${t.addr(wallet)}`)).isMember,\n ipNftTokenData: (contract, tokenId) => data(`/v1/ipnft/${t.addr(contract)}/${tokenId}`),\n coinGuarantees: (contract) => data(`/v1/coins/${t.addr(contract)}/guarantees`),\n popClaimInfo: (collection) => data(`/v1/pop/${t.addr(collection)}/claim-info`),\n async dropState(contract) {\n const wire = await data<DropStateWire | null>(`/v1/drops/${t.addr(contract)}/state`);\n return wire ? dropStateFromWire(wire) : null;\n },\n };\n}\n","import { MedialaneApiError, parseRetryAfter } from \"../errors.js\";\nimport { Transport, type BearerSource, type TransportOptions } from \"./transport.js\";\nimport { createOrdersApi, type OrdersApi } from \"./domains/orders.js\";\nimport { createTokensApi, type TokensApi } from \"./domains/tokens.js\";\nimport { createCollectionsApi, type CollectionsApi } from \"./domains/collections.js\";\nimport { createActivityApi, createSearchApi, type ActivityApi, type SearchApi } from \"./domains/activity.js\";\nimport { createIntentsApi, type IntentsApi } from \"./domains/intents.js\";\nimport { createMetadataApi, type MetadataApi } from \"./domains/metadata.js\";\nimport { createCreatorsApi, type CreatorsApi } from \"./domains/creators.js\";\nimport { createAccountApi, type AccountApi } from \"./domains/account.js\";\nimport { createPortalApi, type PortalApi } from \"./domains/portal.js\";\nimport { createBusinessApi, type BusinessApi } from \"./domains/business.js\";\nimport { createRemixApi, type RemixApi } from \"./domains/remix.js\";\nimport { createCoinsApi, type CoinsApi } from \"./domains/coins.js\";\nimport { createDropsApi, type DropsApi } from \"./domains/drops.js\";\nimport { createSponsorshipApi, type SponsorshipApi } from \"./domains/sponsorship.js\";\nimport { createRewardsApi, type RewardsApi } from \"./domains/rewards.js\";\nimport { createPlatformApi, type PlatformApi } from \"./domains/platform.js\";\nimport { createChainReadsApi, type ChainReadsApi } from \"./domains/chainReads.js\";\n\nexport { MedialaneApiError, parseRetryAfter };\n\nexport type ApiClientOptions = TransportOptions;\n\nexport class ApiClient {\n private readonly transport: Transport;\n\n readonly orders: OrdersApi;\n readonly tokens: TokensApi;\n readonly collections: CollectionsApi;\n readonly activity: ActivityApi;\n readonly search: SearchApi;\n readonly intents: IntentsApi;\n readonly metadata: MetadataApi;\n readonly creators: CreatorsApi;\n readonly account: AccountApi;\n readonly portal: PortalApi;\n readonly business: BusinessApi;\n readonly remix: RemixApi;\n readonly coins: CoinsApi;\n readonly drops: DropsApi;\n readonly sponsorship: SponsorshipApi;\n readonly rewards: RewardsApi;\n readonly platform: PlatformApi;\n readonly chainReads: ChainReadsApi;\n\n constructor(options: ApiClientOptions) {\n this.transport = new Transport(options);\n const t = this.transport;\n this.orders = createOrdersApi(t);\n this.tokens = createTokensApi(t);\n this.collections = createCollectionsApi(t);\n this.activity = createActivityApi(t);\n this.search = createSearchApi(t);\n this.intents = createIntentsApi(t);\n this.metadata = createMetadataApi(t);\n this.creators = createCreatorsApi(t);\n this.account = createAccountApi(t);\n this.portal = createPortalApi(t);\n this.business = createBusinessApi(t);\n this.remix = createRemixApi(t);\n this.coins = createCoinsApi(t);\n this.drops = createDropsApi(t);\n this.sponsorship = createSponsorshipApi(t);\n this.rewards = createRewardsApi(t);\n this.platform = createPlatformApi(t);\n this.chainReads = createChainReadsApi(t);\n }\n\n withBearer(bearer: BearerSource | undefined): ApiClient {\n return new ApiClient({ ...this.transport.settings(), bearer });\n }\n}\n","export class PasskeyCancelledError extends Error {\n constructor(message = \"Passkey prompt was cancelled.\") {\n super(message);\n this.name = \"PasskeyCancelledError\";\n }\n}\n\nexport class DeviceKeyMissingError extends Error {\n constructor() {\n super(\"This browser no longer holds the wallet key. Recover the wallet with its recovery key.\");\n this.name = \"DeviceKeyMissingError\";\n }\n}\n\nexport type PasskeyUnsupportedReason = \"no-webauthn\" | \"no-prf\";\n\nexport class PasskeyUnsupportedError extends Error {\n readonly reason: PasskeyUnsupportedReason;\n constructor(reason: PasskeyUnsupportedReason) {\n super(\n reason === \"no-webauthn\"\n ? \"Passkeys are not available in this environment.\"\n : \"This passkey did not return a PRF secret, so it cannot seal a wallet key.\",\n );\n this.name = \"PasskeyUnsupportedError\";\n this.reason = reason;\n }\n}\n","import { getCoordinates } from \"./chains.js\";\n\nconst SN = getCoordinates(\"STARKNET\");\n\nexport const STARKNET_MARKETPLACE_721_CONTRACT = SN.marketplace721;\nexport const STARKNET_MARKETPLACE_1155_CONTRACT = SN.marketplace1155;\n\nexport const STARKNET_COLLECTION_721_CONTRACT = SN.collection721;\nexport const STARKNET_DATA_TOKENIZATION_721_CONTRACT = SN.dataTokenization721;\nexport const STARKNET_COLLECTION_1155_CONTRACT = SN.collection1155;\n\nexport const STARKNET_POP_FACTORY_CONTRACT = SN.popFactory;\nexport const STARKNET_POP_FACTORY_START_BLOCK = SN.popFactoryStartBlock;\nexport const STARKNET_DROP_FACTORY_CONTRACT = SN.dropFactory;\nexport const STARKNET_DROP_FACTORY_START_BLOCK = SN.dropFactoryStartBlock;\nexport const STARKNET_NFTCOMMENTS_CONTRACT = SN.nftComments;\n\nexport const STARKNET_IP_TICKETS_FACTORY_CONTRACT = SN.ipTicketsFactory;\nexport const STARKNET_IP_CLUB_FACTORY_CONTRACT = SN.ipClubFactory;\nexport const STARKNET_IP_SPONSORSHIP_CONTRACT = SN.ipSponsorship;\n\nexport const STARKNET_MEDIAWALLET_CLASS_HASH = SN.mediaWalletClassHash;\n\nexport const STARKNET_CREATOR_COIN_FACTORY_CONTRACT = SN.creatorCoinFactory;\n\nexport const STARKNET_GENESIS_MINT_CONTRACT = SN.genesisMint;\nexport const STARKNET_GENESIS_NFT_URI = \"ipfs://bafkreiag6wzov7migmxwx3wrtudvbx4ajrlbjopqw7uni7nn2nsxv4eykm\";\n\nexport const SUPPORTED_TOKENS = [\n {\n\n symbol: \"USDC\",\n address:\n \"0x033068f6539f8e6e6b131e6b2b814e6c34a5224bc66947c47dab9dfee93b35fb\",\n decimals: 6,\n listable: true,\n },\n {\n symbol: \"USDT\",\n address:\n \"0x068f5c6a61780768455de69077e07e89787839bf8166decfbf92b645209c0fb8\",\n decimals: 6,\n listable: true,\n },\n {\n symbol: \"ETH\",\n address:\n \"0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7\",\n decimals: 18,\n listable: true,\n },\n {\n symbol: \"STRK\",\n address:\n \"0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d\",\n decimals: 18,\n listable: true,\n },\n {\n symbol: \"WBTC\",\n address:\n \"0x03fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac\",\n decimals: 8,\n listable: true,\n },\n] as const;\n\nexport type SupportedTokenSymbol = (typeof SUPPORTED_TOKENS)[number][\"symbol\"];\n\nexport const DEFAULT_CURRENCY: SupportedTokenSymbol = \"USDC\";\n","import { SUPPORTED_TOKENS } from \"../constants.js\";\n\nexport type SupportedToken = (typeof SUPPORTED_TOKENS)[number];\n\nexport function parseAmount(human: string, decimals: number): string {\n const [whole, frac = \"\"] = human.split(\".\");\n const fracPadded = frac.padEnd(decimals, \"0\").slice(0, decimals);\n return (BigInt(whole) * BigInt(10) ** BigInt(decimals) + BigInt(fracPadded)).toString();\n}\n\nexport function formatAmount(raw: string, decimals: number): string {\n const value = BigInt(raw);\n const factor = 10n ** BigInt(decimals);\n const whole = value / factor;\n const remainder = value % factor;\n const fractional = remainder.toString().padStart(decimals, \"0\").replace(/0+$/, \"\");\n return fractional ? `${whole}.${fractional}` : whole.toString();\n}\n\nexport function getTokenByAddress(address: string | null | undefined): SupportedToken | undefined {\n if (typeof address !== \"string\" || address.trim() === \"\") return undefined;\n\n let target: bigint | null = null;\n try {\n target = BigInt(address);\n } catch {\n target = null;\n }\n return SUPPORTED_TOKENS.find((t) => {\n if (target !== null) {\n try {\n return BigInt(t.address) === target;\n } catch {\n\n }\n }\n return t.address.toLowerCase() === address.toLowerCase();\n });\n}\n\nexport function getTokenBySymbol(symbol: string | null | undefined): SupportedToken | undefined {\n if (typeof symbol !== \"string\") return undefined;\n const upper = symbol.toUpperCase();\n return SUPPORTED_TOKENS.find((t) => t.symbol === upper);\n}\n\nexport function getListableTokens(): ReadonlyArray<SupportedToken> {\n return SUPPORTED_TOKENS.filter((t) => t.listable);\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkMCVAZVLN_cjs = require('./chunk-MCVAZVLN.cjs');
|
|
4
4
|
var chunkH2NJB3AK_cjs = require('./chunk-H2NJB3AK.cjs');
|
|
5
5
|
var hkdf_js = require('@noble/hashes/hkdf.js');
|
|
6
6
|
var sha2_js = require('@noble/hashes/sha2.js');
|
|
@@ -14,7 +14,15 @@ async function erc20Balance(provider, token, holder) {
|
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
// src/starknet/services/sponsoredExecutor.ts
|
|
17
|
-
var SponsoredCallRejectedError = class extends
|
|
17
|
+
var SponsoredCallRejectedError = class extends chunkMCVAZVLN_cjs.UserFacingError {
|
|
18
|
+
constructor(message, info = {}) {
|
|
19
|
+
super(message, { retryable: false });
|
|
20
|
+
this.code = info.code;
|
|
21
|
+
this.detail = info.detail;
|
|
22
|
+
this.status = info.status;
|
|
23
|
+
this.stage = info.stage;
|
|
24
|
+
this.requestId = info.requestId;
|
|
25
|
+
}
|
|
18
26
|
};
|
|
19
27
|
var FALLBACK_FUNDING_FAILURES = /* @__PURE__ */ new Set(["sponsor_unavailable", "credits_exhausted"]);
|
|
20
28
|
function allowsFallbackFunding(code, status, stage) {
|
|
@@ -23,7 +31,12 @@ function allowsFallbackFunding(code, status, stage) {
|
|
|
23
31
|
}
|
|
24
32
|
async function failureOf(res, fallback) {
|
|
25
33
|
const body = await res.json().catch(() => null);
|
|
26
|
-
return {
|
|
34
|
+
return {
|
|
35
|
+
reason: body?.error || fallback,
|
|
36
|
+
code: typeof body?.code === "string" ? body.code : void 0,
|
|
37
|
+
detail: typeof body?.detail === "string" ? body.detail : void 0,
|
|
38
|
+
requestId: res.headers.get("x-request-id") ?? void 0
|
|
39
|
+
};
|
|
27
40
|
}
|
|
28
41
|
async function executeSponsored(config, signer, request) {
|
|
29
42
|
const doFetch = config.fetchImpl ?? fetch;
|
|
@@ -35,9 +48,9 @@ async function executeSponsored(config, signer, request) {
|
|
|
35
48
|
body: JSON.stringify(request)
|
|
36
49
|
});
|
|
37
50
|
if (!buildRes.ok) {
|
|
38
|
-
const { reason, code } = await failureOf(buildRes, "We couldn't prepare this transaction.");
|
|
51
|
+
const { reason, code, detail, requestId } = await failureOf(buildRes, "We couldn't prepare this transaction.");
|
|
39
52
|
if (allowsFallbackFunding(code, buildRes.status, "build")) return { status: "unavailable", reason };
|
|
40
|
-
throw new SponsoredCallRejectedError(reason);
|
|
53
|
+
throw new SponsoredCallRejectedError(reason, { code, detail, status: buildRes.status, stage: "build", requestId });
|
|
41
54
|
}
|
|
42
55
|
const { typedData } = await buildRes.json();
|
|
43
56
|
const signature = await signer.signTypedData(typedData);
|
|
@@ -47,11 +60,11 @@ async function executeSponsored(config, signer, request) {
|
|
|
47
60
|
body: JSON.stringify({ ...request, typedData, signature })
|
|
48
61
|
});
|
|
49
62
|
if (!executeRes.ok) {
|
|
50
|
-
const { reason, code } = await failureOf(executeRes, "We couldn't submit this transaction.");
|
|
63
|
+
const { reason, code, detail, requestId } = await failureOf(executeRes, "We couldn't submit this transaction.");
|
|
51
64
|
if (allowsFallbackFunding(code, executeRes.status, "execute")) {
|
|
52
65
|
return { status: "unavailable", reason };
|
|
53
66
|
}
|
|
54
|
-
throw new SponsoredCallRejectedError(reason);
|
|
67
|
+
throw new SponsoredCallRejectedError(reason, { code, detail, status: executeRes.status, stage: "execute", requestId });
|
|
55
68
|
}
|
|
56
69
|
const { transactionHash } = await executeRes.json();
|
|
57
70
|
return { status: "sponsored", transactionHash };
|
|
@@ -72,7 +85,7 @@ function ownerConstructorCalldata(ownerPubkey) {
|
|
|
72
85
|
function computeAccountAddress(ownerPubkey, salt = 0) {
|
|
73
86
|
return starknet.hash.calculateContractAddressFromHash(
|
|
74
87
|
starknet.num.toHex(salt),
|
|
75
|
-
|
|
88
|
+
chunkMCVAZVLN_cjs.STARKNET_MEDIAWALLET_CLASS_HASH,
|
|
76
89
|
ownerConstructorCalldata(ownerPubkey),
|
|
77
90
|
0
|
|
78
91
|
);
|
|
@@ -107,13 +120,13 @@ function buildRemoveOwnerByGuidCall(accountAddress, ownerGuid) {
|
|
|
107
120
|
}
|
|
108
121
|
function buildDeployAccountParams(ownerPubkey, salt = 0) {
|
|
109
122
|
return {
|
|
110
|
-
classHash:
|
|
123
|
+
classHash: chunkMCVAZVLN_cjs.STARKNET_MEDIAWALLET_CLASS_HASH,
|
|
111
124
|
constructorCalldata: ownerConstructorCalldata(ownerPubkey),
|
|
112
125
|
addressSalt: starknet.num.toHex(salt),
|
|
113
126
|
contractAddress: computeAccountAddress(ownerPubkey, salt)
|
|
114
127
|
};
|
|
115
128
|
}
|
|
116
|
-
var norm = (address) =>
|
|
129
|
+
var norm = (address) => chunkMCVAZVLN_cjs.normalizeAddress("STARKNET", address);
|
|
117
130
|
var SIGNER_TYPE_NAMES = ["Starknet", "Secp256k1", "Secp256r1"];
|
|
118
131
|
function encodeFeltArray(items) {
|
|
119
132
|
return [starknet.num.toHex(items.length), ...items];
|
|
@@ -395,7 +408,7 @@ function describeRecoveryAction(escape) {
|
|
|
395
408
|
return "none";
|
|
396
409
|
}
|
|
397
410
|
function normalizeWalletAddress(address) {
|
|
398
|
-
return
|
|
411
|
+
return chunkMCVAZVLN_cjs.normalizeAddress("STARKNET", address);
|
|
399
412
|
}
|
|
400
413
|
function isValidStarknetAddress(address) {
|
|
401
414
|
try {
|
|
@@ -484,7 +497,7 @@ function createPasskeyOwner(config) {
|
|
|
484
497
|
const randomBytes = config.randomBytes ?? ((length) => crypto.getRandomValues(new Uint8Array(length)));
|
|
485
498
|
const credentialsApi = () => {
|
|
486
499
|
const api = config.credentials ?? (typeof navigator === "undefined" ? void 0 : navigator.credentials);
|
|
487
|
-
if (!api) throw new
|
|
500
|
+
if (!api) throw new chunkMCVAZVLN_cjs.PasskeyUnsupportedError("no-webauthn");
|
|
488
501
|
return api;
|
|
489
502
|
};
|
|
490
503
|
async function registerPasskey() {
|
|
@@ -509,7 +522,7 @@ function createPasskeyOwner(config) {
|
|
|
509
522
|
}
|
|
510
523
|
});
|
|
511
524
|
} catch (err) {
|
|
512
|
-
if (isPasskeyCancellation(err)) throw new
|
|
525
|
+
if (isPasskeyCancellation(err)) throw new chunkMCVAZVLN_cjs.PasskeyCancelledError();
|
|
513
526
|
throw err;
|
|
514
527
|
}
|
|
515
528
|
const prf = credential.getClientExtensionResults().prf;
|
|
@@ -530,7 +543,7 @@ function createPasskeyOwner(config) {
|
|
|
530
543
|
}
|
|
531
544
|
});
|
|
532
545
|
} catch (err) {
|
|
533
|
-
if (isPasskeyCancellation(err)) throw new
|
|
546
|
+
if (isPasskeyCancellation(err)) throw new chunkMCVAZVLN_cjs.PasskeyCancelledError();
|
|
534
547
|
throw err;
|
|
535
548
|
}
|
|
536
549
|
}
|
|
@@ -539,7 +552,7 @@ function createPasskeyOwner(config) {
|
|
|
539
552
|
prf: { eval: { first: config.prfSalt } }
|
|
540
553
|
});
|
|
541
554
|
const result = assertion.getClientExtensionResults().prf?.results?.first;
|
|
542
|
-
if (!result) throw new
|
|
555
|
+
if (!result) throw new chunkMCVAZVLN_cjs.PasskeyUnsupportedError("no-prf");
|
|
543
556
|
return new Uint8Array(result);
|
|
544
557
|
}
|
|
545
558
|
const deviceKeys = config.deviceKeys ?? indexedDbDeviceKeys;
|
|
@@ -550,7 +563,7 @@ function createPasskeyOwner(config) {
|
|
|
550
563
|
try {
|
|
551
564
|
return { aes: await deriveAesKey(await prfSecret(registration.credentialId), config.hkdfInfo) };
|
|
552
565
|
} catch (err) {
|
|
553
|
-
if (!(err instanceof
|
|
566
|
+
if (!(err instanceof chunkMCVAZVLN_cjs.PasskeyUnsupportedError) || err.reason !== "no-prf") throw err;
|
|
554
567
|
}
|
|
555
568
|
const aes = await generateDeviceKey();
|
|
556
569
|
await deviceKeys.save(registration.credentialId, aes);
|
|
@@ -560,7 +573,7 @@ function createPasskeyOwner(config) {
|
|
|
560
573
|
if (sealed.lock !== "device") return deriveAesKey(await prfSecret(sealed.credentialId), config.hkdfInfo);
|
|
561
574
|
await assertPasskey(sealed.credentialId);
|
|
562
575
|
const aes = await deviceKeys.load(sealed.credentialId);
|
|
563
|
-
if (!aes) throw new
|
|
576
|
+
if (!aes) throw new chunkMCVAZVLN_cjs.DeviceKeyMissingError();
|
|
564
577
|
return aes;
|
|
565
578
|
}
|
|
566
579
|
async function seal(aes, privateKeyHex) {
|
|
@@ -616,7 +629,7 @@ async function estimateSelfFundedFee(provider, address, calls) {
|
|
|
616
629
|
return { feeRaw: estimate.overall_fee, unit: estimate.unit, balanceRaw };
|
|
617
630
|
}
|
|
618
631
|
async function feeTokenBalance(provider, address, unit) {
|
|
619
|
-
const token =
|
|
632
|
+
const token = chunkMCVAZVLN_cjs.getTokenBySymbol(unit === "FRI" ? "STRK" : "ETH");
|
|
620
633
|
if (!token) throw new Error(`No fee token for unit ${unit}`);
|
|
621
634
|
return erc20Balance(provider, token.address, address);
|
|
622
635
|
}
|
|
@@ -636,7 +649,7 @@ function sponsoredExecutor(deps) {
|
|
|
636
649
|
const { userAddress, privateKeyHex, calls, intentIds } = input;
|
|
637
650
|
if (!intentIds?.length) {
|
|
638
651
|
const consented2 = await deps.consent.request({ address: userAddress, calls });
|
|
639
|
-
if (!consented2) throw new
|
|
652
|
+
if (!consented2) throw new chunkMCVAZVLN_cjs.UserFacingError("This action can't be sponsored");
|
|
640
653
|
return fallback.execute(input);
|
|
641
654
|
}
|
|
642
655
|
const result = await executeSponsored(
|
|
@@ -649,7 +662,7 @@ function sponsoredExecutor(deps) {
|
|
|
649
662
|
);
|
|
650
663
|
if (result.status === "sponsored") return { transactionHash: result.transactionHash };
|
|
651
664
|
const consented = await deps.consent.request({ address: userAddress, calls });
|
|
652
|
-
if (!consented) throw new
|
|
665
|
+
if (!consented) throw new chunkMCVAZVLN_cjs.UserFacingError(result.reason);
|
|
653
666
|
return fallback.execute(input);
|
|
654
667
|
}
|
|
655
668
|
};
|
|
@@ -857,7 +870,7 @@ function createMediaWallet(config) {
|
|
|
857
870
|
};
|
|
858
871
|
const walletIntents = config.walletIntents ?? (async (params) => {
|
|
859
872
|
if (!config.backendUrl) throw new Error("This wallet has no backend url configured");
|
|
860
|
-
const created = await new
|
|
873
|
+
const created = await new chunkMCVAZVLN_cjs.ApiClient({ baseUrl: config.backendUrl }).intents.create("wallet-manage", params);
|
|
861
874
|
return created;
|
|
862
875
|
});
|
|
863
876
|
const manage = async (sealed, params) => {
|
|
@@ -971,5 +984,5 @@ exports.sponsoredExecutor = sponsoredExecutor;
|
|
|
971
984
|
exports.starkKeyPairFromPrivateKey = starkKeyPairFromPrivateKey;
|
|
972
985
|
exports.unsealPrivateKey = unsealPrivateKey;
|
|
973
986
|
exports.waitUntilDeployed = waitUntilDeployed;
|
|
974
|
-
//# sourceMappingURL=chunk-
|
|
975
|
-
//# sourceMappingURL=chunk-
|
|
987
|
+
//# sourceMappingURL=chunk-ZYRSMDMJ.cjs.map
|
|
988
|
+
//# sourceMappingURL=chunk-ZYRSMDMJ.cjs.map
|