@medialane/sdk 0.70.0 → 0.71.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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/chains.ts","../src/fee/config.ts","../src/config.ts","../src/utils/address.ts","../src/utils/retry.ts","../src/api/client.ts","../src/types/api.ts","../src/constants.ts","../src/services/registry.ts","../src/utils/token.ts","../src/utils/bigint.ts","../src/utils/rpc.ts","../src/starknet/marketplace/errors.ts","../src/starknet/marketplace/utils.ts","../src/starknet/abis/ipMarketplace.ts","../src/starknet/abis/popCollection.ts","../src/starknet/abis/popFactory.ts","../src/starknet/abis/dropCollection.ts","../src/starknet/abis/dropFactory.ts","../src/starknet/abis/medialane1155.ts","../src/starknet/abis/ipCollection1155Factory.ts","../src/starknet/abis/ipCollection1155.ts","../src/starknet/abis/ipCollection.ts","../src/starknet/abis/ipNft.ts","../src/starknet/abis/creatorCoinFactory.ts","../src/starknet/abis/ipTicketCollection.ts","../src/starknet/abis/ipTicketCollectionFactory.ts","../src/starknet/abis/ipClubFactory.ts","../src/starknet/abis/ipClubCollection.ts","../src/starknet/abis/ipSponsorship.ts","../src/starknet/abis/ipGenesis.ts","../src/starknet/services/pop.ts","../src/starknet/fee/build-fee-call.ts","../src/starknet/services/drop.ts","../src/starknet/services/erc1155collection.ts","../src/starknet/services/creatorCoin.ts","../src/starknet/services/ticket.ts","../src/starknet/services/club.ts","../src/starknet/services/sponsorship.ts","../src/starknet/client.ts","../src/starknet/marketplace/orders.ts","../src/starknet/marketplace1155/orders.ts","../src/starknet/marketplace/signing.ts","../src/starknet/marketplace/build.ts","../src/starknet/marketplace1155/build.ts","../src/starknet/venue.ts","../src/starknet/admin-auth/types.ts","../src/starknet/admin-auth/digest.ts","../src/starknet/admin-auth/request.ts","../src/starknet/admin-auth/grant.ts","../src/starknet/admin-auth/headers.ts","../src/starknet/siws/client.ts","../src/starknet/services/coinLaunchMath.ts","../src/starknet/bytearray.ts"],"names":["z","hash","keccak_256","base58","base32","SN","Contract","constants","RpcProvider","cairo","uint256","CairoOption","CairoOptionVariant","_contractCache","TypedDataRevision","shortString","contractFor","registerPayload","num","ec","encode","COIN_DECIMALS"],"mappings":"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","file":"index.cjs","sourcesContent":["// Single source of per-chain coordinates for Medialane's own services\n// (spec 2026-06-13 §3.1, Decision A). Keyed by CHAIN ALONE — Medialane is\n// mainnet-only, so there is no network axis (refines decisions.md D-9).\n\n/** Mirrors the backend Prisma `Chain` enum. */\nexport const CHAINS = [\"STARKNET\", \"ETHEREUM\", \"SOLANA\", \"BASE\", \"STELLAR\", \"BITCOIN\"] as const;\nexport type Chain = (typeof CHAINS)[number];\n\n/** Starknet coordinates of Medialane services + venues. All fields optional\n * because not every service exists on every chain. */\nexport interface StarknetCoordinates {\n rpcUrl: string;\n marketplace721?: `0x${string}`;\n marketplace721ClassHash?: `0x${string}`;\n marketplace721StartBlock?: number;\n marketplace1155?: `0x${string}`;\n marketplace1155ClassHash?: `0x${string}`;\n marketplace1155StartBlock?: number;\n collection721?: `0x${string}`;\n collection721StartBlock?: number;\n ipNftClassHash?: `0x${string}`;\n ipCollectionClassHash?: `0x${string}`;\n collection1155?: `0x${string}`;\n collection1155FactoryClassHash?: `0x${string}`;\n collection1155ClassHash?: `0x${string}`;\n collection1155StartBlock?: number;\n popFactory?: `0x${string}`;\n popCollectionClassHash?: `0x${string}`;\n dropFactory?: `0x${string}`;\n dropCollectionClassHash?: `0x${string}`;\n nftComments?: `0x${string}`;\n creatorCoinFactory?: `0x${string}`;\n creatorCoinEkuboLauncher?: `0x${string}`;\n creatorCoinClassHash?: `0x${string}`;\n creatorCoinFactoryClassHash?: `0x${string}`;\n creatorCoinStartBlock?: number;\n ekuboCore?: `0x${string}`;\n ipTicketsFactory?: `0x${string}`;\n ipTicketCollectionClassHash?: `0x${string}`;\n ipTicketsFactoryClassHash?: `0x${string}`;\n ipTicketsStartBlock?: number;\n ipClubFactory?: `0x${string}`;\n ipClubFactoryClassHash?: `0x${string}`;\n ipClubCollectionClassHash?: `0x${string}`;\n ipClubFactoryStartBlock?: number;\n ipSponsorship?: `0x${string}`;\n ipSponsorshipClassHash?: `0x${string}`;\n ipSponsorshipStartBlock?: number;\n}\n\n/** Coordinates per chain. Only STARKNET is populated today; adding a chain\n * means adding an entry here (litmus test, spec §7). */\n/** EVM coordinates — one shape for Ethereum and Base (same bytecode, two\n * chains). Populated at deploy time (federation Phase 4). */\nexport interface EvmCoordinates {\n rpcUrl: string;\n marketplace721?: `0x${string}`;\n marketplace721StartBlock?: number;\n marketplace1155?: `0x${string}`;\n marketplace1155StartBlock?: number;\n mipRegistry?: `0x${string}`;\n mipRegistryStartBlock?: number;\n mipEditionsRegistry?: `0x${string}`;\n mipEditionsRegistryStartBlock?: number;\n}\n\n/** Solana coordinates — base58 program ids. Populated at deploy time. */\nexport interface SolanaCoordinates {\n rpcUrl: string;\n mipCollectionsProgram?: string;\n marketplaceProgram?: string;\n startSlot?: number;\n}\n\n/** Stellar (Soroban) coordinates — strkey contract ids. Populated at deploy\n * time; the registry takes the collection WASM hash as a constructor arg. */\nexport interface StellarCoordinates {\n rpcUrl: string;\n mipRegistry?: string;\n marketplace?: string;\n collectionWasmHash?: string;\n startLedger?: number;\n}\n\n/** Per-chain coordinate shapes. Every chain is an equal entry — no chain is\n * privileged in core (chain-sovereignty I2/I4). */\nexport interface CoordinatesByChain {\n STARKNET?: StarknetCoordinates;\n ETHEREUM?: EvmCoordinates;\n BASE?: EvmCoordinates;\n SOLANA?: SolanaCoordinates;\n STELLAR?: StellarCoordinates;\n BITCOIN?: never;\n}\n\n/** @deprecated Renamed — use `StarknetCoordinates` (coordinates are per-chain-shaped). */\nexport type ChainCoordinates = StarknetCoordinates;\n\nconst COORDINATES: CoordinatesByChain = {\n STARKNET: {\n rpcUrl: \"https://rpc.starknet.lava.build\",\n marketplace721: \"0x03eda9a2b6ad90845a43591bac8083ebaf677d51fdf20f503b2c01889e3131fc\",\n marketplace721ClassHash: \"0x0700d9230d07e5203e27778c0dc70f9134d2b25bf319f7cf8348dc66a6923e90\",\n marketplace721StartBlock: 11198146,\n marketplace1155: \"0x07c4ce1c19ea48cc11135ed22b19ff745f5aec508c3828593002e4f76fdb1b38\",\n marketplace1155ClassHash: \"0x0242f5c388da7cee2d99e2a69453c8159bf927fbec4e797a3cfdcbbcb5b68328\",\n marketplace1155StartBlock: 11198267,\n collection721: \"0x0225c3ae09506b8d97adc39649ca740dad5aac195b7f5f0441cc1852947acaea\",\n collection721StartBlock: 11198496,\n ipNftClassHash: \"0x012d3ae40ba35c7e2be0946532dac60e48932447912fdf96b674da67c029b9cc\",\n ipCollectionClassHash: \"0x022155a1a130a40e57aac4b89c07fab3f616bc351b1270fc40f756b963afe8b4\",\n collection1155: \"0x015368976d46fae5bfa1c58600f641d5aa5dbbf53ebc6b78aa3922194aad3551\",\n collection1155FactoryClassHash: \"0x04eb6b419770f13bd191f120b9fc9ee624c0613ad4490062d293ca2016b3b1d2\",\n collection1155ClassHash: \"0x06cf3f5a2322dac35e07a6064a5b8802f19fda8aa3f4726f0cb7bc05dea1bd78\",\n collection1155StartBlock: 11199527,\n popFactory: \"0x00b32c34b427d8f346b5843ada6a37bd3368d879fc752cd52b68a87287f60111\",\n popCollectionClassHash: \"0x077c421686f10851872561953ea16898d933364b7f8937a5d7e2b1ba0a36263f\",\n dropFactory: \"0x03587f42e29daee1b193f6cf83bf8627908ed6632d0d83fcb26225c50547d800\",\n dropCollectionClassHash: \"0x00092e72cdb63067521e803aaf7d4101c3e3ce026ae6bc045ec4228027e58282\",\n nftComments: \"0x02cdac70c94447189af0389dfea63f4d5e4154ea8a563de288a5ab1c39e37843\",\n creatorCoinFactory: \"0x50fa807b5274079fb19374673d7bab6d2dc3af7e1032ea43eb6e44bcbde4c3c\",\n creatorCoinEkuboLauncher: \"0x4f7fceb5ac10f12f9544a09580592e5bdf1b7f04f48765eecf12286d8ccb7b4\",\n creatorCoinClassHash: \"0x743e4c8a5b96bb83bbf4af04edbbb482d5ece89eed9b729a79fb7df0cd0b6b6\",\n creatorCoinFactoryClassHash: \"0x51765926b1344c9a20b8cd4b5abe7b7d47375ae97cf6804db3ea5d4b05a9b55\",\n creatorCoinStartBlock: 10474544,\n ekuboCore: \"0x00000005dd3d2f4429af886cd1a3b08289dbcea99a294197e9eb43b0e0325b4b\",\n ipTicketsFactory: \"0x0767bf5b57e1f812463159b5ed683183e1b0c3f942b74871b5c6cd6a93c15e99\",\n ipTicketCollectionClassHash: \"0x0449e8eb7c117740d07cb8e0157d32c8ba3d19d1cfd2784ed5e139f5a1e04acc\",\n ipTicketsFactoryClassHash: \"0x04a739ac3a673ebd0db96bb24475600797c3ed34827e79517f9b2b1640276e6a\",\n ipTicketsStartBlock: 11933694,\n ipClubFactory: \"0x06a0b0be16d70c78f2e18119dbf90e5911cbfd5d8d484bc555dc61d96f56a2b9\",\n ipClubFactoryClassHash: \"0x05d9d431bd3532b1fa4d5bab572f49c5ad8034ee3cc83951aa41ae82c9cad266\",\n ipClubCollectionClassHash: \"0x05b8477c72e6bf0cf64967d71155021fd4d77d9a57e8805c6b40709121c002c5\",\n ipClubFactoryStartBlock: 11928775,\n // v3 redesign (deployed 2026-07-15): single contract is both the\n // offer/bid/proposal registry and the license collection (embeds\n // ERC721Component directly) — no separate receipt contract, no\n // set_minter bootstrap. Supersedes the 2026-07-02 v2 address, which had\n // zero offers/licenses ever issued (clean cutover, no reclassification).\n ipSponsorship: \"0x03729ebe0fedf29ec97fca34db09174772af7f870af26a26e024a61040143e5c\",\n ipSponsorshipClassHash: \"0x0626daac2ed7e2bf630ef5b10104b3202db1559216c0c1a504c0e99be2fbfec3\",\n ipSponsorshipStartBlock: 11896456,\n },\n};\n\nexport function getCoordinates(chain: \"STARKNET\"): StarknetCoordinates;\nexport function getCoordinates(chain: \"ETHEREUM\" | \"BASE\"): EvmCoordinates;\nexport function getCoordinates(chain: \"SOLANA\"): SolanaCoordinates;\nexport function getCoordinates(chain: \"STELLAR\"): StellarCoordinates;\nexport function getCoordinates(\n chain: Chain,\n): StarknetCoordinates | EvmCoordinates | SolanaCoordinates | StellarCoordinates;\nexport function getCoordinates(\n chain: Chain,\n): StarknetCoordinates | EvmCoordinates | SolanaCoordinates | StellarCoordinates {\n const c = COORDINATES[chain];\n if (!c) throw new Error(`No coordinates configured for chain \"${chain}\"`);\n return c;\n}\n\nexport const DEFAULT_CHAIN: Chain = \"STARKNET\";\n\n/** Typed Starknet coordinates for Starknet-only modules; throws when the\n * client is scoped to another chain. */\nexport function getStarknetCoordinates(chain: Chain): StarknetCoordinates {\n if (chain !== \"STARKNET\") {\n throw new Error(`This module is Starknet-only (client chain: \"${chain}\")`);\n }\n return getCoordinates(\"STARKNET\");\n}\n","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});\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}\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 };\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 // Chain-scoped client (spec 2026-06-13 Decision B): one client per chain,\n // coordinates resolved from the registry. Replaces the removed `network` axis.\n chain: z.enum(CHAINS).default(DEFAULT_CHAIN),\n rpcUrl: z.string().url().optional(),\n backendUrl: z.string().url().optional(),\n apiKey: z.string().optional(),\n // Per-contract overrides remain for tests/forks; default from the registry.\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 rpcUrl: string;\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 // The resolved contract fields are the Starknet module surface; on other\n // chains they stay unset and the per-chain adapters resolve their own\n // coordinates.\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 rpcUrl: parsed.rpcUrl ?? coords.rpcUrl,\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\n/**\n * Normalize an address to its chain's canonical form. The single source of\n * address normalization across Medialane (07-identity §I; spec 2026-06-13 §3.2).\n * `medialane-backend` re-exports this; do not maintain a parallel copy.\n *\n * - STARKNET: 0x-prefixed 64-char lowercase hex (felt, zero-padded).\n * - ETHEREUM / BASE: EIP-55 mixed-case checksum.\n * - SOLANA: base58, validated as a 32-byte public key, returned verbatim.\n * - STELLAR: strkey (G… account / C… contract), CRC16-XModem-verified,\n * canonical uppercase.\n * - BITCOIN: not implemented — a non-foreclosed seam, gated on a future\n * Bitcoin fork (chain-sovereignty §2); never a built path today.\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 // EIP-55: keccak256 of the lowercase hex (ASCII, no 0x); uppercase the i-th\n // hex char when the i-th nibble of the hash is >= 8.\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; // base58 is canonical and case-sensitive — return as-is\n } catch {\n throw new Error(`Invalid SOLANA address: \"${address}\"`);\n }\n}\n\n/** Stellar strkey version bytes: 'G' account (6<<3), 'C' contract (2<<3). */\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\n/** CRC16-XModem (poly 0x1021, init 0x0000) — the strkey checksum. */\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\n/**\n * Normalize a felt/hash (tx hash, order hash) to 0x-prefixed 64-char lowercase\n * hex. Starknet-shaped; chain-scoped at call sites that handle other chains'\n * hashes.\n */\nexport function normalizeHash(hash: string): string {\n try {\n const hex = BigInt(hash).toString(16);\n return \"0x\" + hex.padStart(64, \"0\").toLowerCase();\n } catch {\n throw new Error(`Invalid hash: \"${hash}\"`);\n }\n}\n\n/** Shorten an address to \"0x1234...abcd\" form, normalized for its chain. */\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 async function withRetry<T>(\n fn: () => Promise<T>,\n opts?: RetryOptions\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 // Don't retry 4xx errors (client errors) — they won't succeed on retry\n if (err instanceof MedialaneApiError && err.status < 500) {\n throw err;\n }\n\n // Retry on 5xx or network errors (TypeError from fetch)\n const isRetryable =\n (err instanceof MedialaneApiError && err.status >= 500) ||\n err instanceof TypeError;\n\n if (!isRetryable || attempt === maxAttempts - 1) {\n throw err;\n }\n\n // Exponential backoff with jitter\n const jitter = Math.random() * baseDelayMs;\n const delay = Math.min(baseDelayMs * Math.pow(2, attempt) + jitter, 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 {\n ApiOrder,\n ApiOrdersQuery,\n ApiCounterOffersQuery,\n ApiToken,\n ApiCollection,\n ApiCoin,\n ApiUserRewards,\n ApiRewardsLeaderboardEntry,\n ApiRewardsConfig,\n ApiRewardsBatchEntry,\n ApiPointEvent,\n ApiCoinsQuery,\n ApiCollectionProfile,\n ApiCreatorProfile,\n ApiCreatorListResult,\n ApiCollectionClaim,\n ApiCollectionSlugClaim,\n ApiUserWallet,\n ApiAppSource,\n ApiChain,\n ApiActivity,\n ApiActivitiesQuery,\n ApiComment,\n ApiRemixOffer,\n ApiRemixOffersQuery,\n ApiPublicRemix,\n ApiSearchResult,\n ApiIntent,\n ApiIntentCreated,\n ApiMetadataSignedUrl,\n ApiMetadataUpload,\n ApiPortalMe,\n ApiPortalKey,\n ApiPortalKeyCreated,\n ApiUsageDay,\n ApiWebhookEndpoint,\n ApiWebhookCreated,\n CreateWebhookParams,\n CreateListingIntentParams,\n MakeOfferIntentParams,\n FulfillOrderIntentParams,\n CancelOrderIntentParams,\n CreateMintIntentParams,\n CreateCollectionIntentParams,\n CreateCounterOfferIntentParams,\n CreateRemixOfferParams,\n AutoRemixOfferParams,\n ConfirmSelfRemixParams,\n ConfirmRemixOfferParams,\n ApiResponse,\n CollectionSort,\n CollectionTokensSort,\n PopClaimStatus,\n PopBatchEligibilityItem,\n DropMintStatus,\n} from \"../types/api.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 super(message);\n this.name = \"MedialaneApiError\";\n this.code = deriveErrorCode(status);\n }\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 /** Normalize an address for this client's chain (chain-scoped — Decision B). */\n private addr(a: string): string {\n return normalizeAddress(this.chain, a);\n }\n\n private async request<T>(path: string, init?: RequestInit): Promise<T> {\n const url = `${this.baseUrl.replace(/\\/$/, \"\")}${path}`;\n const headers: Record<string, string> = { ...this.baseHeaders };\n if (!(init?.body instanceof FormData)) {\n headers[\"Content-Type\"] = \"application/json\";\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) {\n const text = await response.text().catch(() => response.statusText);\n let message = text;\n try {\n const body = JSON.parse(text) as { error?: string };\n if (body.error) message = body.error;\n } catch {\n // use raw text\n }\n throw new MedialaneApiError(response.status, message);\n }\n return response;\n }, this.retryOptions);\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 del<T>(path: string): Promise<T> {\n return this.request<T>(path, { method: \"DELETE\" });\n }\n\n private async checkResponse<T>(\n res: Response,\n options?: { allow404?: boolean; allow403?: boolean }\n ): Promise<T> {\n if (options?.allow404 && res.status === 404) return null as T;\n if (options?.allow403 && res.status === 403) return null as T;\n if (!res.ok) {\n const text = await res.text().catch(() => res.statusText);\n let message = text;\n try {\n const body = JSON.parse(text) as { error?: string };\n if (body.error) message = body.error;\n } catch { /* use raw text */ }\n throw new MedialaneApiError(res.status, message);\n }\n return res.json() as Promise<T>;\n }\n\n // ─── Orders ────────────────────────────────────────────────────────────────\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 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 // ─── Tokens ────────────────────────────────────────────────────────────────\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 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 // ─── Collections ───────────────────────────────────────────────────────────\n\n getCollections(\n page = 1,\n limit = 20,\n isKnown?: boolean,\n sort?: CollectionSort,\n service?: string,\n chain?: ChainFilter\n ): Promise<ApiResponse<ApiCollection[]>> {\n const params = new URLSearchParams({ page: String(page), limit: String(limit) });\n if (isKnown !== undefined) params.set(\"isKnown\", String(isKnown));\n if (sort) params.set(\"sort\", sort);\n if (service) params.set(\"service\", service);\n if (chain) params.set(\"chain\", chain);\n return this.get<ApiResponse<ApiCollection[]>>(`/v1/collections?${params}`);\n }\n\n getCollectionsByOwner(owner: string, page = 1, limit = 50): Promise<ApiResponse<ApiCollection[]>> {\n const params = new URLSearchParams({ owner: this.addr(owner), page: String(page), limit: String(limit) });\n return this.get<ApiResponse<ApiCollection[]>>(`/v1/collections?${params}`);\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 // ─── Activities ────────────────────────────────────────────────────────────\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.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 // ─── Comments ──────────────────────────────────────────────────────────────\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 ────────────────────────────────────────────────────────────────\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 // ─── Intents ───────────────────────────────────────────────────────────────\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 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 createMintIntent(params: CreateMintIntentParams): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/mint\", params);\n }\n\n createCollectionIntent(params: CreateCollectionIntentParams): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/create-collection\", params);\n }\n\n /**\n * Create a counter-offer intent. The seller proposes a new price in response\n * to a buyer's active bid. clerkToken is optional — the endpoint authenticates\n * via the tenant API key; pass a Clerk JWT only if your backend requires it.\n */\n createCounterOfferIntent(\n params: CreateCounterOfferIntentParams,\n clerkToken?: string\n ): Promise<ApiResponse<ApiIntentCreated>> {\n const extraHeaders: Record<string, string> = clerkToken ? { \"Authorization\": `Bearer ${clerkToken}` } : {};\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 /**\n * Fetch counter-offers. Pass `originalOrderHash` (buyer view) or\n * `sellerAddress` (seller view) — at least one is required.\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 // ─── Metadata ──────────────────────────────────────────────────────────────\n\n getMetadataSignedUrl(): Promise<ApiResponse<ApiMetadataSignedUrl>> {\n return this.get<ApiResponse<ApiMetadataSignedUrl>>(\"/v1/metadata/signed-url\");\n }\n\n uploadMetadata(metadata: Record<string, unknown>): Promise<ApiResponse<ApiMetadataUpload>> {\n return this.post<ApiResponse<ApiMetadataUpload>>(\"/v1/metadata/upload\", metadata);\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 // Content-Type is intentionally omitted — request() detects FormData and\n // lets the runtime set multipart/form-data with the correct boundary.\n return this.request<ApiResponse<ApiMetadataUpload>>(\"/v1/metadata/upload-file\", {\n method: \"POST\",\n body: formData,\n });\n }\n\n // ─── Portal (tenant self-service) ──────────────────────────────────────────\n\n getMe(): Promise<ApiResponse<ApiPortalMe>> {\n return this.get<ApiResponse<ApiPortalMe>>(\"/v1/portal/me\");\n }\n\n getApiKeys(): Promise<ApiResponse<ApiPortalKey[]>> {\n return this.get<ApiResponse<ApiPortalKey[]>>(\"/v1/portal/keys\");\n }\n\n createApiKey(label?: string): Promise<ApiResponse<ApiPortalKeyCreated>> {\n return this.post<ApiResponse<ApiPortalKeyCreated>>(\"/v1/portal/keys\", label ? { label } : {});\n }\n\n deleteApiKey(id: string): Promise<ApiResponse<{ id: string; status: string }>> {\n return this.del<ApiResponse<{ id: string; status: string }>>(`/v1/portal/keys/${id}`);\n }\n\n getUsage(): Promise<ApiResponse<ApiUsageDay[]>> {\n return this.get<ApiResponse<ApiUsageDay[]>>(\"/v1/portal/usage\");\n }\n\n getWebhooks(): Promise<ApiResponse<ApiWebhookEndpoint[]>> {\n return this.get<ApiResponse<ApiWebhookEndpoint[]>>(\"/v1/portal/webhooks\");\n }\n\n createWebhook(params: CreateWebhookParams): Promise<ApiResponse<ApiWebhookCreated>> {\n return this.post<ApiResponse<ApiWebhookCreated>>(\"/v1/portal/webhooks\", params);\n }\n\n deleteWebhook(id: string): Promise<ApiResponse<{ id: string; status: string }>> {\n return this.del<ApiResponse<{ id: string; status: string }>>(\n `/v1/portal/webhooks/${id}`\n );\n }\n\n // ─── Collection Claims ──────────────────────────────────────────────────────\n\n /**\n * Path 1: On-chain auto claim. Sends both x-api-key (tenant auth) and\n * Authorization: Bearer (Clerk JWT) simultaneously.\n */\n async claimCollection(\n contractAddress: string,\n walletAddress: string,\n clerkToken: string\n ): Promise<{ verified: boolean; collection?: ApiCollection; reason?: string }> {\n const url = `${this.baseUrl.replace(/\\/$/, \"\")}/v1/collections/claim`;\n const res = await fetch(url, {\n method: \"POST\",\n headers: {\n \"x-api-key\": this.baseHeaders[\"x-api-key\"] ?? \"\",\n \"Content-Type\": \"application/json\",\n \"Authorization\": `Bearer ${clerkToken}`,\n },\n body: JSON.stringify({ contractAddress, walletAddress }),\n });\n return this.checkResponse(res);\n }\n\n /**\n * Path 3: Manual off-chain claim request (email-based).\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 // ─── Collection Profiles ────────────────────────────────────────────────────\n\n async getCollectionProfile(contractAddress: string): Promise<ApiCollectionProfile | null> {\n const url = `${this.baseUrl.replace(/\\/$/, \"\")}/v1/collections/${this.addr(contractAddress)}/profile`;\n const res = await fetch(url, { headers: this.baseHeaders });\n return this.checkResponse<ApiCollectionProfile>(res, { allow404: true });\n }\n\n /**\n * Update collection profile. Requires Clerk JWT for ownership check.\n */\n async updateCollectionProfile(\n contractAddress: string,\n data: Partial<Omit<ApiCollectionProfile, \"contractAddress\" | \"chain\" | \"updatedBy\" | \"updatedAt\">>,\n clerkToken: string\n ): Promise<ApiCollectionProfile> {\n const url = `${this.baseUrl.replace(/\\/$/, \"\")}/v1/collections/${this.addr(contractAddress)}/profile`;\n const res = await fetch(url, {\n method: \"PATCH\",\n headers: {\n \"x-api-key\": this.baseHeaders[\"x-api-key\"] ?? \"\",\n \"Content-Type\": \"application/json\",\n \"Authorization\": `Bearer ${clerkToken}`,\n },\n body: JSON.stringify(data),\n });\n return this.checkResponse<ApiCollectionProfile>(res);\n }\n\n async getGatedContent(\n contractAddress: string,\n clerkToken: string\n ): Promise<{ title: string; url: string; type: string } | null> {\n const url = `${this.baseUrl.replace(/\\/$/, \"\")}/v1/collections/${this.addr(contractAddress)}/gated-content`;\n const res = await fetch(url, {\n headers: { ...this.baseHeaders, \"Authorization\": `Bearer ${clerkToken}` },\n });\n return this.checkResponse<{ title: string; url: string; type: string }>(res, { allow404: true, allow403: true });\n }\n\n // ─── Creator Profiles ───────────────────────────────────────────────────────\n\n /** List all creators with an approved username. */\n async 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 url = `${this.baseUrl.replace(/\\/$/, \"\")}/v1/creators?${params}`;\n const res = await fetch(url, { headers: this.baseHeaders });\n return this.checkResponse<ApiCreatorListResult>(res);\n }\n\n async getCreatorProfile(walletAddress: string): Promise<ApiCreatorProfile | null> {\n const url = `${this.baseUrl.replace(/\\/$/, \"\")}/v1/creators/${this.addr(walletAddress)}/profile`;\n const res = await fetch(url, { headers: this.baseHeaders });\n return this.checkResponse<ApiCreatorProfile>(res, { allow404: true });\n }\n\n /** Resolve a username slug to a creator profile (public). */\n async getCreatorByUsername(username: string): Promise<ApiCreatorProfile | null> {\n const url = `${this.baseUrl.replace(/\\/$/, \"\")}/v1/creators/by-username/${encodeURIComponent(username.toLowerCase().trim())}`;\n const res = await fetch(url, { headers: this.baseHeaders });\n return this.checkResponse<ApiCreatorProfile>(res, { allow404: true });\n }\n\n /**\n * Update creator profile. Requires Clerk JWT; wallet must match authenticated user.\n */\n async updateCreatorProfile(\n walletAddress: string,\n data: Partial<Omit<ApiCreatorProfile, \"walletAddress\" | \"chain\" | \"updatedAt\">>,\n clerkToken: string\n ): Promise<ApiCreatorProfile> {\n const url = `${this.baseUrl.replace(/\\/$/, \"\")}/v1/creators/${this.addr(walletAddress)}/profile`;\n const res = await fetch(url, {\n method: \"PATCH\",\n headers: {\n \"x-api-key\": this.baseHeaders[\"x-api-key\"] ?? \"\",\n \"Content-Type\": \"application/json\",\n \"Authorization\": `Bearer ${clerkToken}`,\n },\n body: JSON.stringify(data),\n });\n return this.checkResponse<ApiCreatorProfile>(res);\n }\n\n // ─── Collection Slug Claims ───────────────────────────────────────────────────\n\n /** Check if a collection slug is available (public, no auth). */\n async checkCollectionSlugAvailability(slug: string): Promise<{ available: boolean; reason?: string }> {\n const url = `${this.baseUrl.replace(/\\/$/, \"\")}/v1/collection-slug-claims/check/${encodeURIComponent(slug.toLowerCase().trim())}`;\n const res = await fetch(url, { headers: this.baseHeaders });\n return this.checkResponse<{ available: boolean; reason?: string }>(res);\n }\n\n /** Submit a slug claim for a collection. Requires Clerk JWT — caller must be the collection owner. */\n async submitCollectionSlugClaim(\n contractAddress: string,\n slug: string,\n clerkToken: string,\n notifyEmail?: string\n ): Promise<{ claim: ApiCollectionSlugClaim }> {\n const url = `${this.baseUrl.replace(/\\/$/, \"\")}/v1/collection-slug-claims`;\n const res = await fetch(url, {\n method: \"POST\",\n headers: {\n \"x-api-key\": this.baseHeaders[\"x-api-key\"] ?? \"\",\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${clerkToken}`,\n },\n body: JSON.stringify({ contractAddress, slug, notifyEmail }),\n });\n return this.checkResponse<{ claim: ApiCollectionSlugClaim }>(res);\n }\n\n /** Returns all slug claims submitted by the authenticated wallet. Requires Clerk JWT. */\n async getMyCollectionSlugClaims(clerkToken: string): Promise<{ claims: ApiCollectionSlugClaim[] }> {\n const url = `${this.baseUrl.replace(/\\/$/, \"\")}/v1/collection-slug-claims/me`;\n const res = await fetch(url, {\n headers: { ...this.baseHeaders, Authorization: `Bearer ${clerkToken}` },\n });\n return this.checkResponse<{ claims: ApiCollectionSlugClaim[] }>(res);\n }\n\n /** Resolve a collection slug to a full collection. Returns null if not found. */\n async getCollectionBySlug(slug: string): Promise<ApiCollection | null> {\n const url = `${this.baseUrl.replace(/\\/$/, \"\")}/v1/collections/by-slug/${encodeURIComponent(slug.toLowerCase().trim())}`;\n const res = await fetch(url, { headers: this.baseHeaders });\n return this.checkResponse<ApiCollection>(res, { allow404: true });\n }\n\n // ─── User Wallet ─────────────────────────────────────────────────────────────\n\n /**\n * Upsert the authenticated user's wallet address in the backend DB.\n * Call after onboarding when ChipiPay confirms the wallet address.\n * Requires Clerk JWT; no tenant API key needed.\n */\n /**\n * Frictionless wallet registration. Tenant API key only (no Clerk JWT required).\n * Idempotent — backend's ensureAccountForWallet upserts and upgrades existing\n * UNKNOWN walletType rows when a more specific value is supplied.\n */\n async registerUser(params: {\n walletAddress: string;\n // Free-form wallet-software label (\"braavos\" / \"ready\" / \"chipipay\" / …).\n // The backend lowercases it into Identity.provider and never gates on it\n // (07-identity §II) — so it's a plain string, not a closed enum.\n walletType?: string;\n appSource?: ApiAppSource;\n chain?: ApiChain;\n }): Promise<{\n accountId: string;\n publicId: string;\n walletAddress: string;\n chain: string;\n // The wallet identity's free-form provider label, echoed back from\n // Identity.provider (\"braavos\" / \"chipipay\" / \"unknown\" / …).\n provider: string;\n appSource: ApiAppSource;\n createdAt: string;\n }> {\n return this.post(\"/v1/users/register\", params);\n }\n\n async upsertMyWallet(\n clerkToken: string,\n options: {\n // Free-form provider label (see registerUser); lowercased into\n // Identity.provider by the backend, never gated on.\n walletType?: string;\n appSource?: ApiAppSource;\n // 07-identity §I: the Wallet identifier is (chain, address). v1\n // backend rejects anything other than STARKNET on this route (the\n // auth path can only prove Starknet ownership); the field exists\n // so the year-2 multichain shape is locked in.\n chain?: ApiChain;\n } = {},\n ): Promise<ApiUserWallet> {\n const url = `${this.baseUrl.replace(/\\/$/, \"\")}/v1/users/me`;\n const body: Record<string, string> = {\n walletType: options.walletType ?? \"UNKNOWN\",\n appSource: options.appSource ?? \"MEDIALANE_SDK\",\n };\n if (options.chain) body.chain = options.chain;\n const res = await fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Authorization\": `Bearer ${clerkToken}`,\n },\n body: JSON.stringify(body),\n });\n return this.checkResponse<ApiUserWallet>(res);\n }\n\n /**\n * Get the authenticated user's stored wallet address from the backend DB.\n * Returns null if the user has not completed onboarding yet.\n * Requires Clerk JWT; no tenant API key needed.\n */\n async getMyWallet(clerkToken: string): Promise<ApiUserWallet | null> {\n const url = `${this.baseUrl.replace(/\\/$/, \"\")}/v1/users/me`;\n const res = await fetch(url, {\n headers: { \"Authorization\": `Bearer ${clerkToken}` },\n });\n return this.checkResponse<ApiUserWallet>(res, { allow404: true });\n }\n\n // ─── Remix Licensing ─────────────────────────────────────────────────────────\n\n /**\n * Get public remixes of a token (open to everyone).\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 /**\n * Submit a custom remix offer for a token. Requires Clerk JWT.\n */\n submitRemixOffer(\n params: CreateRemixOfferParams,\n clerkToken: string\n ): Promise<ApiResponse<ApiRemixOffer>> {\n return this.request<ApiResponse<ApiRemixOffer>>(\"/v1/remix-offers\", {\n method: \"POST\",\n body: JSON.stringify(params),\n headers: { \"Authorization\": `Bearer ${clerkToken}` },\n });\n }\n\n /**\n * Submit an auto remix offer for a token with an open license. Requires Clerk JWT.\n */\n submitAutoRemixOffer(\n params: AutoRemixOfferParams,\n clerkToken: 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: { \"Authorization\": `Bearer ${clerkToken}` },\n });\n }\n\n /**\n * Record a self-remix (owner remixing their own token). Requires Clerk JWT.\n */\n confirmSelfRemix(\n params: ConfirmSelfRemixParams,\n clerkToken: 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: { \"Authorization\": `Bearer ${clerkToken}` },\n });\n }\n\n /**\n * List remix offers by role. Requires Clerk JWT.\n * role=\"creator\" — offers where you are the original creator.\n * role=\"requester\" — offers you made.\n */\n async getRemixOffers(\n query: ApiRemixOffersQuery,\n clerkToken: string\n ): Promise<ApiResponse<ApiRemixOffer[]>> {\n const params = new URLSearchParams({ role: query.role });\n if (query.page !== undefined) params.set(\"page\", String(query.page));\n if (query.limit !== undefined) params.set(\"limit\", String(query.limit));\n const url = `${this.baseUrl.replace(/\\/$/, \"\")}/v1/remix-offers?${params}`;\n const res = await fetch(url, {\n headers: { ...this.baseHeaders, \"Authorization\": `Bearer ${clerkToken}` },\n });\n return this.checkResponse<ApiResponse<ApiRemixOffer[]>>(res);\n }\n\n /**\n * Get a single remix offer. Clerk JWT optional (price/currency hidden for non-participants).\n */\n async getRemixOffer(id: string, clerkToken?: string): Promise<ApiResponse<ApiRemixOffer>> {\n const url = `${this.baseUrl.replace(/\\/$/, \"\")}/v1/remix-offers/${id}`;\n const headers: Record<string, string> = { ...this.baseHeaders };\n if (clerkToken) headers[\"Authorization\"] = `Bearer ${clerkToken}`;\n const res = await fetch(url, { headers });\n return this.checkResponse<ApiResponse<ApiRemixOffer>>(res);\n }\n\n /**\n * Creator approves a remix offer (authorises the requester to mint). Requires Clerk JWT.\n */\n confirmRemixOffer(\n id: string,\n params: ConfirmRemixOfferParams,\n clerkToken: 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: { \"Authorization\": `Bearer ${clerkToken}` },\n });\n }\n\n /**\n * Creator rejects a remix offer. Requires Clerk JWT.\n */\n rejectRemixOffer(id: string, clerkToken: string): Promise<ApiResponse<ApiRemixOffer>> {\n return this.request<ApiResponse<ApiRemixOffer>>(`/v1/remix-offers/${id}/reject`, {\n method: \"POST\",\n body: JSON.stringify({}),\n headers: { \"Authorization\": `Bearer ${clerkToken}` },\n });\n }\n\n /**\n * Requester extends the expiry of a pending remix offer by 1–30 days.\n * Requires Clerk JWT.\n */\n extendRemixOffer(id: string, days: number, clerkToken: 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: { \"Authorization\": `Bearer ${clerkToken}` },\n });\n }\n\n // ─── POP Protocol ──────────────────────────────────────────────────────────\n\n getPopCollections(opts: { page?: number; limit?: number; sort?: CollectionSort } = {}): Promise<ApiResponse<ApiCollection[]>> {\n return this.getCollections(opts.page ?? 1, opts.limit ?? 20, undefined, opts.sort, \"POP_PROTOCOL\");\n }\n\n async getPopEligibility(collection: string, wallet: string): Promise<PopClaimStatus> {\n const res = await this.get<{ data: PopClaimStatus }>(\n `/v1/pop/eligibility/${this.addr(collection)}/${this.addr(wallet)}`\n );\n return res.data;\n }\n\n async getPopEligibilityBatch(collection: string, wallets: string[]): Promise<PopBatchEligibilityItem[]> {\n const params = new URLSearchParams({ wallets: wallets.map((w) => this.addr(w)).join(\",\") });\n const res = await this.get<{ data: PopBatchEligibilityItem[] }>(\n `/v1/pop/eligibility/${this.addr(collection)}?${params}`\n );\n return res.data;\n }\n\n // ─── Coins (fungible — ERC-20 etc.) ───────────────────────────────────────────\n // Coins are a separate model from Collections (spec 2026-06-14). Price/liquidity\n // is read live from Ekubo (CreatorCoinService.getPrice), never from these.\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.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 // ─── Collection Drop ────────────────────────────────────────────────────────\n\n getDropCollections(opts: { page?: number; limit?: number; sort?: CollectionSort } = {}): Promise<ApiResponse<ApiCollection[]>> {\n return this.getCollections(opts.page ?? 1, opts.limit ?? 20, undefined, opts.sort, \"COLLECTION_DROP\");\n }\n\n async getDropMintStatus(collection: string, wallet: string): Promise<DropMintStatus> {\n const res = await this.get<{ data: DropMintStatus }>(\n `/v1/drop/mint-status/${this.addr(collection)}/${this.addr(wallet)}`\n );\n return res.data;\n }\n\n // ─── Rewards (v0.49.0) ─────────────────────────────────────────────────────\n // Scores are recomputed on a schedule by the backend (~15 min) — reads only.\n\n /** Score + level + progress + badges for one address (zeroed for unknown). */\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 /** Paginated XP leaderboard. */\n getRewardsLeaderboard(page = 1, limit = 50): Promise<ApiResponse<ApiRewardsLeaderboardEntry[]>> {\n return this.get<ApiResponse<ApiRewardsLeaderboardEntry[]>>(`/v1/rewards?page=${page}&limit=${limit}`);\n }\n\n /** Point-event history for an address. */\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 /** Reward configuration: level ladder, enabled action XP values, badge catalog. */\n async getRewardsConfig(): Promise<ApiRewardsConfig> {\n const res = await this.get<{ data: ApiRewardsConfig }>(`/v1/rewards/config`);\n return res.data;\n }\n\n /** Minimal level info for up to 50 addresses — one call per list page. */\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","export type IPType =\n | \"Audio\"\n | \"Art\"\n | \"Documents\"\n | \"NFT\"\n | \"Video\"\n | \"Photography\"\n | \"Patents\"\n | \"Posts\"\n | \"Publications\"\n | \"RWA\"\n | \"Software\"\n | \"Custom\";\n\nexport type CollectionSort = \"recent\" | \"supply\" | \"floor\" | \"volume\" | \"name\";\n\nexport type CollectionTokensSort = \"recent\" | \"oldest\" | \"name\" | \"price\";\n\n/** Bounded capability set (05-service-model §III). Expand the union when a\n * service needs behavior outside it — never make it free-form. */\nexport type ServiceCapability =\n | \"list\" | \"buy\" | \"make_offer\" | \"cancel\"\n | \"transfer\" | \"burn\"\n | \"mint\" | \"claim\" | \"airdrop\"\n | \"remix\" | \"license\"\n | \"subscribe\" | \"redeem\"\n | \"launch\" | \"swap\"\n | \"sponsor\";\n\n/** A service that bakes enforcement into its own contract declares it here\n * (04-licensing-model §V, 05-service-model §IV). Absence/all-falsey =\n * soft enforcement (the 00-principles §9 default). */\nexport interface EnforcementDeclaration {\n royalty?: \"erc2981\" | \"service-split\" | \"none\";\n escrow?: boolean;\n timeLock?: boolean;\n revocable?: boolean;\n}\n\n/** An on-chain event the service emits. The indexer consumes this list to\n * decide what to poll and how to parse — the year-2 \"data-driven event\n * parser registry\" foundation (02-protocol-app-split §V).\n *\n * The Cairo selector is derivable from `name` via\n * `starknet.hash.getSelectorFromName(name)` — not stored to avoid\n * duplication and keep the SDK runtime-free of pre-computed hashes.\n */\nexport interface ServiceEventDeclaration {\n /** Cairo event struct name (e.g. \"OrderCreated\", \"CollectionCreated\"). */\n name: string;\n /**\n * Where this event is emitted:\n * - \"factory\": at the service's `onchain.factoryAddress` (fixed address).\n * Examples: marketplace OrderCreated, factory CollectionCreated.\n * - \"instance\": at the address of each deployed collection contract\n * (variable; the indexer iterates discovered instances).\n * Examples: ERC-721 Transfer, POP AllowlistUpdated.\n */\n emittedBy: \"factory\" | \"instance\";\n /**\n * Polling cadence the indexer should use:\n * - \"fast\" (default): every indexer tick (~6s). Right for low-volume\n * protocol events like order/factory events.\n * - \"slow\": a separate slower loop (~2min). Right for\n * high-volume per-instance events like Transfer\n * and AllowlistUpdated — polling them every tick\n * against every known instance is RPC-expensive.\n */\n poll?: \"fast\" | \"slow\";\n}\n\n/** Declarative description of a service (05-service-model §II).\n * SDK-resident in v1; on-chain registry in year 2. */\nexport interface ServiceDefinition {\n /** Stable kebab-case id. NO version number (05 §II). */\n id: string;\n displayName: string;\n description: string;\n standard: \"ERC721\" | \"ERC1155\" | \"ERC20\" | \"UNKNOWN\";\n provenance: \"MEDIALANE\" | \"EXTERNAL\";\n onchain?: Partial<Record<import(\"../chains.js\").Chain, {\n factoryAddress?: string;\n classHash?: string;\n startBlock?: number;\n }>>;\n /** Drives the dapp asset/collection page variant. */\n uiVariant: string;\n capabilities: ServiceCapability[];\n /** Events the indexer should poll + parse for this service.\n * Optional during the year-1 transition — backend hand-coded pollers\n * (medialane-backend/src/mirror/poller.ts) take precedence today.\n * Populated here so consumers and the future data-driven indexer can\n * read what events a service emits without code-spelunking. */\n events?: ServiceEventDeclaration[];\n metadataSchema?: {\n requiredTraits?: string[];\n /** Canonical platform default is \"CC BY-SA\" (04-licensing-model §III). */\n licenseDefault?: string;\n enforcement?: EnforcementDeclaration;\n };\n}\n\nexport interface ApiCollectionsQuery {\n page?: number;\n limit?: number;\n isKnown?: boolean;\n sort?: CollectionSort;\n owner?: string;\n /** Filter by service id. */\n service?: string;\n}\n\n/**\n * Order lifecycle states. **Four canonical values** per `01-core-model §V`.\n *\n * The legacy `\"COUNTER_OFFERED\"` value was removed in 0.23.0 (audit P0-1\n * Phase D). Counter-offers are linked orders via `parentOrderHash`, not a\n * third lifecycle state on the parent bid. Use `ApiOrder.hasActiveCounterOffer`\n * (added in 0.22.0) for the \"this bid has been countered\" affordance.\n */\nexport type OrderStatus = \"ACTIVE\" | \"FULFILLED\" | \"CANCELLED\" | \"EXPIRED\";\nexport type SortOrder = \"price_asc\" | \"price_desc\" | \"recent\";\nexport type ActivityType = \"mint\" | \"transfer\" | \"sale\" | \"listing\" | \"offer\" | \"cancelled\";\nexport type IntentType = \"CREATE_LISTING\" | \"MAKE_OFFER\" | \"FULFILL_ORDER\" | \"CANCEL_ORDER\" | \"MINT\" | \"CREATE_COLLECTION\" | \"COUNTER_OFFER\";\nexport type IntentStatus = \"PENDING\" | \"SIGNED\" | \"SUBMITTED\" | \"CONFIRMED\" | \"FAILED\" | \"EXPIRED\";\nexport type WebhookEventType = \"ORDER_CREATED\" | \"ORDER_FULFILLED\" | \"ORDER_CANCELLED\" | \"TRANSFER\";\nexport type WebhookStatus = \"ACTIVE\" | \"DISABLED\";\nexport type ApiKeyStatus = \"ACTIVE\" | \"REVOKED\";\nexport type TenantPlan = \"FREE\" | \"PREMIUM\";\n\n// ─── Shared ───────────────────────────────────────────────────────────────────\n\nexport interface ApiMeta {\n page: number;\n limit: number;\n total?: number;\n}\n\nexport interface ApiResponse<T> {\n data: T;\n meta?: ApiMeta;\n}\n\n// ─── Orders ───────────────────────────────────────────────────────────────────\n\n/** Cross-chain read filter — a concrete chain, or \"all\" for aggregation\n * (platform-federation spec §2.3). Omitted = the backend default (STARKNET). */\nexport type ChainFilter = import(\"../chains.js\").Chain | \"all\";\n\nexport interface ApiOrdersQuery {\n chain?: ChainFilter;\n status?: OrderStatus;\n collection?: string;\n currency?: string;\n sort?: SortOrder;\n page?: number;\n limit?: number;\n offerer?: string;\n minPrice?: string;\n maxPrice?: string;\n}\n\nexport interface ApiOrderOffer {\n itemType: string;\n token: string;\n identifier: string;\n startAmount: string;\n endAmount: string;\n}\n\nexport interface ApiOrderConsideration extends ApiOrderOffer {\n recipient: string;\n}\n\nexport interface ApiOrderPrice {\n raw: string | null;\n formatted: string | null;\n currency: string | null;\n decimals: number;\n}\n\nexport interface ApiOrderTxHash {\n created: string | null;\n fulfilled: string | null;\n cancelled: string | null;\n}\n\nexport interface ApiOrderTokenMeta {\n name: string | null;\n image: string | null;\n description: string | null;\n}\n\nexport interface ApiOrder {\n id: string;\n chain: string;\n orderHash: string;\n offerer: string;\n offer: ApiOrderOffer;\n consideration: ApiOrderConsideration;\n startTime: string;\n endTime: string;\n status: OrderStatus;\n fulfiller: string | null;\n nftContract: string | null;\n nftTokenId: string | null;\n price: ApiOrderPrice;\n txHash: ApiOrderTxHash;\n createdBlockNumber: string;\n /** ERC-1155 only: units still available after the last partial fill. Null for ERC-721 or unfilled orders. */\n remainingAmount: string | null;\n createdAt: string;\n updatedAt: string;\n /** Embedded token metadata (name/image/description). Null when not yet indexed. */\n token: ApiOrderTokenMeta | null;\n /** Set when this is a counter-offer listing — points to the original buyer bid.\n * Now always emitted by the backend (was conditional); kept optional in the\n * type for back-compat with older response shapes. */\n parentOrderHash?: string | null;\n /** Optional seller message accompanying a counter-offer. */\n counterOfferMessage?: string | null;\n /** True when this order is a bid (ERC-20 offer) AND at least one ACTIVE counter\n * exists with `parentOrderHash = this.orderHash`. Set by endpoints that compute\n * it (currently `GET /v1/orders/user/:address` and `GET /v1/orders/:orderHash`);\n * undefined on endpoints that don't.\n *\n * Use this instead of `status === \"COUNTER_OFFERED\"` for \"this bid has been\n * countered\" affordances. The status pattern is being phased out per\n * 01-core-model §V — counter-offers are linked orders, not a lifecycle state. */\n hasActiveCounterOffer?: boolean;\n}\n\n// ─── IP / IPFS Metadata types ──────────────────────────────────────────────────\n\n/**\n * A single OpenSea-compatible ERC-721 attribute.\n * Medialane embeds licensing, provenance, and IP metadata as attributes.\n */\nexport interface IpAttribute {\n trait_type: string;\n value: string;\n}\n\n/**\n * Full on-chain + IPFS metadata for a Medialane IP NFT.\n * Conforms to the OpenSea ERC-721 metadata standard and embeds\n * Berne Convention-compatible licensing data in `attributes`.\n *\n * Common licensing attributes (all optional — absent on pre-v2 tokens):\n * License · Commercial Use · Derivatives · Attribution · Territory\n * AI Policy · Royalty · Standard (\"Berne Convention\") · Registration\n */\nexport interface IpNftMetadata {\n name: string;\n description?: string;\n image?: string | null;\n external_url?: string;\n attributes?: IpAttribute[];\n /** Populated by the indexer for fast access — not stored in IPFS */\n ipType?: string | null;\n licenseType?: string | null;\n commercialUse?: string | null;\n derivatives?: string | null;\n attribution?: string | null;\n territory?: string | null;\n aiPolicy?: string | null;\n royalty?: string | null;\n registration?: string | null;\n}\n\n// ─── Tokens ───────────────────────────────────────────────────────────────────\n\n/** Indexed token metadata as returned by the Medialane API. */\nexport interface ApiTokenMetadata {\n name: string | null;\n description: string | null;\n image: string | null;\n /** Parsed OpenSea-standard attributes array. Null when metadata hasn't been fetched. */\n attributes: IpAttribute[] | null;\n /** Short-circuit fields extracted from attributes by the indexer */\n ipType: string | null;\n licenseType: string | null;\n commercialUse: string | null;\n derivatives: string | null;\n attribution: string | null;\n territory: string | null;\n aiPolicy: string | null;\n royalty: string | null;\n registration: string | null;\n author: string | null;\n}\n\n/** Per-holder balance entry. Present for ERC-1155 (multi-holder); single entry for ERC-721. */\nexport interface ApiTokenBalance {\n owner: string;\n /** Quantity held. Always \"1\" for ERC-721. */\n amount: string;\n}\n\nexport interface ApiToken {\n id: string;\n chain: string;\n contractAddress: string;\n tokenId: string;\n /** @deprecated Use `balances` for ownership checks — always null after ERC-1155 migration. */\n owner: string | null;\n tokenUri: string | null;\n metadataStatus: \"PENDING\" | \"FETCHING\" | \"FETCHED\" | \"FAILED\";\n /** Token standard derived from the parent collection. Use this to determine ERC-721 vs ERC-1155 behavior. */\n standard: \"ERC721\" | \"ERC1155\" | \"UNKNOWN\";\n metadata: ApiTokenMetadata;\n /** Current holders with amounts. Only present on single-token fetches; null on list responses. */\n balances: ApiTokenBalance[] | null;\n activeOrders: ApiOrder[];\n createdAt: string;\n updatedAt: string;\n}\n\n// ─── Collections ──────────────────────────────────────────────────────────────\n\nexport interface ApiCollection {\n id: string;\n chain: string;\n contractAddress: string;\n collectionId: string | null;\n name: string | null;\n symbol: string | null;\n description: string | null;\n image: string | null;\n owner: string | null;\n startBlock: string;\n metadataStatus: \"PENDING\" | \"FETCHING\" | \"FETCHED\" | \"FAILED\";\n /** Token standard detected via ERC-165. Collection is NFT-only since the\n * 2026-06-14 coin split — fungible coins are `ApiCoin`, served by getCoins(). */\n standard: \"ERC721\" | \"ERC1155\";\n isKnown: boolean;\n /** Hidden by ops/admin (content moderation). When true, list endpoints\n * already filter the row out; single-collection fetches still return\n * it so the UI can render a \"hidden\" banner instead of a 404. */\n isHidden: boolean;\n /** Promoted on homepage / browse surfaces. */\n isFeatured: boolean;\n /** Stable Medialane service ID, or null for external collections.\n * Resolve via getService() (05-service-model). Primary field. */\n service: string | null;\n claimedBy: string | null;\n profile?: ApiCollectionProfile | null;\n floorPrice: string | null;\n totalVolume: string | null;\n holderCount: number | null;\n totalSupply: number | null;\n createdAt: string;\n updatedAt: string;\n}\n\n/** A fungible coin (ERC-20 today; SPL/etc. later). Distinct from ApiCollection:\n * a coin has a supply + decimals + a market price (read live from Ekubo), no\n * tokens, no orders. Served by getCoins()/getCoin() (spec 2026-06-14). */\nexport interface ApiCoin {\n id: string;\n chain: string;\n contractAddress: string;\n standard: \"ERC20\";\n /** \"creator-coin\" | \"external-erc20\" */\n service: string;\n name: string | null;\n symbol: string | null;\n decimals: number;\n /** Fungible supply as a decimal string — NOT an item count. */\n totalSupply: string | null;\n description: string | null;\n image: string | null;\n creator: string | null;\n startBlock: string;\n isHidden: boolean;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface ApiCoinsQuery {\n chain?: ChainFilter;\n page?: number;\n limit?: number;\n /** Filter by coin service id (\"creator-coin\" | \"external-erc20\"). */\n service?: string;\n}\n\n// ─── Activities ───────────────────────────────────────────────────────────────\n\nexport interface ApiActivityPrice {\n raw: string | null;\n formatted: string | null;\n currency: string | null;\n}\n\nexport interface ApiActivity {\n type: ActivityType;\n // Transfer fields\n contractAddress?: string;\n tokenId?: string;\n from?: string;\n to?: string;\n blockNumber?: string;\n /** ERC-1155 quantity (transfer/mint rows). \"1\" for ERC-721. */\n amount?: string;\n // Order fields\n orderHash?: string;\n nftContract?: string;\n nftTokenId?: string;\n offerer?: string;\n fulfiller?: string | null;\n price?: ApiActivityPrice;\n /** Token standard — present on order rows. */\n tokenStandard?: \"ERC721\" | \"ERC1155\";\n txHash: string | null;\n timestamp: string;\n /** Batch-enriched token metadata — avoids per-row fetches. */\n token?: { name: string | null; image: string | null } | null;\n}\n\nexport interface ApiActivitiesQuery {\n chain?: ChainFilter;\n type?: ActivityType;\n page?: number;\n limit?: number;\n}\n\n// ─── Comments ─────────────────────────────────────────────────────────────────\n\nexport interface ApiComment {\n id: string;\n chain: string; // \"starknet\"\n contractAddress: string; // normalized 0x-padded Starknet address\n tokenId: string;\n author: string; // normalized 0x-padded Starknet address\n content: string; // sanitized plain text\n txHash: string | null;\n blockNumber: string; // BigInt serialized as string\n postedAt: string; // ISO 8601 derived from blockTimestamp — use for display\n}\n\n// ─── Search ───────────────────────────────────────────────────────────────────\n\nexport interface ApiSearchTokenResult {\n contractAddress: string;\n tokenId: string;\n name: string | null;\n image: string | null;\n owner: string;\n metadataStatus: string;\n}\n\nexport interface ApiSearchCollectionResult {\n contractAddress: string;\n name: string | null;\n image: string | null;\n totalSupply: number | null;\n floorPrice: string | null;\n holderCount: number | null;\n}\n\nexport interface ApiSearchCreatorResult {\n walletAddress: string;\n username: string | null;\n displayName: string | null;\n bio: string | null;\n avatarImage: string | null;\n}\n\nexport interface ApiSearchResult {\n tokens: ApiSearchTokenResult[];\n collections: ApiSearchCollectionResult[];\n creators: ApiSearchCreatorResult[];\n}\n\n// ─── Intents ──────────────────────────────────────────────────────────────────\n\nexport interface ApiIntent {\n id: string;\n chain: string;\n type: IntentType;\n status: IntentStatus;\n requester: string;\n typedData: unknown;\n calls: unknown;\n signature: string[];\n txHash: string | null;\n orderHash: string | null;\n /** Set on COUNTER_OFFER intents — the original bid order hash being countered. */\n parentOrderHash?: string | null;\n /** Optional seller message on counter-offer intents. */\n counterOfferMessage?: string | null;\n expiresAt: string;\n createdAt: string;\n updatedAt: string;\n}\n\n/** A single Starknet call as returned in intent calldata. */\nexport interface IntentCall {\n contractAddress: string;\n entrypoint: string;\n calldata: string[];\n}\n\n/**\n * Response from any `createXIntent` call. Discriminated on `requiresSignature`:\n * • true — SNIP-12 intent (listing / offer / cancel / counter-offer). Sign\n * `typedData`, then call `submitIntentSignature(id, sig)` to obtain\n * the executable calls.\n * • false — prebuilt intent (fulfill / mint / create-collection). `calls` are\n * ready to execute directly; there is no signature step.\n *\n * The discriminant makes the wrong access a compile error: `typedData` does not\n * exist on the `false` variant, nor `calls` on the `true` variant. Consumers\n * MUST narrow on `requiresSignature` before reading either.\n */\nexport type ApiIntentCreated =\n | { id: string; expiresAt: string; requiresSignature: true; typedData: unknown }\n | { id: string; expiresAt: string; requiresSignature: false; calls: IntentCall[] };\n\nexport interface CreateListingIntentParams {\n offerer: string;\n nftContract: string;\n tokenId: string;\n currency: string;\n price: string;\n endTime: number;\n salt?: string;\n /** Number of units to list — required for ERC-1155, omit for ERC-721. */\n amount?: string;\n}\n\nexport interface MakeOfferIntentParams {\n offerer: string;\n nftContract: string;\n tokenId: string;\n currency: string;\n price: string;\n endTime: number;\n salt?: string;\n /** Caller hint — \"ERC1155\" creates the bid on the ERC-1155 marketplace. */\n tokenStandard?: string;\n /** ERC-1155 only: number of editions requested. Defaults to 1. */\n quantity?: string;\n}\n\nexport interface FulfillOrderIntentParams {\n fulfiller: string;\n orderHash: string;\n /** Caller hint — \"ERC1155\" forces 1155 routing even if the order isn't in the DB yet */\n tokenStandard?: string;\n /** ERC-1155 only: units to purchase (1 ≤ quantity ≤ remaining_amount). Defaults to 1. */\n quantity?: string;\n}\n\nexport interface CancelOrderIntentParams {\n offerer: string;\n orderHash: string;\n /** Caller hint — \"ERC1155\" forces 1155 routing even if the order isn't in the DB yet */\n tokenStandard?: string;\n}\n\nexport interface CreateMintIntentParams {\n /** Collection owner wallet address — must be the collection owner on-chain */\n owner: string;\n collectionId: string;\n recipient: string;\n tokenUri: string;\n /**\n * EIP-2981 secondary-sale royalty in basis points (0–10_000). Set once at mint;\n * receiver is the immutable creator. Required since MIP v0.4.0 — pass 0 for none.\n */\n royaltyBps: number;\n /** Optional: override the default collection contract address */\n collectionContract?: string;\n}\n\nexport interface CreateCollectionIntentParams {\n owner: string;\n name: string;\n symbol: string;\n /** Optional description stored server-side and surfaced on the collection page. */\n description?: string;\n /** Optional IPFS image URI (ipfs://...) for the collection cover image. */\n image?: string;\n /** Base URI for token metadata. Defaults to empty string if not provided. */\n baseUri?: string;\n /** Optional: override the default collection contract address */\n collectionContract?: string;\n}\n\nexport interface CreateCounterOfferIntentParams {\n /** Wallet address of the NFT owner making the counter-offer. */\n sellerAddress: string;\n /** Order hash of the original buyer bid being countered. */\n originalOrderHash: string;\n /** Counter price as a raw wei integer string (not human-readable). */\n priceRaw: string;\n /** Duration in seconds the counter-offer will be valid (3600–2592000). */\n durationSeconds: number;\n /** Optional message from the seller to the buyer. Max 500 chars. */\n message?: string;\n}\n\nexport interface ApiCounterOffersQuery {\n /** Original bid order hash — returns the counter-offer for this specific bid. */\n originalOrderHash?: string;\n /** Seller address — returns all counter-offers sent by this seller. */\n sellerAddress?: string;\n page?: number;\n limit?: number;\n}\n\n// ─── Remix Licensing ──────────────────────────────────────────────────────────\n\nexport const OPEN_LICENSES = [\"CC0\", \"CC BY\", \"CC BY-SA\", \"CC BY-NC\"] as const;\nexport type OpenLicense = (typeof OPEN_LICENSES)[number];\n\nexport type RemixOfferStatus =\n | \"PENDING\"\n | \"AUTO_PENDING\"\n | \"APPROVED\"\n | \"COMPLETED\"\n | \"REJECTED\"\n | \"EXPIRED\"\n | \"SELF_MINTED\";\n\nexport interface ApiRemixOfferPrice {\n raw: string;\n formatted: string;\n currency: string;\n decimals: number;\n}\n\nexport interface ApiRemixOffer {\n id: string;\n status: RemixOfferStatus;\n originalContract: string;\n originalTokenId: string;\n creatorAddress: string;\n requesterAddress: string | null;\n message?: string | null;\n /** Visible only to creator and requester — includes formatted price */\n price?: ApiRemixOfferPrice;\n licenseType: string;\n commercial: boolean;\n derivatives: boolean;\n royaltyPct: number | null;\n approvedCollection: string | null;\n remixContract: string | null;\n remixTokenId: string | null;\n orderHash: string | null;\n createdAt: string;\n expiresAt: string;\n updatedAt: string;\n}\n\n/** Public remix record — price/currency omitted for non-participants */\nexport interface ApiPublicRemix {\n id: string;\n remixContract: string | null;\n remixTokenId: string | null;\n licenseType: string;\n commercial: boolean;\n derivatives: boolean;\n createdAt: string;\n}\n\nexport interface CreateRemixOfferParams {\n originalContract: string;\n originalTokenId: string;\n licenseType: string;\n commercial: boolean;\n derivatives: boolean;\n royaltyPct?: number;\n proposedPrice?: string;\n proposedCurrency?: string;\n message?: string;\n /** Offer validity in days (server default applies if omitted) */\n expiresInDays?: number;\n}\n\nexport interface AutoRemixOfferParams {\n originalContract: string;\n originalTokenId: string;\n licenseType: string;\n}\n\nexport interface ConfirmSelfRemixParams {\n originalContract: string;\n originalTokenId: string;\n remixContract: string;\n remixTokenId: string;\n /** On-chain transaction hash of the mint tx */\n txHash?: string;\n licenseType: string;\n commercial: boolean;\n derivatives: boolean;\n royaltyPct?: number;\n}\n\nexport interface ConfirmRemixOfferParams {\n approvedCollection: string;\n remixContract: string;\n remixTokenId: string;\n orderHash?: string;\n}\n\nexport interface ApiRemixOffersQuery {\n /** \"creator\" = offers where you are the original creator; \"requester\" = offers you made */\n role: \"creator\" | \"requester\";\n page?: number;\n limit?: number;\n}\n\n// ─── Metadata ─────────────────────────────────────────────────────────────────\n\nexport interface ApiMetadataSignedUrl {\n url: string;\n}\n\nexport interface ApiMetadataUpload {\n cid: string;\n url: string;\n}\n\n// ─── Portal (tenant self-service) ─────────────────────────────────────────────\n\nexport interface ApiPortalMe {\n id: string;\n name: string;\n email: string;\n plan: TenantPlan;\n status: string;\n}\n\nexport interface ApiPortalKey {\n id: string;\n prefix: string;\n label: string;\n status: ApiKeyStatus;\n lastUsedAt: string | null;\n createdAt: string;\n}\n\nexport interface ApiPortalKeyCreated {\n id: string;\n prefix: string;\n label: string | null;\n /** Plaintext key — shown ONCE at creation */\n plaintext: string;\n}\n\nexport interface ApiUsageDay {\n day: string;\n requests: number;\n}\n\nexport interface ApiWebhookEndpoint {\n id: string;\n url: string;\n events: WebhookEventType[];\n status: WebhookStatus;\n createdAt: string;\n}\n\nexport interface ApiWebhookCreated extends ApiWebhookEndpoint {\n /** Signing secret — shown ONCE at creation, not stored in plaintext */\n secret: string;\n}\n\nexport interface CreateWebhookParams {\n url: string;\n events: WebhookEventType[];\n label?: string;\n}\n\n// ─── Collection & Creator Profiles ────────────────────────────────────────────\n\nexport interface ApiCollectionProfile {\n contractAddress: string;\n chain: string;\n displayName: string | null;\n description: string | null;\n image: string | null;\n bannerImage: string | null;\n websiteUrl: string | null;\n twitterUrl: string | null;\n discordUrl: string | null;\n telegramUrl: string | null;\n hasGatedContent: boolean;\n gatedContentTitle: string | null;\n slug: string | null;\n updatedBy: string | null;\n updatedAt: string;\n}\n\nexport interface ApiCollectionSlugClaim {\n id: string;\n slug: string;\n contractAddress: string;\n chain: string;\n walletAddress: string;\n status: \"PENDING\" | \"APPROVED\" | \"REJECTED\";\n adminNotes: string | null;\n notifyEmail: string | null;\n reviewedAt: string | null;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface ApiCreatorProfile {\n walletAddress: string;\n chain: string;\n username: string | null;\n displayName: string | null;\n bio: string | null;\n avatarImage: string | null;\n bannerImage: string | null;\n /** Computed fallback used by the creator-list / creator-page endpoints\n * ONLY when both `avatarImage` and `bannerImage` are null: image of\n * any collection owned by this creator. Undefined on profile-detail\n * endpoints where this lookup isn't performed. UI may use this to\n * populate hero banners without an extra fetch. */\n collectionImage?: string | null;\n websiteUrl: string | null;\n twitterUrl: string | null;\n discordUrl: string | null;\n telegramUrl: string | null;\n updatedAt: string;\n}\n\nexport interface ApiCreatorListResult {\n creators: ApiCreatorProfile[];\n total: number;\n page: number;\n limit: number;\n}\n\n// ─── User Wallet ───────────────────────────────────────────────────────────────\n\nexport type ApiAppSource =\n | \"MEDIALANE_STARKNET\" // the Starknet dapp (renamed from MEDIALANE_DAPP — the platform is multichain)\n | \"MEDIALANE_IO\"\n | \"MEDIALANE_PORTAL\"\n | \"MEDIALANE_SDK\"\n // Deprecated alias for MEDIALANE_STARKNET. The backend still accepts it (normalizes\n // to MEDIALANE_STARKNET) so existing apps keep working; migrate to MEDIALANE_STARKNET\n // and drop this in a later major.\n | \"MEDIALANE_DAPP\";\n\n// 07-identity §I: the Wallet identifier is (chain, address). Mirrors\n// the backend Chain enum. v1 callers only ever pass STARKNET; the rest\n// are present so the type doesn't need a breaking change when SIWE/SIWB\n// authentication lands and other chains become callable.\nexport type ApiChain = \"STARKNET\" | \"ETHEREUM\" | \"SOLANA\" | \"BASE\" | \"BITCOIN\";\n\nexport interface ApiUserWallet {\n walletAddress: string;\n}\n\n// ─── Collection Claims ─────────────────────────────────────────────────────────\n\nexport interface ApiCollectionClaim {\n id: string;\n contractAddress: string;\n chain: string;\n claimantAddress: string | null;\n status: \"PENDING\" | \"AUTO_APPROVED\" | \"APPROVED\" | \"REJECTED\";\n verificationMethod: \"ONCHAIN\" | \"SIGNATURE\" | \"MANUAL\";\n createdAt: string;\n}\n\nexport interface ApiAdminCollectionClaim extends ApiCollectionClaim {\n claimantEmail: string | null;\n notes: string | null;\n adminNotes: string | null;\n reviewedBy: string | null;\n reviewedAt: string | null;\n updatedAt: string;\n}\n\n// ─── POP Protocol ──────────────────────────────────────────────────────────────\n\nexport interface PopClaimStatus {\n isEligible: boolean;\n hasClaimed: boolean;\n tokenId: string | null;\n}\n\nexport interface PopBatchEligibilityItem extends PopClaimStatus {\n wallet: string;\n}\n\nexport type PopEventType =\n | \"Conference\"\n | \"Bootcamp\"\n | \"Workshop\"\n | \"Hackathon\"\n | \"Meetup\"\n | \"Course\"\n | \"Other\";\n\n// ─── Collection Drop ───────────────────────────────────────────────────────────\n\nexport interface DropMintStatus {\n mintedByWallet: number;\n totalMinted: number;\n}\n\n// ─── Rewards (v0.49.0) ─────────────────────────────────────────────────────────\n\nexport interface ApiRewardsBadge {\n key: string;\n name: string;\n description: string;\n icon: string;\n color: string;\n category: string;\n}\n\nexport interface ApiRewardsLevel {\n level: number;\n name: string;\n xpRequired: number;\n badgeColor: string;\n description: string | null;\n}\n\nexport interface ApiUserRewards {\n address: string;\n accountId: string | null;\n publicId: string | null;\n totalXp: number;\n currentLevel: number;\n currentLevelName: string;\n badgeColor: string;\n nextLevel: { level: number; name: string; xpRequired: number } | null;\n progressPct: number;\n breakdown: Record<string, number>;\n badges: ApiRewardsBadge[];\n computedAt: string | null;\n}\n\nexport interface ApiRewardsLeaderboardEntry {\n rank: number;\n address: string;\n accountId: string | null;\n publicId: string | null;\n totalXp: number;\n currentLevel: number;\n currentLevelName: string;\n badgeColor: string;\n}\n\nexport interface ApiRewardsConfig {\n levels: ApiRewardsLevel[];\n actions: { type: string; label: string; xp: number; dailyCap: number | null }[];\n badges: ApiRewardsBadge[];\n}\n\nexport interface ApiRewardsBatchEntry {\n address: string;\n totalXp: number;\n currentLevel: number;\n currentLevelName: string;\n badgeColor: string;\n}\n\nexport interface ApiPointEvent {\n id: string;\n actionType: string;\n xp: number;\n multiplier: number;\n finalXp: number;\n txHash: string | null;\n createdAt: string;\n}\n","import { getCoordinates } from \"./chains.js\";\n\n// Flat per-chain contract constants. Chain-named (each contract is deployed on a\n// specific chain), derived from the chains.ts registry so there is one source.\nconst SN = getCoordinates(\"STARKNET\");\n\n// ── Marketplace ───────────────────────────────────────────────────────────────\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\n// ── Collections ───────────────────────────────────────────────────────────────\nexport const STARKNET_COLLECTION_721_CONTRACT = SN.collection721!;\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\n// ── POP / Drop / Comments ─────────────────────────────────────────────────────\nexport const STARKNET_POP_FACTORY_CONTRACT = SN.popFactory!;\nexport const STARKNET_POP_COLLECTION_CLASS_HASH = SN.popCollectionClassHash!;\nexport const STARKNET_DROP_FACTORY_CONTRACT = SN.dropFactory!;\nexport const STARKNET_DROP_COLLECTION_CLASS_HASH = SN.dropCollectionClassHash!;\nexport const STARKNET_NFTCOMMENTS_CONTRACT = SN.nftComments!;\n\n// ── IP Tickets / IP Club / IP Sponsorship ─────────────────────────────────────\n// Not yet deployed — these resolve to `undefined` at runtime until chains.ts's\n// STARKNET coordinates are populated (Phase 3/4 deploy). The `!` assertion\n// mirrors the existing convention above; falsy-guard callers (`if (X && ...)`)\n// still behave correctly regardless.\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\n// ── Creator Coin (Ekubo) ──────────────────────────────────────────────────────\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!;\nexport const STARKNET_EKUBO_CORE = SN.ekuboCore!;\n\n// ── Tokens (chain-agnostic) ───────────────────────────────────────────────────\nexport const SUPPORTED_TOKENS = [\n {\n // Circle-native USDC on Starknet (canonical)\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\n/** Default currency for listings and offers — Circle-native USDC on Starknet. */\nexport const DEFAULT_CURRENCY: SupportedTokenSymbol = \"USDC\";\n","import type { ServiceDefinition, ServiceCapability } from \"../types/api.js\";\nimport { getStarknetCoordinates } from \"../chains.js\";\n\n// The registry re-projects a service's chain coordinates into the generic\n// `onchain` shape (factoryAddress/classHash/startBlock). Single source = the\n// chain registry. Only STARKNET is populated today.\nconst SN = getStarknetCoordinates(\"STARKNET\");\n\n/**\n * The Medialane service registry (05-service-model §II, §VI).\n * Canonical long-form IDs (01-core-model §III). SDK-resident in v1;\n * on-chain registry later (08-dao-governance §IV).\n *\n * `onchain` is keyed per chain (spec 2026-06-13 §3.1, Decision A): the SDK\n * registry is the single source of a service's coordinates on each chain.\n * Only STARKNET is populated today; adding a chain adds a key here.\n *\n * Phase 2B.2 of the service-model refactor. `ip-erc721` has no dedicated\n * on-chain constant in src/constants.ts, so its `onchain` is omitted rather\n * than invented (the genesis contract address ships with that service).\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 // Per-instance ERC-721 Transfer emitted by each deployed collection; not\n // yet declared here because the indexer polls discovered instances on a\n // slow schedule. Plan 2026-05-24-data-driven-event-registry.md covers\n // the migration.\n ],\n metadataSchema: { licenseDefault: \"CC BY-SA\" },\n },\n \"ip-erc721\": {\n id: \"ip-erc721\",\n displayName: \"Programmable IP (genesis)\",\n description: \"One shared ERC-721 contract; many wallets mint genesis pieces.\",\n standard: \"ERC721\",\n provenance: \"MEDIALANE\",\n uiVariant: \"standard\",\n capabilities: [\"list\", \"buy\", \"make_offer\", \"cancel\", \"transfer\", \"mint\", \"remix\", \"license\"],\n // No factory — single shared contract. Events declared when the genesis\n // contract address is wired into onchain.STARKNET.factoryAddress here.\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 { name: \"AllowlistUpdated\", emittedBy: \"instance\", poll: \"slow\" },\n ],\n metadataSchema: { licenseDefault: \"CC BY-SA\" },\n },\n \"drop-collection\": {\n id: \"drop-collection\",\n displayName: \"Collection Drop\",\n description: \"Sequential mint with claim windows + 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: \"AllowlistUpdated\", emittedBy: \"instance\", poll: \"slow\" },\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-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 // v3: one contract is both the offer/bid/proposal registry and the\n // issued license collection (a real, standard ERC-721 minted internally\n // — no separate receipt contract). `transfer` reflects that a license is\n // freely transferable at the protocol layer; transferable/expiry intent\n // is declarative (carried in metadata + LicenseMinted), never\n // contract-enforced. Supersedes the 2026-07-02 v2 `ip-sponsorship`\n // (registry-only) + `ip-sponsorship-license` (non-authoritative receipt\n // via a dedicated ip-erc721 instance) pair — retired as of this redesign.\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 // `swap` is a UI affordance (05 §III): the marketplace renders an embedded\n // Ekubo swap (via StarkZapp) for the coin. Settlement is Ekubo — Medialane\n // operates NO trading venue and custodies nothing. No venue service exists\n // for coins (unlike NFTs, whose Medialane marketplace contract settles them).\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 \"external-erc20\": {\n id: \"external-erc20\",\n displayName: \"External ERC-20\",\n description:\n \"An ERC-20 token (e.g. an unrug memecoin or a partner coin) not deployed via a Medialane service. 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\n/**\n * Literal-union of every registered service ID. Use this as the type for\n * `Collection.service` write sites in consumers — typos like \"pop_protocol\"\n * (underscore instead of hyphen) become compile errors.\n *\n * `getService()` still accepts loose `string` for read-side lookups where the\n * value came from the DB and is trusted to already be valid.\n */\nexport type ServiceId = keyof typeof SERVICES;\n\n/** Type guard: narrows a string to ServiceId if it's registered. */\nexport function isServiceId(id: string | null | undefined): id is ServiceId {\n return typeof id === \"string\" && id in SERVICES;\n}\n\n/** Lookup. Returns undefined for unregistered service IDs — callers should\n * treat that as a data error, since every Collection.service value is\n * expected to map to a registered ServiceDefinition. */\nexport function getService(id: string | null | undefined): ServiceDefinition | undefined {\n return id && id in SERVICES ? (SERVICES as Record<string, ServiceDefinition>)[id] : undefined;\n}\n\n/** All registered services (e.g. the launchpad grid). */\nexport function listServices(): ServiceDefinition[] {\n return Object.values(SERVICES);\n}\n\n/** Services that declare a capability (e.g. \"where can users mint\"). */\nexport function getServicesByCapability(cap: ServiceCapability): ServiceDefinition[] {\n return Object.values(SERVICES).filter(\n (s) => (s.capabilities as readonly ServiceCapability[]).includes(cap),\n );\n}\n\n/** Whether a service declares a given capability — e.g. whether an asset\n * type is transferable. Returns false for an unregistered/missing id rather\n * than throwing, since callers use this for UI copy, not authority checks. */\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\n/**\n * Parse a human-readable amount (e.g. \"1.5\") to its raw integer string\n * representation given the token's decimal places.\n * Uses pure BigInt arithmetic to avoid floating point precision loss.\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\n/**\n * Format a raw integer string (e.g. \"1500000\") to a human-readable decimal\n * string given the token's decimal places.\n */\nexport function formatAmount(raw: string, decimals: number): string {\n const value = BigInt(raw);\n const factor = BigInt(Math.pow(10, decimals));\n const whole = value / factor;\n const remainder = value % factor;\n const fractional = remainder.toString().padStart(decimals, \"0\");\n return `${whole}.${fractional}`;\n}\n\n/**\n * Find a supported token by its contract address (case-insensitive).\n */\nexport function getTokenByAddress(address: string): SupportedToken | undefined {\n const lower = address.toLowerCase();\n return SUPPORTED_TOKENS.find((t) => t.address.toLowerCase() === lower);\n}\n\n/**\n * Find a supported token by its symbol (case-insensitive).\n */\nexport function getTokenBySymbol(symbol: string): SupportedToken | undefined {\n const upper = symbol.toUpperCase();\n return SUPPORTED_TOKENS.find((t) => t.symbol === upper);\n}\n\n/**\n * Return all tokens available for use in listing and offer dialogs.\n * Tokens with listable: false appear only as marketplace filter chips.\n */\nexport function getListableTokens(): ReadonlyArray<SupportedToken> {\n return SUPPORTED_TOKENS.filter((t) => t.listable);\n}\n","/**\n * Recursively convert all BigInt values to their decimal string representations.\n * Required before JSON serialisation and before passing objects to starknet.js\n * functions that expect string felts.\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\n/**\n * Convert a u256 represented as { low: string; high: string } to a single BigInt.\n */\nexport function u256ToBigInt(low: string, high: string): bigint {\n return BigInt(low) + (BigInt(high) << 128n);\n}\n","/**\n * Resilient Starknet RPC helpers — the single source of truth for \"what counts\n * as a transient RPC failure\" and the public fallback endpoint list, shared by\n * every Medialane app:\n * - dapp / io `starknetProvider` singletons (RpcProvider.baseFetch)\n * - io `/api/rpc` server-side proxy (upstream rotation)\n * - backend circuit breaker + receipt-rotation paths\n *\n * Motivation (2026-06-03): Alchemy's Starknet mainnet endpoint intermittently\n * returns HTTP 503 with the JSON-RPC envelope `-32001 \"Unable to complete\n * request at this time.\"` (~1 in 6 calls, while its status page reads green).\n * A single blip inside a `waitForTransaction` poll loop stalls mints/listings.\n * Failing over to a public endpoint recovers silently.\n */\n\n/**\n * Ordered public Starknet **mainnet** RPC endpoints (no API key required),\n * used as fallback after an app's configured primary (e.g. Alchemy) returns a\n * transient error. lava.build — RPC spec 0.8.1, permissive CORS — so it is\n * safe for browser `baseFetch` use as well as server-side rotation.\n *\n * blastapi.io and free-rpc.nethermind.io were removed (2026-07-04) — long\n * confirmed dead/unreliable in production; do not re-add them.\n */\nexport const PUBLIC_RPC_FALLBACKS: readonly string[] = [\n \"https://rpc.starknet.lava.build\",\n];\n\n/**\n * Matches transient failure signals in a raw response body or JSON-RPC error\n * message. Deterministic Starknet contract errors (revert / invalid params —\n * small positive JSON-RPC codes) MUST NOT match: they propagate verbatim so\n * callers see the real failure. Note `-32000` is intentionally absent — the io\n * `/api/rpc` proxy uses it for \"Unauthorized\", which must not trigger failover.\n */\nconst TRANSIENT_BODY_RE =\n /\"code\"\\s*:\\s*-32001|\"code\"\\s*:\\s*-32603|unable to complete|rate.?limit|too many|throttl|exceed.*quota|temporarily unavailable|service unavailable|overload|gateway.*time|upstream.*time|backend.*error/i;\n\n/**\n * Is this RPC response worth retrying against another endpoint?\n *\n * Accepts either an HTTP status + raw text body (client `baseFetch` path) or a\n * parsed JSON-RPC envelope (server proxy path). For parsed envelopes the\n * server-defined error-code range (`-32099..-32000`) is treated as transient;\n * for raw text only the explicit `-32001`/`-32603` codes + message hints match,\n * so a `-32000` \"Unauthorized\" text body is never mistaken for transient.\n */\nexport function isTransientRpcError(input: { status?: number; body?: unknown }): boolean {\n const { status, body } = input;\n if (typeof status === \"number\" && (status === 429 || status >= 500)) return true;\n if (body == null) return false;\n\n // Parsed JSON-RPC envelope: inspect error.code numerically.\n if (typeof body === \"object\") {\n const err = (body as { error?: { code?: unknown; message?: unknown } }).error;\n if (!err || typeof err !== \"object\") return false;\n const code = (err as { code?: unknown }).code;\n if (typeof code === \"number\") {\n if (code === 429) return true;\n if (code >= -32099 && code <= -32000) return true; // server-defined range (incl. -32001)\n if (code === -32603) return true; // generic internal error\n }\n const message = (err as { message?: unknown }).message;\n return typeof message === \"string\" ? TRANSIENT_BODY_RE.test(message) : false;\n }\n\n // Raw text body (client baseFetch path).\n return TRANSIENT_BODY_RE.test(String(body));\n}\n\nexport interface FailoverFetchOptions {\n /** Underlying fetch to wrap (e.g. one that adds a timeout). Defaults to the global `fetch`. */\n baseFetch?: typeof fetch;\n /** Invoked each time an endpoint is abandoned for the next one. */\n onFailover?: (info: { url: string; status?: number; error?: unknown }) => void;\n}\n\n/**\n * Build a `fetch` suitable for `RpcProvider.baseFetch` that tries each URL in\n * `urls` in order, advancing to the next only on a transient failure (network\n * error, 5xx/429, or a transient JSON-RPC envelope). The provider's own\n * `nodeUrl` argument is ignored — routing is controlled entirely by `urls` —\n * so callers should set `nodeUrl: urls[0]` (used only for spec negotiation).\n *\n * @example\n * const urls = [primaryAlchemyUrl, ...PUBLIC_RPC_FALLBACKS];\n * new RpcProvider({ nodeUrl: urls[0], baseFetch: createFailoverFetch(urls) });\n */\nexport function createFailoverFetch(\n urls: string[],\n options: FailoverFetchOptions = {},\n): typeof fetch {\n const endpoints = urls.filter((u): u is string => Boolean(u));\n if (endpoints.length === 0) {\n throw new Error(\"createFailoverFetch: at least one RPC URL is required\");\n }\n const doFetch = options.baseFetch ?? fetch;\n\n const failover = async (_input: unknown, init?: RequestInit): Promise<Response> => {\n let lastError: unknown;\n\n for (let i = 0; i < endpoints.length; i++) {\n const url = endpoints[i];\n const isLast = i === endpoints.length - 1;\n try {\n const res = await doFetch(url, init);\n const text = await res.text();\n const rebuilt = () =>\n new Response(text, { status: res.status, statusText: res.statusText, headers: res.headers });\n\n if (isLast || !isTransientRpcError({ status: res.status, body: text })) {\n return rebuilt();\n }\n options.onFailover?.({ url, status: res.status });\n } catch (err) {\n lastError = err;\n if (isLast) throw err;\n options.onFailover?.({ url, error: err });\n }\n }\n\n // Loop always returns/throws on the last endpoint; this satisfies the type checker.\n throw lastError ?? new Error(\"createFailoverFetch: all endpoints failed\");\n };\n\n return failover as unknown as typeof fetch;\n}\n","import type { MedialaneErrorCode } from \"../../types/errors.js\";\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","import { Contract, RpcProvider, cairo, constants, num, type Abi } from \"starknet\";\nimport type { ResolvedConfig } from \"../../config.js\";\nimport { SUPPORTED_TOKENS } from \"../../constants.js\";\nimport { MedialaneError } from \"./errors.js\";\nimport { createFailoverFetch, PUBLIC_RPC_FALLBACKS } from \"../../utils/rpc.js\";\n\n/** Seconds added to current unix time when setting order start_time.\n * Provides buffer for Starknet tx inclusion (~6s blocks). */\nexport const START_TIME_BUFFER_SECS = 30;\n\n/** Full-felt (248-bit) random salt. With the redesigned schema, salt is the\n * sole order-hash uniqueness source (nonce was removed), so it must be wide. */\nexport function generateSalt(): string {\n const bytes = new Uint8Array(31);\n crypto.getRandomValues(bytes);\n const hex = Array.from(bytes, (b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n return num.toHex(BigInt(\"0x\" + hex));\n}\n\n/** The signed EIP-2981 royalty cap (bps) for an order. Reads the NFT's live\n * 2981 rate via `royalty_info(tokenId, 10000)` — the returned amount equals the\n * bps when salePrice is 10000. Any non-2981 NFT or failure yields \"0\" (no\n * royalty — never over-pay). An explicit override short-circuits the read. */\nexport async function resolveRoyaltyMaxBps(\n provider: RpcProvider,\n nft: string,\n tokenId: string,\n override?: string,\n): Promise<string> {\n if (override !== undefined) return override;\n try {\n const id = cairo.uint256(tokenId);\n const res = await provider.callContract({\n contractAddress: nft,\n entrypoint: \"royalty_info\",\n calldata: [id.low.toString(), id.high.toString(), \"10000\", \"0\"],\n });\n // returns [receiver, amount.low, amount.high]; amount == bps at salePrice 10000\n return BigInt(res[1] ?? \"0\").toString();\n } catch {\n return \"0\";\n }\n}\n\nexport function toSignatureArray(sig: unknown): string[] {\n if (Array.isArray(sig)) return sig as string[];\n const s = sig as { r: bigint | string; s: bigint | string };\n return [s.r.toString(), s.s.toString()];\n}\n\n/**\n * Construct a `Contract` across starknet major versions. starknet v8 changed the\n * constructor to a single options object (`{ abi, address, providerOrAccount }`)\n * and REMOVED the v6/v7 positional form — passing `(abi, address, provider)` to\n * v8 lands the ABI in the options slot, so the parser reads `options.abi`\n * (undefined) and throws `abi.find is not a function`. The dapp runs starknet v8\n * while this SDK builds against v6, so every `new Contract(...)` must route\n * through here. Detected by constructor arity (v8 = 1, v6/v7 = 2+).\n */\nexport function newContract(abi: Abi, address: string, providerOrAccount?: unknown): Contract {\n const C = Contract as unknown as { length: number };\n return C.length === 1\n ? new (Contract as unknown as new (opts: unknown) => Contract)({ abi, address, providerOrAccount })\n : new (Contract as unknown as new (a: Abi, addr: string, p?: unknown) => Contract)(\n abi,\n address,\n providerOrAccount,\n );\n}\n\nexport function getChainId(config: ResolvedConfig): constants.StarknetChainId {\n // SNIP-12 signing is Starknet-only today; EVM/Solana signing arrives behind\n // the verify seam (spec 2026-06-13 §3.4), not here.\n if (config.chain !== \"STARKNET\") {\n throw new Error(`SNIP-12 signing is Starknet-only; got chain \"${config.chain}\"`);\n }\n return constants.StarknetChainId.SN_MAIN;\n}\n\nexport function resolveToken(currency: string) {\n const token = SUPPORTED_TOKENS.find(\n (t) => t.symbol === currency.toUpperCase() || t.address.toLowerCase() === currency.toLowerCase()\n );\n if (!token) throw new MedialaneError(`Unsupported currency: ${currency}`, \"INVALID_PARAMS\");\n return token;\n}\n\nconst _providerCache = new WeakMap<ResolvedConfig, RpcProvider>();\n\nexport function getProvider(config: ResolvedConfig): RpcProvider {\n let p = _providerCache.get(config);\n if (!p) {\n // Fail over to public endpoints when the configured RPC (often Alchemy)\n // returns a transient error — e.g. the intermittent 503 / -32001 that\n // stalls reads (get_counter, royalty_info) and waitForTransaction loops.\n const urls = Array.from(new Set([config.rpcUrl, ...PUBLIC_RPC_FALLBACKS]));\n p = new RpcProvider({ nodeUrl: urls[0], baseFetch: createFailoverFetch(urls) });\n _providerCache.set(config, p);\n }\n return p;\n}\n","// Auto-generated from Medialane721 class (redesigned venue). Do not hand-edit.\nexport const IPMarketplaceABI = [\n {\n \"type\": \"impl\",\n \"name\": \"Medialane721Impl\",\n \"interface_name\": \"medialane_marketplace_erc721::core::interface::IMedialane\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc721::core::types::OfferItem\",\n \"members\": [\n {\n \"name\": \"item_type\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"token\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"identifier_or_criteria\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"core::felt252\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc721::core::types::ConsiderationItem\",\n \"members\": [\n {\n \"name\": \"item_type\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"token\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"identifier_or_criteria\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc721::core::types::OrderParameters\",\n \"members\": [\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"offer\",\n \"type\": \"medialane_marketplace_erc721::core::types::OfferItem\"\n },\n {\n \"name\": \"consideration\",\n \"type\": \"medialane_marketplace_erc721::core::types::ConsiderationItem\"\n },\n {\n \"name\": \"royalty_max_bps\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"salt\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"counter\",\n \"type\": \"core::felt252\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc721::core::types::Order\",\n \"members\": [\n {\n \"name\": \"parameters\",\n \"type\": \"medialane_marketplace_erc721::core::types::OrderParameters\"\n },\n {\n \"name\": \"signature\",\n \"type\": \"core::array::Array::<core::felt252>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc721::core::types::OrderCancellation\",\n \"members\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc721::core::types::CancelRequest\",\n \"members\": [\n {\n \"name\": \"cancelation\",\n \"type\": \"medialane_marketplace_erc721::core::types::OrderCancellation\"\n },\n {\n \"name\": \"signature\",\n \"type\": \"core::array::Array::<core::felt252>\"\n }\n ]\n },\n {\n \"type\": \"enum\",\n \"name\": \"medialane_marketplace_erc721::core::types::OrderStatus\",\n \"variants\": [\n {\n \"name\": \"None\",\n \"type\": \"()\"\n },\n {\n \"name\": \"Created\",\n \"type\": \"()\"\n },\n {\n \"name\": \"Filled\",\n \"type\": \"()\"\n },\n {\n \"name\": \"Cancelled\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc721::core::types::OrderDetails\",\n \"members\": [\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"offer\",\n \"type\": \"medialane_marketplace_erc721::core::types::OfferItem\"\n },\n {\n \"name\": \"consideration\",\n \"type\": \"medialane_marketplace_erc721::core::types::ConsiderationItem\"\n },\n {\n \"name\": \"royalty_max_bps\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"order_status\",\n \"type\": \"medialane_marketplace_erc721::core::types::OrderStatus\"\n },\n {\n \"name\": \"counter\",\n \"type\": \"core::felt252\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"medialane_marketplace_erc721::core::interface::IMedialane\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"register_order\",\n \"inputs\": [\n {\n \"name\": \"order\",\n \"type\": \"medialane_marketplace_erc721::core::types::Order\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"fulfill_order\",\n \"inputs\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"cancel_order\",\n \"inputs\": [\n {\n \"name\": \"cancel_request\",\n \"type\": \"medialane_marketplace_erc721::core::types::CancelRequest\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"increment_counter\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_order_details\",\n \"inputs\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"medialane_marketplace_erc721::core::types::OrderDetails\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_order_hash\",\n \"inputs\": [\n {\n \"name\": \"parameters\",\n \"type\": \"medialane_marketplace_erc721::core::types::OrderParameters\"\n },\n {\n \"name\": \"signer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::felt252\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_cancellation_hash\",\n \"inputs\": [\n {\n \"name\": \"cancellation\",\n \"type\": \"medialane_marketplace_erc721::core::types::OrderCancellation\"\n },\n {\n \"name\": \"signer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::felt252\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_counter\",\n \"inputs\": [\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::felt252\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_native_token_address\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"constructor\",\n \"name\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"native_token_address\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"medialane_marketplace_erc721::core::events::OrderCreated\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::integer::u256\",\n \"members\": [\n {\n \"name\": \"low\",\n \"type\": \"core::integer::u128\"\n },\n {\n \"name\": \"high\",\n \"type\": \"core::integer::u128\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"medialane_marketplace_erc721::core::events::OrderFulfilled\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"fulfiller\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"sale_amount\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"royalty_receiver\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"royalty_amount\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"medialane_marketplace_erc721::core::events::OrderCancelled\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"medialane_marketplace_erc721::core::events::CounterIncremented\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"new_counter\",\n \"type\": \"core::felt252\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"medialane_marketplace_erc721::core::medialane::Medialane721::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"OrderCreated\",\n \"type\": \"medialane_marketplace_erc721::core::events::OrderCreated\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"OrderFulfilled\",\n \"type\": \"medialane_marketplace_erc721::core::events::OrderFulfilled\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"OrderCancelled\",\n \"type\": \"medialane_marketplace_erc721::core::events::OrderCancelled\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"CounterIncremented\",\n \"type\": \"medialane_marketplace_erc721::core::events::CounterIncremented\",\n \"kind\": \"nested\"\n }\n ]\n }\n] as const;\n","export const POPCollectionABI = [\n {\n type: \"struct\",\n name: \"core::byte_array::ByteArray\",\n members: [\n { name: \"data\", type: \"core::array::Array::<core::felt252>\" },\n { name: \"pending_word\", type: \"core::felt252\" },\n { name: \"pending_word_len\", type: \"core::integer::u32\" },\n ],\n },\n {\n type: \"function\",\n name: \"claim\",\n inputs: [],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"admin_mint\",\n inputs: [\n { name: \"recipient\", type: \"core::starknet::contract_address::ContractAddress\" },\n { name: \"custom_uri\", type: \"core::byte_array::ByteArray\" },\n ],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"add_to_allowlist\",\n inputs: [{ name: \"address\", type: \"core::starknet::contract_address::ContractAddress\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"batch_add_to_allowlist\",\n inputs: [{ name: \"addresses\", type: \"core::array::Array::<core::starknet::contract_address::ContractAddress>\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"remove_from_allowlist\",\n inputs: [{ name: \"address\", type: \"core::starknet::contract_address::ContractAddress\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"set_token_uri\",\n inputs: [\n { name: \"token_id\", type: \"core::integer::u256\" },\n { name: \"uri\", type: \"core::byte_array::ByteArray\" },\n ],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"set_paused\",\n inputs: [{ name: \"paused\", type: \"core::bool\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"is_eligible\",\n inputs: [{ name: \"address\", type: \"core::starknet::contract_address::ContractAddress\" }],\n outputs: [{ type: \"core::bool\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"has_claimed\",\n inputs: [{ name: \"address\", type: \"core::starknet::contract_address::ContractAddress\" }],\n outputs: [{ type: \"core::bool\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"total_minted\",\n inputs: [],\n outputs: [{ type: \"core::integer::u256\" }],\n state_mutability: \"view\",\n },\n] as const;\n\n","export const POPFactoryABI = [\n {\n type: \"struct\",\n name: \"core::byte_array::ByteArray\",\n members: [\n { name: \"data\", type: \"core::array::Array::<core::felt252>\" },\n { name: \"pending_word\", type: \"core::felt252\" },\n { name: \"pending_word_len\", type: \"core::integer::u32\" },\n ],\n },\n {\n type: \"enum\",\n name: \"pop_protocol::types::EventType\",\n variants: [\n { name: \"Conference\", type: \"()\" },\n { name: \"Bootcamp\", type: \"()\" },\n { name: \"Workshop\", type: \"()\" },\n { name: \"Hackathon\", type: \"()\" },\n { name: \"Meetup\", type: \"()\" },\n { name: \"Course\", type: \"()\" },\n { name: \"Other\", type: \"()\" },\n ],\n },\n {\n type: \"function\",\n name: \"create_collection\",\n inputs: [\n { name: \"name\", type: \"core::byte_array::ByteArray\" },\n { name: \"symbol\", type: \"core::byte_array::ByteArray\" },\n { name: \"base_uri\", type: \"core::byte_array::ByteArray\" },\n { name: \"claim_end_time\", type: \"core::integer::u64\" },\n { name: \"event_type\", type: \"pop_protocol::types::EventType\" },\n ],\n outputs: [{ type: \"core::starknet::contract_address::ContractAddress\" }],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"register_provider\",\n inputs: [\n { name: \"provider\", type: \"core::starknet::contract_address::ContractAddress\" },\n { name: \"name\", type: \"core::byte_array::ByteArray\" },\n { name: \"website_url\", type: \"core::byte_array::ByteArray\" },\n ],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"set_pop_collection_class_hash\",\n inputs: [{ name: \"new_class_hash\", type: \"core::starknet::class_hash::ClassHash\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n] as const;\n\n","export const DropCollectionABI = [\n {\n type: \"struct\",\n name: \"core::byte_array::ByteArray\",\n members: [\n { name: \"data\", type: \"core::array::Array::<core::felt252>\" },\n { name: \"pending_word\", type: \"core::felt252\" },\n { name: \"pending_word_len\", type: \"core::integer::u32\" },\n ],\n },\n {\n type: \"struct\",\n name: \"collection_drop::types::ClaimConditions\",\n members: [\n { name: \"start_time\", type: \"core::integer::u64\" },\n { name: \"end_time\", type: \"core::integer::u64\" },\n { name: \"price\", type: \"core::integer::u256\" },\n { name: \"payment_token\", type: \"core::starknet::contract_address::ContractAddress\" },\n { name: \"max_quantity_per_wallet\", type: \"core::integer::u256\" },\n ],\n },\n {\n type: \"function\",\n name: \"claim\",\n inputs: [{ name: \"quantity\", type: \"core::integer::u256\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"admin_mint\",\n inputs: [\n { name: \"recipient\", type: \"core::starknet::contract_address::ContractAddress\" },\n { name: \"quantity\", type: \"core::integer::u256\" },\n { name: \"custom_uri\", type: \"core::byte_array::ByteArray\" },\n ],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"set_claim_conditions\",\n inputs: [{ name: \"conditions\", type: \"collection_drop::types::ClaimConditions\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"get_claim_conditions\",\n inputs: [],\n outputs: [{ type: \"collection_drop::types::ClaimConditions\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"set_allowlist_enabled\",\n inputs: [{ name: \"enabled\", type: \"core::bool\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"is_allowlist_enabled\",\n inputs: [],\n outputs: [{ type: \"core::bool\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"add_to_allowlist\",\n inputs: [{ name: \"address\", type: \"core::starknet::contract_address::ContractAddress\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"batch_add_to_allowlist\",\n inputs: [{ name: \"addresses\", type: \"core::array::Array::<core::starknet::contract_address::ContractAddress>\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"remove_from_allowlist\",\n inputs: [{ name: \"address\", type: \"core::starknet::contract_address::ContractAddress\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"is_allowlisted\",\n inputs: [{ name: \"address\", type: \"core::starknet::contract_address::ContractAddress\" }],\n outputs: [{ type: \"core::bool\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"set_base_uri\",\n inputs: [{ name: \"new_uri\", type: \"core::byte_array::ByteArray\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"set_token_uri\",\n inputs: [\n { name: \"token_id\", type: \"core::integer::u256\" },\n { name: \"uri\", type: \"core::byte_array::ByteArray\" },\n ],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"set_paused\",\n inputs: [{ name: \"paused\", type: \"core::bool\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"withdraw_payments\",\n inputs: [],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"get_drop_id\",\n inputs: [],\n outputs: [{ type: \"core::integer::u256\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"get_max_supply\",\n inputs: [],\n outputs: [{ type: \"core::integer::u256\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"total_minted\",\n inputs: [],\n outputs: [{ type: \"core::integer::u256\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"remaining_supply\",\n inputs: [],\n outputs: [{ type: \"core::integer::u256\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"minted_by_wallet\",\n inputs: [{ name: \"wallet\", type: \"core::starknet::contract_address::ContractAddress\" }],\n outputs: [{ type: \"core::integer::u256\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"is_paused\",\n inputs: [],\n outputs: [{ type: \"core::bool\" }],\n state_mutability: \"view\",\n },\n] as const;\n\n","export const DropFactoryABI = [\n {\n type: \"struct\",\n name: \"core::byte_array::ByteArray\",\n members: [\n { name: \"data\", type: \"core::array::Array::<core::felt252>\" },\n { name: \"pending_word\", type: \"core::felt252\" },\n { name: \"pending_word_len\", type: \"core::integer::u32\" },\n ],\n },\n {\n type: \"struct\",\n name: \"collection_drop::types::ClaimConditions\",\n members: [\n { name: \"start_time\", type: \"core::integer::u64\" },\n { name: \"end_time\", type: \"core::integer::u64\" },\n { name: \"price\", type: \"core::integer::u256\" },\n { name: \"payment_token\", type: \"core::starknet::contract_address::ContractAddress\" },\n { name: \"max_quantity_per_wallet\", type: \"core::integer::u256\" },\n ],\n },\n {\n type: \"function\",\n name: \"register_organizer\",\n inputs: [\n { name: \"organizer\", type: \"core::starknet::contract_address::ContractAddress\" },\n { name: \"name\", type: \"core::byte_array::ByteArray\" },\n ],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"revoke_organizer\",\n inputs: [{ name: \"organizer\", type: \"core::starknet::contract_address::ContractAddress\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"is_active_organizer\",\n inputs: [{ name: \"organizer\", type: \"core::starknet::contract_address::ContractAddress\" }],\n outputs: [{ type: \"core::bool\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"create_drop\",\n inputs: [\n { name: \"name\", type: \"core::byte_array::ByteArray\" },\n { name: \"symbol\", type: \"core::byte_array::ByteArray\" },\n { name: \"base_uri\", type: \"core::byte_array::ByteArray\" },\n { name: \"max_supply\", type: \"core::integer::u256\" },\n { name: \"initial_conditions\", type: \"collection_drop::types::ClaimConditions\" },\n ],\n outputs: [{ type: \"core::starknet::contract_address::ContractAddress\" }],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"get_drop_address\",\n inputs: [{ name: \"drop_id\", type: \"core::integer::u256\" }],\n outputs: [{ type: \"core::starknet::contract_address::ContractAddress\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"get_last_drop_id\",\n inputs: [],\n outputs: [{ type: \"core::integer::u256\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"get_organizer_drop_count\",\n inputs: [{ name: \"organizer\", type: \"core::starknet::contract_address::ContractAddress\" }],\n outputs: [{ type: \"core::integer::u32\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"set_drop_collection_class_hash\",\n inputs: [{ name: \"new_class_hash\", type: \"core::starknet::class_hash::ClassHash\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n] as const;\n\n","// Auto-generated from Medialane1155 class (redesigned venue). Do not hand-edit.\nexport const Medialane1155ABI = [\n {\n \"type\": \"impl\",\n \"name\": \"Medialane1155Impl\",\n \"interface_name\": \"medialane_marketplace_erc1155::core::interface::IMedialane1155\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc1155::core::types::OfferItem\",\n \"members\": [\n {\n \"name\": \"item_type\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"token\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"identifier_or_criteria\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"core::felt252\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc1155::core::types::ConsiderationItem\",\n \"members\": [\n {\n \"name\": \"item_type\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"token\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"identifier_or_criteria\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc1155::core::types::OrderParameters\",\n \"members\": [\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"offer\",\n \"type\": \"medialane_marketplace_erc1155::core::types::OfferItem\"\n },\n {\n \"name\": \"consideration\",\n \"type\": \"medialane_marketplace_erc1155::core::types::ConsiderationItem\"\n },\n {\n \"name\": \"royalty_max_bps\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"salt\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"counter\",\n \"type\": \"core::felt252\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc1155::core::types::Order\",\n \"members\": [\n {\n \"name\": \"parameters\",\n \"type\": \"medialane_marketplace_erc1155::core::types::OrderParameters\"\n },\n {\n \"name\": \"signature\",\n \"type\": \"core::array::Array::<core::felt252>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc1155::core::types::OrderCancellation\",\n \"members\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc1155::core::types::CancelRequest\",\n \"members\": [\n {\n \"name\": \"cancelation\",\n \"type\": \"medialane_marketplace_erc1155::core::types::OrderCancellation\"\n },\n {\n \"name\": \"signature\",\n \"type\": \"core::array::Array::<core::felt252>\"\n }\n ]\n },\n {\n \"type\": \"enum\",\n \"name\": \"medialane_marketplace_erc1155::core::types::OrderStatus\",\n \"variants\": [\n {\n \"name\": \"None\",\n \"type\": \"()\"\n },\n {\n \"name\": \"Created\",\n \"type\": \"()\"\n },\n {\n \"name\": \"Filled\",\n \"type\": \"()\"\n },\n {\n \"name\": \"Cancelled\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc1155::core::types::OrderDetails\",\n \"members\": [\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"offer\",\n \"type\": \"medialane_marketplace_erc1155::core::types::OfferItem\"\n },\n {\n \"name\": \"consideration\",\n \"type\": \"medialane_marketplace_erc1155::core::types::ConsiderationItem\"\n },\n {\n \"name\": \"royalty_max_bps\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"order_status\",\n \"type\": \"medialane_marketplace_erc1155::core::types::OrderStatus\"\n },\n {\n \"name\": \"remaining_amount\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"counter\",\n \"type\": \"core::felt252\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"medialane_marketplace_erc1155::core::interface::IMedialane1155\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"register_order\",\n \"inputs\": [\n {\n \"name\": \"order\",\n \"type\": \"medialane_marketplace_erc1155::core::types::Order\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"fulfill_order\",\n \"inputs\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"quantity\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"cancel_order\",\n \"inputs\": [\n {\n \"name\": \"cancel_request\",\n \"type\": \"medialane_marketplace_erc1155::core::types::CancelRequest\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"increment_counter\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_order_details\",\n \"inputs\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"medialane_marketplace_erc1155::core::types::OrderDetails\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_order_hash\",\n \"inputs\": [\n {\n \"name\": \"parameters\",\n \"type\": \"medialane_marketplace_erc1155::core::types::OrderParameters\"\n },\n {\n \"name\": \"signer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::felt252\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_cancellation_hash\",\n \"inputs\": [\n {\n \"name\": \"cancellation\",\n \"type\": \"medialane_marketplace_erc1155::core::types::OrderCancellation\"\n },\n {\n \"name\": \"signer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::felt252\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_counter\",\n \"inputs\": [\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::felt252\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_native_token_address\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"constructor\",\n \"name\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"native_token_address\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"medialane_marketplace_erc1155::core::events::OrderCreated\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::integer::u256\",\n \"members\": [\n {\n \"name\": \"low\",\n \"type\": \"core::integer::u128\"\n },\n {\n \"name\": \"high\",\n \"type\": \"core::integer::u128\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"medialane_marketplace_erc1155::core::events::OrderFulfilled\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"fulfiller\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"quantity\",\n \"type\": \"core::felt252\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"remaining_amount\",\n \"type\": \"core::felt252\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"sale_amount\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"royalty_receiver\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"royalty_amount\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"medialane_marketplace_erc1155::core::events::OrderCancelled\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"medialane_marketplace_erc1155::core::events::CounterIncremented\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"new_counter\",\n \"type\": \"core::felt252\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"medialane_marketplace_erc1155::core::medialane::Medialane1155::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"OrderCreated\",\n \"type\": \"medialane_marketplace_erc1155::core::events::OrderCreated\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"OrderFulfilled\",\n \"type\": \"medialane_marketplace_erc1155::core::events::OrderFulfilled\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"OrderCancelled\",\n \"type\": \"medialane_marketplace_erc1155::core::events::OrderCancelled\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"CounterIncremented\",\n \"type\": \"medialane_marketplace_erc1155::core::events::CounterIncremented\",\n \"kind\": \"nested\"\n }\n ]\n }\n] as const;\n","export const IPCollection1155FactoryABI = [\n {\n \"type\": \"impl\",\n \"name\": \"IPCollectionFactoryImpl\",\n \"interface_name\": \"ip_programmable_erc1155_collections::interfaces::IIPCollectionFactory::IIPCollectionFactory\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::byte_array::ByteArray\",\n \"members\": [\n {\n \"name\": \"data\",\n \"type\": \"core::array::Array::<core::bytes_31::bytes31>\"\n },\n {\n \"name\": \"pending_word\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"pending_word_len\",\n \"type\": \"core::internal::bounded_int::BoundedInt::<0, 30>\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"ip_programmable_erc1155_collections::interfaces::IIPCollectionFactory::IIPCollectionFactory\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"collection_class_hash\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::class_hash::ClassHash\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"version\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"deploy_collection\",\n \"inputs\": [\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"base_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"constructor\",\n \"name\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"collection_class_hash\",\n \"type\": \"core::starknet::class_hash::ClassHash\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_programmable_erc1155_collections::IPCollectionFactory::IPCollectionFactory::CollectionDeployed\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"collection_address\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"base_uri\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_programmable_erc1155_collections::IPCollectionFactory::IPCollectionFactory::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"CollectionDeployed\",\n \"type\": \"ip_programmable_erc1155_collections::IPCollectionFactory::IPCollectionFactory::CollectionDeployed\",\n \"kind\": \"nested\"\n }\n ]\n }\n] as const;\n","export const IPCollection1155ABI = [\n {\n \"type\": \"impl\",\n \"name\": \"ERC1155MetadataURIImpl\",\n \"interface_name\": \"openzeppelin_token::erc1155::interface::IERC1155MetadataURI\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::integer::u256\",\n \"members\": [\n {\n \"name\": \"low\",\n \"type\": \"core::integer::u128\"\n },\n {\n \"name\": \"high\",\n \"type\": \"core::integer::u128\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::byte_array::ByteArray\",\n \"members\": [\n {\n \"name\": \"data\",\n \"type\": \"core::array::Array::<core::bytes_31::bytes31>\"\n },\n {\n \"name\": \"pending_word\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"pending_word_len\",\n \"type\": \"core::internal::bounded_int::BoundedInt::<0, 30>\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc1155::interface::IERC1155MetadataURI\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"uri\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"IPCollectionImpl\",\n \"interface_name\": \"ip_programmable_erc1155_collections::interfaces::IIPCollection::IIPCollection\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::integer::u256>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::integer::u256>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"ip_programmable_erc1155_collections::types::TokenData\",\n \"members\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"metadata_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"original_creator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"registered_at\",\n \"type\": \"core::integer::u64\"\n }\n ]\n },\n {\n \"type\": \"enum\",\n \"name\": \"core::bool\",\n \"variants\": [\n {\n \"name\": \"False\",\n \"type\": \"()\"\n },\n {\n \"name\": \"True\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"ip_programmable_erc1155_collections::interfaces::IIPCollection::IIPCollection\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"name\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"symbol\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"base_uri\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"version\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"mint_edition\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"token_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"batch_mint_edition\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"values\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"token_uris\",\n \"type\": \"core::array::Array::<core::byte_array::ByteArray>\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"add_supply\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_collection_creator\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_token_creator\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_token_registered_at\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u64\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_token_data\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"ip_programmable_erc1155_collections::types::TokenData\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"total_editions\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"token_exists\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"OwnableMixinImpl\",\n \"interface_name\": \"openzeppelin_access::ownable::interface::OwnableABI\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_access::ownable::interface::OwnableABI\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer_ownership\",\n \"inputs\": [\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounce_ownership\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"SRC5Impl\",\n \"interface_name\": \"openzeppelin_introspection::interface::ISRC5\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_introspection::interface::ISRC5\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"supports_interface\",\n \"inputs\": [\n {\n \"name\": \"interface_id\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC1155Impl\",\n \"interface_name\": \"openzeppelin_token::erc1155::interface::IERC1155\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::starknet::contract_address::ContractAddress>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::starknet::contract_address::ContractAddress>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::felt252>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::felt252>\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc1155::interface::IERC1155\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"balance_of\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balance_of_batch\",\n \"inputs\": [\n {\n \"name\": \"accounts\",\n \"type\": \"core::array::Span::<core::starknet::contract_address::ContractAddress>\"\n },\n {\n \"name\": \"token_ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safe_transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safe_batch_transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"values\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_approved_for_all\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_approval_for_all\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC1155CamelImpl\",\n \"interface_name\": \"openzeppelin_token::erc1155::interface::IERC1155Camel\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc1155::interface::IERC1155Camel\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balanceOfBatch\",\n \"inputs\": [\n {\n \"name\": \"accounts\",\n \"type\": \"core::array::Span::<core::starknet::contract_address::ContractAddress>\"\n },\n {\n \"name\": \"tokenIds\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safeTransferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safeBatchTransferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenIds\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"values\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isApprovedForAll\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setApprovalForAll\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC2981Impl\",\n \"interface_name\": \"openzeppelin_token::common::erc2981::interface::IERC2981\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::common::erc2981::interface::IERC2981\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"royalty_info\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"sale_price\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"(core::starknet::contract_address::ContractAddress, core::integer::u256)\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC2981InfoImpl\",\n \"interface_name\": \"openzeppelin_token::common::erc2981::interface::IERC2981Info\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::common::erc2981::interface::IERC2981Info\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"default_royalty\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"(core::starknet::contract_address::ContractAddress, core::integer::u128, core::integer::u128)\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"token_royalty\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"(core::starknet::contract_address::ContractAddress, core::integer::u128, core::integer::u128)\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC2981AdminOwnableImpl\",\n \"interface_name\": \"openzeppelin_token::common::erc2981::interface::IERC2981Admin\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::common::erc2981::interface::IERC2981Admin\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"set_default_royalty\",\n \"inputs\": [\n {\n \"name\": \"receiver\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"fee_numerator\",\n \"type\": \"core::integer::u128\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"delete_default_royalty\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_token_royalty\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"receiver\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"fee_numerator\",\n \"type\": \"core::integer::u128\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"reset_token_royalty\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"constructor\",\n \"name\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"base_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferred\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"previous_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferStarted\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"previous_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"OwnershipTransferred\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferred\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"OwnershipTransferStarted\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferStarted\",\n \"kind\": \"nested\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferSingle\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferBatch\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"values\",\n \"type\": \"core::array::Span::<core::integer::u256>\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::ApprovalForAll\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::URI\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"value\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"TransferSingle\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferSingle\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"TransferBatch\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferBatch\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"ApprovalForAll\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::ApprovalForAll\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"URI\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::URI\",\n \"kind\": \"nested\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::common::erc2981::erc2981::ERC2981Component::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_programmable_erc1155_collections::IPCollection::IPCollection::IPMinted\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"uri\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"registered_at\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_programmable_erc1155_collections::IPCollection::IPCollection::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"SRC5Event\",\n \"type\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"OwnableEvent\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"ERC1155Event\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"ERC2981Event\",\n \"type\": \"openzeppelin_token::common::erc2981::erc2981::ERC2981Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"IPMinted\",\n \"type\": \"ip_programmable_erc1155_collections::IPCollection::IPCollection::IPMinted\",\n \"kind\": \"nested\"\n }\n ]\n }\n] as const;\n","export const IPCollectionABI =\n[\n {\n \"type\": \"impl\",\n \"name\": \"IPCollectionImpl\",\n \"interface_name\": \"ip_collection_erc_721::interfaces::IIPCollection::IIPCollection\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::byte_array::ByteArray\",\n \"members\": [\n {\n \"name\": \"data\",\n \"type\": \"core::array::Array::<core::bytes_31::bytes31>\"\n },\n {\n \"name\": \"pending_word\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"pending_word_len\",\n \"type\": \"core::internal::bounded_int::BoundedInt::<0, 30>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::integer::u256\",\n \"members\": [\n {\n \"name\": \"low\",\n \"type\": \"core::integer::u128\"\n },\n {\n \"name\": \"high\",\n \"type\": \"core::integer::u128\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::integer::u256>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::integer::u256>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"ip_collection_erc_721::types::Collection\",\n \"members\": [\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"base_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"ip_nft\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ]\n },\n {\n \"type\": \"enum\",\n \"name\": \"core::bool\",\n \"variants\": [\n {\n \"name\": \"False\",\n \"type\": \"()\"\n },\n {\n \"name\": \"True\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"ip_collection_erc_721::types::CollectionStats\",\n \"members\": [\n {\n \"name\": \"total_minted\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"total_archived\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"protocol_routed_transfers\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"last_mint_time\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"last_archive_time\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"last_transfer_time\",\n \"type\": \"core::integer::u64\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"ip_collection_erc_721::types::TokenData\",\n \"members\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"metadata_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"original_creator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"registered_at\",\n \"type\": \"core::integer::u64\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"ip_collection_erc_721::interfaces::IIPCollection::IIPCollection\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"create_collection\",\n \"inputs\": [\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"base_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"mint\",\n \"inputs\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u128\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"batch_mint\",\n \"inputs\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"recipients\",\n \"type\": \"core::array::Array::<core::starknet::contract_address::ContractAddress>\"\n },\n {\n \"name\": \"token_uris\",\n \"type\": \"core::array::Array::<core::byte_array::ByteArray>\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::array::Array::<core::integer::u128>\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer_collection_ownership\",\n \"inputs\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"archive\",\n \"inputs\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"batch_archive\",\n \"inputs\": [\n {\n \"name\": \"collection_ids\",\n \"type\": \"core::array::Array::<core::integer::u256>\"\n },\n {\n \"name\": \"token_ids\",\n \"type\": \"core::array::Array::<core::integer::u256>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer_token\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"batch_transfer\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"collection_ids\",\n \"type\": \"core::array::Array::<core::integer::u256>\"\n },\n {\n \"name\": \"token_ids\",\n \"type\": \"core::array::Array::<core::integer::u256>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"list_user_tokens_per_collection\",\n \"inputs\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"user\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"list_user_collections\",\n \"inputs\": [\n {\n \"name\": \"user\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_collection\",\n \"inputs\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"ip_collection_erc_721::types::Collection\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_collection_count\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"version\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_valid_collection\",\n \"inputs\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_collection_stats\",\n \"inputs\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"ip_collection_erc_721::types::CollectionStats\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_collection_owner\",\n \"inputs\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_token\",\n \"inputs\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"ip_collection_erc_721::types::TokenData\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_valid_token\",\n \"inputs\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_transferable_token\",\n \"inputs\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"constructor\",\n \"name\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"ip_nft_class_hash\",\n \"type\": \"core::starknet::class_hash::ClassHash\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_collection_erc_721::IPCollection::IPCollection::CollectionCreated\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"base_uri\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_collection_erc_721::IPCollection::IPCollection::CollectionOwnershipTransferred\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"previous_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_collection_erc_721::IPCollection::IPCollection::TokenMinted\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"metadata_uri\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u128\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_collection_erc_721::IPCollection::IPCollection::TokenMintedBatch\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"token_ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"owners\",\n \"type\": \"core::array::Array::<core::starknet::contract_address::ContractAddress>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"metadata_uris\",\n \"type\": \"core::array::Array::<core::byte_array::ByteArray>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_collection_erc_721::IPCollection::IPCollection::TokenArchived\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_collection_erc_721::IPCollection::IPCollection::TokenArchivedBatch\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"collection_ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"token_ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_collection_erc_721::IPCollection::IPCollection::TokenTransferred\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_collection_erc_721::IPCollection::IPCollection::TokenTransferredBatch\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"collection_ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"token_ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_collection_erc_721::IPCollection::IPCollection::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"CollectionCreated\",\n \"type\": \"ip_collection_erc_721::IPCollection::IPCollection::CollectionCreated\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"CollectionOwnershipTransferred\",\n \"type\": \"ip_collection_erc_721::IPCollection::IPCollection::CollectionOwnershipTransferred\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"TokenMinted\",\n \"type\": \"ip_collection_erc_721::IPCollection::IPCollection::TokenMinted\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"TokenMintedBatch\",\n \"type\": \"ip_collection_erc_721::IPCollection::IPCollection::TokenMintedBatch\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"TokenArchived\",\n \"type\": \"ip_collection_erc_721::IPCollection::IPCollection::TokenArchived\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"TokenArchivedBatch\",\n \"type\": \"ip_collection_erc_721::IPCollection::IPCollection::TokenArchivedBatch\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"TokenTransferred\",\n \"type\": \"ip_collection_erc_721::IPCollection::IPCollection::TokenTransferred\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"TokenTransferredBatch\",\n \"type\": \"ip_collection_erc_721::IPCollection::IPCollection::TokenTransferredBatch\",\n \"kind\": \"nested\"\n }\n ]\n }\n] as const;\n","export const IPNftABI =\n[\n {\n \"type\": \"impl\",\n \"name\": \"ERC721Metadata\",\n \"interface_name\": \"openzeppelin_token::erc721::interface::IERC721Metadata\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::byte_array::ByteArray\",\n \"members\": [\n {\n \"name\": \"data\",\n \"type\": \"core::array::Array::<core::bytes_31::bytes31>\"\n },\n {\n \"name\": \"pending_word\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"pending_word_len\",\n \"type\": \"core::internal::bounded_int::BoundedInt::<0, 30>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::integer::u256\",\n \"members\": [\n {\n \"name\": \"low\",\n \"type\": \"core::integer::u128\"\n },\n {\n \"name\": \"high\",\n \"type\": \"core::integer::u128\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc721::interface::IERC721Metadata\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"name\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"symbol\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"token_uri\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC721MetadataCamelOnly\",\n \"interface_name\": \"openzeppelin_token::erc721::interface::IERC721MetadataCamelOnly\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc721::interface::IERC721MetadataCamelOnly\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"tokenURI\",\n \"inputs\": [\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"IPNftImpl\",\n \"interface_name\": \"ip_collection_erc_721::interfaces::IIPNFT::IIPNft\"\n },\n {\n \"type\": \"enum\",\n \"name\": \"core::bool\",\n \"variants\": [\n {\n \"name\": \"False\",\n \"type\": \"()\"\n },\n {\n \"name\": \"True\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::integer::u256>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::integer::u256>\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"ip_collection_erc_721::interfaces::IIPNFT::IIPNft\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"mint\",\n \"inputs\": [\n {\n \"name\": \"recipient\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"token_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u128\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"archive\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_archived\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_collection_id\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_registry\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"version\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"base_uri\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"all_tokens_of_owner\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"token_exists\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_full_token_data\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"(core::starknet::contract_address::ContractAddress, core::byte_array::ByteArray, core::starknet::contract_address::ContractAddress, core::integer::u64)\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_token_creator\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_token_registered_at\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u64\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC721Impl\",\n \"interface_name\": \"openzeppelin_token::erc721::interface::IERC721\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::felt252>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::felt252>\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc721::interface::IERC721\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"balance_of\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner_of\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safe_transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"approve\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_approval_for_all\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_approved\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_approved_for_all\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC721CamelOnly\",\n \"interface_name\": \"openzeppelin_token::erc721::interface::IERC721CamelOnly\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc721::interface::IERC721CamelOnly\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"ownerOf\",\n \"inputs\": [\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safeTransferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setApprovalForAll\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getApproved\",\n \"inputs\": [\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isApprovedForAll\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC721EnumerableImpl\",\n \"interface_name\": \"openzeppelin_token::erc721::extensions::erc721_enumerable::interface::IERC721Enumerable\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc721::extensions::erc721_enumerable::interface::IERC721Enumerable\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"total_supply\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"token_by_index\",\n \"inputs\": [\n {\n \"name\": \"index\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"token_of_owner_by_index\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"index\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"SRC5Impl\",\n \"interface_name\": \"openzeppelin_introspection::interface::ISRC5\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_introspection::interface::ISRC5\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"supports_interface\",\n \"inputs\": [\n {\n \"name\": \"interface_id\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC2981Impl\",\n \"interface_name\": \"openzeppelin_token::common::erc2981::interface::IERC2981\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::common::erc2981::interface::IERC2981\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"royalty_info\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"sale_price\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"(core::starknet::contract_address::ContractAddress, core::integer::u256)\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC2981InfoImpl\",\n \"interface_name\": \"openzeppelin_token::common::erc2981::interface::IERC2981Info\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::common::erc2981::interface::IERC2981Info\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"default_royalty\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"(core::starknet::contract_address::ContractAddress, core::integer::u128, core::integer::u128)\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"token_royalty\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"(core::starknet::contract_address::ContractAddress, core::integer::u128, core::integer::u128)\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"constructor\",\n \"name\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"base_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"registry\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::erc721::ERC721Component::Transfer\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::erc721::ERC721Component::Approval\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::erc721::ERC721Component::ApprovalForAll\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::erc721::ERC721Component::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Transfer\",\n \"type\": \"openzeppelin_token::erc721::erc721::ERC721Component::Transfer\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"Approval\",\n \"type\": \"openzeppelin_token::erc721::erc721::ERC721Component::Approval\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"ApprovalForAll\",\n \"type\": \"openzeppelin_token::erc721::erc721::ERC721Component::ApprovalForAll\",\n \"kind\": \"nested\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::extensions::erc721_enumerable::erc721_enumerable::ERC721EnumerableComponent::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::common::erc2981::erc2981::ERC2981Component::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_collection_erc_721::IPNft::IPNft::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"ERC721Event\",\n \"type\": \"openzeppelin_token::erc721::erc721::ERC721Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"SRC5Event\",\n \"type\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"ERC721EnumerableEvent\",\n \"type\": \"openzeppelin_token::erc721::extensions::erc721_enumerable::erc721_enumerable::ERC721EnumerableComponent::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"ERC2981Event\",\n \"type\": \"openzeppelin_token::common::erc2981::erc2981::ERC2981Component::Event\",\n \"kind\": \"flat\"\n }\n ]\n }\n] as const;\n","// Auto-extracted from the deployed Creator Coin Factory class (scarb 2.4.3 build).\n// Covers create_creator_coin / launch_on_ekubo / views. Do not edit by hand.\nexport const CreatorCoinFactoryABI = [{\"type\":\"impl\",\"name\":\"FactoryImpl\",\"interface_name\":\"creator_coin::factory::interface::IFactory\"},{\"type\":\"struct\",\"name\":\"core::integer::u256\",\"members\":[{\"name\":\"low\",\"type\":\"core::integer::u128\"},{\"name\":\"high\",\"type\":\"core::integer::u128\"}]},{\"type\":\"struct\",\"name\":\"core::array::Span::<core::starknet::contract_address::ContractAddress>\",\"members\":[{\"name\":\"snapshot\",\"type\":\"@core::array::Array::<core::starknet::contract_address::ContractAddress>\"}]},{\"type\":\"struct\",\"name\":\"core::array::Span::<core::integer::u256>\",\"members\":[{\"name\":\"snapshot\",\"type\":\"@core::array::Array::<core::integer::u256>\"}]},{\"type\":\"struct\",\"name\":\"creator_coin::factory::LaunchParameters\",\"members\":[{\"name\":\"creator_coin_address\",\"type\":\"core::starknet::contract_address::ContractAddress\"},{\"name\":\"transfer_restriction_delay\",\"type\":\"core::integer::u64\"},{\"name\":\"max_percentage_buy_launch\",\"type\":\"core::integer::u16\"},{\"name\":\"quote_address\",\"type\":\"core::starknet::contract_address::ContractAddress\"},{\"name\":\"initial_holders\",\"type\":\"core::array::Span::<core::starknet::contract_address::ContractAddress>\"},{\"name\":\"initial_holders_amounts\",\"type\":\"core::array::Span::<core::integer::u256>\"}]},{\"type\":\"enum\",\"name\":\"core::bool\",\"variants\":[{\"name\":\"False\",\"type\":\"()\"},{\"name\":\"True\",\"type\":\"()\"}]},{\"type\":\"struct\",\"name\":\"ekubo::types::i129::i129\",\"members\":[{\"name\":\"mag\",\"type\":\"core::integer::u128\"},{\"name\":\"sign\",\"type\":\"core::bool\"}]},{\"type\":\"struct\",\"name\":\"creator_coin::exchanges::ekubo::ekubo_adapter::EkuboPoolParameters\",\"members\":[{\"name\":\"fee\",\"type\":\"core::integer::u128\"},{\"name\":\"tick_spacing\",\"type\":\"core::integer::u128\"},{\"name\":\"starting_price\",\"type\":\"ekubo::types::i129::i129\"},{\"name\":\"bound\",\"type\":\"core::integer::u128\"}]},{\"type\":\"struct\",\"name\":\"ekubo::types::keys::PoolKey\",\"members\":[{\"name\":\"token0\",\"type\":\"core::starknet::contract_address::ContractAddress\"},{\"name\":\"token1\",\"type\":\"core::starknet::contract_address::ContractAddress\"},{\"name\":\"fee\",\"type\":\"core::integer::u128\"},{\"name\":\"tick_spacing\",\"type\":\"core::integer::u128\"},{\"name\":\"extension\",\"type\":\"core::starknet::contract_address::ContractAddress\"}]},{\"type\":\"struct\",\"name\":\"ekubo::types::bounds::Bounds\",\"members\":[{\"name\":\"lower\",\"type\":\"ekubo::types::i129::i129\"},{\"name\":\"upper\",\"type\":\"ekubo::types::i129::i129\"}]},{\"type\":\"struct\",\"name\":\"creator_coin::exchanges::ekubo::launcher::EkuboLP\",\"members\":[{\"name\":\"owner\",\"type\":\"core::starknet::contract_address::ContractAddress\"},{\"name\":\"quote_address\",\"type\":\"core::starknet::contract_address::ContractAddress\"},{\"name\":\"pool_key\",\"type\":\"ekubo::types::keys::PoolKey\"},{\"name\":\"bounds\",\"type\":\"ekubo::types::bounds::Bounds\"}]},{\"type\":\"enum\",\"name\":\"creator_coin::exchanges::SupportedExchanges\",\"variants\":[{\"name\":\"Jediswap\",\"type\":\"()\"},{\"name\":\"Ekubo\",\"type\":\"()\"},{\"name\":\"Starkdefi\",\"type\":\"()\"}]},{\"type\":\"enum\",\"name\":\"creator_coin::token::creator_coin::LiquidityType\",\"variants\":[{\"name\":\"JediERC20\",\"type\":\"core::starknet::contract_address::ContractAddress\"},{\"name\":\"StarkDeFiERC20\",\"type\":\"core::starknet::contract_address::ContractAddress\"},{\"name\":\"EkuboNFT\",\"type\":\"core::integer::u64\"}]},{\"type\":\"enum\",\"name\":\"core::option::Option::<(core::starknet::contract_address::ContractAddress, creator_coin::token::creator_coin::LiquidityType)>\",\"variants\":[{\"name\":\"Some\",\"type\":\"(core::starknet::contract_address::ContractAddress, creator_coin::token::creator_coin::LiquidityType)\"},{\"name\":\"None\",\"type\":\"()\"}]},{\"type\":\"interface\",\"name\":\"creator_coin::factory::interface::IFactory\",\"items\":[{\"type\":\"function\",\"name\":\"create_creator_coin\",\"inputs\":[{\"name\":\"owner\",\"type\":\"core::starknet::contract_address::ContractAddress\"},{\"name\":\"name\",\"type\":\"core::felt252\"},{\"name\":\"symbol\",\"type\":\"core::felt252\"},{\"name\":\"initial_supply\",\"type\":\"core::integer::u256\"},{\"name\":\"contract_address_salt\",\"type\":\"core::felt252\"}],\"outputs\":[{\"type\":\"core::starknet::contract_address::ContractAddress\"}],\"state_mutability\":\"external\"},{\"type\":\"function\",\"name\":\"launch_on_jediswap\",\"inputs\":[{\"name\":\"launch_parameters\",\"type\":\"creator_coin::factory::LaunchParameters\"},{\"name\":\"quote_amount\",\"type\":\"core::integer::u256\"},{\"name\":\"unlock_time\",\"type\":\"core::integer::u64\"}],\"outputs\":[{\"type\":\"core::starknet::contract_address::ContractAddress\"}],\"state_mutability\":\"external\"},{\"type\":\"function\",\"name\":\"launch_on_ekubo\",\"inputs\":[{\"name\":\"launch_parameters\",\"type\":\"creator_coin::factory::LaunchParameters\"},{\"name\":\"ekubo_parameters\",\"type\":\"creator_coin::exchanges::ekubo::ekubo_adapter::EkuboPoolParameters\"}],\"outputs\":[{\"type\":\"(core::integer::u64, creator_coin::exchanges::ekubo::launcher::EkuboLP)\"}],\"state_mutability\":\"external\"},{\"type\":\"function\",\"name\":\"launch_on_starkdefi\",\"inputs\":[{\"name\":\"launch_parameters\",\"type\":\"creator_coin::factory::LaunchParameters\"},{\"name\":\"quote_amount\",\"type\":\"core::integer::u256\"},{\"name\":\"unlock_time\",\"type\":\"core::integer::u64\"}],\"outputs\":[{\"type\":\"core::starknet::contract_address::ContractAddress\"}],\"state_mutability\":\"external\"},{\"type\":\"function\",\"name\":\"exchange_address\",\"inputs\":[{\"name\":\"exchange\",\"type\":\"creator_coin::exchanges::SupportedExchanges\"}],\"outputs\":[{\"type\":\"core::starknet::contract_address::ContractAddress\"}],\"state_mutability\":\"view\"},{\"type\":\"function\",\"name\":\"lock_manager_address\",\"inputs\":[],\"outputs\":[{\"type\":\"core::starknet::contract_address::ContractAddress\"}],\"state_mutability\":\"view\"},{\"type\":\"function\",\"name\":\"locked_liquidity\",\"inputs\":[{\"name\":\"token\",\"type\":\"core::starknet::contract_address::ContractAddress\"}],\"outputs\":[{\"type\":\"core::option::Option::<(core::starknet::contract_address::ContractAddress, creator_coin::token::creator_coin::LiquidityType)>\"}],\"state_mutability\":\"view\"},{\"type\":\"function\",\"name\":\"is_creator_coin\",\"inputs\":[{\"name\":\"address\",\"type\":\"core::starknet::contract_address::ContractAddress\"}],\"outputs\":[{\"type\":\"core::bool\"}],\"state_mutability\":\"view\"},{\"type\":\"function\",\"name\":\"ekubo_core_address\",\"inputs\":[],\"outputs\":[{\"type\":\"core::starknet::contract_address::ContractAddress\"}],\"state_mutability\":\"view\"}]},{\"type\":\"struct\",\"name\":\"core::array::Span::<(creator_coin::exchanges::SupportedExchanges, core::starknet::contract_address::ContractAddress)>\",\"members\":[{\"name\":\"snapshot\",\"type\":\"@core::array::Array::<(creator_coin::exchanges::SupportedExchanges, core::starknet::contract_address::ContractAddress)>\"}]},{\"type\":\"struct\",\"name\":\"core::array::Span::<(core::starknet::contract_address::ContractAddress, core::starknet::contract_address::ContractAddress)>\",\"members\":[{\"name\":\"snapshot\",\"type\":\"@core::array::Array::<(core::starknet::contract_address::ContractAddress, core::starknet::contract_address::ContractAddress)>\"}]},{\"type\":\"constructor\",\"name\":\"constructor\",\"inputs\":[{\"name\":\"creator_coin_class_hash\",\"type\":\"core::starknet::class_hash::ClassHash\"},{\"name\":\"lock_manager_address\",\"type\":\"core::starknet::contract_address::ContractAddress\"},{\"name\":\"exchanges\",\"type\":\"core::array::Span::<(creator_coin::exchanges::SupportedExchanges, core::starknet::contract_address::ContractAddress)>\"},{\"name\":\"migrated_tokens\",\"type\":\"core::array::Span::<(core::starknet::contract_address::ContractAddress, core::starknet::contract_address::ContractAddress)>\"}]},{\"type\":\"event\",\"name\":\"creator_coin::factory::factory::Factory::CreatorCoinCreated\",\"kind\":\"struct\",\"members\":[{\"name\":\"owner\",\"type\":\"core::starknet::contract_address::ContractAddress\",\"kind\":\"data\"},{\"name\":\"name\",\"type\":\"core::felt252\",\"kind\":\"data\"},{\"name\":\"symbol\",\"type\":\"core::felt252\",\"kind\":\"data\"},{\"name\":\"initial_supply\",\"type\":\"core::integer::u256\",\"kind\":\"data\"},{\"name\":\"creator_coin_address\",\"type\":\"core::starknet::contract_address::ContractAddress\",\"kind\":\"data\"}]},{\"type\":\"event\",\"name\":\"creator_coin::factory::factory::Factory::CreatorCoinLaunched\",\"kind\":\"struct\",\"members\":[{\"name\":\"creator_coin_address\",\"type\":\"core::starknet::contract_address::ContractAddress\",\"kind\":\"data\"},{\"name\":\"quote_token\",\"type\":\"core::starknet::contract_address::ContractAddress\",\"kind\":\"data\"},{\"name\":\"exchange_name\",\"type\":\"core::felt252\",\"kind\":\"data\"}]},{\"type\":\"event\",\"name\":\"creator_coin::factory::factory::Factory::Event\",\"kind\":\"enum\",\"variants\":[{\"name\":\"CreatorCoinCreated\",\"type\":\"creator_coin::factory::factory::Factory::CreatorCoinCreated\",\"kind\":\"nested\"},{\"name\":\"CreatorCoinLaunched\",\"type\":\"creator_coin::factory::factory::Factory::CreatorCoinLaunched\",\"kind\":\"nested\"}]}] as const;\n","export const IPTicketCollectionABI = [\n {\n \"type\": \"impl\",\n \"name\": \"ERC1155MetadataURIImpl\",\n \"interface_name\": \"openzeppelin_token::erc1155::interface::IERC1155MetadataURI\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::integer::u256\",\n \"members\": [\n {\n \"name\": \"low\",\n \"type\": \"core::integer::u128\"\n },\n {\n \"name\": \"high\",\n \"type\": \"core::integer::u128\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::byte_array::ByteArray\",\n \"members\": [\n {\n \"name\": \"data\",\n \"type\": \"core::array::Array::<core::bytes_31::bytes31>\"\n },\n {\n \"name\": \"pending_word\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"pending_word_len\",\n \"type\": \"core::internal::bounded_int::BoundedInt::<0, 30>\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc1155::interface::IERC1155MetadataURI\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"uri\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"IPTicketCollectionImpl\",\n \"interface_name\": \"ip_ticket::interface::IIPTicketCollection\"\n },\n {\n \"type\": \"enum\",\n \"name\": \"core::option::Option::<core::integer::u64>\",\n \"variants\": [\n {\n \"name\": \"Some\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"None\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"enum\",\n \"name\": \"core::bool\",\n \"variants\": [\n {\n \"name\": \"False\",\n \"type\": \"()\"\n },\n {\n \"name\": \"True\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"ip_ticket::types::Ticket\",\n \"members\": [\n {\n \"name\": \"max_supply\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"minted\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"core::option::Option::<core::integer::u64>\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"core::option::Option::<core::integer::u64>\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u16\"\n },\n {\n \"name\": \"metadata_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"ip_ticket::interface::IIPTicketCollection\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"create_ticket\",\n \"inputs\": [\n {\n \"name\": \"max_supply\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"core::option::Option::<core::integer::u64>\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"core::option::Option::<core::integer::u64>\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u16\"\n },\n {\n \"name\": \"metadata_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"mint\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_valid\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"holder\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_ticket\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"ip_ticket::types::Ticket\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"ticket_count\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"name\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"symbol\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"base_uri\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"royalty_info\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"sale_price\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"(core::starknet::contract_address::ContractAddress, core::integer::u256)\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"royaltyInfo\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"sale_price\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"(core::starknet::contract_address::ContractAddress, core::integer::u256)\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"version\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC1155Impl\",\n \"interface_name\": \"openzeppelin_token::erc1155::interface::IERC1155\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::starknet::contract_address::ContractAddress>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::starknet::contract_address::ContractAddress>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::integer::u256>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::integer::u256>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::felt252>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::felt252>\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc1155::interface::IERC1155\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"balance_of\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balance_of_batch\",\n \"inputs\": [\n {\n \"name\": \"accounts\",\n \"type\": \"core::array::Span::<core::starknet::contract_address::ContractAddress>\"\n },\n {\n \"name\": \"token_ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safe_transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safe_batch_transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"values\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_approved_for_all\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_approval_for_all\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC1155CamelImpl\",\n \"interface_name\": \"openzeppelin_token::erc1155::interface::IERC1155Camel\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc1155::interface::IERC1155Camel\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balanceOfBatch\",\n \"inputs\": [\n {\n \"name\": \"accounts\",\n \"type\": \"core::array::Span::<core::starknet::contract_address::ContractAddress>\"\n },\n {\n \"name\": \"tokenIds\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safeTransferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safeBatchTransferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenIds\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"values\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isApprovedForAll\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setApprovalForAll\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"SRC5Impl\",\n \"interface_name\": \"openzeppelin_introspection::interface::ISRC5\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_introspection::interface::ISRC5\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"supports_interface\",\n \"inputs\": [\n {\n \"name\": \"interface_id\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"OwnableMixinImpl\",\n \"interface_name\": \"openzeppelin_access::ownable::interface::OwnableABI\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_access::ownable::interface::OwnableABI\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer_ownership\",\n \"inputs\": [\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounce_ownership\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"constructor\",\n \"name\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"base_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferSingle\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferBatch\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"values\",\n \"type\": \"core::array::Span::<core::integer::u256>\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::ApprovalForAll\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::URI\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"value\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"TransferSingle\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferSingle\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"TransferBatch\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferBatch\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"ApprovalForAll\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::ApprovalForAll\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"URI\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::URI\",\n \"kind\": \"nested\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferred\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"previous_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferStarted\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"previous_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"OwnershipTransferred\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferred\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"OwnershipTransferStarted\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferStarted\",\n \"kind\": \"nested\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_ticket::IPTicketCollection::IPTicketCollection::TicketCreated\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"max_supply\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"core::option::Option::<core::integer::u64>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"core::option::Option::<core::integer::u64>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"metadata_uri\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_ticket::IPTicketCollection::IPTicketCollection::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"ERC1155Event\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"SRC5Event\",\n \"type\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"OwnableEvent\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"TicketCreated\",\n \"type\": \"ip_ticket::IPTicketCollection::IPTicketCollection::TicketCreated\",\n \"kind\": \"nested\"\n }\n ]\n }\n] as const;\n","export const IPTicketCollectionFactoryABI = [\n {\n \"type\": \"impl\",\n \"name\": \"IPTicketCollectionFactoryImpl\",\n \"interface_name\": \"ip_ticket::interface::IIPTicketCollectionFactory\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::byte_array::ByteArray\",\n \"members\": [\n {\n \"name\": \"data\",\n \"type\": \"core::array::Array::<core::bytes_31::bytes31>\"\n },\n {\n \"name\": \"pending_word\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"pending_word_len\",\n \"type\": \"core::internal::bounded_int::BoundedInt::<0, 30>\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"ip_ticket::interface::IIPTicketCollectionFactory\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"collection_class_hash\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::class_hash::ClassHash\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"version\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"deploy_collection\",\n \"inputs\": [\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"base_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"SRC5Impl\",\n \"interface_name\": \"openzeppelin_introspection::interface::ISRC5\"\n },\n {\n \"type\": \"enum\",\n \"name\": \"core::bool\",\n \"variants\": [\n {\n \"name\": \"False\",\n \"type\": \"()\"\n },\n {\n \"name\": \"True\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_introspection::interface::ISRC5\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"supports_interface\",\n \"inputs\": [\n {\n \"name\": \"interface_id\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"constructor\",\n \"name\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"collection_class_hash\",\n \"type\": \"core::starknet::class_hash::ClassHash\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_ticket::IPTicketCollectionFactory::IPTicketCollectionFactory::CollectionDeployed\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"collection_address\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_ticket::IPTicketCollectionFactory::IPTicketCollectionFactory::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"SRC5Event\",\n \"type\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"CollectionDeployed\",\n \"type\": \"ip_ticket::IPTicketCollectionFactory::IPTicketCollectionFactory::CollectionDeployed\",\n \"kind\": \"nested\"\n }\n ]\n }\n] as const;\n","export const IPClubFactoryABI = [\n {\n \"type\": \"impl\",\n \"name\": \"IPClubCollectionFactoryImpl\",\n \"interface_name\": \"ip_club::interface::IIPClubCollectionFactory\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::byte_array::ByteArray\",\n \"members\": [\n {\n \"name\": \"data\",\n \"type\": \"core::array::Array::<core::bytes_31::bytes31>\"\n },\n {\n \"name\": \"pending_word\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"pending_word_len\",\n \"type\": \"core::internal::bounded_int::BoundedInt::<0, 30>\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"ip_club::interface::IIPClubCollectionFactory\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"collection_class_hash\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::class_hash::ClassHash\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"version\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"deploy_collection\",\n \"inputs\": [\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"base_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"SRC5Impl\",\n \"interface_name\": \"openzeppelin_introspection::interface::ISRC5\"\n },\n {\n \"type\": \"enum\",\n \"name\": \"core::bool\",\n \"variants\": [\n {\n \"name\": \"False\",\n \"type\": \"()\"\n },\n {\n \"name\": \"True\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_introspection::interface::ISRC5\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"supports_interface\",\n \"inputs\": [\n {\n \"name\": \"interface_id\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"constructor\",\n \"name\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"collection_class_hash\",\n \"type\": \"core::starknet::class_hash::ClassHash\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_club::IPClubCollectionFactory::IPClubCollectionFactory::ClubDeployed\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"collection_address\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_club::IPClubCollectionFactory::IPClubCollectionFactory::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"SRC5Event\",\n \"type\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"ClubDeployed\",\n \"type\": \"ip_club::IPClubCollectionFactory::IPClubCollectionFactory::ClubDeployed\",\n \"kind\": \"nested\"\n }\n ]\n }\n] as const;\n","export const IPClubCollectionABI = [\n {\n \"type\": \"impl\",\n \"name\": \"ERC1155MetadataURIImpl\",\n \"interface_name\": \"openzeppelin_token::erc1155::interface::IERC1155MetadataURI\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::integer::u256\",\n \"members\": [\n {\n \"name\": \"low\",\n \"type\": \"core::integer::u128\"\n },\n {\n \"name\": \"high\",\n \"type\": \"core::integer::u128\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::byte_array::ByteArray\",\n \"members\": [\n {\n \"name\": \"data\",\n \"type\": \"core::array::Array::<core::bytes_31::bytes31>\"\n },\n {\n \"name\": \"pending_word\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"pending_word_len\",\n \"type\": \"core::internal::bounded_int::BoundedInt::<0, 30>\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc1155::interface::IERC1155MetadataURI\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"uri\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"IPClubCollectionImpl\",\n \"interface_name\": \"ip_club::interface::IIPClubCollection\"\n },\n {\n \"type\": \"enum\",\n \"name\": \"core::option::Option::<core::integer::u64>\",\n \"variants\": [\n {\n \"name\": \"Some\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"None\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"enum\",\n \"name\": \"core::bool\",\n \"variants\": [\n {\n \"name\": \"False\",\n \"type\": \"()\"\n },\n {\n \"name\": \"True\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"ip_club::types::Membership\",\n \"members\": [\n {\n \"name\": \"max_supply\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"minted\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"core::option::Option::<core::integer::u64>\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"core::option::Option::<core::integer::u64>\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u16\"\n },\n {\n \"name\": \"metadata_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"ip_club::interface::IIPClubCollection\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"create_membership\",\n \"inputs\": [\n {\n \"name\": \"max_supply\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"core::option::Option::<core::integer::u64>\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"core::option::Option::<core::integer::u64>\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u16\"\n },\n {\n \"name\": \"metadata_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"mint\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_member\",\n \"inputs\": [\n {\n \"name\": \"holder\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_member_of\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"holder\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_membership\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"ip_club::types::Membership\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"name\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"symbol\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"base_uri\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"royalty_info\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"sale_price\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"(core::starknet::contract_address::ContractAddress, core::integer::u256)\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"royaltyInfo\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"sale_price\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"(core::starknet::contract_address::ContractAddress, core::integer::u256)\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"version\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC1155Impl\",\n \"interface_name\": \"openzeppelin_token::erc1155::interface::IERC1155\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::starknet::contract_address::ContractAddress>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::starknet::contract_address::ContractAddress>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::integer::u256>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::integer::u256>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::felt252>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::felt252>\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc1155::interface::IERC1155\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"balance_of\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balance_of_batch\",\n \"inputs\": [\n {\n \"name\": \"accounts\",\n \"type\": \"core::array::Span::<core::starknet::contract_address::ContractAddress>\"\n },\n {\n \"name\": \"token_ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safe_transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safe_batch_transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"values\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_approved_for_all\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_approval_for_all\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC1155CamelImpl\",\n \"interface_name\": \"openzeppelin_token::erc1155::interface::IERC1155Camel\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc1155::interface::IERC1155Camel\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balanceOfBatch\",\n \"inputs\": [\n {\n \"name\": \"accounts\",\n \"type\": \"core::array::Span::<core::starknet::contract_address::ContractAddress>\"\n },\n {\n \"name\": \"tokenIds\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safeTransferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safeBatchTransferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenIds\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"values\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isApprovedForAll\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setApprovalForAll\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"SRC5Impl\",\n \"interface_name\": \"openzeppelin_introspection::interface::ISRC5\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_introspection::interface::ISRC5\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"supports_interface\",\n \"inputs\": [\n {\n \"name\": \"interface_id\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"OwnableMixinImpl\",\n \"interface_name\": \"openzeppelin_access::ownable::interface::OwnableABI\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_access::ownable::interface::OwnableABI\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer_ownership\",\n \"inputs\": [\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounce_ownership\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"constructor\",\n \"name\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"base_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferSingle\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferBatch\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"values\",\n \"type\": \"core::array::Span::<core::integer::u256>\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::ApprovalForAll\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::URI\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"value\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"TransferSingle\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferSingle\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"TransferBatch\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferBatch\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"ApprovalForAll\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::ApprovalForAll\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"URI\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::URI\",\n \"kind\": \"nested\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferred\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"previous_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferStarted\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"previous_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"OwnershipTransferred\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferred\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"OwnershipTransferStarted\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferStarted\",\n \"kind\": \"nested\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_club::IPClubCollection::IPClubCollection::MembershipCreated\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"max_supply\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"core::option::Option::<core::integer::u64>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"core::option::Option::<core::integer::u64>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"metadata_uri\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_club::IPClubCollection::IPClubCollection::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"ERC1155Event\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"SRC5Event\",\n \"type\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"OwnableEvent\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"MembershipCreated\",\n \"type\": \"ip_club::IPClubCollection::IPClubCollection::MembershipCreated\",\n \"kind\": \"nested\"\n }\n ]\n }\n] as const;\n","export const IPSponsorshipABI = [\n {\n \"type\": \"impl\",\n \"name\": \"ERC721MetadataImpl\",\n \"interface_name\": \"openzeppelin_token::erc721::interface::IERC721Metadata\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::byte_array::ByteArray\",\n \"members\": [\n {\n \"name\": \"data\",\n \"type\": \"core::array::Array::<core::bytes_31::bytes31>\"\n },\n {\n \"name\": \"pending_word\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"pending_word_len\",\n \"type\": \"core::internal::bounded_int::BoundedInt::<0, 30>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::integer::u256\",\n \"members\": [\n {\n \"name\": \"low\",\n \"type\": \"core::integer::u128\"\n },\n {\n \"name\": \"high\",\n \"type\": \"core::integer::u128\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc721::interface::IERC721Metadata\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"name\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"symbol\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"token_uri\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC721MetadataCamelOnlyImpl\",\n \"interface_name\": \"openzeppelin_token::erc721::interface::IERC721MetadataCamelOnly\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc721::interface::IERC721MetadataCamelOnly\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"tokenURI\",\n \"inputs\": [\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"IPSponsorshipImpl\",\n \"interface_name\": \"ip_sponsorship::interface::IIPSponsorship\"\n },\n {\n \"type\": \"enum\",\n \"name\": \"core::bool\",\n \"variants\": [\n {\n \"name\": \"False\",\n \"type\": \"()\"\n },\n {\n \"name\": \"True\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"enum\",\n \"name\": \"core::option::Option::<core::starknet::contract_address::ContractAddress>\",\n \"variants\": [\n {\n \"name\": \"Some\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"None\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"ip_sponsorship::types::SponsorshipOffer\",\n \"members\": [\n {\n \"name\": \"author\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"nft_contract\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"min_amount\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"duration\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"payment_token\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"license_terms_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"transferable\",\n \"type\": \"core::bool\"\n },\n {\n \"name\": \"specific_sponsor\",\n \"type\": \"core::option::Option::<core::starknet::contract_address::ContractAddress>\"\n },\n {\n \"name\": \"open\",\n \"type\": \"core::bool\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u256\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"ip_sponsorship::types::SponsorshipProposal\",\n \"members\": [\n {\n \"name\": \"proposer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"nft_contract\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"duration\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"valid_until\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"payment_token\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"license_terms_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"transferable\",\n \"type\": \"core::bool\"\n },\n {\n \"name\": \"open\",\n \"type\": \"core::bool\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u256\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"ip_sponsorship::interface::IIPSponsorship\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"create_offer\",\n \"inputs\": [\n {\n \"name\": \"nft_contract\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"min_amount\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"duration\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"payment_token\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"license_terms_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"transferable\",\n \"type\": \"core::bool\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"specific_sponsor\",\n \"type\": \"core::option::Option::<core::starknet::contract_address::ContractAddress>\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_offer_open\",\n \"inputs\": [\n {\n \"name\": \"offer_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"open\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"place_bid\",\n \"inputs\": [\n {\n \"name\": \"offer_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"retract_bid\",\n \"inputs\": [\n {\n \"name\": \"offer_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"accept_bid\",\n \"inputs\": [\n {\n \"name\": \"offer_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"sponsor\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_offer\",\n \"inputs\": [\n {\n \"name\": \"offer_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"ip_sponsorship::types::SponsorshipOffer\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_bid\",\n \"inputs\": [\n {\n \"name\": \"offer_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"sponsor\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_last_offer_id\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_last_license_id\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"propose_sponsorship\",\n \"inputs\": [\n {\n \"name\": \"nft_contract\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"duration\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"valid_until\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"payment_token\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"license_terms_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"transferable\",\n \"type\": \"core::bool\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"withdraw_proposal\",\n \"inputs\": [\n {\n \"name\": \"proposal_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"accept_proposal\",\n \"inputs\": [\n {\n \"name\": \"proposal_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"reject_proposal\",\n \"inputs\": [\n {\n \"name\": \"proposal_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_proposal\",\n \"inputs\": [\n {\n \"name\": \"proposal_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"ip_sponsorship::types::SponsorshipProposal\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_last_proposal_id\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"royalty_info\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"sale_price\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"(core::starknet::contract_address::ContractAddress, core::integer::u256)\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"royaltyInfo\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"sale_price\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"(core::starknet::contract_address::ContractAddress, core::integer::u256)\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"version\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC721Impl\",\n \"interface_name\": \"openzeppelin_token::erc721::interface::IERC721\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::felt252>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::felt252>\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc721::interface::IERC721\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"balance_of\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner_of\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safe_transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"approve\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_approval_for_all\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_approved\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_approved_for_all\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC721CamelOnly\",\n \"interface_name\": \"openzeppelin_token::erc721::interface::IERC721CamelOnly\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc721::interface::IERC721CamelOnly\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"ownerOf\",\n \"inputs\": [\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safeTransferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setApprovalForAll\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getApproved\",\n \"inputs\": [\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isApprovedForAll\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"SRC5Impl\",\n \"interface_name\": \"openzeppelin_introspection::interface::ISRC5\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_introspection::interface::ISRC5\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"supports_interface\",\n \"inputs\": [\n {\n \"name\": \"interface_id\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"constructor\",\n \"name\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::erc721::ERC721Component::Transfer\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::erc721::ERC721Component::Approval\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::erc721::ERC721Component::ApprovalForAll\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::erc721::ERC721Component::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Transfer\",\n \"type\": \"openzeppelin_token::erc721::erc721::ERC721Component::Transfer\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"Approval\",\n \"type\": \"openzeppelin_token::erc721::erc721::ERC721Component::Approval\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"ApprovalForAll\",\n \"type\": \"openzeppelin_token::erc721::erc721::ERC721Component::ApprovalForAll\",\n \"kind\": \"nested\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_sponsorship::IPSponsorship::IPSponsorship::OfferCreated\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"offer_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"author\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"nft_contract\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"min_amount\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"duration\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"payment_token\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"license_terms_uri\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"transferable\",\n \"type\": \"core::bool\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"specific_sponsor\",\n \"type\": \"core::option::Option::<core::starknet::contract_address::ContractAddress>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_sponsorship::IPSponsorship::IPSponsorship::OfferStatusUpdated\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"offer_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"open\",\n \"type\": \"core::bool\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"updated_at\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_sponsorship::IPSponsorship::IPSponsorship::BidPlaced\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"offer_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"sponsor\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"bid_at\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_sponsorship::IPSponsorship::IPSponsorship::BidRetracted\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"offer_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"sponsor\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"retracted_at\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_sponsorship::IPSponsorship::IPSponsorship::SponsorshipAccepted\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"offer_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"license_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"sponsor\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"author\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"expires_at\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_sponsorship::IPSponsorship::IPSponsorship::ProposalCreated\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"proposal_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"proposer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"nft_contract\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"duration\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"valid_until\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"payment_token\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"license_terms_uri\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"transferable\",\n \"type\": \"core::bool\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_sponsorship::IPSponsorship::IPSponsorship::ProposalClosed\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"proposal_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"accepted\",\n \"type\": \"core::bool\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"closed_at\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_sponsorship::IPSponsorship::IPSponsorship::ProposalAccepted\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"proposal_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"license_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"sponsor\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"author\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"expires_at\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_sponsorship::IPSponsorship::IPSponsorship::LicenseMinted\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"author\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"asset_contract\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"asset_token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"expires_at\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"transferable\",\n \"type\": \"core::bool\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"license_terms_uri\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"minted_at\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_sponsorship::IPSponsorship::IPSponsorship::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"ERC721Event\",\n \"type\": \"openzeppelin_token::erc721::erc721::ERC721Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"SRC5Event\",\n \"type\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"OfferCreated\",\n \"type\": \"ip_sponsorship::IPSponsorship::IPSponsorship::OfferCreated\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"OfferStatusUpdated\",\n \"type\": \"ip_sponsorship::IPSponsorship::IPSponsorship::OfferStatusUpdated\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"BidPlaced\",\n \"type\": \"ip_sponsorship::IPSponsorship::IPSponsorship::BidPlaced\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"BidRetracted\",\n \"type\": \"ip_sponsorship::IPSponsorship::IPSponsorship::BidRetracted\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"SponsorshipAccepted\",\n \"type\": \"ip_sponsorship::IPSponsorship::IPSponsorship::SponsorshipAccepted\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"ProposalCreated\",\n \"type\": \"ip_sponsorship::IPSponsorship::IPSponsorship::ProposalCreated\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"ProposalClosed\",\n \"type\": \"ip_sponsorship::IPSponsorship::IPSponsorship::ProposalClosed\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"ProposalAccepted\",\n \"type\": \"ip_sponsorship::IPSponsorship::IPSponsorship::ProposalAccepted\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"LicenseMinted\",\n \"type\": \"ip_sponsorship::IPSponsorship::IPSponsorship::LicenseMinted\",\n \"kind\": \"nested\"\n }\n ]\n }\n] as const;\n","export const IPGenesisABI = [\n {\n \"type\": \"impl\",\n \"name\": \"MIPImpl\",\n \"interface_name\": \"mip::interfaces::IMIP\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::byte_array::ByteArray\",\n \"members\": [\n {\n \"name\": \"data\",\n \"type\": \"core::array::Array::<core::bytes_31::bytes31>\"\n },\n {\n \"name\": \"pending_word\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"pending_word_len\",\n \"type\": \"core::internal::bounded_int::BoundedInt::<0, 30>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::integer::u256\",\n \"members\": [\n {\n \"name\": \"low\",\n \"type\": \"core::integer::u128\"\n },\n {\n \"name\": \"high\",\n \"type\": \"core::integer::u128\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"mip::interfaces::IMIP\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"mint_item\",\n \"inputs\": [\n {\n \"name\": \"recipient\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"uri\",\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"CounterImpl\",\n \"interface_name\": \"mip::interfaces::ICounter\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"mip::interfaces::ICounter\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"current\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"increment\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"decrement\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC721MixinImpl\",\n \"interface_name\": \"openzeppelin_token::erc721::interface::ERC721ABI\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::felt252>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::felt252>\"\n }\n ]\n },\n {\n \"type\": \"enum\",\n \"name\": \"core::bool\",\n \"variants\": [\n {\n \"name\": \"False\",\n \"type\": \"()\"\n },\n {\n \"name\": \"True\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc721::interface::ERC721ABI\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"balance_of\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner_of\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safe_transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"approve\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_approval_for_all\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_approved\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_approved_for_all\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"supports_interface\",\n \"inputs\": [\n {\n \"name\": \"interface_id\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"name\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"symbol\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"token_uri\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"ownerOf\",\n \"inputs\": [\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safeTransferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setApprovalForAll\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getApproved\",\n \"inputs\": [\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isApprovedForAll\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"tokenURI\",\n \"inputs\": [\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"OwnableMixinImpl\",\n \"interface_name\": \"openzeppelin_access::ownable::interface::OwnableABI\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_access::ownable::interface::OwnableABI\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer_ownership\",\n \"inputs\": [\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounce_ownership\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC721EnumerableImpl\",\n \"interface_name\": \"openzeppelin_token::erc721::extensions::erc721_enumerable::interface::IERC721Enumerable\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc721::extensions::erc721_enumerable::interface::IERC721Enumerable\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"total_supply\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"token_by_index\",\n \"inputs\": [\n {\n \"name\": \"index\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"token_of_owner_by_index\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"index\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"constructor\",\n \"name\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::erc721::ERC721Component::Transfer\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::erc721::ERC721Component::Approval\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::erc721::ERC721Component::ApprovalForAll\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::erc721::ERC721Component::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Transfer\",\n \"type\": \"openzeppelin_token::erc721::erc721::ERC721Component::Transfer\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"Approval\",\n \"type\": \"openzeppelin_token::erc721::erc721::ERC721Component::Approval\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"ApprovalForAll\",\n \"type\": \"openzeppelin_token::erc721::erc721::ERC721Component::ApprovalForAll\",\n \"kind\": \"nested\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferred\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"previous_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferStarted\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"previous_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"OwnershipTransferred\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferred\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"OwnershipTransferStarted\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferStarted\",\n \"kind\": \"nested\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::extensions::erc721_enumerable::erc721_enumerable::ERC721EnumerableComponent::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"mip::mip::MIP::CounterComponent::CounterIncremented\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"mip::mip::MIP::CounterComponent::CounterDecremented\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"mip::mip::MIP::CounterComponent::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"CounterIncremented\",\n \"type\": \"mip::mip::MIP::CounterComponent::CounterIncremented\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"CounterDecremented\",\n \"type\": \"mip::mip::MIP::CounterComponent::CounterDecremented\",\n \"kind\": \"nested\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"mip::mip::MIP::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"ERC721Event\",\n \"type\": \"openzeppelin_token::erc721::erc721::ERC721Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"OwnableEvent\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"SRC5Event\",\n \"type\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"ERC721EnumerableEvent\",\n \"type\": \"openzeppelin_token::erc721::extensions::erc721_enumerable::erc721_enumerable::ERC721EnumerableComponent::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"CounterEvent\",\n \"type\": \"mip::mip::MIP::CounterComponent::Event\",\n \"kind\": \"flat\"\n }\n ]\n }\n] as const;\n","import { newContract } from \"../marketplace/utils.js\";\nimport { type AccountInterface } from \"starknet\";\nimport type { ResolvedConfig } from \"../../config.js\";\nimport { normalizeAddress } from \"../../utils/address.js\";\nimport { POPCollectionABI, POPFactoryABI } from \"../abis/index.js\";\nimport { getStarknetCoordinates } from \"../../chains.js\";\nimport type { CreatePopCollectionParams } from \"../../types/services.js\";\nimport type { TxResult } from \"../../types/marketplace.js\";\n\nexport type { CreatePopCollectionParams };\n\nexport class PopService {\n private readonly factoryAddress: string;\n\n constructor(config: ResolvedConfig) {\n this.factoryAddress = getStarknetCoordinates(config.chain).popFactory!;\n }\n\n private _collection(address: string, account: AccountInterface) {\n return newContract(POPCollectionABI as any, normalizeAddress(\"STARKNET\",address), account as any);\n }\n\n async claim(account: AccountInterface, collectionAddress: string): Promise<TxResult> {\n const call = this._collection(collectionAddress, account).populate(\"claim\", []);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n async adminMint(\n account: AccountInterface,\n params: { collection: string; recipient: string; customUri?: string }\n ): Promise<TxResult> {\n const call = this._collection(params.collection, account).populate(\"admin_mint\", [\n params.recipient,\n params.customUri ?? \"\",\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n async addToAllowlist(\n account: AccountInterface,\n params: { collection: string; address: string }\n ): Promise<TxResult> {\n const call = this._collection(params.collection, account).populate(\"add_to_allowlist\", [params.address]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n async batchAddToAllowlist(\n account: AccountInterface,\n params: { collection: string; addresses: string[] }\n ): Promise<TxResult> {\n const collection = this._collection(params.collection, account);\n const CHUNK = 200;\n const calls = [];\n for (let i = 0; i < params.addresses.length; i += CHUNK) {\n calls.push(collection.populate(\"batch_add_to_allowlist\", [params.addresses.slice(i, i + CHUNK)]));\n }\n const res = await account.execute(calls);\n return { txHash: res.transaction_hash };\n }\n\n async removeFromAllowlist(\n account: AccountInterface,\n params: { collection: string; address: string }\n ): Promise<TxResult> {\n const call = this._collection(params.collection, account).populate(\"remove_from_allowlist\", [params.address]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n async setTokenUri(\n account: AccountInterface,\n params: { collection: string; tokenId: string | bigint; uri: string }\n ): Promise<TxResult> {\n const call = this._collection(params.collection, account).populate(\"set_token_uri\", [\n BigInt(params.tokenId),\n params.uri,\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n async setPaused(\n account: AccountInterface,\n params: { collection: string; paused: boolean }\n ): Promise<TxResult> {\n const call = this._collection(params.collection, account).populate(\"set_paused\", [params.paused]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n async createCollection(\n account: AccountInterface,\n params: CreatePopCollectionParams\n ): Promise<TxResult> {\n const factory = newContract(POPFactoryABI as any, this.factoryAddress, account as any);\n const call = factory.populate(\"create_collection\", [\n params.name,\n params.symbol,\n params.baseUri,\n params.claimEndTime,\n { [params.eventType]: {} },\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n}\n","import { cairo, type Call } from \"starknet\";\nimport type { ResolvedFeeConfig } from \"../../fee/config.js\";\n\nexport type FeeSurface = \"marketplace\" | \"launchpad\";\n\nexport interface BuildFeeCallParams {\n surface: FeeSurface;\n /** ERC-20 address the gross amount is denominated in. */\n token: string;\n /** Gross amount in raw token units (e.g. price in wei, or price * quantity). */\n grossAmount: bigint;\n}\n\n/**\n * The single source of truth for the platform fee. Returns one ERC-20\n * `transfer(fundAddress, feeAmount)` Call to bundle into the settlement\n * multicall, or `null` when no fee should be charged.\n *\n * Fail-safe: returns null if disabled, no fund address, or the fee floors to 0.\n */\nexport function buildFeeCall(\n p: BuildFeeCallParams,\n cfg: ResolvedFeeConfig\n): Call | null {\n if (!cfg.enabled || !cfg.fundAddress) return null;\n const bps = p.surface === \"marketplace\" ? cfg.marketplaceBps : cfg.launchpadBps;\n if (bps <= 0) return null;\n const fee = (p.grossAmount * BigInt(bps)) / 10000n;\n if (fee <= 0n) return null;\n const u = cairo.uint256(fee.toString());\n return {\n contractAddress: p.token,\n entrypoint: \"transfer\",\n calldata: [cfg.fundAddress, u.low.toString(), u.high.toString()],\n };\n}\n","import { newContract } from \"../marketplace/utils.js\";\nimport { type AccountInterface } from \"starknet\";\nimport type { ResolvedConfig } from \"../../config.js\";\nimport { normalizeAddress } from \"../../utils/address.js\";\nimport { DropCollectionABI, DropFactoryABI } from \"../abis/index.js\";\nimport { getStarknetCoordinates } from \"../../chains.js\";\nimport type { ClaimConditions, CreateDropParams } from \"../../types/services.js\";\nimport type { TxResult } from \"../../types/marketplace.js\";\nimport { buildFeeCall } from \"../fee/index.js\";\n\nexport type { ClaimConditions, CreateDropParams };\n\nfunction toContractConditions(c: ClaimConditions) {\n return {\n start_time: c.startTime,\n end_time: c.endTime,\n price: BigInt(c.price),\n payment_token: c.paymentToken,\n max_quantity_per_wallet: BigInt(c.maxQuantityPerWallet),\n };\n}\n\nexport class DropService {\n private readonly factoryAddress: string;\n private readonly config: ResolvedConfig;\n\n constructor(config: ResolvedConfig) {\n this.factoryAddress = getStarknetCoordinates(config.chain).dropFactory!;\n this.config = config;\n }\n\n private _collection(address: string, account: AccountInterface) {\n return newContract(DropCollectionABI as any, normalizeAddress(\"STARKNET\",address), account as any);\n }\n\n async claim(\n account: AccountInterface,\n collectionAddress: string,\n quantity: bigint | string | number = 1\n ): Promise<TxResult> {\n const collection = this._collection(collectionAddress, account);\n const qty = BigInt(quantity);\n const claimCall = collection.populate(\"claim\", [qty]);\n\n // get_claim_conditions() → { price (u256), payment_token, ... }\n const conditions = (await collection.get_claim_conditions()) as {\n price: bigint;\n payment_token: bigint | string;\n };\n const price = BigInt(conditions.price);\n const paymentToken =\n typeof conditions.payment_token === \"bigint\"\n ? \"0x\" + conditions.payment_token.toString(16)\n : conditions.payment_token;\n\n const feeCall =\n price > 0n\n ? buildFeeCall(\n { surface: \"launchpad\", token: paymentToken, grossAmount: price * qty },\n this.config.feeConfig\n )\n : null;\n\n const calls = feeCall ? [claimCall, feeCall] : [claimCall];\n const res = await account.execute(calls);\n return { txHash: res.transaction_hash };\n }\n\n async adminMint(\n account: AccountInterface,\n params: { collection: string; recipient: string; quantity?: bigint | string | number; customUri?: string }\n ): Promise<TxResult> {\n const call = this._collection(params.collection, account).populate(\"admin_mint\", [\n params.recipient,\n BigInt(params.quantity ?? 1),\n params.customUri ?? \"\",\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n async setClaimConditions(\n account: AccountInterface,\n params: { collection: string; conditions: ClaimConditions }\n ): Promise<TxResult> {\n const call = this._collection(params.collection, account).populate(\"set_claim_conditions\", [\n toContractConditions(params.conditions),\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n async setAllowlistEnabled(\n account: AccountInterface,\n params: { collection: string; enabled: boolean }\n ): Promise<TxResult> {\n const call = this._collection(params.collection, account).populate(\"set_allowlist_enabled\", [params.enabled]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n async addToAllowlist(\n account: AccountInterface,\n params: { collection: string; address: string }\n ): Promise<TxResult> {\n const call = this._collection(params.collection, account).populate(\"add_to_allowlist\", [params.address]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n async batchAddToAllowlist(\n account: AccountInterface,\n params: { collection: string; addresses: string[] }\n ): Promise<TxResult> {\n const collection = this._collection(params.collection, account);\n const CHUNK = 200;\n const calls = [];\n for (let i = 0; i < params.addresses.length; i += CHUNK) {\n calls.push(collection.populate(\"batch_add_to_allowlist\", [params.addresses.slice(i, i + CHUNK)]));\n }\n const res = await account.execute(calls);\n return { txHash: res.transaction_hash };\n }\n\n async setPaused(\n account: AccountInterface,\n params: { collection: string; paused: boolean }\n ): Promise<TxResult> {\n const call = this._collection(params.collection, account).populate(\"set_paused\", [params.paused]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n async withdrawPayments(\n account: AccountInterface,\n params: { collection: string }\n ): Promise<TxResult> {\n const call = this._collection(params.collection, account).populate(\"withdraw_payments\", []);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n async createDrop(account: AccountInterface, params: CreateDropParams): Promise<TxResult> {\n const factory = newContract(DropFactoryABI as any, this.factoryAddress, account as any);\n const call = factory.populate(\"create_drop\", [\n params.name,\n params.symbol,\n params.baseUri,\n BigInt(params.maxSupply),\n toContractConditions(params.initialConditions),\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n}\n","import { newContract } from \"../marketplace/utils.js\";\nimport { type AccountInterface } from \"starknet\";\nimport type { ResolvedConfig } from \"../../config.js\";\nimport { normalizeAddress } from \"../../utils/address.js\";\nimport { IPCollection1155FactoryABI, IPCollection1155ABI } from \"../abis/index.js\";\nimport { getStarknetCoordinates } from \"../../chains.js\";\nimport type { TxResult } from \"../../types/marketplace.js\";\n\nexport interface DeployCollectionParams {\n /** Human-readable collection name (e.g. \"My IP Collection\") */\n name: string;\n /** Short ticker symbol (e.g. \"MIP\") */\n symbol: string;\n /**\n * Collection-level metadata URI (e.g. \"ipfs://Qm…/collection.json\").\n * Should point to a JSON containing `name`, `description`, `image`, and `external_link`.\n * Stored on-chain at deploy time. Pass an empty string if not available.\n */\n baseUri: string;\n}\n\nexport interface MintEditionParams {\n /** ERC-1155 collection contract address */\n collection: string;\n /** Recipient wallet address */\n to: string;\n /** Number of copies of this new edition to mint */\n value: bigint | string;\n /**\n * Metadata URI — must start with `ipfs://` or `ar://`.\n * Immutable: validated and stored at mint. The token id is assigned on-chain\n * (sequential from 1); read it from the `IPMinted` event of the returned tx.\n */\n tokenUri: string;\n}\n\nexport interface BatchMintEditionParams {\n /** ERC-1155 collection contract address */\n collection: string;\n /** Recipient wallet address */\n to: string;\n /** New editions to create; ids are assigned sequentially on-chain. */\n items: Array<{\n value: bigint | string;\n tokenUri: string;\n }>;\n}\n\nexport interface AddSupplyParams {\n /** ERC-1155 collection contract address */\n collection: string;\n /** Recipient wallet address */\n to: string;\n /** Existing edition id to mint more copies of (reverts if it doesn't exist) */\n tokenId: bigint | string;\n /** Number of additional copies */\n value: bigint | string;\n}\n\nexport class ERC1155CollectionService {\n private readonly factoryAddress: string;\n\n constructor(config: ResolvedConfig) {\n this.factoryAddress = config.collection1155Contract ?? getStarknetCoordinates(config.chain).collection1155!;\n }\n\n private _factory(account: AccountInterface) {\n return newContract(\n IPCollection1155FactoryABI as any,\n normalizeAddress(\"STARKNET\",this.factoryAddress),\n account as any\n );\n }\n\n private _collection(address: string, account: AccountInterface) {\n return newContract(\n IPCollection1155ABI as any,\n normalizeAddress(\"STARKNET\",address),\n account as any\n );\n }\n\n /**\n * Deploy a new ERC-1155 IP collection.\n * Caller becomes the collection owner and can mint items.\n * Returns the transaction hash; the deployed collection address is emitted\n * in the `CollectionDeployed` event of the factory.\n */\n async deployCollection(\n account: AccountInterface,\n params: DeployCollectionParams\n ): Promise<TxResult> {\n const factory = this._factory(account);\n const call = factory.populate(\"deploy_collection\", [params.name, params.symbol, params.baseUri]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /**\n * Mint a new edition into an existing ERC-1155 collection.\n * Caller must be the collection owner. The token id is assigned on-chain\n * (sequential from 1) — read it from the `IPMinted` event of the returned tx.\n * The `tokenUri` is immutable.\n */\n async mintEdition(\n account: AccountInterface,\n params: MintEditionParams\n ): Promise<TxResult> {\n const collection = this._collection(params.collection, account);\n const call = collection.populate(\"mint_edition\", [\n params.to,\n BigInt(params.value),\n params.tokenUri,\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /**\n * Batch-mint multiple new editions into an existing ERC-1155 collection.\n * All editions go to the same `to` address; ids are assigned sequentially\n * on-chain. Caller must be the collection owner.\n */\n async batchMintEdition(\n account: AccountInterface,\n params: BatchMintEditionParams\n ): Promise<TxResult> {\n const collection = this._collection(params.collection, account);\n const values = params.items.map((i) => BigInt(i.value));\n const tokenUris = params.items.map((i) => i.tokenUri);\n const call = collection.populate(\"batch_mint_edition\", [\n params.to,\n values,\n tokenUris,\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /**\n * Mint additional copies of an EXISTING edition into an ERC-1155 collection.\n * Reverts on-chain if `tokenId` has never been minted. Provenance/URI unchanged.\n * Caller must be the collection owner.\n */\n async addSupply(\n account: AccountInterface,\n params: AddSupplyParams\n ): Promise<TxResult> {\n const collection = this._collection(params.collection, account);\n const call = collection.populate(\"add_supply\", [\n params.to,\n BigInt(params.tokenId),\n BigInt(params.value),\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /**\n * Set the default ERC-2981 royalty for the entire collection.\n * `feeNumerator` is out of 10 000 (e.g. 500 = 5%).\n * Caller must be the collection owner.\n */\n async setDefaultRoyalty(\n account: AccountInterface,\n params: { collection: string; receiver: string; feeNumerator: number }\n ): Promise<TxResult> {\n const collection = this._collection(params.collection, account);\n const call = collection.populate(\"set_default_royalty\", [\n params.receiver,\n BigInt(params.feeNumerator),\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /**\n * Set a per-token ERC-2981 royalty override.\n * `feeNumerator` is out of 10 000. Caller must be the collection owner.\n */\n async setTokenRoyalty(\n account: AccountInterface,\n params: { collection: string; tokenId: bigint | string; receiver: string; feeNumerator: number }\n ): Promise<TxResult> {\n const collection = this._collection(params.collection, account);\n const call = collection.populate(\"set_token_royalty\", [\n BigInt(params.tokenId),\n params.receiver,\n BigInt(params.feeNumerator),\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /**\n * Approve the Medialane1155 marketplace (or any operator) to transfer\n * all tokens on behalf of `account`. Required before listing.\n */\n async setApprovalForAll(\n account: AccountInterface,\n params: { collection: string; operator: string; approved: boolean }\n ): Promise<TxResult> {\n const collection = this._collection(params.collection, account);\n const call = collection.populate(\"set_approval_for_all\", [\n params.operator,\n params.approved,\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n}\n","import { newContract } from \"../marketplace/utils.js\";\nimport { RpcProvider, hash, uint256, type AccountInterface, type Call, type Contract, type ProviderInterface } from \"starknet\";\nimport type { ResolvedConfig } from \"../../config.js\";\nimport { CreatorCoinFactoryABI } from \"../abis/index.js\";\nimport { getStarknetCoordinates } from \"../../chains.js\";\nimport { getTokenByAddress } from \"../../utils/token.js\";\nimport { normalizeAddress } from \"../../utils/address.js\";\nimport type { TxResult } from \"../../types/marketplace.js\";\n\nexport interface CreateCreatorCoinParams {\n /** Owner of the new coin — the only address allowed to launch it. */\n owner: string;\n name: string;\n symbol: string;\n /** Full fixed supply (raw, 18 decimals). Minted to the Factory until launch. */\n initialSupply: bigint | string;\n /** Deterministic deploy salt. Defaults to a timestamp-derived value. */\n salt?: bigint | string;\n}\n\n/** Ekubo pool params (off-chain tick). The `startingPrice` is an Ekubo i129 tick. */\nexport interface EkuboPoolParams {\n fee: bigint | string;\n tickSpacing: bigint | string;\n startingPrice: { mag: bigint | string; sign: boolean };\n bound: bigint | string;\n}\n\nexport interface EkuboLaunchParams {\n creatorCoin: string;\n /** Quote token (e.g. STRK). Must NOT itself be a Creator Coin. */\n quoteToken: string;\n /** Team-allocation recipients (≤10% of supply, summed). */\n initialHolders: string[];\n initialHoldersAmounts: (bigint | string)[];\n /** Anti-snipe window in seconds. 0 = none. */\n transferRestrictionDelay?: number;\n /** Max % of supply buyable per tx during the window, in bps (≥50 = 0.5%). */\n maxPercentageBuyLaunch?: number;\n /** Ekubo pool params. Defaults to {@link VALIDATED_EKUBO_PARAMS} (0.01 quote/coin). */\n ekubo?: EkuboPoolParams;\n /**\n * Quote (raw units) to transfer to the Factory in the same multicall, used to\n * buy the team allocation back out of the pool. Must cover\n * `sum(initialHoldersAmounts) × price` (leftover is returned to the caller).\n * If omitted, the Factory must already hold enough quote.\n */\n quoteFundAmount?: bigint | string;\n}\n\n/**\n * Smoke-validated Ekubo params (mainnet 2026-06-04): 0.01 quote/coin for an\n * 18-decimal quote. `sign: true` yields 0.01 quote/coin regardless of token0/1\n * ordering — the launcher compensates internally.\n *\n * TODO: a `priceToEkuboParams(price, quoteDecimals, tickSpacing)` helper (port of\n * unrug's `ekubo/helpers.cairo` tick math) so callers can pick an arbitrary price.\n */\nexport const VALIDATED_EKUBO_PARAMS: EkuboPoolParams = {\n fee: \"0xc49ba5e353f7d00000000000000000\",\n tickSpacing: 5982n,\n startingPrice: { mag: 4600158n, sign: true },\n bound: 88719042n,\n};\n\n/** A Creator Coin's live spot price, read from its Ekubo pool. */\nexport interface CreatorCoinPrice {\n /** Quote tokens per 1 coin, human units (e.g. 0.0101 = 0.0101 STRK/coin). */\n quotePerCoin: number;\n /** The quote token the coin is paired against on Ekubo. */\n quoteToken: string;\n quoteSymbol: string | null;\n quoteDecimals: number;\n}\n\nconst COIN_DECIMALS = 18; // CreatorCoin is always 18 decimals\n\n/**\n * Read a Creator Coin's live spot price directly from its Ekubo pool (read-only).\n *\n * Self-contained: discovers the pool params (quote token, fee, tick spacing) from the\n * coin's own `launched_with_liquidity_parameters`, reads `Core.get_pool_price`, and\n * converts the `sqrt_ratio` to quote-per-coin (handling token0/1 ordering + decimals).\n * Returns `null` if the coin isn't launched on Ekubo. No backend, no swap-quote\n * dependency — works for day-one coins that AVNU doesn't index yet.\n */\nexport async function getCreatorCoinPrice(\n coinAddress: string,\n provider: ProviderInterface,\n): Promise<CreatorCoinPrice | null> {\n // Option<LiquidityParameters::Ekubo({ ekubo_pool_parameters:{fee,tick_spacing,\n // starting_price(mag,sign),bound}, quote_address })>\n // felts: [opt(0=Some), variant(0=Ekubo), fee, tick_spacing, sp_mag, sp_sign, bound, quote]\n const r = await provider.callContract({\n contractAddress: coinAddress,\n entrypoint: \"launched_with_liquidity_parameters\",\n calldata: [],\n });\n if (BigInt(r[0]) !== 0n || BigInt(r[1]) !== 0n) return null; // not launched, or not Ekubo\n const fee = r[2];\n const tickSpacing = r[3];\n // Zero-pad to 64 hex so it matches SUPPORTED_TOKENS (the RPC returns it unpadded).\n const quoteToken = normalizeAddress(\"STARKNET\",\"0x\" + BigInt(r[7]).toString(16));\n const token = getTokenByAddress(quoteToken);\n const quoteDecimals = token?.decimals ?? 18;\n\n const ci = BigInt(coinAddress);\n const qi = BigInt(quoteToken);\n const [t0, t1] = ci < qi ? [coinAddress, quoteToken] : [quoteToken, coinAddress];\n const quoteIsToken0 = qi === BigInt(t0);\n\n // Core.get_pool_price(PoolKey{token0,token1,fee,tick_spacing,extension}) -> PoolPrice{sqrt_ratio:u256, tick:i129}\n const pp = await provider.callContract({\n contractAddress: getStarknetCoordinates(\"STARKNET\").ekuboCore!,\n entrypoint: \"get_pool_price\",\n calldata: [t0, t1, fee, tickSpacing, \"0x0\"],\n });\n const sqrt = BigInt(pp[0]) + (BigInt(pp[1] ?? \"0x0\") << 128n);\n // price(token1/token0) = (sqrt_ratio / 2^128)^2, raw units; coin is 18 decimals.\n const priceT1perT0 = (Number(sqrt) / 2 ** 128) ** 2;\n const decAdj = 10 ** (COIN_DECIMALS - quoteDecimals);\n const quotePerCoin = (quoteIsToken0 ? 1 / priceT1perT0 : priceT1perT0) * decAdj;\n\n return { quotePerCoin, quoteToken, quoteSymbol: token?.symbol ?? null, quoteDecimals };\n}\n\n// ── Account-free call builders ───────────────────────────────────────────────\n// Apps that execute through their own pipeline (io's ChipiPay atomic chokepoint,\n// paymaster flows) need the calls, not an executor. The service methods below\n// build on these — one calldata source for every app.\n\n// Lazy — constructing at module scope breaks the \"no side effects at import\n// time\" convention and crashes CJS-interop consumers whose ABI barrel hasn't\n// evaluated yet (dapp webpack build, 2026-06-10).\nlet _factoryContract: Contract | null = null;\nfunction factoryContract(): Contract {\n if (!_factoryContract) {\n _factoryContract = newContract(\n CreatorCoinFactoryABI as any,\n getStarknetCoordinates(\"STARKNET\").creatorCoinFactory!,\n );\n }\n return _factoryContract;\n}\n\n/** Build the `create_creator_coin` call (full supply minted to the Factory). */\nexport function buildCreateCreatorCoinCall(params: CreateCreatorCoinParams): Call {\n const salt = params.salt ?? BigInt(\"0x\" + Date.now().toString(16));\n return factoryContract().populate(\"create_creator_coin\", [\n params.owner,\n params.name,\n params.symbol,\n BigInt(params.initialSupply),\n BigInt(salt),\n ]);\n}\n\n/**\n * Build the Ekubo launch multicall: optional quote `transfer` (pre-funds the\n * Factory for the team-allocation buyback) + `launch_on_ekubo`.\n */\nexport function buildLaunchOnEkuboCalls(params: EkuboLaunchParams): Call[] {\n const ek = params.ekubo ?? VALIDATED_EKUBO_PARAMS;\n\n const launchParameters = {\n creator_coin_address: params.creatorCoin,\n transfer_restriction_delay: params.transferRestrictionDelay ?? 0,\n max_percentage_buy_launch: params.maxPercentageBuyLaunch ?? 200,\n quote_address: params.quoteToken,\n initial_holders: params.initialHolders,\n initial_holders_amounts: params.initialHoldersAmounts.map((a) => BigInt(a)),\n };\n const ekuboParameters = {\n fee: BigInt(ek.fee),\n tick_spacing: BigInt(ek.tickSpacing),\n starting_price: { mag: BigInt(ek.startingPrice.mag), sign: ek.startingPrice.sign },\n bound: BigInt(ek.bound),\n };\n\n const calls: Call[] = [];\n if (params.quoteFundAmount !== undefined) {\n const amt = uint256.bnToUint256(BigInt(params.quoteFundAmount));\n calls.push({\n contractAddress: params.quoteToken,\n entrypoint: \"transfer\",\n calldata: [getStarknetCoordinates(\"STARKNET\").creatorCoinFactory!, amt.low, amt.high],\n });\n }\n calls.push(factoryContract().populate(\"launch_on_ekubo\", [launchParameters, ekuboParameters]));\n return calls;\n}\n\n/** Minimal receipt shape — works with any starknet.js receipt version. */\nexport interface CreatorCoinReceiptLike {\n events?: Array<{ from_address?: string; keys?: string[]; data?: string[] }>;\n}\n\nconst CREATOR_COIN_CREATED_SELECTOR = hash.getSelectorFromName(\"CreatorCoinCreated\");\n\n/**\n * Pull the deployed coin address from a `create_creator_coin` tx receipt.\n * Event data = [owner, name, symbol, supply_low, supply_high, coin_address].\n * Throws when the receipt carries no matching Factory event.\n */\nexport function parseCreatorCoinCreated(receipt: CreatorCoinReceiptLike): string {\n const factory = normalizeAddress(\"STARKNET\",getStarknetCoordinates(\"STARKNET\").creatorCoinFactory!);\n for (const ev of receipt?.events ?? []) {\n let from: string;\n try {\n from = normalizeAddress(\"STARKNET\",ev.from_address ?? \"\");\n } catch {\n continue;\n }\n if (from !== factory) continue;\n const k0 = ev.keys?.[0];\n if (!k0 || normalizeAddress(\"STARKNET\",k0) !== normalizeAddress(\"STARKNET\",CREATOR_COIN_CREATED_SELECTOR)) continue;\n const data = ev.data ?? [];\n if (data.length < 1) continue;\n return normalizeAddress(\"STARKNET\",data[data.length - 1]); // coin_address is last\n }\n throw new Error(\"Coin deployed but the coin address could not be read from the receipt\");\n}\n\n/**\n * On-chain Creator Coin interactions (Ekubo-only launchpad).\n * Faithful fork of unruggable.meme — permanent LP lock + team-allocation buyback.\n */\nexport class CreatorCoinService {\n private readonly factoryAddress: string;\n private readonly config: ResolvedConfig;\n\n constructor(config: ResolvedConfig) {\n this.factoryAddress = getStarknetCoordinates(config.chain).creatorCoinFactory!;\n this.config = config;\n }\n\n private _factory(account: AccountInterface) {\n return newContract(CreatorCoinFactoryABI as any, this.factoryAddress, account as any);\n }\n\n /** Deploy a fixed-supply CreatorCoin (full supply minted to the Factory). */\n async createCreatorCoin(\n account: AccountInterface,\n params: CreateCreatorCoinParams\n ): Promise<TxResult> {\n const res = await account.execute([buildCreateCreatorCoinCall(params)]);\n return { txHash: res.transaction_hash };\n }\n\n /**\n * Launch a coin on Ekubo (owner-only). Optionally pre-funds the Factory with\n * quote (for the buyback) in the same multicall. Liquidity is permanently\n * locked in the EkuboLauncher.\n */\n async launchOnEkubo(account: AccountInterface, params: EkuboLaunchParams): Promise<TxResult> {\n const res = await account.execute(buildLaunchOnEkuboCalls(params));\n return { txHash: res.transaction_hash };\n }\n\n /** View: is this address a Factory-deployed Creator Coin? */\n async isCreatorCoin(address: string, account: AccountInterface): Promise<boolean> {\n const r = await this._factory(account).is_creator_coin(address);\n return BigInt(r as any) === 1n;\n }\n\n /** Read a coin's live Ekubo spot price (quote-per-coin) via the configured RPC.\n * Read-only; returns null if the coin isn't launched on Ekubo. */\n async getPrice(coinAddress: string): Promise<CreatorCoinPrice | null> {\n return getCreatorCoinPrice(coinAddress, new RpcProvider({ nodeUrl: this.config.rpcUrl }));\n }\n}\n","import { newContract } from \"../marketplace/utils.js\";\nimport { CairoOption, CairoOptionVariant, RpcProvider, cairo, type AccountInterface } from \"starknet\";\nimport type { ResolvedConfig } from \"../../config.js\";\nimport { normalizeAddress } from \"../../utils/address.js\";\nimport { IPTicketCollectionABI, IPTicketCollectionFactoryABI } from \"../abis/index.js\";\nimport { getStarknetCoordinates } from \"../../chains.js\";\nimport type { CreateTicketParams, MintTicketsParams } from \"../../types/services.js\";\nimport type { TxResult } from \"../../types/marketplace.js\";\n\nexport type { CreateTicketParams, MintTicketsParams };\n\nexport interface TicketRecord {\n maxSupply: bigint;\n minted: bigint;\n startTime: number | null;\n endTime: number | null;\n royaltyBps: number;\n metadataUri: string;\n}\n\nexport class TicketService {\n private readonly factoryAddress?: string;\n private readonly config: ResolvedConfig;\n\n constructor(config: ResolvedConfig) {\n this.config = config;\n this.factoryAddress = getStarknetCoordinates(config.chain).ipTicketsFactory;\n }\n\n private _factory(account: AccountInterface, factoryAddress?: string) {\n const address = factoryAddress ?? this.factoryAddress;\n if (!address) throw new Error(\"IP-Tickets factory address not configured for this chain\");\n return newContract(IPTicketCollectionFactoryABI as any, normalizeAddress(\"STARKNET\", address), account as any);\n }\n\n private _collection(address: string, account: AccountInterface) {\n return newContract(IPTicketCollectionABI as any, normalizeAddress(\"STARKNET\", address), account as any);\n }\n\n private _collectionRead(address: string) {\n const provider = new RpcProvider({ nodeUrl: this.config.rpcUrl });\n return newContract(IPTicketCollectionABI as any, normalizeAddress(\"STARKNET\", address), provider);\n }\n\n /**\n * Deploys a new IPTicketCollection via the factory. Caller becomes owner.\n * `baseUri` is the collection-level metadata URI, embedded on-chain in the\n * deploy transaction.\n */\n async deployCollection(\n account: AccountInterface,\n params: { name: string; symbol: string; baseUri: string; factoryAddress?: string }\n ): Promise<TxResult> {\n const call = this._factory(account, params.factoryAddress).populate(\"deploy_collection\", [\n params.name,\n params.symbol,\n params.baseUri,\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /** Owner-only. Creates a new ticket inside the caller's deployed collection. */\n async createTicket(account: AccountInterface, params: CreateTicketParams): Promise<TxResult> {\n const startTime = params.startTime != null\n ? new CairoOption(CairoOptionVariant.Some, params.startTime)\n : new CairoOption(CairoOptionVariant.None);\n const endTime = params.endTime != null\n ? new CairoOption(CairoOptionVariant.Some, params.endTime)\n : new CairoOption(CairoOptionVariant.None);\n const call = this._collection(params.collection, account).populate(\"create_ticket\", [\n cairo.uint256(params.maxSupply),\n startTime,\n endTime,\n params.royaltyBps,\n params.metadataUri,\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /** Owner-only. Mints `amount` of `tokenId` to `to`. */\n async mint(account: AccountInterface, params: MintTicketsParams): Promise<TxResult> {\n const call = this._collection(params.collection, account).populate(\"mint\", [\n params.to,\n cairo.uint256(params.tokenId),\n cairo.uint256(params.amount),\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /** Read — true if holder has balance > 0 and current time is within the ticket window. */\n async isValid(params: { collection: string; tokenId: bigint | string; holder: string }): Promise<boolean> {\n const result = await this._collectionRead(params.collection).call(\"is_valid\", [\n cairo.uint256(params.tokenId),\n params.holder,\n ]);\n return Boolean(result);\n }\n\n /** Read — number of tickets created so far (ids are sequential from 1). */\n async getTicketCount(params: { collection: string }): Promise<bigint> {\n const result = await this._collectionRead(params.collection).call(\"ticket_count\", []);\n return BigInt(result as any);\n }\n\n /** Read — returns the Ticket record for a token ID. */\n async getTicket(params: {\n collection: string;\n tokenId: bigint | string;\n }): Promise<TicketRecord> {\n const t = await this._collectionRead(params.collection).call(\"get_ticket\", [\n cairo.uint256(params.tokenId),\n ]) as any;\n return {\n maxSupply: BigInt(t.max_supply),\n minted: BigInt(t.minted),\n startTime: t.start_time?.variant === \"Some\" ? Number(t.start_time.values[0] ?? t.start_time.value) : null,\n endTime: t.end_time?.variant === \"Some\" ? Number(t.end_time.values[0] ?? t.end_time.value) : null,\n royaltyBps: Number(t.royalty_bps),\n metadataUri: t.metadata_uri as string,\n };\n }\n}\n","import { newContract } from \"../marketplace/utils.js\";\nimport { CairoOption, CairoOptionVariant, RpcProvider, cairo, type AccountInterface } from \"starknet\";\nimport type { ResolvedConfig } from \"../../config.js\";\nimport { normalizeAddress } from \"../../utils/address.js\";\nimport { IPClubCollectionABI, IPClubFactoryABI } from \"../abis/index.js\";\nimport { getStarknetCoordinates } from \"../../chains.js\";\nimport type { CreateMembershipParams, MintMembershipsParams } from \"../../types/services.js\";\nimport type { TxResult } from \"../../types/marketplace.js\";\n\nexport type { CreateMembershipParams, MintMembershipsParams };\n\nexport interface MembershipRecord {\n maxSupply: bigint;\n minted: bigint;\n startTime: number | null;\n endTime: number | null;\n royaltyBps: number;\n metadataUri: string;\n}\n\nexport class ClubService {\n private readonly factoryAddress?: string;\n private readonly config: ResolvedConfig;\n\n constructor(config: ResolvedConfig) {\n this.config = config;\n this.factoryAddress = getStarknetCoordinates(config.chain).ipClubFactory;\n }\n\n private _factory(account: AccountInterface, factoryAddress?: string) {\n const address = factoryAddress ?? this.factoryAddress;\n if (!address) throw new Error(\"IP-Club factory address not configured for this chain\");\n return newContract(IPClubFactoryABI as any, normalizeAddress(\"STARKNET\", address), account as any);\n }\n\n private _collection(address: string, account: AccountInterface) {\n return newContract(IPClubCollectionABI as any, normalizeAddress(\"STARKNET\", address), account as any);\n }\n\n private _collectionRead(address: string) {\n const provider = new RpcProvider({ nodeUrl: this.config.rpcUrl });\n return newContract(IPClubCollectionABI as any, normalizeAddress(\"STARKNET\", address), provider);\n }\n\n /**\n * Deploys a new IPClubCollection via the factory. Caller becomes owner.\n * `baseUri` is the collection-level metadata URI, embedded on-chain in the\n * deploy transaction.\n */\n async deployCollection(\n account: AccountInterface,\n params: { name: string; symbol: string; baseUri: string; factoryAddress?: string }\n ): Promise<TxResult> {\n const call = this._factory(account, params.factoryAddress).populate(\"deploy_collection\", [\n params.name,\n params.symbol,\n params.baseUri,\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /** Owner-only. Creates a new membership tier inside the caller's deployed collection. */\n async createMembership(account: AccountInterface, params: CreateMembershipParams): Promise<TxResult> {\n const startTime = params.startTime != null\n ? new CairoOption(CairoOptionVariant.Some, params.startTime)\n : new CairoOption(CairoOptionVariant.None);\n const endTime = params.endTime != null\n ? new CairoOption(CairoOptionVariant.Some, params.endTime)\n : new CairoOption(CairoOptionVariant.None);\n const call = this._collection(params.collection, account).populate(\"create_membership\", [\n cairo.uint256(params.maxSupply),\n startTime,\n endTime,\n params.royaltyBps,\n params.metadataUri,\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /**\n * Owner-only. Mints `amount` of `tokenId` to `to`. The validity window\n * gates membership, never minting — future-window tiers mint fine.\n */\n async mint(account: AccountInterface, params: MintMembershipsParams): Promise<TxResult> {\n const call = this._collection(params.collection, account).populate(\"mint\", [\n params.to,\n cairo.uint256(params.tokenId),\n cairo.uint256(params.amount),\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /** Read — true if holder holds any tier currently inside its validity window. */\n async isMember(params: { collection: string; holder: string }): Promise<boolean> {\n const result = await this._collectionRead(params.collection).call(\"is_member\", [\n params.holder,\n ]);\n return Boolean(result);\n }\n\n /** Read — true if holder holds `tokenId` and the current time is inside its window. */\n async isMemberOf(params: { collection: string; tokenId: bigint | string; holder: string }): Promise<boolean> {\n const result = await this._collectionRead(params.collection).call(\"is_member_of\", [\n cairo.uint256(params.tokenId),\n params.holder,\n ]);\n return Boolean(result);\n }\n\n /** Read — returns the Membership record for a token ID. */\n async getMembership(params: {\n collection: string;\n tokenId: bigint | string;\n }): Promise<MembershipRecord> {\n const m = await this._collectionRead(params.collection).call(\"get_membership\", [\n cairo.uint256(params.tokenId),\n ]) as any;\n return {\n maxSupply: BigInt(m.max_supply),\n minted: BigInt(m.minted),\n startTime: m.start_time?.variant === \"Some\" ? Number(m.start_time.values[0] ?? m.start_time.value) : null,\n endTime: m.end_time?.variant === \"Some\" ? Number(m.end_time.values[0] ?? m.end_time.value) : null,\n royaltyBps: Number(m.royalty_bps),\n metadataUri: m.metadata_uri as string,\n };\n }\n}\n","import { newContract } from \"../marketplace/utils.js\";\nimport { CairoOption, CairoOptionVariant, RpcProvider, cairo, type AccountInterface } from \"starknet\";\nimport type { ResolvedConfig } from \"../../config.js\";\nimport { normalizeAddress } from \"../../utils/address.js\";\nimport { IPSponsorshipABI } from \"../abis/index.js\";\nimport { getStarknetCoordinates } from \"../../chains.js\";\nimport type { CreateSponsorshipOfferParams, ProposeSponsorshipParams } from \"../../types/services.js\";\nimport type { TxResult } from \"../../types/marketplace.js\";\n\nexport type { CreateSponsorshipOfferParams, ProposeSponsorshipParams };\n\nexport interface SponsorshipOfferRecord {\n author: string;\n nftContract: string;\n tokenId: bigint;\n minAmount: bigint;\n duration: number;\n paymentToken: string;\n licenseTermsUri: string;\n transferable: boolean;\n specificSponsor: string | null;\n open: boolean;\n royaltyBps: bigint;\n}\n\nexport interface SponsorshipProposalRecord {\n proposer: string;\n nftContract: string;\n tokenId: bigint;\n amount: bigint;\n duration: number;\n /** Unix seconds; 0 = no deadline. */\n validUntil: number;\n paymentToken: string;\n licenseTermsUri: string;\n transferable: boolean;\n open: boolean;\n royaltyBps: bigint;\n}\n\n/**\n * IP Sponsorship v3 — one contract is both the offer/bid/proposal registry\n * AND the issued license collection (a standard ERC-721; embeds\n * ERC721Component directly, no separate receipt contract, no `set_minter`\n * bootstrap). `transferable`/expiry are declarative terms only — never\n * contract-enforced against a transfer — carried in `license_terms_uri`\n * metadata and the `LicenseMinted` event; the indexer, not this contract,\n * derives validity. A license moves through the standard ERC-721\n * `transfer_from`/`safe_transfer_from` on this same contract address, so\n * there is no bespoke transfer wrapper here.\n */\nexport class SponsorshipService {\n private readonly sponsorshipAddress?: string;\n private readonly config: ResolvedConfig;\n\n constructor(config: ResolvedConfig) {\n this.config = config;\n this.sponsorshipAddress = getStarknetCoordinates(config.chain).ipSponsorship;\n }\n\n private _contract(account: AccountInterface, address?: string) {\n const resolved = address ?? this.sponsorshipAddress;\n if (!resolved) {\n throw new Error(\"IP-Sponsorship address not configured for this chain\");\n }\n return newContract(IPSponsorshipABI as any, normalizeAddress(\"STARKNET\", resolved), account as any);\n }\n\n private _contractRead(address?: string) {\n const resolved = address ?? this.sponsorshipAddress;\n if (!resolved) {\n throw new Error(\"IP-Sponsorship address not configured for this chain\");\n }\n const provider = new RpcProvider({ nodeUrl: this.config.rpcUrl });\n return newContract(IPSponsorshipABI as any, normalizeAddress(\"STARKNET\", resolved), provider);\n }\n\n // ── Offers (owner-initiated) ───────────────────────────────────────────────\n\n /** The offer author must currently own (nftContract, tokenId) — enforced on-chain at create and accept. */\n async createOffer(\n account: AccountInterface,\n params: CreateSponsorshipOfferParams & { sponsorshipAddress?: string }\n ): Promise<TxResult> {\n const specificSponsor = params.specificSponsor\n ? new CairoOption(CairoOptionVariant.Some, params.specificSponsor)\n : new CairoOption(CairoOptionVariant.None);\n\n const call = this._contract(account, params.sponsorshipAddress).populate(\"create_offer\", [\n params.nftContract,\n cairo.uint256(params.tokenId),\n cairo.uint256(params.minAmount),\n params.duration,\n params.paymentToken,\n params.licenseTermsUri,\n params.transferable,\n cairo.uint256(params.royaltyBps),\n specificSponsor,\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /** Reversible — gates new bids/acceptance only. */\n async setOfferOpen(\n account: AccountInterface,\n params: { offerId: bigint | string; open: boolean; sponsorshipAddress?: string }\n ): Promise<TxResult> {\n const call = this._contract(account, params.sponsorshipAddress).populate(\"set_offer_open\", [\n cairo.uint256(params.offerId),\n params.open,\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /** A bid is a signal plus an open ERC-20 allowance — no tokens move until accepted. Prepends the approve. */\n async placeBid(\n account: AccountInterface,\n params: { offerId: bigint | string; amount: bigint | string; paymentToken: string; sponsorshipAddress?: string }\n ): Promise<TxResult> {\n const sponsorshipAddress = params.sponsorshipAddress ?? this.sponsorshipAddress;\n if (!sponsorshipAddress) {\n throw new Error(\"IP-Sponsorship address not configured for this chain\");\n }\n const amount = cairo.uint256(params.amount);\n const approveCall = {\n contractAddress: params.paymentToken,\n entrypoint: \"approve\",\n calldata: [normalizeAddress(\"STARKNET\", sponsorshipAddress), amount.low.toString(), amount.high.toString()],\n };\n const bidCall = this._contract(account, sponsorshipAddress).populate(\"place_bid\", [\n cairo.uint256(params.offerId),\n amount,\n ]);\n const res = await account.execute([approveCall, bidCall]);\n return { txHash: res.transaction_hash };\n }\n\n async retractBid(\n account: AccountInterface,\n params: { offerId: bigint | string; sponsorshipAddress?: string }\n ): Promise<TxResult> {\n const call = this._contract(account, params.sponsorshipAddress).populate(\"retract_bid\", [\n cairo.uint256(params.offerId),\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /**\n * Author-only. Re-verifies IP ownership, settles the sponsor's payment\n * (allowance pull, no escrow), and mints the license — a real ERC-721 on\n * this same contract — to the sponsor, all atomically in one call.\n */\n async acceptBid(\n account: AccountInterface,\n params: { offerId: bigint | string; sponsor: string; sponsorshipAddress?: string }\n ): Promise<TxResult> {\n const call = this._contract(account, params.sponsorshipAddress).populate(\"accept_bid\", [\n cairo.uint256(params.offerId),\n params.sponsor,\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n // ── Proposals (sponsor-initiated) ──────────────────────────────────────────\n // The symmetric counterpart to offers/bids: a sponsor proposes fixed terms\n // on an asset with no open offer yet; only the asset's current owner may\n // accept or reject. Unlike an offer, the SPONSOR chooses `paymentToken` here\n // — an accepting owner's UI should surface only recognized tokens, since a\n // bad-faith ERC-20 could return `true` on `transfer_from` without moving funds.\n\n async proposeSponsorship(\n account: AccountInterface,\n params: ProposeSponsorshipParams & { sponsorshipAddress?: string }\n ): Promise<TxResult> {\n const call = this._contract(account, params.sponsorshipAddress).populate(\"propose_sponsorship\", [\n params.nftContract,\n cairo.uint256(params.tokenId),\n cairo.uint256(params.amount),\n params.duration,\n params.validUntil ?? 0,\n params.paymentToken,\n params.licenseTermsUri,\n params.transferable,\n cairo.uint256(params.royaltyBps),\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /** Proposer-only. Advisory against an acceptance in flight in the same block. */\n async withdrawProposal(\n account: AccountInterface,\n params: { proposalId: bigint | string; sponsorshipAddress?: string }\n ): Promise<TxResult> {\n const call = this._contract(account, params.sponsorshipAddress).populate(\"withdraw_proposal\", [\n cairo.uint256(params.proposalId),\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /**\n * Asset-owner-only (re-verified on-chain — a proposal binds to the asset,\n * not a person: whoever owns it at acceptance time is paid and issues the\n * license). Settles payment and mints the license atomically, same as\n * `acceptBid`.\n */\n async acceptProposal(\n account: AccountInterface,\n params: { proposalId: bigint | string; sponsorshipAddress?: string }\n ): Promise<TxResult> {\n const call = this._contract(account, params.sponsorshipAddress).populate(\"accept_proposal\", [\n cairo.uint256(params.proposalId),\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /** Asset-owner-only. */\n async rejectProposal(\n account: AccountInterface,\n params: { proposalId: bigint | string; sponsorshipAddress?: string }\n ): Promise<TxResult> {\n const call = this._contract(account, params.sponsorshipAddress).populate(\"reject_proposal\", [\n cairo.uint256(params.proposalId),\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n // ── Reads ───────────────────────────────────────────────────────────────────\n\n async getOffer(params: { offerId: bigint | string; sponsorshipAddress?: string }): Promise<SponsorshipOfferRecord> {\n const o = await this._contractRead(params.sponsorshipAddress).call(\"get_offer\", [\n cairo.uint256(params.offerId),\n ]) as any;\n return {\n author: o.author as string,\n nftContract: o.nft_contract as string,\n tokenId: BigInt(o.token_id),\n minAmount: BigInt(o.min_amount),\n duration: Number(o.duration),\n paymentToken: o.payment_token as string,\n licenseTermsUri: o.license_terms_uri as string,\n transferable: Boolean(o.transferable),\n specificSponsor: o.specific_sponsor?.variant === \"Some\"\n ? (o.specific_sponsor.values?.[0] ?? o.specific_sponsor.value)\n : null,\n open: Boolean(o.open),\n royaltyBps: BigInt(o.royalty_bps),\n };\n }\n\n async getBid(params: { offerId: bigint | string; sponsor: string; sponsorshipAddress?: string }): Promise<bigint> {\n const result = await this._contractRead(params.sponsorshipAddress).call(\"get_bid\", [\n cairo.uint256(params.offerId),\n params.sponsor,\n ]);\n return BigInt(result as any);\n }\n\n async getProposal(params: { proposalId: bigint | string; sponsorshipAddress?: string }): Promise<SponsorshipProposalRecord> {\n const p = await this._contractRead(params.sponsorshipAddress).call(\"get_proposal\", [\n cairo.uint256(params.proposalId),\n ]) as any;\n return {\n proposer: p.proposer as string,\n nftContract: p.nft_contract as string,\n tokenId: BigInt(p.token_id),\n amount: BigInt(p.amount),\n duration: Number(p.duration),\n validUntil: Number(p.valid_until),\n paymentToken: p.payment_token as string,\n licenseTermsUri: p.license_terms_uri as string,\n transferable: Boolean(p.transferable),\n open: Boolean(p.open),\n royaltyBps: BigInt(p.royalty_bps),\n };\n }\n\n async getLastOfferId(params?: { sponsorshipAddress?: string }): Promise<bigint> {\n const result = await this._contractRead(params?.sponsorshipAddress).call(\"get_last_offer_id\", []);\n return BigInt(result as any);\n }\n\n async getLastProposalId(params?: { sponsorshipAddress?: string }): Promise<bigint> {\n const result = await this._contractRead(params?.sponsorshipAddress).call(\"get_last_proposal_id\", []);\n return BigInt(result as any);\n }\n\n async getLastLicenseId(params?: { sponsorshipAddress?: string }): Promise<bigint> {\n const result = await this._contractRead(params?.sponsorshipAddress).call(\"get_last_license_id\", []);\n return BigInt(result as any);\n }\n\n /** EIP-2981 — royalty recipient (the license's issuing author) and amount owed on a resale at `salePrice`. */\n async royaltyInfo(params: {\n licenseId: bigint | string;\n salePrice: bigint | string;\n sponsorshipAddress?: string;\n }): Promise<{ recipient: string; amount: bigint }> {\n const [recipient, amount] = await this._contractRead(params.sponsorshipAddress).call(\"royalty_info\", [\n cairo.uint256(params.licenseId),\n cairo.uint256(params.salePrice),\n ]) as any;\n return { recipient: recipient as string, amount: BigInt(amount) };\n }\n}\n","import { type MedialaneConfig, resolveConfig, type ResolvedConfig } from \"../config.js\";\nimport { ApiClient } from \"../api/client.js\";\nimport { PopService } from \"./services/pop.js\";\nimport { DropService } from \"./services/drop.js\";\nimport { ERC1155CollectionService } from \"./services/erc1155collection.js\";\nimport { CreatorCoinService } from \"./services/creatorCoin.js\";\nimport { TicketService } from \"./services/ticket.js\";\nimport { ClubService } from \"./services/club.js\";\nimport { SponsorshipService } from \"./services/sponsorship.js\";\n\n// Marketplace order execution is NOT on the client (0.64.0): it goes through\n// StarknetVenue over the VenueSigner capability port (./venue.ts) — the app's\n// wallet layer signs and submits; the venue builds and reads.\nexport class MedialaneClient {\n /**\n * Off-chain API client — covers all /v1/* backend endpoints.\n * Requires `backendUrl` in config; pass `apiKey` for authenticated routes.\n */\n readonly api: ApiClient;\n\n readonly services: {\n readonly pop: PopService;\n readonly drop: DropService;\n readonly erc1155Collection: ERC1155CollectionService;\n readonly creatorCoin: CreatorCoinService;\n readonly ticket: TicketService;\n readonly club: ClubService;\n readonly sponsorship: SponsorshipService;\n };\n\n private readonly config: ResolvedConfig;\n\n constructor(rawConfig: MedialaneConfig = {}) {\n this.config = resolveConfig(rawConfig);\n\n this.services = {\n pop: new PopService(this.config),\n drop: new DropService(this.config),\n erc1155Collection: new ERC1155CollectionService(this.config),\n creatorCoin: new CreatorCoinService(this.config),\n ticket: new TicketService(this.config),\n club: new ClubService(this.config),\n sponsorship: new SponsorshipService(this.config),\n };\n\n if (!this.config.backendUrl) {\n // When backendUrl is not configured, `client.api.*()` must fail with a\n // helpful message. Wrap a real ApiClient (built with a sentinel URL so\n // it never silently dispatches) in a Proxy that intercepts ONLY actual\n // ApiClient methods — Symbol access, .then (Promise unwrapping),\n // .toString, .inspect (Node/Bun debug) and other host introspection\n // are returned unchanged so they don't fabricate throwing functions.\n const sentinel = new ApiClient(\"https://medialane-sdk-no-backend.invalid\", this.config.apiKey);\n const apiMethodNames = new Set<string | symbol>(\n Object.getOwnPropertyNames(ApiClient.prototype).filter(\n (k) => k !== \"constructor\" && typeof (sentinel as unknown as Record<string, unknown>)[k] === \"function\",\n ),\n );\n this.api = new Proxy(sentinel, {\n get(target, prop, receiver) {\n if (typeof prop === \"symbol\" || !apiMethodNames.has(prop)) {\n return Reflect.get(target, prop, receiver);\n }\n return () => {\n throw new Error(\n `backendUrl not configured. Pass backendUrl to MedialaneClient to use .api.${String(prop)}()`,\n );\n };\n },\n });\n } else {\n this.api = new ApiClient(this.config.backendUrl, this.config.apiKey, this.config.retryOptions, this.config.chain);\n }\n }\n\n get chain() {\n return this.config.chain;\n }\n\n get rpcUrl() {\n return this.config.rpcUrl;\n }\n\n get marketplaceContract() {\n return this.config.marketplaceContract;\n }\n}\n","// Pure view reads on the ERC-721 venue. The self-executing order writes that\n// used to live here (createListing/makeOffer/fulfillOrder/cancelOrder/\n// checkoutCart/mint/createCollection/incrementCounter) were removed in 0.64.0:\n// order execution goes through StarknetVenue over the VenueSigner capability\n// port (../venue.ts) — one source for order construction; the app's wallet\n// layer signs and submits. Calldata/typed-data construction lives in the pure\n// builders (./build.ts, ./signing.ts).\nimport { type Abi, Contract } from \"starknet\";\nimport { IPMarketplaceABI } from \"../abis/index.js\";\nimport type { ResolvedConfig } from \"../../config.js\";\nimport type { OrderDetails } from \"../../types/marketplace.js\";\nimport { getProvider, newContract } from \"./utils.js\";\n\nconst _contractCache = new WeakMap<ResolvedConfig, { contract: Contract }>();\n\nfunction makeContract(config: ResolvedConfig): { contract: Contract } {\n const cached = _contractCache.get(config);\n if (cached) return cached;\n const contract = newContract(\n IPMarketplaceABI as unknown as Abi,\n config.marketplaceContract,\n getProvider(config)\n );\n const entry = { contract };\n _contractCache.set(config, entry);\n return entry;\n}\n\nexport async function getOrderDetails(\n orderHash: string,\n config: ResolvedConfig\n): Promise<OrderDetails> {\n const { contract } = makeContract(config);\n return contract.get_order_details(orderHash) as Promise<OrderDetails>;\n}\n\nexport async function getCounter(\n address: string,\n config: ResolvedConfig\n): Promise<bigint> {\n const { contract } = makeContract(config);\n return BigInt((await contract.get_counter(address)).toString());\n}\n","// Pure view reads on the ERC-1155 venue. The self-executing order writes that\n// used to live here (createListing1155/makeOffer1155/fulfillOrder1155/\n// cancelOrder1155/checkoutCart1155/incrementCounter1155) were removed in\n// 0.64.0 — order execution goes through StarknetVenue over the VenueSigner\n// capability port (../venue.ts). Calldata/typed-data construction lives in\n// the pure builders (./build.ts, ../marketplace/signing.ts).\nimport { type Abi, Contract } from \"starknet\";\nimport { Medialane1155ABI } from \"../abis/index.js\";\nimport type { ResolvedConfig } from \"../../config.js\";\nimport type { OrderDetails } from \"../../types/marketplace.js\";\nimport { getProvider, newContract } from \"../marketplace/utils.js\";\n\nconst _contractCache = new WeakMap<ResolvedConfig, Contract>();\n\nfunction getContract(config: ResolvedConfig): Contract {\n let c = _contractCache.get(config);\n if (!c) {\n c = newContract(Medialane1155ABI as unknown as Abi, config.marketplace1155Contract, getProvider(config));\n _contractCache.set(config, c);\n }\n return c;\n}\n\nexport async function getOrderDetails1155(\n orderHash: string,\n config: ResolvedConfig\n): Promise<OrderDetails> {\n const contract = getContract(config);\n return contract.get_order_details(orderHash) as Promise<OrderDetails>;\n}\n\nexport async function getCounter1155(\n address: string,\n config: ResolvedConfig\n): Promise<bigint> {\n const contract = getContract(config);\n return BigInt((await contract.get_counter(address)).toString());\n}\n","import { type TypedData, TypedDataRevision, constants } from \"starknet\";\n\n// ── Shared SNIP-12 building blocks ─────────────────────────────────────────────\n\nconst STARKNET_DOMAIN = [\n { name: \"name\", type: \"shortstring\" },\n { name: \"version\", type: \"shortstring\" },\n { name: \"chainId\", type: \"shortstring\" },\n { name: \"revision\", type: \"shortstring\" },\n];\n\nconst OFFER_ITEM = [\n { name: \"item_type\", type: \"shortstring\" },\n { name: \"token\", type: \"ContractAddress\" },\n { name: \"identifier_or_criteria\", type: \"felt\" },\n { name: \"amount\", type: \"felt\" },\n];\n\nconst CONSIDERATION_ITEM = [\n { name: \"item_type\", type: \"shortstring\" },\n { name: \"token\", type: \"ContractAddress\" },\n { name: \"identifier_or_criteria\", type: \"felt\" },\n { name: \"amount\", type: \"felt\" },\n { name: \"recipient\", type: \"ContractAddress\" },\n];\n\nconst ORDER_PARAMETERS = [\n { name: \"offerer\", type: \"ContractAddress\" },\n { name: \"marketplace\", type: \"ContractAddress\" },\n { name: \"offer\", type: \"OfferItem\" },\n { name: \"consideration\", type: \"ConsiderationItem\" },\n { name: \"royalty_max_bps\", type: \"felt\" },\n { name: \"start_time\", type: \"felt\" },\n { name: \"end_time\", type: \"felt\" },\n { name: \"salt\", type: \"felt\" },\n { name: \"counter\", type: \"felt\" },\n];\n\nconst ORDER_CANCELLATION = [\n { name: \"order_hash\", type: \"felt\" },\n { name: \"offerer\", type: \"ContractAddress\" },\n];\n\n/**\n * SNIP-12 domain version per marketplace contract:\n * ERC-721 marketplace → \"1\"\n * ERC-1155 marketplace V2 → \"2\"\n *\n * If the Cairo contracts are ever redeployed with different SNIP-12 domains,\n * update only this lookup — every builder reads through it.\n */\nconst DOMAIN_VERSION: Record<\"erc721\" | \"erc1155\", string> = {\n erc721: \"5\",\n erc1155: \"4\",\n};\n\nfunction buildDomain(standard: \"erc721\" | \"erc1155\", chainId: constants.StarknetChainId | string) {\n return {\n name: \"Medialane\",\n version: DOMAIN_VERSION[standard],\n chainId,\n revision: TypedDataRevision.ACTIVE,\n };\n}\n\n// ── Public builders ────────────────────────────────────────────────────────────\n\n/**\n * Build SNIP-12 typed data for signing an OrderParameters struct.\n * The shape is identical across ERC-721 and ERC-1155 (nested OfferItem +\n * ConsiderationItem) — only the domain version differs.\n */\nexport function buildOrderTypedData(\n message: Record<string, unknown>,\n chainId: constants.StarknetChainId | string,\n): TypedData {\n return {\n domain: buildDomain(\"erc721\", chainId),\n primaryType: \"OrderParameters\",\n types: {\n StarknetDomain: STARKNET_DOMAIN,\n OrderParameters: ORDER_PARAMETERS,\n OfferItem: OFFER_ITEM,\n ConsiderationItem: CONSIDERATION_ITEM,\n },\n message,\n };\n}\n\nexport function build1155OrderTypedData(\n message: Record<string, unknown>,\n chainId: constants.StarknetChainId | string,\n): TypedData {\n return {\n domain: buildDomain(\"erc1155\", chainId),\n primaryType: \"OrderParameters\",\n types: {\n StarknetDomain: STARKNET_DOMAIN,\n OrderParameters: ORDER_PARAMETERS,\n OfferItem: OFFER_ITEM,\n ConsiderationItem: CONSIDERATION_ITEM,\n },\n message,\n };\n}\n\n/** OrderCancellation typed data — identical shape across both standards. */\nexport function buildCancellationTypedData(\n message: Record<string, unknown>,\n chainId: constants.StarknetChainId | string,\n): TypedData {\n return {\n domain: buildDomain(\"erc721\", chainId),\n primaryType: \"OrderCancellation\",\n types: {\n StarknetDomain: STARKNET_DOMAIN,\n OrderCancellation: ORDER_CANCELLATION,\n },\n message,\n };\n}\n\nexport function build1155CancellationTypedData(\n message: Record<string, unknown>,\n chainId: constants.StarknetChainId | string,\n): TypedData {\n return {\n domain: buildDomain(\"erc1155\", chainId),\n primaryType: \"OrderCancellation\",\n types: {\n StarknetDomain: STARKNET_DOMAIN,\n OrderCancellation: ORDER_CANCELLATION,\n },\n message,\n };\n}\n","import { type Abi, type Call, type TypedData, Contract, cairo, shortString } from \"starknet\";\nimport { IPMarketplaceABI } from \"../abis/index.js\";\nimport type { ResolvedConfig } from \"../../config.js\";\nimport { stringifyBigInts } from \"../../utils/bigint.js\";\nimport { buildOrderTypedData, buildCancellationTypedData } from \"./signing.js\";\nimport { buildFeeCall } from \"../fee/index.js\";\nimport { getChainId, getProvider, newContract } from \"./utils.js\";\n\n/**\n * Pure calldata builders for the 721 marketplace — no signing, no execution, no\n * provider *writes*. Salt, counter, and times are injected by the caller so the\n * output is deterministic and testable. Both the legacy `MarketplaceModule`\n * execute-methods and the chain-neutral `StarknetVenue` build calls through here,\n * so their calldata is identical by construction.\n */\n\nexport interface OrderLeg {\n item_type: string;\n token: string;\n identifier_or_criteria: string;\n amount: string;\n recipient?: string;\n}\n\nexport interface OrderParams {\n offerer: string;\n marketplace: string;\n offer: OrderLeg;\n consideration: OrderLeg;\n royalty_max_bps: string;\n start_time: string;\n end_time: string;\n salt: string;\n counter: string;\n}\n\nexport interface BuildListingInput {\n offerer: string;\n nftContract: string;\n tokenId: string;\n /** ERC-20 consideration amount, base units. */\n priceWei: string;\n paymentTokenAddress: string;\n royaltyMaxBps: string;\n startTime: number;\n endTime: number;\n salt: string;\n counter: string;\n}\n\nexport type BuildOfferInput = BuildListingInput;\n\nfunction contractFor(cfg: ResolvedConfig): Contract {\n return newContract(IPMarketplaceABI as unknown as Abi, cfg.marketplaceContract, getProvider(cfg));\n}\n\nexport function buildListingOrder(\n i: BuildListingInput,\n cfg: ResolvedConfig,\n): { orderParams: OrderParams; typedData: TypedData } {\n const orderParams: OrderParams = {\n offerer: i.offerer,\n marketplace: cfg.marketplaceContract,\n offer: { item_type: \"ERC721\", token: i.nftContract, identifier_or_criteria: i.tokenId, amount: \"1\" },\n consideration: {\n item_type: \"ERC20\",\n token: i.paymentTokenAddress,\n identifier_or_criteria: \"0\",\n amount: i.priceWei,\n recipient: i.offerer,\n },\n royalty_max_bps: i.royaltyMaxBps,\n start_time: String(i.startTime),\n end_time: String(i.endTime),\n salt: i.salt,\n counter: i.counter,\n };\n const typedData = stringifyBigInts(buildOrderTypedData(orderParams as unknown as Record<string, unknown>, getChainId(cfg))) as TypedData;\n return { orderParams, typedData };\n}\n\nexport function buildOfferOrder(\n i: BuildOfferInput,\n cfg: ResolvedConfig,\n): { orderParams: OrderParams; typedData: TypedData } {\n const orderParams: OrderParams = {\n offerer: i.offerer,\n marketplace: cfg.marketplaceContract,\n offer: { item_type: \"ERC20\", token: i.paymentTokenAddress, identifier_or_criteria: \"0\", amount: i.priceWei },\n consideration: {\n item_type: \"ERC721\",\n token: i.nftContract,\n identifier_or_criteria: i.tokenId,\n amount: \"1\",\n recipient: i.offerer,\n },\n royalty_max_bps: i.royaltyMaxBps,\n start_time: String(i.startTime),\n end_time: String(i.endTime),\n salt: i.salt,\n counter: i.counter,\n };\n const typedData = stringifyBigInts(buildOrderTypedData(orderParams as unknown as Record<string, unknown>, getChainId(cfg))) as TypedData;\n return { orderParams, typedData };\n}\n\nfunction registerPayload(orderParams: OrderParams, signature: string[]) {\n return stringifyBigInts({\n parameters: {\n ...orderParams,\n offer: { ...orderParams.offer, item_type: shortString.encodeShortString(orderParams.offer.item_type) },\n consideration: {\n ...orderParams.consideration,\n item_type: shortString.encodeShortString(orderParams.consideration.item_type),\n },\n },\n signature,\n }) as Record<string, unknown>;\n}\n\nexport function buildRegisterCalls(\n a: { orderParams: OrderParams; signature: string[]; approvalNeeded: boolean; approve: Call },\n cfg: ResolvedConfig,\n): Call[] {\n const registerCall = contractFor(cfg).populate(\"register_order\", [registerPayload(a.orderParams, a.signature)]);\n return a.approvalNeeded ? [a.approve, registerCall] : [registerCall];\n}\n\nexport function buildFulfillCalls(\n a: { orderHash: string; paymentToken: string; totalPrice: string },\n cfg: ResolvedConfig,\n): Call[] {\n const u = cairo.uint256(a.totalPrice);\n const approve: Call = {\n contractAddress: a.paymentToken,\n entrypoint: \"approve\",\n calldata: [cfg.marketplaceContract, u.low.toString(), u.high.toString()],\n };\n const fulfill = contractFor(cfg).populate(\"fulfill_order\", [a.orderHash]);\n const fee = buildFeeCall(\n { surface: \"marketplace\", token: a.paymentToken, grossAmount: BigInt(a.totalPrice) },\n cfg.feeConfig,\n );\n return fee ? [approve, fulfill, fee] : [approve, fulfill];\n}\n\nexport function buildCancelCalls(\n a: { orderHash: string; offerer: string; signature: string[] },\n cfg: ResolvedConfig,\n): Call[] {\n const cancelRequest = stringifyBigInts({\n cancelation: { order_hash: a.orderHash, offerer: a.offerer },\n signature: a.signature,\n }) as Record<string, unknown>;\n return [contractFor(cfg).populate(\"cancel_order\", [cancelRequest])];\n}\n\n/** SNIP-12 typed data for a cancellation (offerer signs `{ order_hash, offerer }`). */\nexport function buildCancelTypedData(orderHash: string, offerer: string, cfg: ResolvedConfig): TypedData {\n return stringifyBigInts(buildCancellationTypedData({ order_hash: orderHash, offerer }, getChainId(cfg))) as TypedData;\n}\n","import { type Abi, type Call, type TypedData, Contract, cairo, shortString } from \"starknet\";\nimport { Medialane1155ABI } from \"../abis/index.js\";\nimport type { ResolvedConfig } from \"../../config.js\";\nimport { stringifyBigInts } from \"../../utils/bigint.js\";\nimport { build1155OrderTypedData, build1155CancellationTypedData } from \"../marketplace/signing.js\";\nimport { buildFeeCall } from \"../fee/index.js\";\nimport { getChainId, getProvider, newContract } from \"../marketplace/utils.js\";\nimport type { OrderParams } from \"../marketplace/build.js\";\n\n/**\n * Pure calldata builders for the ERC-1155 marketplace — the 1155 mirror of\n * `marketplace/build.ts`. Salt/counter/times are injected so output is\n * deterministic. Both the legacy `Medialane1155Module` and `StarknetVenue` build\n * through here, so their calldata is identical by construction — except that\n * `buildFulfill1155Calls` now composes the platform fee (the legacy\n * `fulfillOrder1155` did not; this closes the 1155 fee-parity gap so 721 and 1155\n * buys charge the creators-fund fee uniformly).\n */\n\nexport interface Build1155ListingInput {\n offerer: string;\n nftContract: string;\n tokenId: string;\n /** ERC-1155 unit quantity offered. */\n quantity: string;\n /** ERC-20 consideration amount PER UNIT, base units. */\n priceWeiPerUnit: string;\n paymentTokenAddress: string;\n royaltyMaxBps: string;\n startTime: number;\n endTime: number;\n salt: string;\n counter: string;\n}\n\nexport type Build1155OfferInput = Build1155ListingInput;\n\nfunction contractFor(cfg: ResolvedConfig): Contract {\n return newContract(Medialane1155ABI as unknown as Abi, cfg.marketplace1155Contract, getProvider(cfg));\n}\n\nexport function buildListing1155Order(\n i: Build1155ListingInput,\n cfg: ResolvedConfig,\n): { orderParams: OrderParams; typedData: TypedData } {\n const orderParams: OrderParams = {\n offerer: i.offerer,\n marketplace: cfg.marketplace1155Contract,\n offer: { item_type: \"ERC1155\", token: i.nftContract, identifier_or_criteria: i.tokenId, amount: i.quantity },\n consideration: {\n item_type: \"ERC20\",\n token: i.paymentTokenAddress,\n identifier_or_criteria: \"0\",\n amount: i.priceWeiPerUnit,\n recipient: i.offerer,\n },\n royalty_max_bps: i.royaltyMaxBps,\n start_time: String(i.startTime),\n end_time: String(i.endTime),\n salt: i.salt,\n counter: i.counter,\n };\n const typedData = stringifyBigInts(\n build1155OrderTypedData(orderParams as unknown as Record<string, unknown>, getChainId(cfg)),\n ) as TypedData;\n return { orderParams, typedData };\n}\n\nexport function buildOffer1155Order(\n i: Build1155OfferInput,\n cfg: ResolvedConfig,\n): { orderParams: OrderParams; typedData: TypedData } {\n const orderParams: OrderParams = {\n offerer: i.offerer,\n marketplace: cfg.marketplace1155Contract,\n offer: { item_type: \"ERC20\", token: i.paymentTokenAddress, identifier_or_criteria: \"0\", amount: i.priceWeiPerUnit },\n consideration: {\n item_type: \"ERC1155\",\n token: i.nftContract,\n identifier_or_criteria: i.tokenId,\n amount: i.quantity,\n recipient: i.offerer,\n },\n royalty_max_bps: i.royaltyMaxBps,\n start_time: String(i.startTime),\n end_time: String(i.endTime),\n salt: i.salt,\n counter: i.counter,\n };\n const typedData = stringifyBigInts(\n build1155OrderTypedData(orderParams as unknown as Record<string, unknown>, getChainId(cfg)),\n ) as TypedData;\n return { orderParams, typedData };\n}\n\nfunction registerPayload(orderParams: OrderParams, signature: string[]) {\n return stringifyBigInts({\n parameters: {\n ...orderParams,\n offer: { ...orderParams.offer, item_type: shortString.encodeShortString(orderParams.offer.item_type) },\n consideration: {\n ...orderParams.consideration,\n item_type: shortString.encodeShortString(orderParams.consideration.item_type),\n },\n },\n signature,\n }) as Record<string, unknown>;\n}\n\nexport function buildRegister1155Calls(\n a: { orderParams: OrderParams; signature: string[]; approvalNeeded: boolean; approve: Call },\n cfg: ResolvedConfig,\n): Call[] {\n const registerCall = contractFor(cfg).populate(\"register_order\", [registerPayload(a.orderParams, a.signature)]);\n return a.approvalNeeded ? [a.approve, registerCall] : [registerCall];\n}\n\nexport function buildFulfill1155Calls(\n a: { orderHash: string; paymentToken: string; totalPrice: string; quantity: string },\n cfg: ResolvedConfig,\n): Call[] {\n const u = cairo.uint256(a.totalPrice);\n const approve: Call = {\n contractAddress: a.paymentToken,\n entrypoint: \"approve\",\n calldata: [cfg.marketplace1155Contract, u.low.toString(), u.high.toString()],\n };\n const fulfill = contractFor(cfg).populate(\"fulfill_order\", [a.orderHash, a.quantity]);\n const fee = buildFeeCall(\n { surface: \"marketplace\", token: a.paymentToken, grossAmount: BigInt(a.totalPrice) },\n cfg.feeConfig,\n );\n return fee ? [approve, fulfill, fee] : [approve, fulfill];\n}\n\nexport function buildCancel1155Calls(\n a: { orderHash: string; offerer: string; signature: string[] },\n cfg: ResolvedConfig,\n): Call[] {\n const cancelPayload = stringifyBigInts({\n cancelation: { order_hash: a.orderHash, offerer: a.offerer },\n signature: a.signature,\n }) as Record<string, unknown>;\n return [contractFor(cfg).populate(\"cancel_order\", [cancelPayload])];\n}\n\n/** SNIP-12 typed data for a 1155 cancellation (offerer signs `{ order_hash, offerer }`). */\nexport function buildCancel1155TypedData(orderHash: string, offerer: string, cfg: ResolvedConfig): TypedData {\n return stringifyBigInts(\n build1155CancellationTypedData({ order_hash: orderHash, offerer }, getChainId(cfg)),\n ) as TypedData;\n}\n","import { type Call, cairo, hash, num, type ProviderInterface } from \"starknet\";\nimport type {\n VenueAdapter,\n RegisterOrderParams,\n OrderRef,\n AdapterTxResult,\n} from \"../adapters/types.js\";\nimport type { StarknetVenueSigner } from \"./index.js\";\nimport type { ResolvedConfig } from \"../config.js\";\nimport { getOrderDetails } from \"./marketplace/orders.js\";\nimport { resolveToken, START_TIME_BUFFER_SECS } from \"./marketplace/utils.js\";\nimport {\n buildListingOrder,\n buildOfferOrder,\n buildRegisterCalls,\n buildFulfillCalls,\n buildCancelCalls,\n buildCancelTypedData,\n} from \"./marketplace/build.js\";\nimport {\n buildListing1155Order,\n buildOffer1155Order,\n buildRegister1155Calls,\n buildFulfill1155Calls,\n buildCancel1155Calls,\n buildCancel1155TypedData,\n} from \"./marketplace1155/build.js\";\n\n/** Default listing duration when the caller specifies no expiry (endTime 0). */\nconst NO_EXPIRY_SECONDS = 100 * 365 * 24 * 3600;\n\n/** What a stored/registered order resolves to for fulfilment/cancellation. */\nexport interface ResolvedOrder {\n /** ERC-20 consideration token address. */\n paymentToken: string;\n /** Per-unit price in raw token units, as a decimal string. The total paid is\n * `unitPrice × quantity` (quantity is 1 for ERC-721). */\n unitPrice: string;\n /** Which venue the order lives on. */\n standard: \"ERC721\" | \"ERC1155\";\n}\n\n/**\n * Dependencies for {@link StarknetVenue}. The token standard is resolved through\n * injected reads (the backend already tracks it per collection) rather than an\n * on-chain interface probe — Starknet has no single canonical ERC-1155 interface\n * id and the app already carries the standard from the indexer.\n */\nexport interface StarknetVenueDeps {\n config: ResolvedConfig;\n /** Read provider for building (counter/approval reads) and the post-tx receipt. */\n provider: ProviderInterface;\n /** Resolve a registered order (payment token, per-unit price, venue) from its digest. */\n resolveOrder: (orderRef: OrderRef) => Promise<ResolvedOrder>;\n /** Resolve a collection's token standard (from the indexer). */\n resolveStandard: (contract: string) => Promise<\"ERC721\" | \"ERC1155\">;\n}\n\n/**\n * First-class Starknet venue adapter. It orchestrates the marketplace protocol\n * over the chain-neutral {@link StarknetVenueSigner} capability port: it *builds*\n * typed data + calldata via the pure marketplace builders and *reads* chain state\n * (counter, approvals, receipt) on `deps.provider`, but it never signs or executes\n * itself — the app's signer does that (sign + submit + confirm). This is what lets\n * a single adapter drive every wallet (injected/Cartridge/Privy) and the AVNU\n * paymaster without knowing they differ.\n */\nexport class StarknetVenue implements VenueAdapter<StarknetVenueSigner> {\n readonly chain = \"STARKNET\" as const;\n\n constructor(private readonly deps: StarknetVenueDeps) {}\n\n async incrementCounter(signer: StarknetVenueSigner): Promise<AdapterTxResult> {\n return signer.execute([\n { contractAddress: this.deps.config.marketplaceContract, entrypoint: \"increment_counter\", calldata: [] },\n ]);\n }\n\n getOrderDetails(orderRef: OrderRef): Promise<unknown> {\n return getOrderDetails(orderRef, this.deps.config);\n }\n\n async getCounter(address: string): Promise<bigint> {\n return this.readCounter(this.deps.config.marketplaceContract, address);\n }\n\n async fulfillOrder(\n signer: StarknetVenueSigner,\n orderRef: OrderRef,\n opts?: { quantity?: string } & Record<string, string | undefined>,\n ): Promise<AdapterTxResult> {\n const o = await this.deps.resolveOrder(orderRef);\n const quantity = opts?.quantity ?? \"1\";\n // Total paid = per-unit price × quantity (quantity is 1 for ERC-721).\n const totalPrice = (BigInt(o.unitPrice) * BigInt(quantity)).toString();\n const calls =\n o.standard === \"ERC1155\"\n ? buildFulfill1155Calls({ orderHash: orderRef, paymentToken: o.paymentToken, totalPrice, quantity }, this.deps.config)\n : buildFulfillCalls({ orderHash: orderRef, paymentToken: o.paymentToken, totalPrice }, this.deps.config);\n return signer.execute(calls);\n }\n\n async cancelOrder(signer: StarknetVenueSigner, orderRef: OrderRef): Promise<AdapterTxResult> {\n const o = await this.deps.resolveOrder(orderRef);\n const typedData =\n o.standard === \"ERC1155\"\n ? buildCancel1155TypedData(orderRef, signer.address, this.deps.config)\n : buildCancelTypedData(orderRef, signer.address, this.deps.config);\n const signature = await signer.signTypedData(typedData);\n const calls =\n o.standard === \"ERC1155\"\n ? buildCancel1155Calls({ orderHash: orderRef, offerer: signer.address, signature }, this.deps.config)\n : buildCancelCalls({ orderHash: orderRef, offerer: signer.address, signature }, this.deps.config);\n return signer.execute(calls);\n }\n\n async registerOrder(\n signer: StarknetVenueSigner,\n p: RegisterOrderParams,\n ): Promise<AdapterTxResult & { orderRef: OrderRef }> {\n const standard = await this.deps.resolveStandard(p.asset.contract);\n const paymentTokenAddress = resolveToken(p.paymentToken).address;\n const royaltyMaxBps = String(p.royaltyMaxBps);\n const startTime = Math.floor(Date.now() / 1000) + START_TIME_BUFFER_SECS;\n const endTime = p.endTime && p.endTime > 0 ? p.endTime : startTime + NO_EXPIRY_SECONDS;\n const quantity = p.quantity ?? \"1\";\n const marketplace =\n standard === \"ERC1155\" ? this.deps.config.marketplace1155Contract : this.deps.config.marketplaceContract;\n const counter = String(await this.readCounter(marketplace, signer.address));\n\n let typedData;\n let buildCalls: (sig: string[]) => Call[];\n\n if (standard === \"ERC1155\") {\n // Listing carries the per-unit price; a bid's `amount` is per-unit too and\n // the ERC-20 approval covers per-unit × quantity.\n const built = (p.side === \"listing\" ? buildListing1155Order : buildOffer1155Order)(\n {\n offerer: signer.address,\n nftContract: p.asset.contract,\n tokenId: p.asset.tokenId,\n quantity,\n priceWeiPerUnit: p.amount,\n paymentTokenAddress,\n royaltyMaxBps,\n startTime,\n endTime,\n salt: p.salt,\n counter,\n },\n this.deps.config,\n );\n typedData = built.typedData;\n const approval =\n p.side === \"listing\"\n ? await this.approval1155ForListing(signer.address, p.asset.contract)\n : this.approvalForErc20(paymentTokenAddress, (BigInt(p.amount) * BigInt(quantity)).toString(), marketplace);\n buildCalls = (sig) =>\n buildRegister1155Calls({ orderParams: built.orderParams, signature: sig, ...approval }, this.deps.config);\n } else {\n const built = (p.side === \"listing\" ? buildListingOrder : buildOfferOrder)(\n {\n offerer: signer.address,\n nftContract: p.asset.contract,\n tokenId: p.asset.tokenId,\n priceWei: p.amount,\n paymentTokenAddress,\n royaltyMaxBps,\n startTime,\n endTime,\n salt: p.salt,\n counter,\n },\n this.deps.config,\n );\n typedData = built.typedData;\n const approval =\n p.side === \"listing\"\n ? await this.approval721ForListing(signer.address, p.asset.contract, p.asset.tokenId)\n : this.approvalForErc20(paymentTokenAddress, p.amount, marketplace);\n buildCalls = (sig) =>\n buildRegisterCalls({ orderParams: built.orderParams, signature: sig, ...approval }, this.deps.config);\n }\n\n const signature = await signer.signTypedData(typedData);\n const { txHash } = await signer.execute(buildCalls(signature));\n const orderRef = await this.orderRefFromReceipt(txHash);\n return { txHash, orderRef };\n }\n\n // ─── reads (all on deps.provider) ─────────────────────────────────────────\n\n private async readCounter(marketplace: string, address: string): Promise<bigint> {\n const res = await this.deps.provider.callContract({\n contractAddress: marketplace,\n entrypoint: \"get_counter\",\n calldata: [address],\n });\n return BigInt(res[0] ?? \"0\");\n }\n\n /** 721 listing approval: `get_approved(tokenId) == marketplace` ⇒ no approve. */\n private async approval721ForListing(\n _owner: string,\n nftContract: string,\n tokenId: string,\n ): Promise<{ approvalNeeded: boolean; approve: Call }> {\n const id = cairo.uint256(tokenId);\n const approve: Call = {\n contractAddress: nftContract,\n entrypoint: \"approve\",\n calldata: [this.deps.config.marketplaceContract, id.low.toString(), id.high.toString()],\n };\n let approved = false;\n try {\n const res = await this.deps.provider.callContract({\n contractAddress: nftContract,\n entrypoint: \"get_approved\",\n calldata: [id.low.toString(), id.high.toString()],\n });\n approved = BigInt(res[0]).toString() === BigInt(this.deps.config.marketplaceContract).toString();\n } catch {\n // Cannot check — approve to be safe.\n }\n return { approvalNeeded: !approved, approve };\n }\n\n /** 1155 listing approval: `is_approved_for_all(owner, marketplace)`. */\n private async approval1155ForListing(\n owner: string,\n nftContract: string,\n ): Promise<{ approvalNeeded: boolean; approve: Call }> {\n const approve: Call = {\n contractAddress: nftContract,\n entrypoint: \"set_approval_for_all\",\n calldata: [this.deps.config.marketplace1155Contract, \"1\"],\n };\n let approved = false;\n try {\n const res = await this.deps.provider.callContract({\n contractAddress: nftContract,\n entrypoint: \"is_approved_for_all\",\n calldata: [owner, this.deps.config.marketplace1155Contract],\n });\n approved = BigInt(res[0]) === 1n;\n } catch {\n // Cannot check — approve to be safe.\n }\n return { approvalNeeded: !approved, approve };\n }\n\n /** Offers always approve the ERC-20 spend (no read). */\n private approvalForErc20(\n token: string,\n amountWei: string,\n marketplace: string,\n ): { approvalNeeded: boolean; approve: Call } {\n const u = cairo.uint256(amountWei);\n return {\n approvalNeeded: true,\n approve: {\n contractAddress: token,\n entrypoint: \"approve\",\n calldata: [marketplace, u.low.toString(), u.high.toString()],\n },\n };\n }\n\n /** The canonical Starknet order id = the contract-emitted `OrderCreated`\n * hash (`keys[1]`), which is exactly what the indexer stores. */\n private async orderRefFromReceipt(txHash: string): Promise<OrderRef> {\n const receipt = (await this.deps.provider.getTransactionReceipt(txHash)) as {\n events?: { from_address?: string; keys?: string[] }[];\n };\n const selector = hash.getSelectorFromName(\"OrderCreated\");\n for (const ev of receipt.events ?? []) {\n if (ev.keys?.[0] && BigInt(ev.keys[0]) === BigInt(selector)) {\n return num.toHex(ev.keys[1]);\n }\n }\n throw new Error(\"StarknetVenue.registerOrder: OrderCreated event not found in receipt\");\n }\n}\n","export const ADMIN_SCOPE = \"admin-api\";\n\n/** The wallet-signed authorization for a session key. */\nexport interface AdminGrant {\n wallet: string; // signer wallet address (the admin)\n chain: string; // \"STARKNET\"\n sessionPublicKey: string; // full uncompressed session pubkey hex (0x04…)\n sessionKeyHash: string; // felt: starknetKeccak(sessionPublicKey) — what the wallet signed\n scope: string; // ADMIN_SCOPE\n issuedAt: number; // unix seconds\n expiresAt: number; // unix seconds\n walletSig: string[]; // wallet's SNIP-12 signature over the grant\n}\n\nexport interface AdminSession {\n grant: AdminGrant;\n sessionPrivateKey: string; // stays client-side; never sent\n}\n\nexport interface AdminRequest {\n method: string; // upper-cased\n path: string; // backend path incl. query, e.g. \"/admin/tenants?x=1\"\n body: string; // raw request body or \"\"\n nonce: string; // \"0x\"-prefixed 128-bit hex, unique per request\n ts: number; // unix seconds\n}\n\n/** Compact session-key signature over adminRequestDigest. */\nexport type AdminRequestSig = string; // compact hex (r||s)\n","import { hash, num } from \"starknet\";\nimport type { AdminRequest } from \"./types.js\";\n\n/**\n * Canonical felt digest of a request — the SINGLE definition shared by signer\n * (portal/agent) and verifier (backend). Binds method+path+query+body+nonce+ts,\n * so a captured request cannot be retargeted or mutated without invalidating it.\n */\nexport function adminRequestDigest(req: AdminRequest): string {\n return hash.computePoseidonHashOnElements([\n hash.starknetKeccak(req.method.toUpperCase()),\n hash.starknetKeccak(req.path),\n hash.starknetKeccak(req.body ?? \"\"),\n num.toBigInt(req.nonce),\n BigInt(req.ts),\n ]);\n}\n","import { ec } from \"starknet\";\nimport { adminRequestDigest } from \"./digest.js\";\nimport type { AdminRequest, AdminRequestSig } from \"./types.js\";\n\n/** Sign a request with the session private key. */\nexport function signAdminRequest(sessionPrivateKey: string, req: AdminRequest): AdminRequestSig {\n const digest = adminRequestDigest(req);\n return ec.starkCurve.sign(digest, sessionPrivateKey).toCompactHex();\n}\n\n/** Verify a request signature against the full session public key. */\nexport function verifyAdminRequestSig(\n sessionPublicKey: string,\n req: AdminRequest,\n sig: AdminRequestSig,\n): boolean {\n try {\n return ec.starkCurve.verify(sig, adminRequestDigest(req), sessionPublicKey);\n } catch {\n return false;\n }\n}\n","import { ec, hash, num, encode } from \"starknet\";\nimport { ADMIN_SCOPE, type AdminGrant, type AdminSession } from \"./types.js\";\n\nexport interface AdminSessionTypedDataInput {\n sessionKeyHash: string;\n scope: string;\n issuedAt: number;\n expiresAt: number;\n chainId?: string;\n}\n\n/** The SNIP-12 typed data the wallet signs — rebuilt identically on the backend. */\nexport function buildAdminSessionTypedData(p: AdminSessionTypedDataInput) {\n return {\n types: {\n StarknetDomain: [\n { name: \"name\", type: \"shortstring\" },\n { name: \"version\", type: \"shortstring\" },\n { name: \"chainId\", type: \"shortstring\" },\n { name: \"revision\", type: \"shortstring\" },\n ],\n AdminSession: [\n { name: \"sessionKeyHash\", type: \"felt\" },\n { name: \"scope\", type: \"shortstring\" },\n { name: \"issuedAt\", type: \"felt\" },\n { name: \"expiresAt\", type: \"felt\" },\n ],\n },\n primaryType: \"AdminSession\",\n domain: { name: \"Medialane Admin\", version: \"1\", chainId: p.chainId ?? \"SN_MAIN\", revision: \"1\" },\n message: {\n sessionKeyHash: p.sessionKeyHash,\n scope: p.scope,\n issuedAt: String(p.issuedAt),\n expiresAt: String(p.expiresAt),\n },\n } as const;\n}\n\n/** felt commitment to a full session public key (fits in the signed message). */\nexport function sessionKeyHashOf(sessionPublicKey: string): string {\n return num.toHex(hash.starknetKeccak(sessionPublicKey));\n}\n\nexport interface CreateGrantOpts {\n wallet: string;\n chain?: string; // default \"STARKNET\"\n chainId?: string; // default \"SN_MAIN\"\n ttlSeconds?: number; // default 7200 (2h)\n now?: () => number; // injectable for tests\n}\n\n/**\n * Generate an ephemeral session keypair and have `signTypedData` (the connected\n * wallet's signMessage) sign the grant. The private key never leaves the caller.\n */\nexport async function createAdminSessionGrant(\n signTypedData: (data: ReturnType<typeof buildAdminSessionTypedData>) => Promise<string[]>,\n opts: CreateGrantOpts,\n): Promise<AdminSession> {\n const priv = ec.starkCurve.utils.randomPrivateKey();\n const sessionPrivateKey = \"0x\" + encode.buf2hex(priv);\n const sessionPublicKey = \"0x\" + encode.buf2hex(ec.starkCurve.getPublicKey(sessionPrivateKey, false));\n const sessionKeyHash = sessionKeyHashOf(sessionPublicKey);\n\n const nowSec = Math.floor((opts.now?.() ?? Date.now()) / 1000);\n const issuedAt = nowSec;\n const expiresAt = nowSec + (opts.ttlSeconds ?? 7200);\n\n const data = buildAdminSessionTypedData({ sessionKeyHash, scope: ADMIN_SCOPE, issuedAt, expiresAt, chainId: opts.chainId });\n const walletSig = await signTypedData(data);\n\n const grant: AdminGrant = {\n wallet: opts.wallet,\n chain: opts.chain ?? \"STARKNET\",\n sessionPublicKey,\n sessionKeyHash,\n scope: ADMIN_SCOPE,\n issuedAt,\n expiresAt,\n walletSig,\n };\n return { grant, sessionPrivateKey };\n}\n","import type { AdminGrant, AdminRequestSig, AdminSession } from \"./types.js\";\nimport { signAdminRequest } from \"./request.js\";\n\nexport const ADMIN_HEADERS = {\n grant: \"x-ml-admin-grant\",\n sig: \"x-ml-admin-sig\",\n nonce: \"x-ml-admin-nonce\",\n ts: \"x-ml-admin-ts\",\n} as const;\n\nfunction b64urlEncode(s: string): string {\n // browser + node/bun safe\n const bytes = new TextEncoder().encode(s);\n let bin = \"\"; for (const b of bytes) bin += String.fromCharCode(b);\n return btoa(bin).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=+$/, \"\");\n}\nfunction b64urlDecode(s: string): string {\n const pad = s.length % 4 ? \"=\".repeat(4 - (s.length % 4)) : \"\";\n const bin = atob(s.replace(/-/g, \"+\").replace(/_/g, \"/\") + pad);\n const bytes = Uint8Array.from(bin, (c) => c.charCodeAt(0));\n return new TextDecoder().decode(bytes);\n}\n\nexport function randomNonce(): string {\n const b = new Uint8Array(16); crypto.getRandomValues(b);\n let hex = \"\"; for (const x of b) hex += x.toString(16).padStart(2, \"0\");\n return \"0x\" + hex;\n}\n\n/** Build the four request headers from a session + (method, path, body). */\nexport function encodeAdminHeaders(\n session: AdminSession,\n reqInit: { method: string; path: string; body?: string; now?: () => number },\n): Record<string, string> {\n const nonce = randomNonce();\n const ts = Math.floor((reqInit.now?.() ?? Date.now()) / 1000);\n const req = { method: reqInit.method, path: reqInit.path, body: reqInit.body ?? \"\", nonce, ts };\n const sig: AdminRequestSig = signAdminRequest(session.sessionPrivateKey, req);\n return {\n [ADMIN_HEADERS.grant]: b64urlEncode(JSON.stringify(session.grant)),\n [ADMIN_HEADERS.sig]: sig,\n [ADMIN_HEADERS.nonce]: nonce,\n [ADMIN_HEADERS.ts]: String(ts),\n };\n}\n\nexport interface ParsedAdminHeaders {\n grant: AdminGrant;\n sig: string;\n nonce: string;\n ts: number;\n}\n\n/** Parse + shape-check the headers on the backend. Returns null if malformed. */\nexport function parseAdminHeaders(get: (name: string) => string | null | undefined): ParsedAdminHeaders | null {\n const rawGrant = get(ADMIN_HEADERS.grant);\n const sig = get(ADMIN_HEADERS.sig);\n const nonce = get(ADMIN_HEADERS.nonce);\n const tsRaw = get(ADMIN_HEADERS.ts);\n if (!rawGrant || !sig || !nonce || !tsRaw) return null;\n try {\n const grant = JSON.parse(b64urlDecode(rawGrant)) as AdminGrant;\n if (!grant.wallet || !grant.sessionPublicKey || !grant.sessionKeyHash ||\n !Array.isArray(grant.walletSig) || typeof grant.expiresAt !== \"number\") return null;\n const ts = Number(tsRaw);\n if (!Number.isFinite(ts)) return null;\n return { grant, sig, nonce, ts };\n } catch {\n return null;\n }\n}\n","import type { TypedData } from \"starknet\";\nimport type { RequestSiwsTokenArgs } from \"./types.js\";\n\nconst STORAGE_PREFIX = \"ml_siws_\";\n\nfunction decodeBase64url(str: string): string {\n const base64 = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padding = \"=\".repeat((4 - (base64.length % 4)) % 4);\n return atob(base64 + padding);\n}\n\nfunction readTokenExpiry(token: string): number | null {\n try {\n if (!token.startsWith(\"siws_\")) return null;\n const inner = token.slice(5);\n const dot = inner.lastIndexOf(\".\");\n if (dot === -1) return null;\n const data = JSON.parse(decodeBase64url(inner.slice(0, dot))) as { exp?: number };\n return typeof data.exp === \"number\" ? data.exp : null;\n } catch {\n return null;\n }\n}\n\nexport function getSiwsStorageKey(address: string): string {\n return `${STORAGE_PREFIX}${address.toLowerCase()}`;\n}\n\nexport function isSiwsTokenValid(token: string | null | undefined): token is string {\n if (!token?.startsWith(\"siws_\")) return false;\n const expiry = readTokenExpiry(token);\n return Boolean(expiry && expiry > Math.floor(Date.now() / 1000));\n}\n\n/** Browser-only (returns null server-side, same as a cache miss). */\nexport function getStoredSiwsToken(address: string): string | null {\n if (typeof window === \"undefined\") return null;\n const key = getSiwsStorageKey(address);\n const token = localStorage.getItem(key);\n if (isSiwsTokenValid(token)) return token;\n localStorage.removeItem(key);\n return null;\n}\n\n/** Browser-only (no-op server-side). */\nexport function storeSiwsToken(address: string, token: string): void {\n if (typeof window === \"undefined\") return;\n localStorage.setItem(getSiwsStorageKey(address), token);\n}\n\nexport function normalizeSiwsSignature(signature: unknown): string[] {\n if (Array.isArray(signature)) {\n return signature.map(String);\n }\n\n if (signature && typeof signature === \"object\") {\n const { r, s } = signature as { r?: unknown; s?: unknown };\n if (r !== undefined && s !== undefined) {\n return [String(r), String(s)];\n }\n }\n\n return [String(signature)];\n}\n\n/**\n * Request a nonce, sign it with `signer`, verify with the backend, and cache\n * the resulting token in localStorage (expiry-aware). Single source for the\n * SIWS client protocol — medialane-starknet and medialane-io both delegate\n * to this instead of keeping their own copies (see medialane-core/docs/specs/\n * 2026-06-30-remove-clerk-from-backend-design.md §IX).\n */\nexport async function requestSiwsToken({\n backendUrl,\n walletAddress,\n signer,\n}: RequestSiwsTokenArgs): Promise<string> {\n const base = backendUrl.replace(/\\/$/, \"\");\n\n const nonceRes = await fetch(`${base}/v1/auth/siws/nonce`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ walletAddress }),\n });\n\n if (!nonceRes.ok) {\n throw new Error(\"Failed to prepare wallet sign-in\");\n }\n\n const { nonce, typedData } = await nonceRes.json() as {\n nonce: string;\n typedData: TypedData;\n };\n\n const signature = normalizeSiwsSignature(await signer.signMessage(typedData));\n const verifyRes = await fetch(`${base}/v1/auth/siws/verify`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ walletAddress, nonce, signature }),\n });\n\n if (!verifyRes.ok) {\n // Backend distinguishes counterfactual-wallet errors with code\n // \"account_not_deployed\" + a user-facing `message` field so callers can\n // surface \"Check if your wallet is deployed on Starknet.\" instead of the\n // generic \"sign-in failed\" toast.\n let backendMessage: string | undefined;\n try {\n const body = await verifyRes.json() as { error?: string; message?: string };\n if (body?.message) backendMessage = body.message;\n } catch {\n // body wasn't JSON — fall through to generic message\n }\n throw new Error(backendMessage ?? \"Wallet sign-in failed\");\n }\n\n const { token } = await verifyRes.json() as { token?: string };\n if (!isSiwsTokenValid(token)) {\n throw new Error(\"Wallet sign-in returned an invalid token\");\n }\n\n storeSiwsToken(walletAddress, token);\n return token;\n}\n","/** App-layer guards + math for the Creator Coin launch flow.\n * Price is the fixed, smoke-validated 0.01 quote/coin (VALIDATED_EKUBO_PARAMS);\n * supply is the lever. Coins are always 18-decimal. v1 quote tokens are 18-dec. */\n\nexport const COIN_DECIMALS = 18;\nexport const LAUNCH_PRICE_QUOTE_PER_COIN = 0.01; // fixed; matches VALIDATED_EKUBO_PARAMS\nexport const MIN_SUPPLY = 1_000n;\nexport const MAX_SUPPLY = 1_000_000_000_000n; // 1e12 (audit M-3 ceiling)\nexport const MAX_FELT_BYTES = 31; // felt252 short string\n\nfunction byteLen(s: string): number {\n return new TextEncoder().encode(s).length;\n}\n\nexport function validateName(s: string): string | null {\n if (!s.trim()) return \"Name is required\";\n if (byteLen(s) > MAX_FELT_BYTES) return `Name must be at most ${MAX_FELT_BYTES} bytes`;\n return null;\n}\n\nexport function validateSymbol(s: string): string | null {\n if (!s.trim()) return \"Symbol is required\";\n if (byteLen(s) > MAX_FELT_BYTES) return `Symbol must be at most ${MAX_FELT_BYTES} bytes`;\n return null;\n}\n\nexport function validateSupply(human: string): string | null {\n if (!/^\\d+$/.test(human.trim())) return \"Supply must be a whole number\";\n const v = BigInt(human.trim());\n if (v < MIN_SUPPLY) return `Supply must be at least ${MIN_SUPPLY.toString()}`;\n if (v > MAX_SUPPLY) return `Supply must be at most ${MAX_SUPPLY.toString()}`;\n return null;\n}\n\n/** Human integer → raw base units (default 18-dec coin). */\nexport function toRaw(human: bigint, decimals = COIN_DECIMALS): bigint {\n return human * 10n ** BigInt(decimals);\n}\n\n/** Team allocation in raw coin units. `pct` is whole-percent 0–10. */\nexport function teamCoinsRaw(supplyRaw: bigint, pct: number): bigint {\n const bps = BigInt(Math.round(pct * 100)); // 5% -> 500 bps\n return (supplyRaw * bps) / 10_000n;\n}\n\n/** Quote (raw) needed to buy the team allocation back out of the pool:\n * teamCoins(human) × 0.01, in the quote token's raw units.\n * = teamCoinsRaw × 10^quoteDecimals / (100 × 10^18). For 18-dec quote → /100. */\nexport function buybackQuoteRaw(teamCoinsRawValue: bigint, quoteDecimals: number): bigint {\n return (teamCoinsRawValue * 10n ** BigInt(quoteDecimals)) / (100n * 10n ** BigInt(COIN_DECIMALS));\n}\n\n/** Fully-diluted value (human, in quote) for the live preview. */\nexport function fdvHuman(supplyHuman: number): number {\n return supplyHuman * LAUNCH_PRICE_QUOTE_PER_COIN;\n}\n","import { num } from \"starknet\";\n\n/**\n * Serialize a string as Cairo ByteArray calldata felts using UTF-8 encoding.\n *\n * starknet.js byteArray.byteArrayFromString calls encodeShortString internally\n * which rejects non-ASCII characters (accented letters, CJK, Arabic, etc.).\n * This implementation packs raw UTF-8 bytes into 31-byte chunks as big-endian\n * felts, matching the Cairo ByteArray struct layout.\n *\n * Return layout: [chunks_len, ...chunk_felts, pending_word, pending_word_len]\n */\nexport function encodeByteArray(str: string): string[] {\n const bytes = new TextEncoder().encode(str);\n const fullChunks: string[] = [];\n\n let i = 0;\n while (i + 31 <= bytes.length) {\n let val = 0n;\n for (const b of bytes.slice(i, i + 31)) {\n val = (val << 8n) | BigInt(b);\n }\n fullChunks.push(num.toHex(val));\n i += 31;\n }\n\n const remaining = bytes.slice(i);\n let pendingVal = 0n;\n for (const b of remaining) {\n pendingVal = (pendingVal << 8n) | BigInt(b);\n }\n\n return [\n fullChunks.length.toString(),\n ...fullChunks,\n num.toHex(pendingVal),\n remaining.length.toString(),\n ];\n}\n"]}
1
+ {"version":3,"sources":["../src/chains.ts","../src/fee/config.ts","../src/config.ts","../src/utils/address.ts","../src/utils/retry.ts","../src/api/client.ts","../src/types/api.ts","../src/constants.ts","../src/services/registry.ts","../src/utils/token.ts","../src/utils/bigint.ts","../src/utils/rpc.ts"],"names":["z","keccak_256","base58","base32","SN"],"mappings":";;;;;;;;;AAKO,IAAM,SAAS,CAAC,UAAA,EAAY,YAAY,QAAA,EAAU,MAAA,EAAQ,WAAW,SAAS;AA6FrF,IAAM,WAAA,GAAkC;AAAA,EACtC,QAAA,EAAU;AAAA,IACR,MAAA,EAAQ,iCAAA;AAAA,IACR,cAAA,EAAgB,oEAAA;AAAA,IAChB,uBAAA,EAAyB,oEAAA;AAAA,IACzB,wBAAA,EAA0B,QAAA;AAAA,IAC1B,eAAA,EAAiB,oEAAA;AAAA,IACjB,wBAAA,EAA0B,oEAAA;AAAA,IAC1B,yBAAA,EAA2B,QAAA;AAAA,IAC3B,aAAA,EAAe,oEAAA;AAAA,IACf,uBAAA,EAAyB,QAAA;AAAA,IACzB,cAAA,EAAgB,oEAAA;AAAA,IAChB,qBAAA,EAAuB,oEAAA;AAAA,IACvB,cAAA,EAAgB,oEAAA;AAAA,IAChB,8BAAA,EAAgC,oEAAA;AAAA,IAChC,uBAAA,EAAyB,oEAAA;AAAA,IACzB,wBAAA,EAA0B,QAAA;AAAA,IAC1B,UAAA,EAAY,oEAAA;AAAA,IACZ,sBAAA,EAAwB,oEAAA;AAAA,IACxB,WAAA,EAAa,oEAAA;AAAA,IACb,uBAAA,EAAyB,oEAAA;AAAA,IACzB,WAAA,EAAa,oEAAA;AAAA,IACb,kBAAA,EAAoB,mEAAA;AAAA,IACpB,wBAAA,EAA0B,mEAAA;AAAA,IAC1B,oBAAA,EAAsB,mEAAA;AAAA,IACtB,2BAAA,EAA6B,mEAAA;AAAA,IAC7B,qBAAA,EAAuB,QAAA;AAAA,IACvB,SAAA,EAAW,oEAAA;AAAA,IACX,gBAAA,EAAkB,oEAAA;AAAA,IAClB,2BAAA,EAA6B,oEAAA;AAAA,IAC7B,yBAAA,EAA2B,oEAAA;AAAA,IAC3B,mBAAA,EAAqB,QAAA;AAAA,IACrB,aAAA,EAAe,oEAAA;AAAA,IACf,sBAAA,EAAwB,oEAAA;AAAA,IACxB,yBAAA,EAA2B,oEAAA;AAAA,IAC3B,uBAAA,EAAyB,QAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMzB,aAAA,EAAe,oEAAA;AAAA,IACf,sBAAA,EAAwB,oEAAA;AAAA,IACxB,uBAAA,EAAyB;AAAA;AAE7B,CAAA;AASO,SAAS,eACd,KAAA,EAC+E;AAC/E,EAAA,MAAM,CAAA,GAAI,YAAY,KAAK,CAAA;AAC3B,EAAA,IAAI,CAAC,CAAA,EAAG,MAAM,IAAI,KAAA,CAAM,CAAA,qCAAA,EAAwC,KAAK,CAAA,CAAA,CAAG,CAAA;AACxE,EAAA,OAAO,CAAA;AACT;AAEO,IAAM,aAAA,GAAuB;AAI7B,SAAS,uBAAuB,KAAA,EAAmC;AACxE,EAAA,IAAI,UAAU,UAAA,EAAY;AACxB,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,6CAAA,EAAgD,KAAK,CAAA,EAAA,CAAI,CAAA;AAAA,EAC3E;AACA,EAAA,OAAO,eAAe,UAAU,CAAA;AAClC;ACvKO,IAAM,eAAA,GAAkBA,MAAE,MAAA,CAAO;AAAA,EACtC,OAAA,EAASA,KAAA,CAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA;AAAA,EACjC,aAAaA,KAAA,CAAE,MAAA,GAAS,GAAA,CAAI,CAAC,EAAE,QAAA,EAAS;AAAA,EACxC,cAAA,EAAgBA,KAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,GAAK,CAAA,CAAE,QAAQ,GAAG,CAAA;AAAA,EAC9D,YAAA,EAAcA,KAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,GAAK,CAAA,CAAE,QAAQ,GAAG;AAC9D,CAAC;AAWM,SAAS,iBAAiB,GAAA,EAA+C;AAC9E,EAAA,MAAM,CAAA,GAAI,eAAA,CAAgB,KAAA,CAAM,GAAA,IAAO,EAAE,CAAA;AACzC,EAAA,OAAO;AAAA,IACL,SAAS,CAAA,CAAE,OAAA;AAAA,IACX,aAAa,CAAA,CAAE,WAAA;AAAA,IACf,gBAAgB,CAAA,CAAE,cAAA;AAAA,IAClB,cAAc,CAAA,CAAE;AAAA,GAClB;AACF;;;ACrBO,IAAM,qBAAA,GAAwBA,MAAE,MAAA,CAAO;AAAA;AAAA;AAAA,EAG5C,OAAOA,KAAAA,CAAE,IAAA,CAAK,MAAM,CAAA,CAAE,QAAQ,aAAa,CAAA;AAAA,EAC3C,QAAQA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,QAAA,EAAS;AAAA,EAClC,YAAYA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,QAAA,EAAS;AAAA,EACtC,MAAA,EAAQA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA;AAAA,EAE5B,sBAAA,EAAwBA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC5C,mBAAA,EAAqBA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACzC,uBAAA,EAAyBA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC7C,qBAAA,EAAuBA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC3C,kBAAA,EAAoBA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACxC,sBAAA,EAAwBA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC5C,YAAA,EAAcA,MAAE,MAAA,CAAO;AAAA,IACrB,WAAA,EAAaA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,EAAE,CAAA,CAAE,QAAA,EAAS;AAAA,IACtD,WAAA,EAAaA,MAAE,MAAA,EAAO,CAAE,KAAI,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA,IAC9C,UAAA,EAAYA,MAAE,MAAA,EAAO,CAAE,KAAI,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA;AAAS,GAC9C,EAAE,QAAA,EAAS;AAAA,EACZ,SAAA,EAAW,gBAAgB,QAAA;AAC7B,CAAC,CAAA;AAmBM,SAAS,cAAc,GAAA,EAAsC;AAClE,EAAA,MAAM,MAAA,GAAS,qBAAA,CAAsB,KAAA,CAAM,GAAG,CAAA;AAC9C,EAAA,MAAM,MAAA,GAAS,cAAA,CAAe,MAAA,CAAO,KAAK,CAAA;AAI1C,EAAA,MAAM,EAAA,GAAM,MAAA,CAAO,KAAA,KAAU,UAAA,GAAa,SAAS,EAAC;AAEpD,EAAA,MAAM,sBAAA,GACJ,MAAA,CAAO,sBAAA,IAA0B,MAAA,CAAO,uBAAuB,EAAA,CAAG,cAAA;AACpE,EAAA,MAAM,qBAAA,GACJ,MAAA,CAAO,qBAAA,IAAyB,MAAA,CAAO,sBAAsB,EAAA,CAAG,aAAA;AAElE,EAAA,OAAO;AAAA,IACL,OAAO,MAAA,CAAO,KAAA;AAAA,IACd,MAAA,EAAQ,MAAA,CAAO,MAAA,IAAU,MAAA,CAAO,MAAA;AAAA,IAChC,YAAY,MAAA,CAAO,UAAA;AAAA,IACnB,QAAQ,MAAA,CAAO,MAAA;AAAA,IACf,sBAAA;AAAA,IACA,mBAAA,EAAqB,sBAAA;AAAA,IACrB,uBAAA,EAAyB,MAAA,CAAO,uBAAA,IAA2B,EAAA,CAAG,eAAA;AAAA,IAC9D,qBAAA;AAAA,IACA,kBAAA,EAAoB,qBAAA;AAAA,IACpB,sBAAA,EAAwB,MAAA,CAAO,sBAAA,IAA0B,EAAA,CAAG,cAAA;AAAA,IAC5D,cAAc,MAAA,CAAO,YAAA;AAAA,IACrB,SAAA,EAAW,gBAAA,CAAiB,MAAA,CAAO,SAAS;AAAA,GAC9C;AACF;ACtDO,SAAS,gBAAA,CAAiB,OAAc,OAAA,EAAyB;AACtE,EAAA,QAAQ,KAAA;AAAO,IACb,KAAK,UAAA;AACH,MAAA,OAAO,kBAAkB,OAAO,CAAA;AAAA,IAClC,KAAK,UAAA;AAAA,IACL,KAAK,MAAA;AACH,MAAA,OAAO,aAAa,OAAO,CAAA;AAAA,IAC7B,KAAK,QAAA;AACH,MAAA,OAAO,gBAAgB,OAAO,CAAA;AAAA,IAChC,KAAK,SAAA;AACH,MAAA,OAAO,iBAAiB,OAAO,CAAA;AAAA,IACjC,KAAK,SAAA;AACH,MAAA,MAAM,IAAI,MAAM,+CAA+C,CAAA;AAAA;AAErE;AAEA,SAAS,kBAAkB,OAAA,EAAyB;AAClD,EAAA,IAAI;AACF,IAAA,MAAM,GAAA,GAAM,MAAA,CAAO,OAAO,CAAA,CAAE,SAAS,EAAE,CAAA;AACvC,IAAA,OAAO,OAAO,GAAA,CAAI,QAAA,CAAS,EAAA,EAAI,GAAG,EAAE,WAAA,EAAY;AAAA,EAClD,CAAA,CAAA,MAAQ;AACN,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,2BAAA,EAA8B,OAAO,CAAA,CAAA,CAAG,CAAA;AAAA,EAC1D;AACF;AAEA,SAAS,aAAa,OAAA,EAAyB;AAC7C,EAAA,MAAM,CAAA,GAAI,uBAAA,CAAwB,IAAA,CAAK,OAAO,CAAA;AAC9C,EAAA,IAAI,CAAC,CAAA,EAAG,MAAM,IAAI,KAAA,CAAM,CAAA,gCAAA,EAAmC,OAAO,CAAA,CAAA,CAAG,CAAA;AACrE,EAAA,MAAM,KAAA,GAAQ,CAAA,CAAE,CAAC,CAAA,CAAE,WAAA,EAAY;AAG/B,EAAA,MAAM,OAAOC,kBAAA,CAAW,IAAI,aAAY,CAAE,MAAA,CAAO,KAAK,CAAC,CAAA;AACvD,EAAA,IAAI,GAAA,GAAM,IAAA;AACV,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,EAAA,EAAI,CAAA,EAAA,EAAK;AAC3B,IAAA,MAAM,MAAA,GAAU,KAAK,CAAA,IAAK,CAAC,MAAO,CAAA,GAAI,CAAA,KAAM,CAAA,GAAI,CAAA,GAAI,CAAA,CAAA,GAAM,EAAA;AAC1D,IAAA,GAAA,IAAO,MAAA,IAAU,IAAI,KAAA,CAAM,CAAC,EAAG,WAAA,EAAY,GAAI,MAAM,CAAC,CAAA;AAAA,EACxD;AACA,EAAA,OAAO,GAAA;AACT;AAEA,SAAS,gBAAgB,OAAA,EAAyB;AAChD,EAAA,IAAI;AACF,IAAA,MAAM,KAAA,GAAQC,WAAA,CAAO,MAAA,CAAO,OAAO,CAAA;AACnC,IAAA,IAAI,MAAM,MAAA,KAAW,EAAA,EAAI,MAAM,IAAI,MAAM,mBAAmB,CAAA;AAC5D,IAAA,OAAO,OAAA;AAAA,EACT,CAAA,CAAA,MAAQ;AACN,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,yBAAA,EAA4B,OAAO,CAAA,CAAA,CAAG,CAAA;AAAA,EACxD;AACF;AAGA,IAAM,qBAAA,uBAA4B,GAAA,CAAI,CAAC,KAAK,CAAA,EAAG,CAAA,IAAK,CAAC,CAAC,CAAA;AAEtD,SAAS,iBAAiB,OAAA,EAAyB;AACjD,EAAA,MAAM,KAAA,GAAQ,QAAQ,WAAA,EAAY;AAClC,EAAA,IAAI,CAAC,oBAAA,CAAqB,IAAA,CAAK,KAAK,CAAA,EAAG;AACrC,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,0BAAA,EAA6B,OAAO,CAAA,CAAA,CAAG,CAAA;AAAA,EACzD;AACA,EAAA,IAAI,OAAA;AACJ,EAAA,IAAI;AACF,IAAA,OAAA,GAAUC,WAAA,CAAO,OAAO,KAAK,CAAA;AAAA,EAC/B,CAAA,CAAA,MAAQ;AACN,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,0BAAA,EAA6B,OAAO,CAAA,CAAA,CAAG,CAAA;AAAA,EACzD;AACA,EAAA,IAAI,OAAA,CAAQ,WAAW,EAAA,IAAM,CAAC,sBAAsB,GAAA,CAAI,OAAA,CAAQ,CAAC,CAAE,CAAA,EAAG;AACpE,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,0BAAA,EAA6B,OAAO,CAAA,CAAA,CAAG,CAAA;AAAA,EACzD;AACA,EAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,QAAA,CAAS,CAAA,EAAG,EAAE,CAAA;AACtC,EAAA,MAAM,WAAW,OAAA,CAAQ,EAAE,CAAA,GAAM,OAAA,CAAQ,EAAE,CAAA,IAAM,CAAA;AACjD,EAAA,IAAI,WAAA,CAAY,OAAO,CAAA,KAAM,QAAA,EAAU;AACrC,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,0BAAA,EAA6B,OAAO,CAAA,CAAA,CAAG,CAAA;AAAA,EACzD;AACA,EAAA,OAAO,KAAA;AACT;AAGA,SAAS,YAAY,KAAA,EAA2B;AAC9C,EAAA,IAAI,GAAA,GAAM,CAAA;AACV,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,GAAA,IAAO,IAAA,IAAQ,CAAA;AACf,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,EAAG,CAAA,EAAA,EAAK;AAC1B,MAAA,GAAA,GAAM,MAAM,KAAA,GAAA,CAAW,GAAA,IAAO,IAAK,IAAA,IAAU,KAAA,GAAU,OAAO,CAAA,GAAK,KAAA;AAAA,IACrE;AAAA,EACF;AACA,EAAA,OAAO,GAAA;AACT;AAOO,SAAS,cAAc,IAAA,EAAsB;AAClD,EAAA,IAAI;AACF,IAAA,MAAM,GAAA,GAAM,MAAA,CAAO,IAAI,CAAA,CAAE,SAAS,EAAE,CAAA;AACpC,IAAA,OAAO,OAAO,GAAA,CAAI,QAAA,CAAS,EAAA,EAAI,GAAG,EAAE,WAAA,EAAY;AAAA,EAClD,CAAA,CAAA,MAAQ;AACN,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,eAAA,EAAkB,IAAI,CAAA,CAAA,CAAG,CAAA;AAAA,EAC3C;AACF;AAGO,SAAS,cAAA,CAAe,KAAA,EAAc,OAAA,EAAiB,KAAA,GAAQ,CAAA,EAAW;AAC/E,EAAA,MAAM,IAAA,GAAO,gBAAA,CAAiB,KAAA,EAAO,OAAO,CAAA;AAC5C,EAAA,OAAO,CAAA,EAAG,IAAA,CAAK,KAAA,CAAM,CAAA,EAAG,KAAA,GAAQ,CAAC,CAAC,CAAA,GAAA,EAAM,IAAA,CAAK,KAAA,CAAM,CAAC,KAAK,CAAC,CAAA,CAAA;AAC5D;;;AClHA,IAAM,oBAAA,GAAuB,CAAA;AAC7B,IAAM,qBAAA,GAAwB,GAAA;AAC9B,IAAM,oBAAA,GAAuB,GAAA;AAE7B,SAAS,MAAM,EAAA,EAA2B;AACxC,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,YAAY,UAAA,CAAW,OAAA,EAAS,EAAE,CAAC,CAAA;AACzD;AAEA,eAAsB,SAAA,CACpB,IACA,IAAA,EACY;AACZ,EAAA,MAAM,WAAA,GAAc,MAAM,WAAA,IAAe,oBAAA;AACzC,EAAA,MAAM,WAAA,GAAc,MAAM,WAAA,IAAe,qBAAA;AACzC,EAAA,MAAM,UAAA,GAAa,MAAM,UAAA,IAAc,oBAAA;AAEvC,EAAA,IAAI,SAAA;AAEJ,EAAA,KAAA,IAAS,OAAA,GAAU,CAAA,EAAG,OAAA,GAAU,WAAA,EAAa,OAAA,EAAA,EAAW;AACtD,IAAA,IAAI;AACF,MAAA,OAAO,MAAM,EAAA,EAAG;AAAA,IAClB,SAAS,GAAA,EAAK;AACZ,MAAA,SAAA,GAAY,GAAA;AAGZ,MAAA,IAAI,GAAA,YAAe,iBAAA,IAAqB,GAAA,CAAI,MAAA,GAAS,GAAA,EAAK;AACxD,QAAA,MAAM,GAAA;AAAA,MACR;AAGA,MAAA,MAAM,cACH,GAAA,YAAe,iBAAA,IAAqB,GAAA,CAAI,MAAA,IAAU,OACnD,GAAA,YAAe,SAAA;AAEjB,MAAA,IAAI,CAAC,WAAA,IAAe,OAAA,KAAY,WAAA,GAAc,CAAA,EAAG;AAC/C,QAAA,MAAM,GAAA;AAAA,MACR;AAGA,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,MAAA,EAAO,GAAI,WAAA;AAC/B,MAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,WAAA,GAAc,IAAA,CAAK,IAAI,CAAA,EAAG,OAAO,CAAA,GAAI,MAAA,EAAQ,UAAU,CAAA;AAC9E,MAAA,MAAM,MAAM,KAAK,CAAA;AAAA,IACnB;AAAA,EACF;AAEA,EAAA,MAAM,SAAA;AACR;;;ACSA,SAAS,gBAAgB,MAAA,EAAoC;AAC3D,EAAA,IAAI,MAAA,KAAW,KAAK,OAAO,iBAAA;AAC3B,EAAA,IAAI,MAAA,KAAW,KAAK,OAAO,cAAA;AAC3B,EAAA,IAAI,MAAA,KAAW,KAAK,OAAO,gBAAA;AAC3B,EAAA,IAAI,MAAA,KAAW,GAAA,IAAO,MAAA,KAAW,GAAA,EAAK,OAAO,cAAA;AAC7C,EAAA,IAAI,MAAA,KAAW,KAAK,OAAO,gBAAA;AAC3B,EAAA,OAAO,SAAA;AACT;AAEO,IAAM,iBAAA,GAAN,cAAgC,KAAA,CAAM;AAAA,EAE3C,WAAA,CACkB,QAChB,OAAA,EACA;AACA,IAAA,KAAA,CAAM,OAAO,CAAA;AAHG,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAIhB,IAAA,IAAA,CAAK,IAAA,GAAO,mBAAA;AACZ,IAAA,IAAA,CAAK,IAAA,GAAO,gBAAgB,MAAM,CAAA;AAAA,EACpC;AACF;AAEO,IAAM,YAAN,MAAgB;AAAA,EAIrB,WAAA,CACmB,OAAA,EACjB,MAAA,EACA,YAAA,EACiB,QAAe,UAAA,EAChC;AAJiB,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAGA,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAEjB,IAAA,IAAA,CAAK,cAAc,MAAA,GAAS,EAAE,WAAA,EAAa,MAAA,KAAW,EAAC;AACvD,IAAA,IAAA,CAAK,YAAA,GAAe,YAAA;AAAA,EACtB;AAAA;AAAA,EAGQ,KAAK,CAAA,EAAmB;AAC9B,IAAA,OAAO,gBAAA,CAAiB,IAAA,CAAK,KAAA,EAAO,CAAC,CAAA;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAc,OAAA,CACZ,IAAA,EACA,IAAA,EACA,IAAA,EACY;AACZ,IAAA,MAAM,GAAA,GAAM,GAAG,IAAA,CAAK,OAAA,CAAQ,QAAQ,KAAA,EAAO,EAAE,CAAC,CAAA,EAAG,IAAI,CAAA,CAAA;AACrD,IAAA,MAAM,OAAA,GAAkC,EAAE,GAAG,IAAA,CAAK,WAAA,EAAY;AAC9D,IAAA,IAAI,EAAE,IAAA,EAAM,IAAA,YAAgB,QAAA,CAAA,EAAW;AACrC,MAAA,OAAA,CAAQ,cAAc,CAAA,GAAI,kBAAA;AAAA,IAC5B;AACA,IAAA,MAAM,OAAA,GAAU,CAAC,MAAA,KACd,IAAA,EAAM,QAAA,KAAa,IAAA,IAAQ,MAAA,KAAW,GAAA,IAAS,IAAA,EAAM,QAAA,KAAa,IAAA,IAAQ,MAAA,KAAW,GAAA;AAExF,IAAA,MAAM,GAAA,GAAM,MAAM,SAAA,CAAU,YAAY;AACtC,MAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,GAAA,EAAK;AAAA,QAChC,GAAG,IAAA;AAAA,QACH,SAAS,EAAE,GAAG,OAAA,EAAS,GAAI,MAAM,OAAA;AAA+C,OACjF,CAAA;AACD,MAAA,IAAI,CAAC,QAAA,CAAS,EAAA,IAAM,CAAC,OAAA,CAAQ,QAAA,CAAS,MAAM,CAAA,EAAG;AAC7C,QAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,GAAO,KAAA,CAAM,MAAM,SAAS,UAAU,CAAA;AAClE,QAAA,IAAI,OAAA,GAAU,IAAA;AACd,QAAA,IAAI;AACF,UAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA;AAC5B,UAAA,IAAI,IAAA,CAAK,KAAA,EAAO,OAAA,GAAU,IAAA,CAAK,KAAA;AAAA,QACjC,CAAA,CAAA,MAAQ;AAAA,QAER;AACA,QAAA,MAAM,IAAI,iBAAA,CAAkB,QAAA,CAAS,MAAA,EAAQ,OAAO,CAAA;AAAA,MACtD;AACA,MAAA,OAAO,QAAA;AAAA,IACT,CAAA,EAAG,KAAK,YAAY,CAAA;AAEpB,IAAA,IAAI,OAAA,CAAQ,GAAA,CAAI,MAAM,CAAA,EAAG,OAAO,IAAA;AAChC,IAAA,OAAO,IAAI,IAAA,EAAK;AAAA,EAClB;AAAA,EAEQ,IAAO,IAAA,EAA0B;AACvC,IAAA,OAAO,KAAK,OAAA,CAAW,IAAA,EAAM,EAAE,MAAA,EAAQ,OAAO,CAAA;AAAA,EAChD;AAAA,EAEQ,IAAA,CAAQ,MAAc,IAAA,EAA2B;AACvD,IAAA,OAAO,IAAA,CAAK,OAAA,CAAW,IAAA,EAAM,EAAE,MAAA,EAAQ,MAAA,EAAQ,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,IAAI,CAAA,EAAG,CAAA;AAAA,EAC7E;AAAA,EAEQ,KAAA,CAAS,MAAc,IAAA,EAA2B;AACxD,IAAA,OAAO,IAAA,CAAK,OAAA,CAAW,IAAA,EAAM,EAAE,MAAA,EAAQ,OAAA,EAAS,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,IAAI,CAAA,EAAG,CAAA;AAAA,EAC9E;AAAA,EAEQ,IAAO,IAAA,EAA0B;AACvC,IAAA,OAAO,KAAK,OAAA,CAAW,IAAA,EAAM,EAAE,MAAA,EAAQ,UAAU,CAAA;AAAA,EACnD;AAAA;AAAA,EAGQ,OAAO,UAAA,EAA4C;AACzD,IAAA,OAAO,EAAE,aAAA,EAAe,CAAA,OAAA,EAAU,UAAU,CAAA,CAAA,EAAG;AAAA,EACjD;AAAA;AAAA,EAIA,SAAA,CAAU,KAAA,GAAwB,EAAC,EAAqC;AACtE,IAAA,MAAM,MAAA,GAAS,IAAI,eAAA,EAAgB;AACnC,IAAA,IAAI,MAAM,MAAA,EAAQ,MAAA,CAAO,GAAA,CAAI,QAAA,EAAU,MAAM,MAAM,CAAA;AACnD,IAAA,IAAI,MAAM,UAAA,EAAY,MAAA,CAAO,GAAA,CAAI,YAAA,EAAc,MAAM,UAAU,CAAA;AAC/D,IAAA,IAAI,MAAM,QAAA,EAAU,MAAA,CAAO,GAAA,CAAI,UAAA,EAAY,MAAM,QAAQ,CAAA;AACzD,IAAA,IAAI,MAAM,IAAA,EAAM,MAAA,CAAO,GAAA,CAAI,MAAA,EAAQ,MAAM,IAAI,CAAA;AAC7C,IAAA,IAAI,KAAA,CAAM,SAAS,MAAA,EAAW,MAAA,CAAO,IAAI,MAAA,EAAQ,MAAA,CAAO,KAAA,CAAM,IAAI,CAAC,CAAA;AACnE,IAAA,IAAI,KAAA,CAAM,UAAU,MAAA,EAAW,MAAA,CAAO,IAAI,OAAA,EAAS,MAAA,CAAO,KAAA,CAAM,KAAK,CAAC,CAAA;AACtE,IAAA,IAAI,KAAA,CAAM,SAAS,MAAA,CAAO,GAAA,CAAI,WAAW,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,OAAO,CAAC,CAAA;AACjE,IAAA,IAAI,MAAM,QAAA,EAAU,MAAA,CAAO,GAAA,CAAI,UAAA,EAAY,MAAM,QAAQ,CAAA;AACzD,IAAA,IAAI,MAAM,QAAA,EAAU,MAAA,CAAO,GAAA,CAAI,UAAA,EAAY,MAAM,QAAQ,CAAA;AACzD,IAAA,IAAI,MAAM,KAAA,EAAO,MAAA,CAAO,GAAA,CAAI,OAAA,EAAS,MAAM,KAAK,CAAA;AAChD,IAAA,MAAM,EAAA,GAAK,OAAO,QAAA,EAAS;AAC3B,IAAA,OAAO,IAAA,CAAK,IAA6B,CAAA,UAAA,EAAa,EAAA,GAAK,IAAI,EAAE,CAAA,CAAA,GAAK,EAAE,CAAA,CAAE,CAAA;AAAA,EAC5E;AAAA,EAEA,SAAS,SAAA,EAAmD;AAC1D,IAAA,OAAO,IAAA,CAAK,GAAA,CAA2B,CAAA,WAAA,EAAc,SAAS,CAAA,CAAE,CAAA;AAAA,EAClE;AAAA,EAEA,uBAAA,CAAwB,UAAkB,OAAA,EAAmD;AAC3F,IAAA,OAAO,IAAA,CAAK,IAA6B,CAAA,iBAAA,EAAoB,IAAA,CAAK,KAAK,QAAQ,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE,CAAA;AAAA,EAC/F;AAAA,EAEA,eAAA,CAAgB,OAAA,EAAiB,IAAA,GAAO,CAAA,EAAG,QAAQ,EAAA,EAAsC;AACvF,IAAA,OAAO,IAAA,CAAK,GAAA;AAAA,MACV,CAAA,gBAAA,EAAmB,KAAK,IAAA,CAAK,OAAO,CAAC,CAAA,MAAA,EAAS,IAAI,UAAU,KAAK,CAAA;AAAA,KACnE;AAAA,EACF;AAAA;AAAA,EAIA,QAAA,CAAS,QAAA,EAAkB,OAAA,EAAiB,IAAA,GAAO,KAAA,EAAuC;AACxF,IAAA,OAAO,IAAA,CAAK,GAAA;AAAA,MACV,cAAc,QAAQ,CAAA,CAAA,EAAI,OAAO,CAAA,EAAG,IAAA,GAAO,eAAe,EAAE,CAAA;AAAA,KAC9D;AAAA,EACF;AAAA,EAEA,gBAAA,CAAiB,OAAA,EAAiB,IAAA,GAAO,CAAA,EAAG,QAAQ,EAAA,EAAsC;AACxF,IAAA,OAAO,IAAA,CAAK,GAAA;AAAA,MACV,CAAA,iBAAA,EAAoB,KAAK,IAAA,CAAK,OAAO,CAAC,CAAA,MAAA,EAAS,IAAI,UAAU,KAAK,CAAA;AAAA,KACpE;AAAA,EACF;AAAA,EAEA,gBACE,QAAA,EACA,OAAA,EACA,IAAA,GAAO,CAAA,EACP,QAAQ,EAAA,EAC6B;AACrC,IAAA,OAAO,IAAA,CAAK,GAAA;AAAA,MACV,cAAc,QAAQ,CAAA,CAAA,EAAI,OAAO,CAAA,cAAA,EAAiB,IAAI,UAAU,KAAK,CAAA;AAAA,KACvE;AAAA,EACF;AAAA;AAAA,EAIA,cAAA,CACE,OAAO,CAAA,EACP,KAAA,GAAQ,IACR,OAAA,EACA,IAAA,EACA,SACA,KAAA,EACuC;AACvC,IAAA,MAAM,MAAA,GAAS,IAAI,eAAA,CAAgB,EAAE,IAAA,EAAM,MAAA,CAAO,IAAI,CAAA,EAAG,KAAA,EAAO,MAAA,CAAO,KAAK,CAAA,EAAG,CAAA;AAC/E,IAAA,IAAI,YAAY,MAAA,EAAW,MAAA,CAAO,IAAI,SAAA,EAAW,MAAA,CAAO,OAAO,CAAC,CAAA;AAChE,IAAA,IAAI,IAAA,EAAM,MAAA,CAAO,GAAA,CAAI,MAAA,EAAQ,IAAI,CAAA;AACjC,IAAA,IAAI,OAAA,EAAS,MAAA,CAAO,GAAA,CAAI,SAAA,EAAW,OAAO,CAAA;AAC1C,IAAA,IAAI,KAAA,EAAO,MAAA,CAAO,GAAA,CAAI,OAAA,EAAS,KAAK,CAAA;AACpC,IAAA,OAAO,IAAA,CAAK,GAAA,CAAkC,CAAA,gBAAA,EAAmB,MAAM,CAAA,CAAE,CAAA;AAAA,EAC3E;AAAA,EAEA,qBAAA,CAAsB,KAAA,EAAe,IAAA,GAAO,CAAA,EAAG,QAAQ,EAAA,EAA2C;AAChG,IAAA,MAAM,SAAS,IAAI,eAAA,CAAgB,EAAE,KAAA,EAAO,KAAK,IAAA,CAAK,KAAK,CAAA,EAAG,IAAA,EAAM,OAAO,IAAI,CAAA,EAAG,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACxG,IAAA,OAAO,IAAA,CAAK,GAAA,CAAkC,CAAA,gBAAA,EAAmB,MAAM,CAAA,CAAE,CAAA;AAAA,EAC3E;AAAA,EAEA,cAAc,QAAA,EAAuD;AACnE,IAAA,OAAO,KAAK,GAAA,CAAgC,CAAA,gBAAA,EAAmB,KAAK,IAAA,CAAK,QAAQ,CAAC,CAAA,CAAE,CAAA;AAAA,EACtF;AAAA,EAEA,oBACE,QAAA,EACA,IAAA,GAAO,GACP,KAAA,GAAQ,EAAA,EACR,OAA6B,QAAA,EACK;AAClC,IAAA,OAAO,IAAA,CAAK,GAAA;AAAA,MACV,CAAA,gBAAA,EAAmB,IAAA,CAAK,IAAA,CAAK,QAAQ,CAAC,gBAAgB,IAAI,CAAA,OAAA,EAAU,KAAK,CAAA,MAAA,EAAS,IAAI,CAAA;AAAA,KACxF;AAAA,EACF;AAAA;AAAA,EAIA,aAAA,CAAc,KAAA,GAA4B,EAAC,EAAwC;AACjF,IAAA,MAAM,MAAA,GAAS,IAAI,eAAA,EAAgB;AACnC,IAAA,IAAI,MAAM,IAAA,EAAM,MAAA,CAAO,GAAA,CAAI,MAAA,EAAQ,MAAM,IAAI,CAAA;AAC7C,IAAA,IAAI,KAAA,CAAM,SAAS,MAAA,EAAW,MAAA,CAAO,IAAI,MAAA,EAAQ,MAAA,CAAO,KAAA,CAAM,IAAI,CAAC,CAAA;AACnE,IAAA,IAAI,KAAA,CAAM,UAAU,MAAA,EAAW,MAAA,CAAO,IAAI,OAAA,EAAS,MAAA,CAAO,KAAA,CAAM,KAAK,CAAC,CAAA;AACtE,IAAA,IAAI,MAAM,KAAA,EAAO,MAAA,CAAO,GAAA,CAAI,OAAA,EAAS,MAAM,KAAK,CAAA;AAChD,IAAA,MAAM,EAAA,GAAK,OAAO,QAAA,EAAS;AAC3B,IAAA,OAAO,IAAA,CAAK,IAAgC,CAAA,cAAA,EAAiB,EAAA,GAAK,IAAI,EAAE,CAAA,CAAA,GAAK,EAAE,CAAA,CAAE,CAAA;AAAA,EACnF;AAAA,EAEA,sBAAA,CACE,OAAA,EACA,IAAA,GAAO,CAAA,EACP,QAAQ,EAAA,EAC6B;AACrC,IAAA,OAAO,IAAA,CAAK,GAAA;AAAA,MACV,CAAA,eAAA,EAAkB,KAAK,IAAA,CAAK,OAAO,CAAC,CAAA,MAAA,EAAS,IAAI,UAAU,KAAK,CAAA;AAAA,KAClE;AAAA,EACF;AAAA;AAAA,EAIA,gBAAA,CACE,QAAA,EACA,OAAA,EACA,IAAA,GAA0C,EAAC,EACP;AACpC,IAAA,MAAM,MAAA,GAAS,IAAI,eAAA,EAAgB;AACnC,IAAA,IAAI,IAAA,CAAK,SAAS,MAAA,EAAW,MAAA,CAAO,IAAI,MAAA,EAAQ,MAAA,CAAO,IAAA,CAAK,IAAI,CAAC,CAAA;AACjE,IAAA,IAAI,IAAA,CAAK,UAAU,MAAA,EAAW,MAAA,CAAO,IAAI,OAAA,EAAS,MAAA,CAAO,IAAA,CAAK,KAAK,CAAC,CAAA;AACpE,IAAA,MAAM,EAAA,GAAK,OAAO,QAAA,EAAS;AAC3B,IAAA,OAAO,IAAA,CAAK,GAAA;AAAA,MACV,CAAA,WAAA,EAAc,IAAA,CAAK,IAAA,CAAK,QAAQ,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,SAAA,EAAY,EAAA,GAAK,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,GAAK,EAAE,CAAA;AAAA,KAC5E;AAAA,EACF;AAAA;AAAA,EAIA,MAAA,CAAO,CAAA,EAAW,KAAA,GAAQ,EAAA,EAAI,KAAA,EAAgF;AAC5G,IAAA,MAAM,MAAA,GAAS,IAAI,eAAA,CAAgB,EAAE,GAAG,KAAA,EAAO,MAAA,CAAO,KAAK,CAAA,EAAG,CAAA;AAC9D,IAAA,IAAI,KAAA,EAAO,MAAA,CAAO,GAAA,CAAI,OAAA,EAAS,KAAK,CAAA;AACpC,IAAA,OAAO,IAAA,CAAK,GAAA;AAAA,MACV,CAAA,WAAA,EAAc,MAAA,CAAO,QAAA,EAAU,CAAA;AAAA,KACjC;AAAA,EACF;AAAA;AAAA,EAIA,oBACE,MAAA,EACwC;AACxC,IAAA,OAAO,IAAA,CAAK,IAAA,CAAoC,qBAAA,EAAuB,MAAM,CAAA;AAAA,EAC/E;AAAA,EAEA,kBACE,MAAA,EACwC;AACxC,IAAA,OAAO,IAAA,CAAK,IAAA,CAAoC,mBAAA,EAAqB,MAAM,CAAA;AAAA,EAC7E;AAAA,EAEA,oBACE,MAAA,EACwC;AACxC,IAAA,OAAO,IAAA,CAAK,IAAA,CAAoC,qBAAA,EAAuB,MAAM,CAAA;AAAA,EAC/E;AAAA,EAEA,mBACE,MAAA,EACwC;AACxC,IAAA,OAAO,IAAA,CAAK,IAAA,CAAoC,oBAAA,EAAsB,MAAM,CAAA;AAAA,EAC9E;AAAA,EAEA,UAAU,EAAA,EAA6C;AACrD,IAAA,OAAO,IAAA,CAAK,GAAA,CAA4B,CAAA,YAAA,EAAe,EAAE,CAAA,CAAE,CAAA;AAAA,EAC7D;AAAA,EAEA,qBAAA,CAAsB,IAAY,SAAA,EAAsD;AACtF,IAAA,OAAO,KAAK,KAAA,CAA8B,CAAA,YAAA,EAAe,EAAE,CAAA,UAAA,CAAA,EAAc,EAAE,WAAW,CAAA;AAAA,EACxF;AAAA,EAEA,aAAA,CAAc,IAAY,MAAA,EAAiD;AACzE,IAAA,OAAO,KAAK,KAAA,CAA8B,CAAA,YAAA,EAAe,EAAE,CAAA,QAAA,CAAA,EAAY,EAAE,QAAQ,CAAA;AAAA,EACnF;AAAA,EAEA,iBAAiB,MAAA,EAAwE;AACvF,IAAA,OAAO,IAAA,CAAK,IAAA,CAAoC,kBAAA,EAAoB,MAAM,CAAA;AAAA,EAC5E;AAAA,EAEA,uBAAuB,MAAA,EAA8E;AACnG,IAAA,OAAO,IAAA,CAAK,IAAA,CAAoC,+BAAA,EAAiC,MAAM,CAAA;AAAA,EACzF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,wBAAA,CACE,QACA,UAAA,EACwC;AACxC,IAAA,MAAM,YAAA,GAAuC,aAAa,EAAE,eAAA,EAAiB,UAAU,UAAU,CAAA,CAAA,KAAO,EAAC;AACzG,IAAA,OAAO,IAAA,CAAK,QAAuC,2BAAA,EAA6B;AAAA,MAC9E,MAAA,EAAQ,MAAA;AAAA,MACR,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,MAAM,CAAA;AAAA,MAC3B,OAAA,EAAS;AAAA,KACV,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,iBAAiB,KAAA,EAAgE;AAC/E,IAAA,MAAM,MAAA,GAAS,IAAI,eAAA,EAAgB;AACnC,IAAA,IAAI,MAAM,iBAAA,EAAmB,MAAA,CAAO,GAAA,CAAI,mBAAA,EAAqB,MAAM,iBAAiB,CAAA;AACpF,IAAA,IAAI,MAAM,aAAA,EAAe,MAAA,CAAO,GAAA,CAAI,eAAA,EAAiB,MAAM,aAAa,CAAA;AACxE,IAAA,IAAI,KAAA,CAAM,SAAS,MAAA,EAAW,MAAA,CAAO,IAAI,MAAA,EAAQ,MAAA,CAAO,KAAA,CAAM,IAAI,CAAC,CAAA;AACnE,IAAA,IAAI,KAAA,CAAM,UAAU,MAAA,EAAW,MAAA,CAAO,IAAI,OAAA,EAAS,MAAA,CAAO,KAAA,CAAM,KAAK,CAAC,CAAA;AACtE,IAAA,OAAO,IAAA,CAAK,GAAA,CAA6B,CAAA,0BAAA,EAA6B,MAAM,CAAA,CAAE,CAAA;AAAA,EAChF;AAAA;AAAA,EAIA,oBAAA,GAAmE;AACjE,IAAA,OAAO,IAAA,CAAK,IAAuC,yBAAyB,CAAA;AAAA,EAC9E;AAAA,EAEA,eAAe,QAAA,EAA4E;AACzF,IAAA,OAAO,IAAA,CAAK,IAAA,CAAqC,qBAAA,EAAuB,QAAQ,CAAA;AAAA,EAClF;AAAA,EAEA,gBAAgB,GAAA,EAA4C;AAC1D,IAAA,MAAM,MAAA,GAAS,IAAI,eAAA,CAAgB,EAAE,KAAK,CAAA;AAC1C,IAAA,OAAO,KAAK,GAAA,CAA0B,CAAA,qBAAA,EAAwB,MAAA,CAAO,QAAA,EAAU,CAAA,CAAE,CAAA;AAAA,EACnF;AAAA,EAEA,WAAW,IAAA,EAAqD;AAC9D,IAAA,MAAM,QAAA,GAAW,IAAI,QAAA,EAAS;AAC9B,IAAA,QAAA,CAAS,MAAA,CAAO,QAAQ,IAAI,CAAA;AAG5B,IAAA,OAAO,IAAA,CAAK,QAAwC,0BAAA,EAA4B;AAAA,MAC9E,MAAA,EAAQ,MAAA;AAAA,MACR,IAAA,EAAM;AAAA,KACP,CAAA;AAAA,EACH;AAAA;AAAA,EAIA,KAAA,GAA2C;AACzC,IAAA,OAAO,IAAA,CAAK,IAA8B,eAAe,CAAA;AAAA,EAC3D;AAAA,EAEA,UAAA,GAAmD;AACjD,IAAA,OAAO,IAAA,CAAK,IAAiC,iBAAiB,CAAA;AAAA,EAChE;AAAA,EAEA,aAAa,KAAA,EAA2D;AACtE,IAAA,OAAO,IAAA,CAAK,KAAuC,iBAAA,EAAmB,KAAA,GAAQ,EAAE,KAAA,EAAM,GAAI,EAAE,CAAA;AAAA,EAC9F;AAAA,EAEA,aAAa,EAAA,EAAkE;AAC7E,IAAA,OAAO,IAAA,CAAK,GAAA,CAAiD,CAAA,gBAAA,EAAmB,EAAE,CAAA,CAAE,CAAA;AAAA,EACtF;AAAA,EAEA,QAAA,GAAgD;AAC9C,IAAA,OAAO,IAAA,CAAK,IAAgC,kBAAkB,CAAA;AAAA,EAChE;AAAA,EAEA,WAAA,GAA0D;AACxD,IAAA,OAAO,IAAA,CAAK,IAAuC,qBAAqB,CAAA;AAAA,EAC1E;AAAA,EAEA,cAAc,MAAA,EAAsE;AAClF,IAAA,OAAO,IAAA,CAAK,IAAA,CAAqC,qBAAA,EAAuB,MAAM,CAAA;AAAA,EAChF;AAAA,EAEA,cAAc,EAAA,EAAkE;AAC9E,IAAA,OAAO,IAAA,CAAK,GAAA;AAAA,MACV,uBAAuB,EAAE,CAAA;AAAA,KAC3B;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,eAAA,CACJ,eAAA,EACA,aAAA,EACA,UAAA,EAC6E;AAC7E,IAAA,OAAO,IAAA,CAAK,QAAQ,uBAAA,EAAyB;AAAA,MAC3C,MAAA,EAAQ,MAAA;AAAA,MACR,MAAM,IAAA,CAAK,SAAA,CAAU,EAAE,eAAA,EAAiB,eAAe,CAAA;AAAA,MACvD,OAAA,EAAS,IAAA,CAAK,MAAA,CAAO,UAAU;AAAA,KAChC,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,uBAAuB,MAAA,EAKoB;AACzC,IAAA,OAAO,IAAA,CAAK,QAAQ,+BAAA,EAAiC;AAAA,MACnD,MAAA,EAAQ,MAAA;AAAA,MACR,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,MAAM;AAAA,KAC5B,CAAA;AAAA,EACH;AAAA;AAAA,EAIA,qBAAqB,eAAA,EAA+D;AAClF,IAAA,OAAO,IAAA,CAAK,OAAA;AAAA,MACV,CAAA,gBAAA,EAAmB,IAAA,CAAK,IAAA,CAAK,eAAe,CAAC,CAAA,QAAA,CAAA;AAAA,MAC7C,EAAE,QAAQ,KAAA,EAAM;AAAA,MAChB,EAAE,UAAU,IAAA;AAAK,KACnB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,uBAAA,CACE,eAAA,EACA,IAAA,EACA,UAAA,EAC+B;AAC/B,IAAA,OAAO,IAAA,CAAK,OAAA;AAAA,MACV,CAAA,gBAAA,EAAmB,IAAA,CAAK,IAAA,CAAK,eAAe,CAAC,CAAA,QAAA,CAAA;AAAA,MAC7C,EAAE,MAAA,EAAQ,OAAA,EAAS,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,IAAI,CAAA,EAAG,OAAA,EAAS,IAAA,CAAK,MAAA,CAAO,UAAU,CAAA;AAAE,KAClF;AAAA,EACF;AAAA,EAEA,eAAA,CACE,iBACA,UAAA,EAC8D;AAC9D,IAAA,OAAO,IAAA,CAAK,OAAA;AAAA,MACV,CAAA,gBAAA,EAAmB,IAAA,CAAK,IAAA,CAAK,eAAe,CAAC,CAAA,cAAA,CAAA;AAAA,MAC7C,EAAE,MAAA,EAAQ,KAAA,EAAO,SAAS,IAAA,CAAK,MAAA,CAAO,UAAU,CAAA,EAAE;AAAA,MAClD,EAAE,QAAA,EAAU,IAAA,EAAM,QAAA,EAAU,IAAA;AAAK,KACnC;AAAA,EACF;AAAA;AAAA;AAAA,EAKA,WAAA,CAAY,IAAA,GAA2D,EAAC,EAAkC;AACxG,IAAA,MAAM,MAAA,GAAS,IAAI,eAAA,EAAgB;AACnC,IAAA,IAAI,KAAK,MAAA,EAAQ,MAAA,CAAO,GAAA,CAAI,QAAA,EAAU,KAAK,MAAM,CAAA;AACjD,IAAA,IAAI,IAAA,CAAK,MAAO,MAAA,CAAO,GAAA,CAAI,QAAS,MAAA,CAAO,IAAA,CAAK,IAAI,CAAC,CAAA;AACrD,IAAA,IAAI,IAAA,CAAK,OAAO,MAAA,CAAO,GAAA,CAAI,SAAS,MAAA,CAAO,IAAA,CAAK,KAAK,CAAC,CAAA;AACtD,IAAA,MAAM,EAAA,GAAK,OAAO,QAAA,EAAS;AAC3B,IAAA,OAAO,IAAA,CAAK,IAA0B,CAAA,YAAA,EAAe,EAAA,GAAK,IAAI,EAAE,CAAA,CAAA,GAAK,EAAE,CAAA,CAAE,CAAA;AAAA,EAC3E;AAAA,EAEA,kBAAkB,aAAA,EAA0D;AAC1E,IAAA,OAAO,IAAA,CAAK,OAAA;AAAA,MACV,CAAA,aAAA,EAAgB,IAAA,CAAK,IAAA,CAAK,aAAa,CAAC,CAAA,QAAA,CAAA;AAAA,MACxC,EAAE,QAAQ,KAAA,EAAM;AAAA,MAChB,EAAE,UAAU,IAAA;AAAK,KACnB;AAAA,EACF;AAAA;AAAA,EAGA,qBAAqB,QAAA,EAAqD;AACxE,IAAA,OAAO,IAAA,CAAK,OAAA;AAAA,MACV,4BAA4B,kBAAA,CAAmB,QAAA,CAAS,aAAY,CAAE,IAAA,EAAM,CAAC,CAAA,CAAA;AAAA,MAC7E,EAAE,QAAQ,KAAA,EAAM;AAAA,MAChB,EAAE,UAAU,IAAA;AAAK,KACnB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,oBAAA,CACE,aAAA,EACA,IAAA,EACA,UAAA,EAC4B;AAC5B,IAAA,OAAO,IAAA,CAAK,OAAA;AAAA,MACV,CAAA,aAAA,EAAgB,IAAA,CAAK,IAAA,CAAK,aAAa,CAAC,CAAA,QAAA,CAAA;AAAA,MACxC,EAAE,MAAA,EAAQ,OAAA,EAAS,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,IAAI,CAAA,EAAG,OAAA,EAAS,IAAA,CAAK,MAAA,CAAO,UAAU,CAAA;AAAE,KAClF;AAAA,EACF;AAAA;AAAA;AAAA,EAKA,gCAAgC,IAAA,EAAgE;AAC9F,IAAA,OAAO,IAAA,CAAK,GAAA;AAAA,MACV,oCAAoC,kBAAA,CAAmB,IAAA,CAAK,aAAY,CAAE,IAAA,EAAM,CAAC,CAAA;AAAA,KACnF;AAAA,EACF;AAAA;AAAA,EAGA,yBAAA,CACE,eAAA,EACA,IAAA,EACA,UAAA,EACA,WAAA,EAC4C;AAC5C,IAAA,OAAO,IAAA,CAAK,QAA2C,4BAAA,EAA8B;AAAA,MACnF,MAAA,EAAQ,MAAA;AAAA,MACR,MAAM,IAAA,CAAK,SAAA,CAAU,EAAE,eAAA,EAAiB,IAAA,EAAM,aAAa,CAAA;AAAA,MAC3D,OAAA,EAAS,IAAA,CAAK,MAAA,CAAO,UAAU;AAAA,KAChC,CAAA;AAAA,EACH;AAAA;AAAA,EAGA,0BAA0B,UAAA,EAAmE;AAC3F,IAAA,OAAO,IAAA,CAAK,QAA8C,+BAAA,EAAiC;AAAA,MACzF,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS,IAAA,CAAK,MAAA,CAAO,UAAU;AAAA,KAChC,CAAA;AAAA,EACH;AAAA;AAAA,EAGA,oBAAoB,IAAA,EAA6C;AAC/D,IAAA,OAAO,IAAA,CAAK,OAAA;AAAA,MACV,2BAA2B,kBAAA,CAAmB,IAAA,CAAK,aAAY,CAAE,IAAA,EAAM,CAAC,CAAA,CAAA;AAAA,MACxE,EAAE,QAAQ,KAAA,EAAM;AAAA,MAChB,EAAE,UAAU,IAAA;AAAK,KACnB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,MAAM,aAAa,MAAA,EAkBhB;AACD,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,oBAAA,EAAsB,MAAM,CAAA;AAAA,EAC/C;AAAA,EAEA,MAAM,cAAA,CACJ,UAAA,EACA,OAAA,GAUI,EAAC,EACmB;AACxB,IAAA,MAAM,IAAA,GAA+B;AAAA,MACnC,UAAA,EAAY,QAAQ,UAAA,IAAc,SAAA;AAAA,MAClC,SAAA,EAAW,QAAQ,SAAA,IAAa;AAAA,KAClC;AACA,IAAA,IAAI,OAAA,CAAQ,KAAA,EAAO,IAAA,CAAK,KAAA,GAAQ,OAAA,CAAQ,KAAA;AACxC,IAAA,OAAO,IAAA,CAAK,QAAuB,cAAA,EAAgB;AAAA,MACjD,MAAA,EAAQ,MAAA;AAAA,MACR,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,IAAI,CAAA;AAAA,MACzB,OAAA,EAAS,IAAA,CAAK,MAAA,CAAO,UAAU;AAAA,KAChC,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,YAAY,UAAA,EAAmD;AAC7D,IAAA,OAAO,IAAA,CAAK,OAAA;AAAA,MACV,cAAA;AAAA,MACA,EAAE,MAAA,EAAQ,KAAA,EAAO,SAAS,IAAA,CAAK,MAAA,CAAO,UAAU,CAAA,EAAE;AAAA,MAClD,EAAE,UAAU,IAAA;AAAK,KACnB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,eAAA,CACE,QAAA,EACA,OAAA,EACA,IAAA,GAA0C,EAAC,EACH;AACxC,IAAA,MAAM,MAAA,GAAS,IAAI,eAAA,EAAgB;AACnC,IAAA,IAAI,IAAA,CAAK,SAAS,MAAA,EAAW,MAAA,CAAO,IAAI,MAAA,EAAQ,MAAA,CAAO,IAAA,CAAK,IAAI,CAAC,CAAA;AACjE,IAAA,IAAI,IAAA,CAAK,UAAU,MAAA,EAAW,MAAA,CAAO,IAAI,OAAA,EAAS,MAAA,CAAO,IAAA,CAAK,KAAK,CAAC,CAAA;AACpE,IAAA,MAAM,EAAA,GAAK,OAAO,QAAA,EAAS;AAC3B,IAAA,OAAO,IAAA,CAAK,GAAA;AAAA,MACV,CAAA,WAAA,EAAc,IAAA,CAAK,IAAA,CAAK,QAAQ,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,QAAA,EAAW,EAAA,GAAK,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,GAAK,EAAE,CAAA;AAAA,KAC3E;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,gBAAA,CACE,QACA,UAAA,EACqC;AACrC,IAAA,OAAO,IAAA,CAAK,QAAoC,kBAAA,EAAoB;AAAA,MAClE,MAAA,EAAQ,MAAA;AAAA,MACR,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,MAAM,CAAA;AAAA,MAC3B,OAAA,EAAS,EAAE,eAAA,EAAiB,CAAA,OAAA,EAAU,UAAU,CAAA,CAAA;AAAG,KACpD,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,oBAAA,CACE,QACA,UAAA,EACqC;AACrC,IAAA,OAAO,IAAA,CAAK,QAAoC,uBAAA,EAAyB;AAAA,MACvE,MAAA,EAAQ,MAAA;AAAA,MACR,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,MAAM,CAAA;AAAA,MAC3B,OAAA,EAAS,EAAE,eAAA,EAAiB,CAAA,OAAA,EAAU,UAAU,CAAA,CAAA;AAAG,KACpD,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,gBAAA,CACE,QACA,UAAA,EACqC;AACrC,IAAA,OAAO,IAAA,CAAK,QAAoC,+BAAA,EAAiC;AAAA,MAC/E,MAAA,EAAQ,MAAA;AAAA,MACR,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,MAAM,CAAA;AAAA,MAC3B,OAAA,EAAS,EAAE,eAAA,EAAiB,CAAA,OAAA,EAAU,UAAU,CAAA,CAAA;AAAG,KACpD,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,cAAA,CACE,OACA,UAAA,EACuC;AACvC,IAAA,MAAM,SAAS,IAAI,eAAA,CAAgB,EAAE,IAAA,EAAM,KAAA,CAAM,MAAM,CAAA;AACvD,IAAA,IAAI,KAAA,CAAM,SAAS,MAAA,EAAW,MAAA,CAAO,IAAI,MAAA,EAAQ,MAAA,CAAO,KAAA,CAAM,IAAI,CAAC,CAAA;AACnE,IAAA,IAAI,KAAA,CAAM,UAAU,MAAA,EAAW,MAAA,CAAO,IAAI,OAAA,EAAS,MAAA,CAAO,KAAA,CAAM,KAAK,CAAC,CAAA;AACtE,IAAA,OAAO,IAAA,CAAK,OAAA,CAAsC,CAAA,iBAAA,EAAoB,MAAM,CAAA,CAAA,EAAI;AAAA,MAC9E,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS,IAAA,CAAK,MAAA,CAAO,UAAU;AAAA,KAChC,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,aAAA,CAAc,IAAY,UAAA,EAA0D;AAClF,IAAA,OAAO,IAAA,CAAK,OAAA,CAAoC,CAAA,iBAAA,EAAoB,EAAE,CAAA,CAAA,EAAI;AAAA,MACxE,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS,UAAA,GAAa,IAAA,CAAK,MAAA,CAAO,UAAU,CAAA,GAAI;AAAA,KACjD,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,iBAAA,CACE,EAAA,EACA,MAAA,EACA,UAAA,EACqC;AACrC,IAAA,OAAO,IAAA,CAAK,OAAA,CAAoC,CAAA,iBAAA,EAAoB,EAAE,CAAA,QAAA,CAAA,EAAY;AAAA,MAChF,MAAA,EAAQ,MAAA;AAAA,MACR,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,MAAM,CAAA;AAAA,MAC3B,OAAA,EAAS,EAAE,eAAA,EAAiB,CAAA,OAAA,EAAU,UAAU,CAAA,CAAA;AAAG,KACpD,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,gBAAA,CAAiB,IAAY,UAAA,EAAyD;AACpF,IAAA,OAAO,IAAA,CAAK,OAAA,CAAoC,CAAA,iBAAA,EAAoB,EAAE,CAAA,OAAA,CAAA,EAAW;AAAA,MAC/E,MAAA,EAAQ,MAAA;AAAA,MACR,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,EAAE,CAAA;AAAA,MACvB,OAAA,EAAS,EAAE,eAAA,EAAiB,CAAA,OAAA,EAAU,UAAU,CAAA,CAAA;AAAG,KACpD,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,gBAAA,CAAiB,EAAA,EAAY,IAAA,EAAc,UAAA,EAAyD;AAClG,IAAA,OAAO,IAAA,CAAK,OAAA,CAAoC,CAAA,iBAAA,EAAoB,EAAE,CAAA,OAAA,CAAA,EAAW;AAAA,MAC/E,MAAA,EAAQ,MAAA;AAAA,MACR,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,EAAE,MAAM,CAAA;AAAA,MAC7B,OAAA,EAAS,EAAE,eAAA,EAAiB,CAAA,OAAA,EAAU,UAAU,CAAA,CAAA;AAAG,KACpD,CAAA;AAAA,EACH;AAAA;AAAA,EAIA,iBAAA,CAAkB,IAAA,GAAiE,EAAC,EAA0C;AAC5H,IAAA,OAAO,IAAA,CAAK,cAAA,CAAe,IAAA,CAAK,IAAA,IAAQ,CAAA,EAAG,IAAA,CAAK,KAAA,IAAS,EAAA,EAAI,MAAA,EAAW,IAAA,CAAK,IAAA,EAAM,cAAc,CAAA;AAAA,EACnG;AAAA,EAEA,MAAM,iBAAA,CAAkB,UAAA,EAAoB,MAAA,EAAyC;AACnF,IAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,GAAA;AAAA,MACrB,CAAA,oBAAA,EAAuB,KAAK,IAAA,CAAK,UAAU,CAAC,CAAA,CAAA,EAAI,IAAA,CAAK,IAAA,CAAK,MAAM,CAAC,CAAA;AAAA,KACnE;AACA,IAAA,OAAO,GAAA,CAAI,IAAA;AAAA,EACb;AAAA,EAEA,MAAM,sBAAA,CAAuB,UAAA,EAAoB,OAAA,EAAuD;AACtG,IAAA,MAAM,SAAS,IAAI,eAAA,CAAgB,EAAE,OAAA,EAAS,QAAQ,GAAA,CAAI,CAAC,CAAA,KAAM,IAAA,CAAK,KAAK,CAAC,CAAC,EAAE,IAAA,CAAK,GAAG,GAAG,CAAA;AAC1F,IAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,GAAA;AAAA,MACrB,uBAAuB,IAAA,CAAK,IAAA,CAAK,UAAU,CAAC,IAAI,MAAM,CAAA;AAAA,KACxD;AACA,IAAA,OAAO,GAAA,CAAI,IAAA;AAAA,EACb;AAAA;AAAA;AAAA;AAAA,EAMA,QAAA,CAAS,IAAA,GAAsB,EAAC,EAAoC;AAClE,IAAA,MAAM,MAAA,GAAS,IAAI,eAAA,EAAgB;AACnC,IAAA,IAAI,IAAA,CAAK,MAAM,MAAA,CAAO,GAAA,CAAI,QAAQ,MAAA,CAAO,IAAA,CAAK,IAAI,CAAC,CAAA;AACnD,IAAA,IAAI,IAAA,CAAK,OAAO,MAAA,CAAO,GAAA,CAAI,SAAS,MAAA,CAAO,IAAA,CAAK,KAAK,CAAC,CAAA;AACtD,IAAA,IAAI,KAAK,OAAA,EAAS,MAAA,CAAO,GAAA,CAAI,SAAA,EAAW,KAAK,OAAO,CAAA;AACpD,IAAA,IAAI,KAAK,KAAA,EAAO,MAAA,CAAO,GAAA,CAAI,OAAA,EAAS,KAAK,KAAK,CAAA;AAC9C,IAAA,MAAM,EAAA,GAAK,OAAO,QAAA,EAAS;AAC3B,IAAA,OAAO,IAAA,CAAK,IAA4B,CAAA,SAAA,EAAY,EAAA,GAAK,IAAI,EAAE,CAAA,CAAA,GAAK,EAAE,CAAA,CAAE,CAAA;AAAA,EAC1E;AAAA,EAEA,QAAQ,QAAA,EAA8C;AACpD,IAAA,OAAO,KAAK,GAAA,CAAuB,CAAA,UAAA,EAAa,KAAK,IAAA,CAAK,QAAQ,CAAC,CAAA,CAAE,CAAA;AAAA,EACvE;AAAA;AAAA,EAIA,kBAAA,CAAmB,IAAA,GAAiE,EAAC,EAA0C;AAC7H,IAAA,OAAO,IAAA,CAAK,cAAA,CAAe,IAAA,CAAK,IAAA,IAAQ,CAAA,EAAG,IAAA,CAAK,KAAA,IAAS,EAAA,EAAI,MAAA,EAAW,IAAA,CAAK,IAAA,EAAM,iBAAiB,CAAA;AAAA,EACtG;AAAA,EAEA,MAAM,iBAAA,CAAkB,UAAA,EAAoB,MAAA,EAAyC;AACnF,IAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,GAAA;AAAA,MACrB,CAAA,qBAAA,EAAwB,KAAK,IAAA,CAAK,UAAU,CAAC,CAAA,CAAA,EAAI,IAAA,CAAK,IAAA,CAAK,MAAM,CAAC,CAAA;AAAA,KACpE;AACA,IAAA,OAAO,GAAA,CAAI,IAAA;AAAA,EACb;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,WAAW,OAAA,EAA0C;AACzD,IAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,GAAA,CAA8B,eAAe,IAAA,CAAK,IAAA,CAAK,OAAO,CAAC,CAAA,CAAE,CAAA;AACxF,IAAA,OAAO,GAAA,CAAI,IAAA;AAAA,EACb;AAAA;AAAA,EAGA,qBAAA,CAAsB,IAAA,GAAO,CAAA,EAAG,KAAA,GAAQ,EAAA,EAAwD;AAC9F,IAAA,OAAO,KAAK,GAAA,CAA+C,CAAA,iBAAA,EAAoB,IAAI,CAAA,OAAA,EAAU,KAAK,CAAA,CAAE,CAAA;AAAA,EACtG;AAAA;AAAA,EAGA,gBAAA,CAAiB,OAAA,EAAiB,IAAA,GAAO,CAAA,EAAG,QAAQ,EAAA,EAA2C;AAC7F,IAAA,OAAO,IAAA,CAAK,GAAA;AAAA,MACV,CAAA,YAAA,EAAe,KAAK,IAAA,CAAK,OAAO,CAAC,CAAA,aAAA,EAAgB,IAAI,UAAU,KAAK,CAAA;AAAA,KACtE;AAAA,EACF;AAAA;AAAA,EAGA,MAAM,gBAAA,GAA8C;AAClD,IAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,GAAA,CAAgC,CAAA,kBAAA,CAAoB,CAAA;AAC3E,IAAA,OAAO,GAAA,CAAI,IAAA;AAAA,EACb;AAAA;AAAA,EAGA,MAAM,gBAAgB,SAAA,EAAsD;AAC1E,IAAA,IAAI,SAAA,CAAU,MAAA,KAAW,CAAA,EAAG,OAAO,EAAC;AACpC,IAAA,MAAM,SAAS,IAAI,eAAA,CAAgB,EAAE,SAAA,EAAW,UAAU,GAAA,CAAI,CAAC,CAAA,KAAM,IAAA,CAAK,KAAK,CAAC,CAAC,EAAE,IAAA,CAAK,GAAG,GAAG,CAAA;AAC9F,IAAA,MAAM,MAAM,MAAM,IAAA,CAAK,GAAA,CAAsC,CAAA,kBAAA,EAAqB,MAAM,CAAA,CAAE,CAAA;AAC1F,IAAA,OAAO,GAAA,CAAI,IAAA;AAAA,EACb;AACF;;;AC9QO,IAAM,aAAA,GAAgB,CAAC,KAAA,EAAO,OAAA,EAAS,YAAY,UAAU;;;ACnmBpE,IAAM,EAAA,GAAK,eAAe,UAAU,CAAA;AAG7B,IAAM,oCAAoC,EAAA,CAAG;AAC7C,IAAM,sCAAsC,EAAA,CAAG;AAC/C,IAAM,uCAAuC,EAAA,CAAG;AAChD,IAAM,qCAAqC,EAAA,CAAG;AAC9C,IAAM,uCAAuC,EAAA,CAAG;AAChD,IAAM,wCAAwC,EAAA,CAAG;AAGjD,IAAM,mCAAmC,EAAA,CAAG;AAC5C,IAAM,sCAAsC,EAAA,CAAG;AAC/C,IAAM,4BAA4B,EAAA,CAAG;AACrC,IAAM,mCAAmC,EAAA,CAAG;AAC5C,IAAM,oCAAoC,EAAA,CAAG;AAC7C,IAAM,8CAA8C,EAAA,CAAG;AACvD,IAAM,sCAAsC,EAAA,CAAG;AAC/C,IAAM,uCAAuC,EAAA,CAAG;AAGhD,IAAM,gCAAgC,EAAA,CAAG;AACzC,IAAM,qCAAqC,EAAA,CAAG;AAC9C,IAAM,iCAAiC,EAAA,CAAG;AAC1C,IAAM,sCAAsC,EAAA,CAAG;AAC/C,IAAM,gCAAgC,EAAA,CAAG;AAOzC,IAAM,uCAAuC,EAAA,CAAG;AAChD,IAAM,2CAA2C,EAAA,CAAG;AACpD,IAAM,oCAAoC,EAAA,CAAG;AAC7C,IAAM,yCAAyC,EAAA,CAAG;AAClD,IAAM,mCAAmC,EAAA,CAAG;AAC5C,IAAM,qCAAqC,EAAA,CAAG;AAG9C,IAAM,yCAAyC,EAAA,CAAG;AAClD,IAAM,uCAAuC,EAAA,CAAG;AAChD,IAAM,mCAAmC,EAAA,CAAG;AAC5C,IAAM,2CAA2C,EAAA,CAAG;AACpD,IAAM,oCAAoC,EAAA,CAAG;AAC7C,IAAM,sBAAsB,EAAA,CAAG;AAG/B,IAAM,gBAAA,GAAmB;AAAA,EAC9B;AAAA;AAAA,IAEE,MAAA,EAAQ,MAAA;AAAA,IACR,OAAA,EACE,oEAAA;AAAA,IACF,QAAA,EAAU,CAAA;AAAA,IACV,QAAA,EAAU;AAAA,GACZ;AAAA,EACA;AAAA,IACE,MAAA,EAAQ,MAAA;AAAA,IACR,OAAA,EACE,oEAAA;AAAA,IACF,QAAA,EAAU,CAAA;AAAA,IACV,QAAA,EAAU;AAAA,GACZ;AAAA,EACA;AAAA,IACE,MAAA,EAAQ,KAAA;AAAA,IACR,OAAA,EACE,oEAAA;AAAA,IACF,QAAA,EAAU,EAAA;AAAA,IACV,QAAA,EAAU;AAAA,GACZ;AAAA,EACA;AAAA,IACE,MAAA,EAAQ,MAAA;AAAA,IACR,OAAA,EACE,oEAAA;AAAA,IACF,QAAA,EAAU,EAAA;AAAA,IACV,QAAA,EAAU;AAAA,GACZ;AAAA,EACA;AAAA,IACE,MAAA,EAAQ,MAAA;AAAA,IACR,OAAA,EACE,oEAAA;AAAA,IACF,QAAA,EAAU,CAAA;AAAA,IACV,QAAA,EAAU;AAAA;AAEd;AAKO,IAAM,gBAAA,GAAyC;;;ACxFtD,IAAMC,GAAAA,GAAK,uBAAuB,UAAU,CAAA;AAe5C,IAAM,QAAA,GAAW;AAAA,EACf,YAAA,EAAc;AAAA,IACZ,EAAA,EAAI,YAAA;AAAA,IACJ,WAAA,EAAa,eAAA;AAAA,IACb,WAAA,EAAa,qEAAA;AAAA,IACb,QAAA,EAAU,QAAA;AAAA,IACV,UAAA,EAAY,WAAA;AAAA,IACZ,OAAA,EAAS;AAAA,MACP,QAAA,EAAU;AAAA,QACR,gBAAgBA,GAAAA,CAAG,aAAA;AAAA,QACnB,YAAYA,GAAAA,CAAG;AAAA;AACjB,KACF;AAAA,IACA,SAAA,EAAW,UAAA;AAAA,IACX,YAAA,EAAc,CAAC,MAAA,EAAQ,KAAA,EAAO,cAAc,QAAA,EAAU,UAAA,EAAY,MAAA,EAAQ,OAAA,EAAS,SAAS,CAAA;AAAA,IAC5F,MAAA,EAAQ;AAAA,MACN,EAAE,IAAA,EAAM,mBAAA,EAAqB,SAAA,EAAW,SAAA;AAAU;AAAA;AAAA;AAAA;AAAA,KAKpD;AAAA,IACA,cAAA,EAAgB,EAAE,cAAA,EAAgB,UAAA;AAAW,GAC/C;AAAA,EACA,WAAA,EAAa;AAAA,IACX,EAAA,EAAI,WAAA;AAAA,IACJ,WAAA,EAAa,2BAAA;AAAA,IACb,WAAA,EAAa,gEAAA;AAAA,IACb,QAAA,EAAU,QAAA;AAAA,IACV,UAAA,EAAY,WAAA;AAAA,IACZ,SAAA,EAAW,UAAA;AAAA,IACX,YAAA,EAAc,CAAC,MAAA,EAAQ,KAAA,EAAO,cAAc,QAAA,EAAU,UAAA,EAAY,MAAA,EAAQ,OAAA,EAAS,SAAS,CAAA;AAAA;AAAA;AAAA,IAG5F,cAAA,EAAgB,EAAE,cAAA,EAAgB,UAAA;AAAW,GAC/C;AAAA,EACA,aAAA,EAAe;AAAA,IACb,EAAA,EAAI,aAAA;AAAA,IACJ,WAAA,EAAa,cAAA;AAAA,IACb,WAAA,EAAa,0DAAA;AAAA,IACb,QAAA,EAAU,SAAA;AAAA,IACV,UAAA,EAAY,WAAA;AAAA,IACZ,OAAA,EAAS;AAAA,MACP,QAAA,EAAU;AAAA,QACR,gBAAgBA,GAAAA,CAAG,cAAA;AAAA,QACnB,WAAWA,GAAAA,CAAG,uBAAA;AAAA,QACd,YAAYA,GAAAA,CAAG;AAAA;AACjB,KACF;AAAA,IACA,SAAA,EAAW,SAAA;AAAA,IACX,YAAA,EAAc,CAAC,MAAA,EAAQ,KAAA,EAAO,cAAc,QAAA,EAAU,UAAA,EAAY,MAAA,EAAQ,OAAA,EAAS,SAAS,CAAA;AAAA,IAC5F,MAAA,EAAQ;AAAA,MACN,EAAE,IAAA,EAAM,oBAAA,EAAsB,SAAA,EAAW,SAAA;AAAU,KACrD;AAAA,IACA,cAAA,EAAgB,EAAE,cAAA,EAAgB,UAAA;AAAW,GAC/C;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,EAAA,EAAI,cAAA;AAAA,IACJ,WAAA,EAAa,cAAA;AAAA,IACb,WAAA,EAAa,qDAAA;AAAA,IACb,QAAA,EAAU,QAAA;AAAA,IACV,UAAA,EAAY,WAAA;AAAA,IACZ,OAAA,EAAS;AAAA,MACP,QAAA,EAAU;AAAA,QACR,gBAAgBA,GAAAA,CAAG,UAAA;AAAA,QACnB,WAAWA,GAAAA,CAAG;AAAA;AAChB,KACF;AAAA,IACA,SAAA,EAAW,KAAA;AAAA,IACX,YAAA,EAAc,CAAC,OAAA,EAAS,MAAM,CAAA;AAAA,IAC9B,MAAA,EAAQ;AAAA,MACN,EAAE,IAAA,EAAM,mBAAA,EAAqB,SAAA,EAAW,SAAA,EAAU;AAAA,MAClD,EAAE,IAAA,EAAM,kBAAA,EAAoB,SAAA,EAAW,UAAA,EAAY,MAAM,MAAA;AAAO,KAClE;AAAA,IACA,cAAA,EAAgB,EAAE,cAAA,EAAgB,UAAA;AAAW,GAC/C;AAAA,EACA,iBAAA,EAAmB;AAAA,IACjB,EAAA,EAAI,iBAAA;AAAA,IACJ,WAAA,EAAa,iBAAA;AAAA,IACb,WAAA,EAAa,iDAAA;AAAA,IACb,QAAA,EAAU,QAAA;AAAA,IACV,UAAA,EAAY,WAAA;AAAA,IACZ,OAAA,EAAS;AAAA,MACP,QAAA,EAAU;AAAA,QACR,gBAAgBA,GAAAA,CAAG,WAAA;AAAA,QACnB,WAAWA,GAAAA,CAAG;AAAA;AAChB,KACF;AAAA,IACA,SAAA,EAAW,MAAA;AAAA,IACX,cAAc,CAAC,OAAA,EAAS,QAAQ,KAAA,EAAO,YAAA,EAAc,UAAU,UAAU,CAAA;AAAA,IACzE,MAAA,EAAQ;AAAA,MACN,EAAE,IAAA,EAAM,aAAA,EAAe,SAAA,EAAW,SAAA,EAAU;AAAA,MAC5C,EAAE,IAAA,EAAM,kBAAA,EAAoB,SAAA,EAAW,UAAA,EAAY,MAAM,MAAA;AAAO,KAClE;AAAA,IACA,cAAA,EAAgB,EAAE,cAAA,EAAgB,UAAA;AAAW,GAC/C;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,EAAA,EAAI,YAAA;AAAA,IACJ,WAAA,EAAa,YAAA;AAAA,IACb,WAAA,EAAa,yFAAA;AAAA,IACb,QAAA,EAAU,SAAA;AAAA,IACV,UAAA,EAAY,WAAA;AAAA,IACZ,OAAA,EAAS;AAAA,MACP,QAAA,EAAU;AAAA,QACR,gBAAgBA,GAAAA,CAAG,gBAAA;AAAA,QACnB,WAAWA,GAAAA,CAAG;AAAA;AAChB,KACF;AAAA,IACA,SAAA,EAAW,QAAA;AAAA,IACX,YAAA,EAAc,CAAC,MAAA,EAAQ,QAAA,EAAU,QAAQ,KAAA,EAAO,YAAA,EAAc,UAAU,UAAU,CAAA;AAAA,IAClF,MAAA,EAAQ;AAAA,MACN,EAAE,IAAA,EAAM,oBAAA,EAAsB,SAAA,EAAW,SAAA,EAAU;AAAA,MACnD,EAAE,IAAA,EAAM,eAAA,EAAiB,SAAA,EAAW,UAAA;AAAW,KACjD;AAAA,IACA,cAAA,EAAgB,EAAE,cAAA,EAAgB,UAAA;AAAW,GAC/C;AAAA,EACA,SAAA,EAAW;AAAA,IACT,EAAA,EAAI,SAAA;AAAA,IACJ,WAAA,EAAa,SAAA;AAAA,IACb,WAAA,EAAa,yFAAA;AAAA,IACb,QAAA,EAAU,SAAA;AAAA,IACV,UAAA,EAAY,WAAA;AAAA,IACZ,OAAA,EAAS;AAAA,MACP,QAAA,EAAU;AAAA,QACR,gBAAgBA,GAAAA,CAAG,aAAA;AAAA,QACnB,WAAWA,GAAAA,CAAG;AAAA;AAChB,KACF;AAAA,IACA,SAAA,EAAW,MAAA;AAAA,IACX,cAAc,CAAC,MAAA,EAAQ,QAAQ,KAAA,EAAO,YAAA,EAAc,UAAU,UAAU,CAAA;AAAA,IACxE,MAAA,EAAQ;AAAA,MACN,EAAE,IAAA,EAAM,cAAA,EAAgB,SAAA,EAAW,SAAA,EAAU;AAAA,MAC7C,EAAE,IAAA,EAAM,mBAAA,EAAqB,SAAA,EAAW,UAAA;AAAW,KACrD;AAAA,IACA,cAAA,EAAgB,EAAE,cAAA,EAAgB,UAAA;AAAW,GAC/C;AAAA,EACA,gBAAA,EAAkB;AAAA,IAChB,EAAA,EAAI,gBAAA;AAAA,IACJ,WAAA,EAAa,gBAAA;AAAA,IACb,WAAA,EAAa,0EAAA;AAAA,IACb,QAAA,EAAU,QAAA;AAAA,IACV,UAAA,EAAY,WAAA;AAAA,IACZ,OAAA,EAAS;AAAA,MACP,QAAA,EAAU;AAAA,QACR,gBAAgBA,GAAAA,CAAG,aAAA;AAAA,QACnB,WAAWA,GAAAA,CAAG,sBAAA;AAAA,QACd,YAAYA,GAAAA,CAAG;AAAA;AACjB,KACF;AAAA,IACA,SAAA,EAAW,UAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASX,YAAA,EAAc,CAAC,SAAA,EAAW,UAAU,CAAA;AAAA,IACpC,MAAA,EAAQ;AAAA,MACN,EAAE,IAAA,EAAM,cAAA,EAAgB,SAAA,EAAW,SAAA,EAAU;AAAA,MAC7C,EAAE,IAAA,EAAM,iBAAA,EAAmB,SAAA,EAAW,SAAA,EAAU;AAAA,MAChD,EAAE,IAAA,EAAM,eAAA,EAAiB,SAAA,EAAW,SAAA;AAAU,KAChD;AAAA,IACA,cAAA,EAAgB,EAAE,cAAA,EAAgB,UAAA;AAAW,GAC/C;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,EAAA,EAAI,cAAA;AAAA,IACJ,WAAA,EAAa,cAAA;AAAA,IACb,WAAA,EACE,6EAAA;AAAA,IACF,QAAA,EAAU,OAAA;AAAA,IACV,UAAA,EAAY,WAAA;AAAA,IACZ,OAAA,EAAS;AAAA,MACP,QAAA,EAAU;AAAA,QACR,gBAAgBA,GAAAA,CAAG,kBAAA;AAAA,QACnB,WAAWA,GAAAA,CAAG,2BAAA;AAAA,QACd,YAAYA,GAAAA,CAAG;AAAA;AACjB,KACF;AAAA,IACA,SAAA,EAAW,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAKX,YAAA,EAAc,CAAC,QAAA,EAAU,MAAA,EAAQ,UAAU,CAAA;AAAA,IAC3C,MAAA,EAAQ;AAAA,MACN,EAAE,IAAA,EAAM,oBAAA,EAAsB,SAAA,EAAW,SAAA,EAAU;AAAA,MACnD,EAAE,IAAA,EAAM,qBAAA,EAAuB,SAAA,EAAW,SAAA;AAAU;AACtD,GACF;AAAA,EACA,8BAAA,EAAgC;AAAA,IAC9B,EAAA,EAAI,8BAAA;AAAA,IACJ,WAAA,EAAa,iCAAA;AAAA,IACb,WAAA,EAAa,+BAAA;AAAA,IACb,QAAA,EAAU,QAAA;AAAA,IACV,UAAA,EAAY,WAAA;AAAA,IACZ,OAAA,EAAS;AAAA,MACP,QAAA,EAAU;AAAA,QACR,gBAAgBA,GAAAA,CAAG,cAAA;AAAA,QACnB,WAAWA,GAAAA,CAAG,uBAAA;AAAA,QACd,YAAYA,GAAAA,CAAG;AAAA;AACjB,KACF;AAAA,IACA,SAAA,EAAW,UAAA;AAAA,IACX,YAAA,EAAc,CAAC,MAAA,EAAQ,KAAA,EAAO,cAAc,QAAQ,CAAA;AAAA,IACpD,MAAA,EAAQ;AAAA,MACN,EAAE,IAAA,EAAM,cAAA,EAAgB,SAAA,EAAW,SAAA,EAAU;AAAA,MAC7C,EAAE,IAAA,EAAM,gBAAA,EAAkB,SAAA,EAAW,SAAA,EAAU;AAAA,MAC/C,EAAE,IAAA,EAAM,gBAAA,EAAkB,SAAA,EAAW,SAAA;AAAU;AACjD,GACF;AAAA,EACA,+BAAA,EAAiC;AAAA,IAC/B,EAAA,EAAI,+BAAA;AAAA,IACJ,WAAA,EAAa,kCAAA;AAAA,IACb,WAAA,EAAa,gCAAA;AAAA,IACb,QAAA,EAAU,SAAA;AAAA,IACV,UAAA,EAAY,WAAA;AAAA,IACZ,OAAA,EAAS;AAAA,MACP,QAAA,EAAU;AAAA,QACR,gBAAgBA,GAAAA,CAAG,eAAA;AAAA,QACnB,WAAWA,GAAAA,CAAG,wBAAA;AAAA,QACd,YAAYA,GAAAA,CAAG;AAAA;AACjB,KACF;AAAA,IACA,SAAA,EAAW,SAAA;AAAA,IACX,YAAA,EAAc,CAAC,MAAA,EAAQ,KAAA,EAAO,cAAc,QAAQ,CAAA;AAAA,IACpD,MAAA,EAAQ;AAAA,MACN,EAAE,IAAA,EAAM,cAAA,EAAgB,SAAA,EAAW,SAAA,EAAU;AAAA,MAC7C,EAAE,IAAA,EAAM,gBAAA,EAAkB,SAAA,EAAW,SAAA,EAAU;AAAA,MAC/C,EAAE,IAAA,EAAM,gBAAA,EAAkB,SAAA,EAAW,SAAA;AAAU;AACjD,GACF;AAAA,EACA,gBAAA,EAAkB;AAAA,IAChB,EAAA,EAAI,gBAAA;AAAA,IACJ,WAAA,EAAa,iBAAA;AAAA,IACb,WAAA,EACE,0MAAA;AAAA,IACF,QAAA,EAAU,OAAA;AAAA,IACV,UAAA,EAAY,UAAA;AAAA,IACZ,SAAA,EAAW,MAAA;AAAA,IACX,YAAA,EAAc,CAAC,MAAA,EAAQ,UAAU;AAAA,GACnC;AAAA,EACA,iBAAA,EAAmB;AAAA,IACjB,EAAA,EAAI,iBAAA;AAAA,IACJ,WAAA,EAAa,kBAAA;AAAA,IACb,WAAA,EAAa,wDAAA;AAAA,IACb,QAAA,EAAU,QAAA;AAAA,IACV,UAAA,EAAY,UAAA;AAAA,IACZ,SAAA,EAAW,UAAA;AAAA,IACX,cAAc,CAAC,MAAA,EAAQ,KAAA,EAAO,YAAA,EAAc,UAAU,UAAU;AAAA,GAClE;AAAA,EACA,kBAAA,EAAoB;AAAA,IAClB,EAAA,EAAI,kBAAA;AAAA,IACJ,WAAA,EAAa,mBAAA;AAAA,IACb,WAAA,EAAa,yDAAA;AAAA,IACb,QAAA,EAAU,SAAA;AAAA,IACV,UAAA,EAAY,UAAA;AAAA,IACZ,SAAA,EAAW,SAAA;AAAA,IACX,cAAc,CAAC,MAAA,EAAQ,KAAA,EAAO,YAAA,EAAc,UAAU,UAAU;AAAA;AAEpE,CAAA;AAaO,SAAS,YAAY,EAAA,EAAgD;AAC1E,EAAA,OAAO,OAAO,EAAA,KAAO,QAAA,IAAY,EAAA,IAAM,QAAA;AACzC;AAKO,SAAS,WAAW,EAAA,EAA8D;AACvF,EAAA,OAAO,EAAA,IAAM,EAAA,IAAM,QAAA,GAAY,QAAA,CAA+C,EAAE,CAAA,GAAI,MAAA;AACtF;AAGO,SAAS,YAAA,GAAoC;AAClD,EAAA,OAAO,MAAA,CAAO,OAAO,QAAQ,CAAA;AAC/B;AAGO,SAAS,wBAAwB,GAAA,EAA6C;AACnF,EAAA,OAAO,MAAA,CAAO,MAAA,CAAO,QAAQ,CAAA,CAAE,MAAA;AAAA,IAC7B,CAAC,CAAA,KAAO,CAAA,CAAE,YAAA,CAA8C,SAAS,GAAG;AAAA,GACtE;AACF;AAKO,SAAS,aAAA,CACd,IACA,GAAA,EACS;AACT,EAAA,OAAO,WAAW,EAAE,CAAA,EAAG,YAAA,CAAa,QAAA,CAAS,GAAG,CAAA,IAAK,KAAA;AACvD;;;AC7TO,SAAS,WAAA,CAAY,OAAe,QAAA,EAA0B;AACnE,EAAA,MAAM,CAAC,KAAA,EAAO,IAAA,GAAO,EAAE,CAAA,GAAI,KAAA,CAAM,MAAM,GAAG,CAAA;AAC1C,EAAA,MAAM,UAAA,GAAa,KAAK,MAAA,CAAO,QAAA,EAAU,GAAG,CAAA,CAAE,KAAA,CAAM,GAAG,QAAQ,CAAA;AAC/D,EAAA,OAAA,CAAQ,MAAA,CAAO,KAAK,CAAA,GAAI,MAAA,CAAO,EAAE,CAAA,IAAK,MAAA,CAAO,QAAQ,CAAA,GAAI,MAAA,CAAO,UAAU,CAAA,EAAG,QAAA,EAAS;AACxF;AAMO,SAAS,YAAA,CAAa,KAAa,QAAA,EAA0B;AAClE,EAAA,MAAM,KAAA,GAAQ,OAAO,GAAG,CAAA;AACxB,EAAA,MAAM,MAAA,GAAS,GAAA,IAAO,MAAA,CAAO,QAAQ,CAAA;AACrC,EAAA,MAAM,QAAQ,KAAA,GAAQ,MAAA;AACtB,EAAA,MAAM,YAAY,KAAA,GAAQ,MAAA;AAC1B,EAAA,MAAM,aAAa,SAAA,CAAU,QAAA,EAAS,CAAE,QAAA,CAAS,UAAU,GAAG,CAAA;AAC9D,EAAA,OAAO,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,UAAU,CAAA,CAAA;AAC/B;AAWO,SAAS,kBAAkB,OAAA,EAA6C;AAC7E,EAAA,IAAI,MAAA,GAAwB,IAAA;AAC5B,EAAA,IAAI;AACF,IAAA,MAAA,GAAS,OAAO,OAAO,CAAA;AAAA,EACzB,CAAA,CAAA,MAAQ;AACN,IAAA,MAAA,GAAS,IAAA;AAAA,EACX;AACA,EAAA,OAAO,gBAAA,CAAiB,IAAA,CAAK,CAAC,CAAA,KAAM;AAClC,IAAA,IAAI,WAAW,IAAA,EAAM;AACnB,MAAA,IAAI;AACF,QAAA,OAAO,MAAA,CAAO,CAAA,CAAE,OAAO,CAAA,KAAM,MAAA;AAAA,MAC/B,CAAA,CAAA,MAAQ;AAAA,MAER;AAAA,IACF;AACA,IAAA,OAAO,CAAA,CAAE,OAAA,CAAQ,WAAA,EAAY,KAAM,QAAQ,WAAA,EAAY;AAAA,EACzD,CAAC,CAAA;AACH;AAKO,SAAS,iBAAiB,MAAA,EAA4C;AAC3E,EAAA,MAAM,KAAA,GAAQ,OAAO,WAAA,EAAY;AACjC,EAAA,OAAO,iBAAiB,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,WAAW,KAAK,CAAA;AACxD;AAMO,SAAS,iBAAA,GAAmD;AACjE,EAAA,OAAO,gBAAA,CAAiB,MAAA,CAAO,CAAC,CAAA,KAAM,EAAE,QAAQ,CAAA;AAClD;;;ACjEO,SAAS,iBAAiB,GAAA,EAAuB;AACtD,EAAA,IAAI,OAAO,QAAQ,QAAA,EAAU;AAC3B,IAAA,OAAO,IAAI,QAAA,EAAS;AAAA,EACtB;AACA,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,EAAG;AACtB,IAAA,OAAO,GAAA,CAAI,IAAI,gBAAgB,CAAA;AAAA,EACjC;AACA,EAAA,IAAI,GAAA,KAAQ,IAAA,IAAQ,OAAO,GAAA,KAAQ,QAAA,EAAU;AAC3C,IAAA,OAAO,MAAA,CAAO,WAAA;AAAA,MACZ,MAAA,CAAO,QAAQ,GAA8B,CAAA,CAAE,IAAI,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM;AAAA,QACnE,GAAA;AAAA,QACA,iBAAiB,KAAK;AAAA,OACvB;AAAA,KACH;AAAA,EACF;AACA,EAAA,OAAO,GAAA;AACT;AAKO,SAAS,YAAA,CAAa,KAAa,IAAA,EAAsB;AAC9D,EAAA,OAAO,MAAA,CAAO,GAAG,CAAA,IAAK,MAAA,CAAO,IAAI,CAAA,IAAK,IAAA,CAAA;AACxC;;;ACJO,IAAM,oBAAA,GAA0C;AAAA,EACrD;AACF;AASA,IAAM,iBAAA,GACJ,yMAAA;AAWK,SAAS,oBAAoB,KAAA,EAAqD;AACvF,EAAA,MAAM,EAAE,MAAA,EAAQ,IAAA,EAAK,GAAI,KAAA;AACzB,EAAA,IAAI,OAAO,MAAA,KAAW,QAAA,KAAa,WAAW,GAAA,IAAO,MAAA,IAAU,MAAM,OAAO,IAAA;AAC5E,EAAA,IAAI,IAAA,IAAQ,MAAM,OAAO,KAAA;AAGzB,EAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,IAAA,MAAM,MAAO,IAAA,CAA2D,KAAA;AACxE,IAAA,IAAI,CAAC,GAAA,IAAO,OAAO,GAAA,KAAQ,UAAU,OAAO,KAAA;AAC5C,IAAA,MAAM,OAAQ,GAAA,CAA2B,IAAA;AACzC,IAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,MAAA,IAAI,IAAA,KAAS,KAAK,OAAO,IAAA;AACzB,MAAA,IAAI,IAAA,IAAQ,MAAA,IAAU,IAAA,IAAQ,KAAA,EAAQ,OAAO,IAAA;AAC7C,MAAA,IAAI,IAAA,KAAS,QAAQ,OAAO,IAAA;AAAA,IAC9B;AACA,IAAA,MAAM,UAAW,GAAA,CAA8B,OAAA;AAC/C,IAAA,OAAO,OAAO,OAAA,KAAY,QAAA,GAAW,iBAAA,CAAkB,IAAA,CAAK,OAAO,CAAA,GAAI,KAAA;AAAA,EACzE;AAGA,EAAA,OAAO,iBAAA,CAAkB,IAAA,CAAK,MAAA,CAAO,IAAI,CAAC,CAAA;AAC5C;AAoBO,SAAS,mBAAA,CACd,IAAA,EACA,OAAA,GAAgC,EAAC,EACnB;AACd,EAAA,MAAM,YAAY,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA,KAAmB,OAAA,CAAQ,CAAC,CAAC,CAAA;AAC5D,EAAA,IAAI,SAAA,CAAU,WAAW,CAAA,EAAG;AAC1B,IAAA,MAAM,IAAI,MAAM,uDAAuD,CAAA;AAAA,EACzE;AACA,EAAA,MAAM,OAAA,GAAU,QAAQ,SAAA,IAAa,KAAA;AAErC,EAAA,MAAM,QAAA,GAAW,OAAO,MAAA,EAAiB,IAAA,KAA0C;AACjF,IAAA,IAAI,SAAA;AAEJ,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,SAAA,CAAU,QAAQ,CAAA,EAAA,EAAK;AACzC,MAAA,MAAM,GAAA,GAAM,UAAU,CAAC,CAAA;AACvB,MAAA,MAAM,MAAA,GAAS,CAAA,KAAM,SAAA,CAAU,MAAA,GAAS,CAAA;AACxC,MAAA,IAAI;AACF,QAAA,MAAM,GAAA,GAAM,MAAM,OAAA,CAAQ,GAAA,EAAK,IAAI,CAAA;AACnC,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,IAAA,EAAK;AAC5B,QAAA,MAAM,OAAA,GAAU,MACd,IAAI,QAAA,CAAS,MAAM,EAAE,MAAA,EAAQ,GAAA,CAAI,MAAA,EAAQ,YAAY,GAAA,CAAI,UAAA,EAAY,OAAA,EAAS,GAAA,CAAI,SAAS,CAAA;AAE7F,QAAA,IAAI,MAAA,IAAU,CAAC,mBAAA,CAAoB,EAAE,MAAA,EAAQ,IAAI,MAAA,EAAQ,IAAA,EAAM,IAAA,EAAM,CAAA,EAAG;AACtE,UAAA,OAAO,OAAA,EAAQ;AAAA,QACjB;AACA,QAAA,OAAA,CAAQ,aAAa,EAAE,GAAA,EAAK,MAAA,EAAQ,GAAA,CAAI,QAAQ,CAAA;AAAA,MAClD,SAAS,GAAA,EAAK;AACZ,QAAA,SAAA,GAAY,GAAA;AACZ,QAAA,IAAI,QAAQ,MAAM,GAAA;AAClB,QAAA,OAAA,CAAQ,UAAA,GAAa,EAAE,GAAA,EAAK,KAAA,EAAO,KAAK,CAAA;AAAA,MAC1C;AAAA,IACF;AAGA,IAAA,MAAM,SAAA,IAAa,IAAI,KAAA,CAAM,2CAA2C,CAAA;AAAA,EAC1E,CAAA;AAEA,EAAA,OAAO,QAAA;AACT","file":"index.cjs","sourcesContent":["// Single source of per-chain coordinates for Medialane's own services\n// (spec 2026-06-13 §3.1, Decision A). Keyed by CHAIN ALONE — Medialane is\n// mainnet-only, so there is no network axis (refines decisions.md D-9).\n\n/** Mirrors the backend Prisma `Chain` enum. */\nexport const CHAINS = [\"STARKNET\", \"ETHEREUM\", \"SOLANA\", \"BASE\", \"STELLAR\", \"BITCOIN\"] as const;\nexport type Chain = (typeof CHAINS)[number];\n\n/** Starknet coordinates of Medialane services + venues. All fields optional\n * because not every service exists on every chain. */\nexport interface StarknetCoordinates {\n rpcUrl: string;\n marketplace721?: `0x${string}`;\n marketplace721ClassHash?: `0x${string}`;\n marketplace721StartBlock?: number;\n marketplace1155?: `0x${string}`;\n marketplace1155ClassHash?: `0x${string}`;\n marketplace1155StartBlock?: number;\n collection721?: `0x${string}`;\n collection721StartBlock?: number;\n ipNftClassHash?: `0x${string}`;\n ipCollectionClassHash?: `0x${string}`;\n collection1155?: `0x${string}`;\n collection1155FactoryClassHash?: `0x${string}`;\n collection1155ClassHash?: `0x${string}`;\n collection1155StartBlock?: number;\n popFactory?: `0x${string}`;\n popCollectionClassHash?: `0x${string}`;\n dropFactory?: `0x${string}`;\n dropCollectionClassHash?: `0x${string}`;\n nftComments?: `0x${string}`;\n creatorCoinFactory?: `0x${string}`;\n creatorCoinEkuboLauncher?: `0x${string}`;\n creatorCoinClassHash?: `0x${string}`;\n creatorCoinFactoryClassHash?: `0x${string}`;\n creatorCoinStartBlock?: number;\n ekuboCore?: `0x${string}`;\n ipTicketsFactory?: `0x${string}`;\n ipTicketCollectionClassHash?: `0x${string}`;\n ipTicketsFactoryClassHash?: `0x${string}`;\n ipTicketsStartBlock?: number;\n ipClubFactory?: `0x${string}`;\n ipClubFactoryClassHash?: `0x${string}`;\n ipClubCollectionClassHash?: `0x${string}`;\n ipClubFactoryStartBlock?: number;\n ipSponsorship?: `0x${string}`;\n ipSponsorshipClassHash?: `0x${string}`;\n ipSponsorshipStartBlock?: number;\n}\n\n/** Coordinates per chain. Only STARKNET is populated today; adding a chain\n * means adding an entry here (litmus test, spec §7). */\n/** EVM coordinates — one shape for Ethereum and Base (same bytecode, two\n * chains). Populated at deploy time (federation Phase 4). */\nexport interface EvmCoordinates {\n rpcUrl: string;\n marketplace721?: `0x${string}`;\n marketplace721StartBlock?: number;\n marketplace1155?: `0x${string}`;\n marketplace1155StartBlock?: number;\n mipRegistry?: `0x${string}`;\n mipRegistryStartBlock?: number;\n mipEditionsRegistry?: `0x${string}`;\n mipEditionsRegistryStartBlock?: number;\n}\n\n/** Solana coordinates — base58 program ids. Populated at deploy time. */\nexport interface SolanaCoordinates {\n rpcUrl: string;\n mipCollectionsProgram?: string;\n marketplaceProgram?: string;\n startSlot?: number;\n}\n\n/** Stellar (Soroban) coordinates — strkey contract ids. Populated at deploy\n * time; the registry takes the collection WASM hash as a constructor arg. */\nexport interface StellarCoordinates {\n rpcUrl: string;\n mipRegistry?: string;\n marketplace?: string;\n collectionWasmHash?: string;\n startLedger?: number;\n}\n\n/** Per-chain coordinate shapes. Every chain is an equal entry — no chain is\n * privileged in core (chain-sovereignty I2/I4). */\nexport interface CoordinatesByChain {\n STARKNET?: StarknetCoordinates;\n ETHEREUM?: EvmCoordinates;\n BASE?: EvmCoordinates;\n SOLANA?: SolanaCoordinates;\n STELLAR?: StellarCoordinates;\n BITCOIN?: never;\n}\n\n/** @deprecated Renamed — use `StarknetCoordinates` (coordinates are per-chain-shaped). */\nexport type ChainCoordinates = StarknetCoordinates;\n\nconst COORDINATES: CoordinatesByChain = {\n STARKNET: {\n rpcUrl: \"https://rpc.starknet.lava.build\",\n marketplace721: \"0x03eda9a2b6ad90845a43591bac8083ebaf677d51fdf20f503b2c01889e3131fc\",\n marketplace721ClassHash: \"0x0700d9230d07e5203e27778c0dc70f9134d2b25bf319f7cf8348dc66a6923e90\",\n marketplace721StartBlock: 11198146,\n marketplace1155: \"0x07c4ce1c19ea48cc11135ed22b19ff745f5aec508c3828593002e4f76fdb1b38\",\n marketplace1155ClassHash: \"0x0242f5c388da7cee2d99e2a69453c8159bf927fbec4e797a3cfdcbbcb5b68328\",\n marketplace1155StartBlock: 11198267,\n collection721: \"0x0225c3ae09506b8d97adc39649ca740dad5aac195b7f5f0441cc1852947acaea\",\n collection721StartBlock: 11198496,\n ipNftClassHash: \"0x012d3ae40ba35c7e2be0946532dac60e48932447912fdf96b674da67c029b9cc\",\n ipCollectionClassHash: \"0x022155a1a130a40e57aac4b89c07fab3f616bc351b1270fc40f756b963afe8b4\",\n collection1155: \"0x015368976d46fae5bfa1c58600f641d5aa5dbbf53ebc6b78aa3922194aad3551\",\n collection1155FactoryClassHash: \"0x04eb6b419770f13bd191f120b9fc9ee624c0613ad4490062d293ca2016b3b1d2\",\n collection1155ClassHash: \"0x06cf3f5a2322dac35e07a6064a5b8802f19fda8aa3f4726f0cb7bc05dea1bd78\",\n collection1155StartBlock: 11199527,\n popFactory: \"0x00b32c34b427d8f346b5843ada6a37bd3368d879fc752cd52b68a87287f60111\",\n popCollectionClassHash: \"0x077c421686f10851872561953ea16898d933364b7f8937a5d7e2b1ba0a36263f\",\n dropFactory: \"0x03587f42e29daee1b193f6cf83bf8627908ed6632d0d83fcb26225c50547d800\",\n dropCollectionClassHash: \"0x00092e72cdb63067521e803aaf7d4101c3e3ce026ae6bc045ec4228027e58282\",\n nftComments: \"0x02cdac70c94447189af0389dfea63f4d5e4154ea8a563de288a5ab1c39e37843\",\n creatorCoinFactory: \"0x50fa807b5274079fb19374673d7bab6d2dc3af7e1032ea43eb6e44bcbde4c3c\",\n creatorCoinEkuboLauncher: \"0x4f7fceb5ac10f12f9544a09580592e5bdf1b7f04f48765eecf12286d8ccb7b4\",\n creatorCoinClassHash: \"0x743e4c8a5b96bb83bbf4af04edbbb482d5ece89eed9b729a79fb7df0cd0b6b6\",\n creatorCoinFactoryClassHash: \"0x51765926b1344c9a20b8cd4b5abe7b7d47375ae97cf6804db3ea5d4b05a9b55\",\n creatorCoinStartBlock: 10474544,\n ekuboCore: \"0x00000005dd3d2f4429af886cd1a3b08289dbcea99a294197e9eb43b0e0325b4b\",\n ipTicketsFactory: \"0x0767bf5b57e1f812463159b5ed683183e1b0c3f942b74871b5c6cd6a93c15e99\",\n ipTicketCollectionClassHash: \"0x0449e8eb7c117740d07cb8e0157d32c8ba3d19d1cfd2784ed5e139f5a1e04acc\",\n ipTicketsFactoryClassHash: \"0x04a739ac3a673ebd0db96bb24475600797c3ed34827e79517f9b2b1640276e6a\",\n ipTicketsStartBlock: 11933694,\n ipClubFactory: \"0x06a0b0be16d70c78f2e18119dbf90e5911cbfd5d8d484bc555dc61d96f56a2b9\",\n ipClubFactoryClassHash: \"0x05d9d431bd3532b1fa4d5bab572f49c5ad8034ee3cc83951aa41ae82c9cad266\",\n ipClubCollectionClassHash: \"0x05b8477c72e6bf0cf64967d71155021fd4d77d9a57e8805c6b40709121c002c5\",\n ipClubFactoryStartBlock: 11928775,\n // v3 redesign (deployed 2026-07-15): single contract is both the\n // offer/bid/proposal registry and the license collection (embeds\n // ERC721Component directly) — no separate receipt contract, no\n // set_minter bootstrap. Supersedes the 2026-07-02 v2 address, which had\n // zero offers/licenses ever issued (clean cutover, no reclassification).\n ipSponsorship: \"0x03729ebe0fedf29ec97fca34db09174772af7f870af26a26e024a61040143e5c\",\n ipSponsorshipClassHash: \"0x0626daac2ed7e2bf630ef5b10104b3202db1559216c0c1a504c0e99be2fbfec3\",\n ipSponsorshipStartBlock: 11896456,\n },\n};\n\nexport function getCoordinates(chain: \"STARKNET\"): StarknetCoordinates;\nexport function getCoordinates(chain: \"ETHEREUM\" | \"BASE\"): EvmCoordinates;\nexport function getCoordinates(chain: \"SOLANA\"): SolanaCoordinates;\nexport function getCoordinates(chain: \"STELLAR\"): StellarCoordinates;\nexport function getCoordinates(\n chain: Chain,\n): StarknetCoordinates | EvmCoordinates | SolanaCoordinates | StellarCoordinates;\nexport function getCoordinates(\n chain: Chain,\n): StarknetCoordinates | EvmCoordinates | SolanaCoordinates | StellarCoordinates {\n const c = COORDINATES[chain];\n if (!c) throw new Error(`No coordinates configured for chain \"${chain}\"`);\n return c;\n}\n\nexport const DEFAULT_CHAIN: Chain = \"STARKNET\";\n\n/** Typed Starknet coordinates for Starknet-only modules; throws when the\n * client is scoped to another chain. */\nexport function getStarknetCoordinates(chain: Chain): StarknetCoordinates {\n if (chain !== \"STARKNET\") {\n throw new Error(`This module is Starknet-only (client chain: \"${chain}\")`);\n }\n return getCoordinates(\"STARKNET\");\n}\n","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});\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}\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 };\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 // Chain-scoped client (spec 2026-06-13 Decision B): one client per chain,\n // coordinates resolved from the registry. Replaces the removed `network` axis.\n chain: z.enum(CHAINS).default(DEFAULT_CHAIN),\n rpcUrl: z.string().url().optional(),\n backendUrl: z.string().url().optional(),\n apiKey: z.string().optional(),\n // Per-contract overrides remain for tests/forks; default from the registry.\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 rpcUrl: string;\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 // The resolved contract fields are the Starknet module surface; on other\n // chains they stay unset and the per-chain adapters resolve their own\n // coordinates.\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 rpcUrl: parsed.rpcUrl ?? coords.rpcUrl,\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\n/**\n * Normalize an address to its chain's canonical form. The single source of\n * address normalization across Medialane (07-identity §I; spec 2026-06-13 §3.2).\n * `medialane-backend` re-exports this; do not maintain a parallel copy.\n *\n * - STARKNET: 0x-prefixed 64-char lowercase hex (felt, zero-padded).\n * - ETHEREUM / BASE: EIP-55 mixed-case checksum.\n * - SOLANA: base58, validated as a 32-byte public key, returned verbatim.\n * - STELLAR: strkey (G… account / C… contract), CRC16-XModem-verified,\n * canonical uppercase.\n * - BITCOIN: not implemented — a non-foreclosed seam, gated on a future\n * Bitcoin fork (chain-sovereignty §2); never a built path today.\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 // EIP-55: keccak256 of the lowercase hex (ASCII, no 0x); uppercase the i-th\n // hex char when the i-th nibble of the hash is >= 8.\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; // base58 is canonical and case-sensitive — return as-is\n } catch {\n throw new Error(`Invalid SOLANA address: \"${address}\"`);\n }\n}\n\n/** Stellar strkey version bytes: 'G' account (6<<3), 'C' contract (2<<3). */\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\n/** CRC16-XModem (poly 0x1021, init 0x0000) — the strkey checksum. */\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\n/**\n * Normalize a felt/hash (tx hash, order hash) to 0x-prefixed 64-char lowercase\n * hex. Starknet-shaped; chain-scoped at call sites that handle other chains'\n * hashes.\n */\nexport function normalizeHash(hash: string): string {\n try {\n const hex = BigInt(hash).toString(16);\n return \"0x\" + hex.padStart(64, \"0\").toLowerCase();\n } catch {\n throw new Error(`Invalid hash: \"${hash}\"`);\n }\n}\n\n/** Shorten an address to \"0x1234...abcd\" form, normalized for its chain. */\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 async function withRetry<T>(\n fn: () => Promise<T>,\n opts?: RetryOptions\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 // Don't retry 4xx errors (client errors) — they won't succeed on retry\n if (err instanceof MedialaneApiError && err.status < 500) {\n throw err;\n }\n\n // Retry on 5xx or network errors (TypeError from fetch)\n const isRetryable =\n (err instanceof MedialaneApiError && err.status >= 500) ||\n err instanceof TypeError;\n\n if (!isRetryable || attempt === maxAttempts - 1) {\n throw err;\n }\n\n // Exponential backoff with jitter\n const jitter = Math.random() * baseDelayMs;\n const delay = Math.min(baseDelayMs * Math.pow(2, attempt) + jitter, 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 {\n ApiOrder,\n ApiOrdersQuery,\n ApiCounterOffersQuery,\n ApiToken,\n ApiCollection,\n ApiCoin,\n ApiUserRewards,\n ApiRewardsLeaderboardEntry,\n ApiRewardsConfig,\n ApiRewardsBatchEntry,\n ApiPointEvent,\n ApiCoinsQuery,\n ApiCollectionProfile,\n ApiCreatorProfile,\n ApiCreatorListResult,\n ApiCollectionClaim,\n ApiCollectionSlugClaim,\n ApiUserWallet,\n ApiAppSource,\n ApiChain,\n ApiActivity,\n ApiActivitiesQuery,\n ApiComment,\n ApiRemixOffer,\n ApiRemixOffersQuery,\n ApiPublicRemix,\n ApiSearchResult,\n ApiIntent,\n ApiIntentCreated,\n ApiMetadataSignedUrl,\n ApiMetadataUpload,\n ApiPortalMe,\n ApiPortalKey,\n ApiPortalKeyCreated,\n ApiUsageDay,\n ApiWebhookEndpoint,\n ApiWebhookCreated,\n CreateWebhookParams,\n CreateListingIntentParams,\n MakeOfferIntentParams,\n FulfillOrderIntentParams,\n CancelOrderIntentParams,\n CreateMintIntentParams,\n CreateCollectionIntentParams,\n CreateCounterOfferIntentParams,\n CreateRemixOfferParams,\n AutoRemixOfferParams,\n ConfirmSelfRemixParams,\n ConfirmRemixOfferParams,\n ApiResponse,\n CollectionSort,\n CollectionTokensSort,\n PopClaimStatus,\n PopBatchEligibilityItem,\n DropMintStatus,\n} from \"../types/api.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 super(message);\n this.name = \"MedialaneApiError\";\n this.code = deriveErrorCode(status);\n }\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 /** Normalize an address for this client's chain (chain-scoped — Decision B). */\n private addr(a: string): string {\n return normalizeAddress(this.chain, a);\n }\n\n /**\n * The one HTTP path for the whole client: base headers (incl. x-api-key),\n * JSON error unwrapping, and `withRetry` (5xx/network only — 4xx never\n * retried). `allow404`/`allow403` turn those statuses into a `null` result\n * instead of a throw, for \"profile may not exist\" / \"not a holder\" reads —\n * so no method needs to hand-roll `fetch` to get that behavior.\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 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 = text;\n try {\n const body = JSON.parse(text) as { error?: string };\n if (body.error) message = body.error;\n } catch {\n // use raw text\n }\n throw new MedialaneApiError(response.status, message);\n }\n return response;\n }, this.retryOptions);\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 del<T>(path: string): Promise<T> {\n return this.request<T>(path, { method: \"DELETE\" });\n }\n\n /** Bearer header for Clerk-JWT-authenticated routes. */\n private bearer(clerkToken: string): Record<string, string> {\n return { Authorization: `Bearer ${clerkToken}` };\n }\n\n // ─── Orders ────────────────────────────────────────────────────────────────\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 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 // ─── Tokens ────────────────────────────────────────────────────────────────\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 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 // ─── Collections ───────────────────────────────────────────────────────────\n\n getCollections(\n page = 1,\n limit = 20,\n isKnown?: boolean,\n sort?: CollectionSort,\n service?: string,\n chain?: ChainFilter\n ): Promise<ApiResponse<ApiCollection[]>> {\n const params = new URLSearchParams({ page: String(page), limit: String(limit) });\n if (isKnown !== undefined) params.set(\"isKnown\", String(isKnown));\n if (sort) params.set(\"sort\", sort);\n if (service) params.set(\"service\", service);\n if (chain) params.set(\"chain\", chain);\n return this.get<ApiResponse<ApiCollection[]>>(`/v1/collections?${params}`);\n }\n\n getCollectionsByOwner(owner: string, page = 1, limit = 50): Promise<ApiResponse<ApiCollection[]>> {\n const params = new URLSearchParams({ owner: this.addr(owner), page: String(page), limit: String(limit) });\n return this.get<ApiResponse<ApiCollection[]>>(`/v1/collections?${params}`);\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 // ─── Activities ────────────────────────────────────────────────────────────\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.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 // ─── Comments ──────────────────────────────────────────────────────────────\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 ────────────────────────────────────────────────────────────────\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 // ─── Intents ───────────────────────────────────────────────────────────────\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 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 createMintIntent(params: CreateMintIntentParams): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/mint\", params);\n }\n\n createCollectionIntent(params: CreateCollectionIntentParams): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/create-collection\", params);\n }\n\n /**\n * Create a counter-offer intent. The seller proposes a new price in response\n * to a buyer's active bid. clerkToken is optional — the endpoint authenticates\n * via the tenant API key; pass a Clerk JWT only if your backend requires it.\n */\n createCounterOfferIntent(\n params: CreateCounterOfferIntentParams,\n clerkToken?: string\n ): Promise<ApiResponse<ApiIntentCreated>> {\n const extraHeaders: Record<string, string> = clerkToken ? { \"Authorization\": `Bearer ${clerkToken}` } : {};\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 /**\n * Fetch counter-offers. Pass `originalOrderHash` (buyer view) or\n * `sellerAddress` (seller view) — at least one is required.\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 // ─── Metadata ──────────────────────────────────────────────────────────────\n\n getMetadataSignedUrl(): Promise<ApiResponse<ApiMetadataSignedUrl>> {\n return this.get<ApiResponse<ApiMetadataSignedUrl>>(\"/v1/metadata/signed-url\");\n }\n\n uploadMetadata(metadata: Record<string, unknown>): Promise<ApiResponse<ApiMetadataUpload>> {\n return this.post<ApiResponse<ApiMetadataUpload>>(\"/v1/metadata/upload\", metadata);\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 // Content-Type is intentionally omitted — request() detects FormData and\n // lets the runtime set multipart/form-data with the correct boundary.\n return this.request<ApiResponse<ApiMetadataUpload>>(\"/v1/metadata/upload-file\", {\n method: \"POST\",\n body: formData,\n });\n }\n\n // ─── Portal (tenant self-service) ──────────────────────────────────────────\n\n getMe(): Promise<ApiResponse<ApiPortalMe>> {\n return this.get<ApiResponse<ApiPortalMe>>(\"/v1/portal/me\");\n }\n\n getApiKeys(): Promise<ApiResponse<ApiPortalKey[]>> {\n return this.get<ApiResponse<ApiPortalKey[]>>(\"/v1/portal/keys\");\n }\n\n createApiKey(label?: string): Promise<ApiResponse<ApiPortalKeyCreated>> {\n return this.post<ApiResponse<ApiPortalKeyCreated>>(\"/v1/portal/keys\", label ? { label } : {});\n }\n\n deleteApiKey(id: string): Promise<ApiResponse<{ id: string; status: string }>> {\n return this.del<ApiResponse<{ id: string; status: string }>>(`/v1/portal/keys/${id}`);\n }\n\n getUsage(): Promise<ApiResponse<ApiUsageDay[]>> {\n return this.get<ApiResponse<ApiUsageDay[]>>(\"/v1/portal/usage\");\n }\n\n getWebhooks(): Promise<ApiResponse<ApiWebhookEndpoint[]>> {\n return this.get<ApiResponse<ApiWebhookEndpoint[]>>(\"/v1/portal/webhooks\");\n }\n\n createWebhook(params: CreateWebhookParams): Promise<ApiResponse<ApiWebhookCreated>> {\n return this.post<ApiResponse<ApiWebhookCreated>>(\"/v1/portal/webhooks\", params);\n }\n\n deleteWebhook(id: string): Promise<ApiResponse<{ id: string; status: string }>> {\n return this.del<ApiResponse<{ id: string; status: string }>>(\n `/v1/portal/webhooks/${id}`\n );\n }\n\n // ─── Collection Claims ──────────────────────────────────────────────────────\n\n /**\n * Path 1: On-chain auto claim. Sends both x-api-key (tenant auth) and\n * Authorization: Bearer (Clerk JWT) simultaneously.\n */\n async claimCollection(\n contractAddress: string,\n walletAddress: string,\n clerkToken: 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(clerkToken),\n });\n }\n\n /**\n * Path 3: Manual off-chain claim request (email-based).\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 // ─── Collection Profiles ────────────────────────────────────────────────────\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 /**\n * Update collection profile. Requires Clerk JWT for ownership check.\n */\n updateCollectionProfile(\n contractAddress: string,\n data: Partial<Omit<ApiCollectionProfile, \"contractAddress\" | \"chain\" | \"updatedBy\" | \"updatedAt\">>,\n clerkToken: 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(clerkToken) },\n );\n }\n\n getGatedContent(\n contractAddress: string,\n clerkToken: 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(clerkToken) },\n { allow404: true, allow403: true },\n );\n }\n\n // ─── Creator Profiles ───────────────────────────────────────────────────────\n\n /** List all creators with an approved username. */\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 /** Resolve a username slug to a creator profile (public). */\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 /**\n * Update creator profile. Requires Clerk JWT; wallet must match authenticated user.\n */\n updateCreatorProfile(\n walletAddress: string,\n data: Partial<Omit<ApiCreatorProfile, \"walletAddress\" | \"chain\" | \"updatedAt\">>,\n clerkToken: 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(clerkToken) },\n );\n }\n\n // ─── Collection Slug Claims ───────────────────────────────────────────────────\n\n /** Check if a collection slug is available (public, no auth). */\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 /** Submit a slug claim for a collection. Requires Clerk JWT — caller must be the collection owner. */\n submitCollectionSlugClaim(\n contractAddress: string,\n slug: string,\n clerkToken: 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(clerkToken),\n });\n }\n\n /** Returns all slug claims submitted by the authenticated wallet. Requires Clerk JWT. */\n getMyCollectionSlugClaims(clerkToken: string): Promise<{ claims: ApiCollectionSlugClaim[] }> {\n return this.request<{ claims: ApiCollectionSlugClaim[] }>(\"/v1/collection-slug-claims/me\", {\n method: \"GET\",\n headers: this.bearer(clerkToken),\n });\n }\n\n /** Resolve a collection slug to a full collection. Returns null if not found. */\n getCollectionBySlug(slug: string): Promise<ApiCollection | null> {\n return this.request<ApiCollection | null>(\n `/v1/collections/by-slug/${encodeURIComponent(slug.toLowerCase().trim())}`,\n { method: \"GET\" },\n { allow404: true },\n );\n }\n\n // ─── User Wallet ─────────────────────────────────────────────────────────────\n\n /**\n * Upsert the authenticated user's wallet address in the backend DB.\n * Call after onboarding when ChipiPay confirms the wallet address.\n * Requires Clerk JWT; no tenant API key needed.\n */\n /**\n * Frictionless wallet registration. Tenant API key only (no Clerk JWT required).\n * Idempotent — backend's ensureAccountForWallet upserts and upgrades existing\n * UNKNOWN walletType rows when a more specific value is supplied.\n */\n async registerUser(params: {\n walletAddress: string;\n // Free-form wallet-software label (\"braavos\" / \"ready\" / \"chipipay\" / …).\n // The backend lowercases it into Identity.provider and never gates on it\n // (07-identity §II) — so it's a plain string, not a closed enum.\n walletType?: string;\n appSource?: ApiAppSource;\n chain?: ApiChain;\n }): Promise<{\n accountId: string;\n publicId: string;\n walletAddress: string;\n chain: string;\n // The wallet identity's free-form provider label, echoed back from\n // Identity.provider (\"braavos\" / \"chipipay\" / \"unknown\" / …).\n provider: string;\n appSource: ApiAppSource;\n createdAt: string;\n }> {\n return this.post(\"/v1/users/register\", params);\n }\n\n async upsertMyWallet(\n clerkToken: string,\n options: {\n // Free-form provider label (see registerUser); lowercased into\n // Identity.provider by the backend, never gated on.\n walletType?: string;\n appSource?: ApiAppSource;\n // 07-identity §I: the Wallet identifier is (chain, address). v1\n // backend rejects anything other than STARKNET on this route (the\n // auth path can only prove Starknet ownership); the field exists\n // so the year-2 multichain shape is locked in.\n chain?: ApiChain;\n } = {},\n ): Promise<ApiUserWallet> {\n const body: Record<string, string> = {\n walletType: options.walletType ?? \"UNKNOWN\",\n appSource: options.appSource ?? \"MEDIALANE_SDK\",\n };\n if (options.chain) body.chain = options.chain;\n return this.request<ApiUserWallet>(\"/v1/users/me\", {\n method: \"POST\",\n body: JSON.stringify(body),\n headers: this.bearer(clerkToken),\n });\n }\n\n /**\n * Get the authenticated user's stored wallet address from the backend DB.\n * Returns null if the user has not completed onboarding yet.\n * Requires Clerk JWT; no tenant API key needed.\n */\n getMyWallet(clerkToken: string): Promise<ApiUserWallet | null> {\n return this.request<ApiUserWallet | null>(\n \"/v1/users/me\",\n { method: \"GET\", headers: this.bearer(clerkToken) },\n { allow404: true },\n );\n }\n\n // ─── Remix Licensing ─────────────────────────────────────────────────────────\n\n /**\n * Get public remixes of a token (open to everyone).\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 /**\n * Submit a custom remix offer for a token. Requires Clerk JWT.\n */\n submitRemixOffer(\n params: CreateRemixOfferParams,\n clerkToken: string\n ): Promise<ApiResponse<ApiRemixOffer>> {\n return this.request<ApiResponse<ApiRemixOffer>>(\"/v1/remix-offers\", {\n method: \"POST\",\n body: JSON.stringify(params),\n headers: { \"Authorization\": `Bearer ${clerkToken}` },\n });\n }\n\n /**\n * Submit an auto remix offer for a token with an open license. Requires Clerk JWT.\n */\n submitAutoRemixOffer(\n params: AutoRemixOfferParams,\n clerkToken: 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: { \"Authorization\": `Bearer ${clerkToken}` },\n });\n }\n\n /**\n * Record a self-remix (owner remixing their own token). Requires Clerk JWT.\n */\n confirmSelfRemix(\n params: ConfirmSelfRemixParams,\n clerkToken: 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: { \"Authorization\": `Bearer ${clerkToken}` },\n });\n }\n\n /**\n * List remix offers by role. Requires Clerk JWT.\n * role=\"creator\" — offers where you are the original creator.\n * role=\"requester\" — offers you made.\n */\n getRemixOffers(\n query: ApiRemixOffersQuery,\n clerkToken: string\n ): Promise<ApiResponse<ApiRemixOffer[]>> {\n const params = new URLSearchParams({ role: query.role });\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(clerkToken),\n });\n }\n\n /**\n * Get a single remix offer. Clerk JWT optional (price/currency hidden for non-participants).\n */\n getRemixOffer(id: string, clerkToken?: string): Promise<ApiResponse<ApiRemixOffer>> {\n return this.request<ApiResponse<ApiRemixOffer>>(`/v1/remix-offers/${id}`, {\n method: \"GET\",\n headers: clerkToken ? this.bearer(clerkToken) : undefined,\n });\n }\n\n /**\n * Creator approves a remix offer (authorises the requester to mint). Requires Clerk JWT.\n */\n confirmRemixOffer(\n id: string,\n params: ConfirmRemixOfferParams,\n clerkToken: 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: { \"Authorization\": `Bearer ${clerkToken}` },\n });\n }\n\n /**\n * Creator rejects a remix offer. Requires Clerk JWT.\n */\n rejectRemixOffer(id: string, clerkToken: string): Promise<ApiResponse<ApiRemixOffer>> {\n return this.request<ApiResponse<ApiRemixOffer>>(`/v1/remix-offers/${id}/reject`, {\n method: \"POST\",\n body: JSON.stringify({}),\n headers: { \"Authorization\": `Bearer ${clerkToken}` },\n });\n }\n\n /**\n * Requester extends the expiry of a pending remix offer by 1–30 days.\n * Requires Clerk JWT.\n */\n extendRemixOffer(id: string, days: number, clerkToken: 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: { \"Authorization\": `Bearer ${clerkToken}` },\n });\n }\n\n // ─── POP Protocol ──────────────────────────────────────────────────────────\n\n getPopCollections(opts: { page?: number; limit?: number; sort?: CollectionSort } = {}): Promise<ApiResponse<ApiCollection[]>> {\n return this.getCollections(opts.page ?? 1, opts.limit ?? 20, undefined, opts.sort, \"POP_PROTOCOL\");\n }\n\n async getPopEligibility(collection: string, wallet: string): Promise<PopClaimStatus> {\n const res = await this.get<{ data: PopClaimStatus }>(\n `/v1/pop/eligibility/${this.addr(collection)}/${this.addr(wallet)}`\n );\n return res.data;\n }\n\n async getPopEligibilityBatch(collection: string, wallets: string[]): Promise<PopBatchEligibilityItem[]> {\n const params = new URLSearchParams({ wallets: wallets.map((w) => this.addr(w)).join(\",\") });\n const res = await this.get<{ data: PopBatchEligibilityItem[] }>(\n `/v1/pop/eligibility/${this.addr(collection)}?${params}`\n );\n return res.data;\n }\n\n // ─── Coins (fungible — ERC-20 etc.) ───────────────────────────────────────────\n // Coins are a separate model from Collections (spec 2026-06-14). Price/liquidity\n // is read live from Ekubo (CreatorCoinService.getPrice), never from these.\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.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 // ─── Collection Drop ────────────────────────────────────────────────────────\n\n getDropCollections(opts: { page?: number; limit?: number; sort?: CollectionSort } = {}): Promise<ApiResponse<ApiCollection[]>> {\n return this.getCollections(opts.page ?? 1, opts.limit ?? 20, undefined, opts.sort, \"COLLECTION_DROP\");\n }\n\n async getDropMintStatus(collection: string, wallet: string): Promise<DropMintStatus> {\n const res = await this.get<{ data: DropMintStatus }>(\n `/v1/drop/mint-status/${this.addr(collection)}/${this.addr(wallet)}`\n );\n return res.data;\n }\n\n // ─── Rewards (v0.49.0) ─────────────────────────────────────────────────────\n // Scores are recomputed on a schedule by the backend (~15 min) — reads only.\n\n /** Score + level + progress + badges for one address (zeroed for unknown). */\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 /** Paginated XP leaderboard. */\n getRewardsLeaderboard(page = 1, limit = 50): Promise<ApiResponse<ApiRewardsLeaderboardEntry[]>> {\n return this.get<ApiResponse<ApiRewardsLeaderboardEntry[]>>(`/v1/rewards?page=${page}&limit=${limit}`);\n }\n\n /** Point-event history for an address. */\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 /** Reward configuration: level ladder, enabled action XP values, badge catalog. */\n async getRewardsConfig(): Promise<ApiRewardsConfig> {\n const res = await this.get<{ data: ApiRewardsConfig }>(`/v1/rewards/config`);\n return res.data;\n }\n\n /** Minimal level info for up to 50 addresses — one call per list page. */\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","export type IPType =\n | \"Audio\"\n | \"Art\"\n | \"Documents\"\n | \"NFT\"\n | \"Video\"\n | \"Photography\"\n | \"Patents\"\n | \"Posts\"\n | \"Publications\"\n | \"RWA\"\n | \"Software\"\n | \"Custom\";\n\nexport type CollectionSort = \"recent\" | \"supply\" | \"floor\" | \"volume\" | \"name\";\n\nexport type CollectionTokensSort = \"recent\" | \"oldest\" | \"name\" | \"price\";\n\n/** Bounded capability set (05-service-model §III). Expand the union when a\n * service needs behavior outside it — never make it free-form. */\nexport type ServiceCapability =\n | \"list\" | \"buy\" | \"make_offer\" | \"cancel\"\n | \"transfer\" | \"burn\"\n | \"mint\" | \"claim\" | \"airdrop\"\n | \"remix\" | \"license\"\n | \"subscribe\" | \"redeem\"\n | \"launch\" | \"swap\"\n | \"sponsor\";\n\n/** A service that bakes enforcement into its own contract declares it here\n * (04-licensing-model §V, 05-service-model §IV). Absence/all-falsey =\n * soft enforcement (the 00-principles §9 default). */\nexport interface EnforcementDeclaration {\n royalty?: \"erc2981\" | \"service-split\" | \"none\";\n escrow?: boolean;\n timeLock?: boolean;\n revocable?: boolean;\n}\n\n/** An on-chain event the service emits. The indexer consumes this list to\n * decide what to poll and how to parse — the year-2 \"data-driven event\n * parser registry\" foundation (02-protocol-app-split §V).\n *\n * The Cairo selector is derivable from `name` via\n * `starknet.hash.getSelectorFromName(name)` — not stored to avoid\n * duplication and keep the SDK runtime-free of pre-computed hashes.\n */\nexport interface ServiceEventDeclaration {\n /** Cairo event struct name (e.g. \"OrderCreated\", \"CollectionCreated\"). */\n name: string;\n /**\n * Where this event is emitted:\n * - \"factory\": at the service's `onchain.factoryAddress` (fixed address).\n * Examples: marketplace OrderCreated, factory CollectionCreated.\n * - \"instance\": at the address of each deployed collection contract\n * (variable; the indexer iterates discovered instances).\n * Examples: ERC-721 Transfer, POP AllowlistUpdated.\n */\n emittedBy: \"factory\" | \"instance\";\n /**\n * Polling cadence the indexer should use:\n * - \"fast\" (default): every indexer tick (~6s). Right for low-volume\n * protocol events like order/factory events.\n * - \"slow\": a separate slower loop (~2min). Right for\n * high-volume per-instance events like Transfer\n * and AllowlistUpdated — polling them every tick\n * against every known instance is RPC-expensive.\n */\n poll?: \"fast\" | \"slow\";\n}\n\n/** Declarative description of a service (05-service-model §II).\n * SDK-resident in v1; on-chain registry in year 2. */\nexport interface ServiceDefinition {\n /** Stable kebab-case id. NO version number (05 §II). */\n id: string;\n displayName: string;\n description: string;\n standard: \"ERC721\" | \"ERC1155\" | \"ERC20\" | \"UNKNOWN\";\n provenance: \"MEDIALANE\" | \"EXTERNAL\";\n onchain?: Partial<Record<import(\"../chains.js\").Chain, {\n factoryAddress?: string;\n classHash?: string;\n startBlock?: number;\n }>>;\n /** Drives the dapp asset/collection page variant. */\n uiVariant: string;\n capabilities: ServiceCapability[];\n /** Events the indexer should poll + parse for this service.\n * Optional during the year-1 transition — backend hand-coded pollers\n * (medialane-backend/src/mirror/poller.ts) take precedence today.\n * Populated here so consumers and the future data-driven indexer can\n * read what events a service emits without code-spelunking. */\n events?: ServiceEventDeclaration[];\n metadataSchema?: {\n requiredTraits?: string[];\n /** Canonical platform default is \"CC BY-SA\" (04-licensing-model §III). */\n licenseDefault?: string;\n enforcement?: EnforcementDeclaration;\n };\n}\n\nexport interface ApiCollectionsQuery {\n page?: number;\n limit?: number;\n isKnown?: boolean;\n sort?: CollectionSort;\n owner?: string;\n /** Filter by service id. */\n service?: string;\n}\n\n/**\n * Order lifecycle states. **Four canonical values** per `01-core-model §V`.\n *\n * The legacy `\"COUNTER_OFFERED\"` value was removed in 0.23.0 (audit P0-1\n * Phase D). Counter-offers are linked orders via `parentOrderHash`, not a\n * third lifecycle state on the parent bid. Use `ApiOrder.hasActiveCounterOffer`\n * (added in 0.22.0) for the \"this bid has been countered\" affordance.\n */\nexport type OrderStatus = \"ACTIVE\" | \"FULFILLED\" | \"CANCELLED\" | \"EXPIRED\";\nexport type SortOrder = \"price_asc\" | \"price_desc\" | \"recent\";\nexport type ActivityType = \"mint\" | \"transfer\" | \"sale\" | \"listing\" | \"offer\" | \"cancelled\";\nexport type IntentType = \"CREATE_LISTING\" | \"MAKE_OFFER\" | \"FULFILL_ORDER\" | \"CANCEL_ORDER\" | \"MINT\" | \"CREATE_COLLECTION\" | \"COUNTER_OFFER\";\nexport type IntentStatus = \"PENDING\" | \"SIGNED\" | \"SUBMITTED\" | \"CONFIRMED\" | \"FAILED\" | \"EXPIRED\";\nexport type WebhookEventType = \"ORDER_CREATED\" | \"ORDER_FULFILLED\" | \"ORDER_CANCELLED\" | \"TRANSFER\";\nexport type WebhookStatus = \"ACTIVE\" | \"DISABLED\";\nexport type ApiKeyStatus = \"ACTIVE\" | \"REVOKED\";\nexport type TenantPlan = \"FREE\" | \"PREMIUM\";\n\n// ─── Shared ───────────────────────────────────────────────────────────────────\n\nexport interface ApiMeta {\n page: number;\n limit: number;\n total?: number;\n}\n\nexport interface ApiResponse<T> {\n data: T;\n meta?: ApiMeta;\n}\n\n// ─── Orders ───────────────────────────────────────────────────────────────────\n\n/** Cross-chain read filter — a concrete chain, or \"all\" for aggregation\n * (platform-federation spec §2.3). Omitted = the backend default (STARKNET). */\nexport type ChainFilter = import(\"../chains.js\").Chain | \"all\";\n\nexport interface ApiOrdersQuery {\n chain?: ChainFilter;\n status?: OrderStatus;\n collection?: string;\n currency?: string;\n sort?: SortOrder;\n page?: number;\n limit?: number;\n offerer?: string;\n minPrice?: string;\n maxPrice?: string;\n}\n\nexport interface ApiOrderOffer {\n itemType: string;\n token: string;\n identifier: string;\n startAmount: string;\n endAmount: string;\n}\n\nexport interface ApiOrderConsideration extends ApiOrderOffer {\n recipient: string;\n}\n\nexport interface ApiOrderPrice {\n raw: string | null;\n formatted: string | null;\n currency: string | null;\n decimals: number;\n}\n\nexport interface ApiOrderTxHash {\n created: string | null;\n fulfilled: string | null;\n cancelled: string | null;\n}\n\nexport interface ApiOrderTokenMeta {\n name: string | null;\n image: string | null;\n description: string | null;\n}\n\nexport interface ApiOrder {\n id: string;\n chain: string;\n orderHash: string;\n offerer: string;\n offer: ApiOrderOffer;\n consideration: ApiOrderConsideration;\n startTime: string;\n endTime: string;\n status: OrderStatus;\n fulfiller: string | null;\n nftContract: string | null;\n nftTokenId: string | null;\n price: ApiOrderPrice;\n txHash: ApiOrderTxHash;\n createdBlockNumber: string;\n /** ERC-1155 only: units still available after the last partial fill. Null for ERC-721 or unfilled orders. */\n remainingAmount: string | null;\n createdAt: string;\n updatedAt: string;\n /** Embedded token metadata (name/image/description). Null when not yet indexed. */\n token: ApiOrderTokenMeta | null;\n /** Set when this is a counter-offer listing — points to the original buyer bid.\n * Now always emitted by the backend (was conditional); kept optional in the\n * type for back-compat with older response shapes. */\n parentOrderHash?: string | null;\n /** Optional seller message accompanying a counter-offer. */\n counterOfferMessage?: string | null;\n /** True when this order is a bid (ERC-20 offer) AND at least one ACTIVE counter\n * exists with `parentOrderHash = this.orderHash`. Set by endpoints that compute\n * it (currently `GET /v1/orders/user/:address` and `GET /v1/orders/:orderHash`);\n * undefined on endpoints that don't.\n *\n * Use this instead of `status === \"COUNTER_OFFERED\"` for \"this bid has been\n * countered\" affordances. The status pattern is being phased out per\n * 01-core-model §V — counter-offers are linked orders, not a lifecycle state. */\n hasActiveCounterOffer?: boolean;\n}\n\n// ─── IP / IPFS Metadata types ──────────────────────────────────────────────────\n\n/**\n * A single OpenSea-compatible ERC-721 attribute.\n * Medialane embeds licensing, provenance, and IP metadata as attributes.\n */\nexport interface IpAttribute {\n trait_type: string;\n value: string;\n}\n\n/**\n * Full on-chain + IPFS metadata for a Medialane IP NFT.\n * Conforms to the OpenSea ERC-721 metadata standard and embeds\n * Berne Convention-compatible licensing data in `attributes`.\n *\n * Common licensing attributes (all optional — absent on pre-v2 tokens):\n * License · Commercial Use · Derivatives · Attribution · Territory\n * AI Policy · Royalty · Standard (\"Berne Convention\") · Registration\n */\nexport interface IpNftMetadata {\n name: string;\n description?: string;\n image?: string | null;\n external_url?: string;\n attributes?: IpAttribute[];\n /** Populated by the indexer for fast access — not stored in IPFS */\n ipType?: string | null;\n licenseType?: string | null;\n commercialUse?: string | null;\n derivatives?: string | null;\n attribution?: string | null;\n territory?: string | null;\n aiPolicy?: string | null;\n royalty?: string | null;\n registration?: string | null;\n}\n\n// ─── Tokens ───────────────────────────────────────────────────────────────────\n\n/** Indexed token metadata as returned by the Medialane API. */\nexport interface ApiTokenMetadata {\n name: string | null;\n description: string | null;\n image: string | null;\n /** Parsed OpenSea-standard attributes array. Null when metadata hasn't been fetched. */\n attributes: IpAttribute[] | null;\n /** Short-circuit fields extracted from attributes by the indexer */\n ipType: string | null;\n licenseType: string | null;\n commercialUse: string | null;\n derivatives: string | null;\n attribution: string | null;\n territory: string | null;\n aiPolicy: string | null;\n royalty: string | null;\n registration: string | null;\n author: string | null;\n}\n\n/** Per-holder balance entry. Present for ERC-1155 (multi-holder); single entry for ERC-721. */\nexport interface ApiTokenBalance {\n owner: string;\n /** Quantity held. Always \"1\" for ERC-721. */\n amount: string;\n}\n\nexport interface ApiToken {\n id: string;\n chain: string;\n contractAddress: string;\n tokenId: string;\n /** @deprecated Use `balances` for ownership checks — always null after ERC-1155 migration. */\n owner: string | null;\n tokenUri: string | null;\n metadataStatus: \"PENDING\" | \"FETCHING\" | \"FETCHED\" | \"FAILED\";\n /** Token standard derived from the parent collection. Use this to determine ERC-721 vs ERC-1155 behavior. */\n standard: \"ERC721\" | \"ERC1155\" | \"UNKNOWN\";\n metadata: ApiTokenMetadata;\n /** Current holders with amounts. Only present on single-token fetches; null on list responses. */\n balances: ApiTokenBalance[] | null;\n activeOrders: ApiOrder[];\n createdAt: string;\n updatedAt: string;\n}\n\n// ─── Collections ──────────────────────────────────────────────────────────────\n\nexport interface ApiCollection {\n id: string;\n chain: string;\n contractAddress: string;\n collectionId: string | null;\n name: string | null;\n symbol: string | null;\n description: string | null;\n image: string | null;\n owner: string | null;\n startBlock: string;\n metadataStatus: \"PENDING\" | \"FETCHING\" | \"FETCHED\" | \"FAILED\";\n /** Token standard detected via ERC-165. Collection is NFT-only since the\n * 2026-06-14 coin split — fungible coins are `ApiCoin`, served by getCoins(). */\n standard: \"ERC721\" | \"ERC1155\";\n isKnown: boolean;\n /** Hidden by ops/admin (content moderation). When true, list endpoints\n * already filter the row out; single-collection fetches still return\n * it so the UI can render a \"hidden\" banner instead of a 404. */\n isHidden: boolean;\n /** Promoted on homepage / browse surfaces. */\n isFeatured: boolean;\n /** Stable Medialane service ID, or null for external collections.\n * Resolve via getService() (05-service-model). Primary field. */\n service: string | null;\n claimedBy: string | null;\n profile?: ApiCollectionProfile | null;\n floorPrice: string | null;\n totalVolume: string | null;\n holderCount: number | null;\n totalSupply: number | null;\n createdAt: string;\n updatedAt: string;\n}\n\n/** A fungible coin (ERC-20 today; SPL/etc. later). Distinct from ApiCollection:\n * a coin has a supply + decimals + a market price (read live from Ekubo), no\n * tokens, no orders. Served by getCoins()/getCoin() (spec 2026-06-14). */\nexport interface ApiCoin {\n id: string;\n chain: string;\n contractAddress: string;\n standard: \"ERC20\";\n /** \"creator-coin\" | \"external-erc20\" */\n service: string;\n name: string | null;\n symbol: string | null;\n decimals: number;\n /** Fungible supply as a decimal string — NOT an item count. */\n totalSupply: string | null;\n description: string | null;\n image: string | null;\n creator: string | null;\n startBlock: string;\n isHidden: boolean;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface ApiCoinsQuery {\n chain?: ChainFilter;\n page?: number;\n limit?: number;\n /** Filter by coin service id (\"creator-coin\" | \"external-erc20\"). */\n service?: string;\n}\n\n// ─── Activities ───────────────────────────────────────────────────────────────\n\nexport interface ApiActivityPrice {\n raw: string | null;\n formatted: string | null;\n currency: string | null;\n}\n\nexport interface ApiActivity {\n type: ActivityType;\n // Transfer fields\n contractAddress?: string;\n tokenId?: string;\n from?: string;\n to?: string;\n blockNumber?: string;\n /** ERC-1155 quantity (transfer/mint rows). \"1\" for ERC-721. */\n amount?: string;\n // Order fields\n orderHash?: string;\n nftContract?: string;\n nftTokenId?: string;\n offerer?: string;\n fulfiller?: string | null;\n price?: ApiActivityPrice;\n /** Token standard — present on order rows. */\n tokenStandard?: \"ERC721\" | \"ERC1155\";\n txHash: string | null;\n timestamp: string;\n /** Batch-enriched token metadata — avoids per-row fetches. */\n token?: { name: string | null; image: string | null } | null;\n}\n\nexport interface ApiActivitiesQuery {\n chain?: ChainFilter;\n type?: ActivityType;\n page?: number;\n limit?: number;\n}\n\n// ─── Comments ─────────────────────────────────────────────────────────────────\n\nexport interface ApiComment {\n id: string;\n chain: string; // \"starknet\"\n contractAddress: string; // normalized 0x-padded Starknet address\n tokenId: string;\n author: string; // normalized 0x-padded Starknet address\n content: string; // sanitized plain text\n txHash: string | null;\n blockNumber: string; // BigInt serialized as string\n postedAt: string; // ISO 8601 derived from blockTimestamp — use for display\n}\n\n// ─── Search ───────────────────────────────────────────────────────────────────\n\nexport interface ApiSearchTokenResult {\n contractAddress: string;\n tokenId: string;\n name: string | null;\n image: string | null;\n owner: string;\n metadataStatus: string;\n}\n\nexport interface ApiSearchCollectionResult {\n contractAddress: string;\n name: string | null;\n image: string | null;\n totalSupply: number | null;\n floorPrice: string | null;\n holderCount: number | null;\n}\n\nexport interface ApiSearchCreatorResult {\n walletAddress: string;\n username: string | null;\n displayName: string | null;\n bio: string | null;\n avatarImage: string | null;\n}\n\nexport interface ApiSearchResult {\n tokens: ApiSearchTokenResult[];\n collections: ApiSearchCollectionResult[];\n creators: ApiSearchCreatorResult[];\n}\n\n// ─── Intents ──────────────────────────────────────────────────────────────────\n\nexport interface ApiIntent {\n id: string;\n chain: string;\n type: IntentType;\n status: IntentStatus;\n requester: string;\n typedData: unknown;\n calls: unknown;\n signature: string[];\n txHash: string | null;\n orderHash: string | null;\n /** Set on COUNTER_OFFER intents — the original bid order hash being countered. */\n parentOrderHash?: string | null;\n /** Optional seller message on counter-offer intents. */\n counterOfferMessage?: string | null;\n expiresAt: string;\n createdAt: string;\n updatedAt: string;\n}\n\n/** A single Starknet call as returned in intent calldata. */\nexport interface IntentCall {\n contractAddress: string;\n entrypoint: string;\n calldata: string[];\n}\n\n/**\n * Response from any `createXIntent` call. Discriminated on `requiresSignature`:\n * • true — SNIP-12 intent (listing / offer / cancel / counter-offer). Sign\n * `typedData`, then call `submitIntentSignature(id, sig)` to obtain\n * the executable calls.\n * • false — prebuilt intent (fulfill / mint / create-collection). `calls` are\n * ready to execute directly; there is no signature step.\n *\n * The discriminant makes the wrong access a compile error: `typedData` does not\n * exist on the `false` variant, nor `calls` on the `true` variant. Consumers\n * MUST narrow on `requiresSignature` before reading either.\n */\nexport type ApiIntentCreated =\n | { id: string; expiresAt: string; requiresSignature: true; typedData: unknown }\n | { id: string; expiresAt: string; requiresSignature: false; calls: IntentCall[] };\n\nexport interface CreateListingIntentParams {\n offerer: string;\n nftContract: string;\n tokenId: string;\n currency: string;\n price: string;\n endTime: number;\n salt?: string;\n /** Number of units to list — required for ERC-1155, omit for ERC-721. */\n amount?: string;\n}\n\nexport interface MakeOfferIntentParams {\n offerer: string;\n nftContract: string;\n tokenId: string;\n currency: string;\n price: string;\n endTime: number;\n salt?: string;\n /** Caller hint — \"ERC1155\" creates the bid on the ERC-1155 marketplace. */\n tokenStandard?: string;\n /** ERC-1155 only: number of editions requested. Defaults to 1. */\n quantity?: string;\n}\n\nexport interface FulfillOrderIntentParams {\n fulfiller: string;\n orderHash: string;\n /** Caller hint — \"ERC1155\" forces 1155 routing even if the order isn't in the DB yet */\n tokenStandard?: string;\n /** ERC-1155 only: units to purchase (1 ≤ quantity ≤ remaining_amount). Defaults to 1. */\n quantity?: string;\n}\n\nexport interface CancelOrderIntentParams {\n offerer: string;\n orderHash: string;\n /** Caller hint — \"ERC1155\" forces 1155 routing even if the order isn't in the DB yet */\n tokenStandard?: string;\n}\n\nexport interface CreateMintIntentParams {\n /** Collection owner wallet address — must be the collection owner on-chain */\n owner: string;\n collectionId: string;\n recipient: string;\n tokenUri: string;\n /**\n * EIP-2981 secondary-sale royalty in basis points (0–10_000). Set once at mint;\n * receiver is the immutable creator. Required since MIP v0.4.0 — pass 0 for none.\n */\n royaltyBps: number;\n /** Optional: override the default collection contract address */\n collectionContract?: string;\n}\n\nexport interface CreateCollectionIntentParams {\n owner: string;\n name: string;\n symbol: string;\n /** Optional description stored server-side and surfaced on the collection page. */\n description?: string;\n /** Optional IPFS image URI (ipfs://...) for the collection cover image. */\n image?: string;\n /** Base URI for token metadata. Defaults to empty string if not provided. */\n baseUri?: string;\n /** Optional: override the default collection contract address */\n collectionContract?: string;\n}\n\nexport interface CreateCounterOfferIntentParams {\n /** Wallet address of the NFT owner making the counter-offer. */\n sellerAddress: string;\n /** Order hash of the original buyer bid being countered. */\n originalOrderHash: string;\n /** Counter price as a raw wei integer string (not human-readable). */\n priceRaw: string;\n /** Duration in seconds the counter-offer will be valid (3600–2592000). */\n durationSeconds: number;\n /** Optional message from the seller to the buyer. Max 500 chars. */\n message?: string;\n}\n\nexport interface ApiCounterOffersQuery {\n /** Original bid order hash — returns the counter-offer for this specific bid. */\n originalOrderHash?: string;\n /** Seller address — returns all counter-offers sent by this seller. */\n sellerAddress?: string;\n page?: number;\n limit?: number;\n}\n\n// ─── Remix Licensing ──────────────────────────────────────────────────────────\n\nexport const OPEN_LICENSES = [\"CC0\", \"CC BY\", \"CC BY-SA\", \"CC BY-NC\"] as const;\nexport type OpenLicense = (typeof OPEN_LICENSES)[number];\n\nexport type RemixOfferStatus =\n | \"PENDING\"\n | \"AUTO_PENDING\"\n | \"APPROVED\"\n | \"COMPLETED\"\n | \"REJECTED\"\n | \"EXPIRED\"\n | \"SELF_MINTED\";\n\nexport interface ApiRemixOfferPrice {\n raw: string;\n formatted: string;\n currency: string;\n decimals: number;\n}\n\nexport interface ApiRemixOffer {\n id: string;\n status: RemixOfferStatus;\n originalContract: string;\n originalTokenId: string;\n creatorAddress: string;\n requesterAddress: string | null;\n message?: string | null;\n /** Visible only to creator and requester — includes formatted price */\n price?: ApiRemixOfferPrice;\n licenseType: string;\n commercial: boolean;\n derivatives: boolean;\n royaltyPct: number | null;\n approvedCollection: string | null;\n remixContract: string | null;\n remixTokenId: string | null;\n orderHash: string | null;\n createdAt: string;\n expiresAt: string;\n updatedAt: string;\n}\n\n/** Public remix record — price/currency omitted for non-participants */\nexport interface ApiPublicRemix {\n id: string;\n remixContract: string | null;\n remixTokenId: string | null;\n licenseType: string;\n commercial: boolean;\n derivatives: boolean;\n createdAt: string;\n}\n\nexport interface CreateRemixOfferParams {\n originalContract: string;\n originalTokenId: string;\n licenseType: string;\n commercial: boolean;\n derivatives: boolean;\n royaltyPct?: number;\n proposedPrice?: string;\n proposedCurrency?: string;\n message?: string;\n /** Offer validity in days (server default applies if omitted) */\n expiresInDays?: number;\n}\n\nexport interface AutoRemixOfferParams {\n originalContract: string;\n originalTokenId: string;\n licenseType: string;\n}\n\nexport interface ConfirmSelfRemixParams {\n originalContract: string;\n originalTokenId: string;\n remixContract: string;\n remixTokenId: string;\n /** On-chain transaction hash of the mint tx */\n txHash?: string;\n licenseType: string;\n commercial: boolean;\n derivatives: boolean;\n royaltyPct?: number;\n}\n\nexport interface ConfirmRemixOfferParams {\n approvedCollection: string;\n remixContract: string;\n remixTokenId: string;\n orderHash?: string;\n}\n\nexport interface ApiRemixOffersQuery {\n /** \"creator\" = offers where you are the original creator; \"requester\" = offers you made */\n role: \"creator\" | \"requester\";\n page?: number;\n limit?: number;\n}\n\n// ─── Metadata ─────────────────────────────────────────────────────────────────\n\nexport interface ApiMetadataSignedUrl {\n url: string;\n}\n\nexport interface ApiMetadataUpload {\n cid: string;\n url: string;\n}\n\n// ─── Portal (tenant self-service) ─────────────────────────────────────────────\n\nexport interface ApiPortalMe {\n id: string;\n name: string;\n email: string;\n plan: TenantPlan;\n status: string;\n}\n\nexport interface ApiPortalKey {\n id: string;\n prefix: string;\n label: string;\n status: ApiKeyStatus;\n lastUsedAt: string | null;\n createdAt: string;\n}\n\nexport interface ApiPortalKeyCreated {\n id: string;\n prefix: string;\n label: string | null;\n /** Plaintext key — shown ONCE at creation */\n plaintext: string;\n}\n\nexport interface ApiUsageDay {\n day: string;\n requests: number;\n}\n\nexport interface ApiWebhookEndpoint {\n id: string;\n url: string;\n events: WebhookEventType[];\n status: WebhookStatus;\n createdAt: string;\n}\n\nexport interface ApiWebhookCreated extends ApiWebhookEndpoint {\n /** Signing secret — shown ONCE at creation, not stored in plaintext */\n secret: string;\n}\n\nexport interface CreateWebhookParams {\n url: string;\n events: WebhookEventType[];\n label?: string;\n}\n\n// ─── Collection & Creator Profiles ────────────────────────────────────────────\n\nexport interface ApiCollectionProfile {\n contractAddress: string;\n chain: string;\n displayName: string | null;\n description: string | null;\n image: string | null;\n bannerImage: string | null;\n websiteUrl: string | null;\n twitterUrl: string | null;\n discordUrl: string | null;\n telegramUrl: string | null;\n hasGatedContent: boolean;\n gatedContentTitle: string | null;\n slug: string | null;\n updatedBy: string | null;\n updatedAt: string;\n}\n\nexport interface ApiCollectionSlugClaim {\n id: string;\n slug: string;\n contractAddress: string;\n chain: string;\n walletAddress: string;\n status: \"PENDING\" | \"APPROVED\" | \"REJECTED\";\n adminNotes: string | null;\n notifyEmail: string | null;\n reviewedAt: string | null;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface ApiCreatorProfile {\n walletAddress: string;\n chain: string;\n username: string | null;\n displayName: string | null;\n bio: string | null;\n avatarImage: string | null;\n bannerImage: string | null;\n /** Computed fallback used by the creator-list / creator-page endpoints\n * ONLY when both `avatarImage` and `bannerImage` are null: image of\n * any collection owned by this creator. Undefined on profile-detail\n * endpoints where this lookup isn't performed. UI may use this to\n * populate hero banners without an extra fetch. */\n collectionImage?: string | null;\n websiteUrl: string | null;\n twitterUrl: string | null;\n discordUrl: string | null;\n telegramUrl: string | null;\n updatedAt: string;\n}\n\nexport interface ApiCreatorListResult {\n creators: ApiCreatorProfile[];\n total: number;\n page: number;\n limit: number;\n}\n\n// ─── User Wallet ───────────────────────────────────────────────────────────────\n\nexport type ApiAppSource =\n | \"MEDIALANE_STARKNET\" // the Starknet dapp (renamed from MEDIALANE_DAPP — the platform is multichain)\n | \"MEDIALANE_IO\"\n | \"MEDIALANE_PORTAL\"\n | \"MEDIALANE_SDK\"\n // Deprecated alias for MEDIALANE_STARKNET. The backend still accepts it (normalizes\n // to MEDIALANE_STARKNET) so existing apps keep working; migrate to MEDIALANE_STARKNET\n // and drop this in a later major.\n | \"MEDIALANE_DAPP\";\n\n// 07-identity §I: the Wallet identifier is (chain, address). Mirrors\n// the backend Chain enum. v1 callers only ever pass STARKNET; the rest\n// are present so the type doesn't need a breaking change when SIWE/SIWB\n// authentication lands and other chains become callable.\nexport type ApiChain = \"STARKNET\" | \"ETHEREUM\" | \"SOLANA\" | \"BASE\" | \"BITCOIN\";\n\nexport interface ApiUserWallet {\n walletAddress: string;\n}\n\n// ─── Collection Claims ─────────────────────────────────────────────────────────\n\nexport interface ApiCollectionClaim {\n id: string;\n contractAddress: string;\n chain: string;\n claimantAddress: string | null;\n status: \"PENDING\" | \"AUTO_APPROVED\" | \"APPROVED\" | \"REJECTED\";\n verificationMethod: \"ONCHAIN\" | \"SIGNATURE\" | \"MANUAL\";\n createdAt: string;\n}\n\nexport interface ApiAdminCollectionClaim extends ApiCollectionClaim {\n claimantEmail: string | null;\n notes: string | null;\n adminNotes: string | null;\n reviewedBy: string | null;\n reviewedAt: string | null;\n updatedAt: string;\n}\n\n// ─── POP Protocol ──────────────────────────────────────────────────────────────\n\nexport interface PopClaimStatus {\n isEligible: boolean;\n hasClaimed: boolean;\n tokenId: string | null;\n}\n\nexport interface PopBatchEligibilityItem extends PopClaimStatus {\n wallet: string;\n}\n\nexport type PopEventType =\n | \"Conference\"\n | \"Bootcamp\"\n | \"Workshop\"\n | \"Hackathon\"\n | \"Meetup\"\n | \"Course\"\n | \"Other\";\n\n// ─── Collection Drop ───────────────────────────────────────────────────────────\n\nexport interface DropMintStatus {\n mintedByWallet: number;\n totalMinted: number;\n}\n\n// ─── Rewards (v0.49.0) ─────────────────────────────────────────────────────────\n\nexport interface ApiRewardsBadge {\n key: string;\n name: string;\n description: string;\n icon: string;\n color: string;\n category: string;\n}\n\nexport interface ApiRewardsLevel {\n level: number;\n name: string;\n xpRequired: number;\n badgeColor: string;\n description: string | null;\n}\n\nexport interface ApiUserRewards {\n address: string;\n accountId: string | null;\n publicId: string | null;\n totalXp: number;\n currentLevel: number;\n currentLevelName: string;\n badgeColor: string;\n nextLevel: { level: number; name: string; xpRequired: number } | null;\n progressPct: number;\n breakdown: Record<string, number>;\n badges: ApiRewardsBadge[];\n computedAt: string | null;\n}\n\nexport interface ApiRewardsLeaderboardEntry {\n rank: number;\n address: string;\n accountId: string | null;\n publicId: string | null;\n totalXp: number;\n currentLevel: number;\n currentLevelName: string;\n badgeColor: string;\n}\n\nexport interface ApiRewardsConfig {\n levels: ApiRewardsLevel[];\n actions: { type: string; label: string; xp: number; dailyCap: number | null }[];\n badges: ApiRewardsBadge[];\n}\n\nexport interface ApiRewardsBatchEntry {\n address: string;\n totalXp: number;\n currentLevel: number;\n currentLevelName: string;\n badgeColor: string;\n}\n\nexport interface ApiPointEvent {\n id: string;\n actionType: string;\n xp: number;\n multiplier: number;\n finalXp: number;\n txHash: string | null;\n createdAt: string;\n}\n","import { getCoordinates } from \"./chains.js\";\n\n// Flat per-chain contract constants. Chain-named (each contract is deployed on a\n// specific chain), derived from the chains.ts registry so there is one source.\nconst SN = getCoordinates(\"STARKNET\");\n\n// ── Marketplace ───────────────────────────────────────────────────────────────\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\n// ── Collections ───────────────────────────────────────────────────────────────\nexport const STARKNET_COLLECTION_721_CONTRACT = SN.collection721!;\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\n// ── POP / Drop / Comments ─────────────────────────────────────────────────────\nexport const STARKNET_POP_FACTORY_CONTRACT = SN.popFactory!;\nexport const STARKNET_POP_COLLECTION_CLASS_HASH = SN.popCollectionClassHash!;\nexport const STARKNET_DROP_FACTORY_CONTRACT = SN.dropFactory!;\nexport const STARKNET_DROP_COLLECTION_CLASS_HASH = SN.dropCollectionClassHash!;\nexport const STARKNET_NFTCOMMENTS_CONTRACT = SN.nftComments!;\n\n// ── IP Tickets / IP Club / IP Sponsorship ─────────────────────────────────────\n// Not yet deployed — these resolve to `undefined` at runtime until chains.ts's\n// STARKNET coordinates are populated (Phase 3/4 deploy). The `!` assertion\n// mirrors the existing convention above; falsy-guard callers (`if (X && ...)`)\n// still behave correctly regardless.\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\n// ── Creator Coin (Ekubo) ──────────────────────────────────────────────────────\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!;\nexport const STARKNET_EKUBO_CORE = SN.ekuboCore!;\n\n// ── Tokens (chain-agnostic) ───────────────────────────────────────────────────\nexport const SUPPORTED_TOKENS = [\n {\n // Circle-native USDC on Starknet (canonical)\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\n/** Default currency for listings and offers — Circle-native USDC on Starknet. */\nexport const DEFAULT_CURRENCY: SupportedTokenSymbol = \"USDC\";\n","import type { ServiceDefinition, ServiceCapability } from \"../types/api.js\";\nimport { getStarknetCoordinates } from \"../chains.js\";\n\n// The registry re-projects a service's chain coordinates into the generic\n// `onchain` shape (factoryAddress/classHash/startBlock). Single source = the\n// chain registry. Only STARKNET is populated today.\nconst SN = getStarknetCoordinates(\"STARKNET\");\n\n/**\n * The Medialane service registry (05-service-model §II, §VI).\n * Canonical long-form IDs (01-core-model §III). SDK-resident in v1;\n * on-chain registry later (08-dao-governance §IV).\n *\n * `onchain` is keyed per chain (spec 2026-06-13 §3.1, Decision A): the SDK\n * registry is the single source of a service's coordinates on each chain.\n * Only STARKNET is populated today; adding a chain adds a key here.\n *\n * Phase 2B.2 of the service-model refactor. `ip-erc721` has no dedicated\n * on-chain constant in src/constants.ts, so its `onchain` is omitted rather\n * than invented (the genesis contract address ships with that service).\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 // Per-instance ERC-721 Transfer emitted by each deployed collection; not\n // yet declared here because the indexer polls discovered instances on a\n // slow schedule. Plan 2026-05-24-data-driven-event-registry.md covers\n // the migration.\n ],\n metadataSchema: { licenseDefault: \"CC BY-SA\" },\n },\n \"ip-erc721\": {\n id: \"ip-erc721\",\n displayName: \"Programmable IP (genesis)\",\n description: \"One shared ERC-721 contract; many wallets mint genesis pieces.\",\n standard: \"ERC721\",\n provenance: \"MEDIALANE\",\n uiVariant: \"standard\",\n capabilities: [\"list\", \"buy\", \"make_offer\", \"cancel\", \"transfer\", \"mint\", \"remix\", \"license\"],\n // No factory — single shared contract. Events declared when the genesis\n // contract address is wired into onchain.STARKNET.factoryAddress here.\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 { name: \"AllowlistUpdated\", emittedBy: \"instance\", poll: \"slow\" },\n ],\n metadataSchema: { licenseDefault: \"CC BY-SA\" },\n },\n \"drop-collection\": {\n id: \"drop-collection\",\n displayName: \"Collection Drop\",\n description: \"Sequential mint with claim windows + 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: \"AllowlistUpdated\", emittedBy: \"instance\", poll: \"slow\" },\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-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 // v3: one contract is both the offer/bid/proposal registry and the\n // issued license collection (a real, standard ERC-721 minted internally\n // — no separate receipt contract). `transfer` reflects that a license is\n // freely transferable at the protocol layer; transferable/expiry intent\n // is declarative (carried in metadata + LicenseMinted), never\n // contract-enforced. Supersedes the 2026-07-02 v2 `ip-sponsorship`\n // (registry-only) + `ip-sponsorship-license` (non-authoritative receipt\n // via a dedicated ip-erc721 instance) pair — retired as of this redesign.\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 // `swap` is a UI affordance (05 §III): the marketplace renders an embedded\n // Ekubo swap (via StarkZapp) for the coin. Settlement is Ekubo — Medialane\n // operates NO trading venue and custodies nothing. No venue service exists\n // for coins (unlike NFTs, whose Medialane marketplace contract settles them).\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 \"external-erc20\": {\n id: \"external-erc20\",\n displayName: \"External ERC-20\",\n description:\n \"An ERC-20 token (e.g. an unrug memecoin or a partner coin) not deployed via a Medialane service. 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\n/**\n * Literal-union of every registered service ID. Use this as the type for\n * `Collection.service` write sites in consumers — typos like \"pop_protocol\"\n * (underscore instead of hyphen) become compile errors.\n *\n * `getService()` still accepts loose `string` for read-side lookups where the\n * value came from the DB and is trusted to already be valid.\n */\nexport type ServiceId = keyof typeof SERVICES;\n\n/** Type guard: narrows a string to ServiceId if it's registered. */\nexport function isServiceId(id: string | null | undefined): id is ServiceId {\n return typeof id === \"string\" && id in SERVICES;\n}\n\n/** Lookup. Returns undefined for unregistered service IDs — callers should\n * treat that as a data error, since every Collection.service value is\n * expected to map to a registered ServiceDefinition. */\nexport function getService(id: string | null | undefined): ServiceDefinition | undefined {\n return id && id in SERVICES ? (SERVICES as Record<string, ServiceDefinition>)[id] : undefined;\n}\n\n/** All registered services (e.g. the launchpad grid). */\nexport function listServices(): ServiceDefinition[] {\n return Object.values(SERVICES);\n}\n\n/** Services that declare a capability (e.g. \"where can users mint\"). */\nexport function getServicesByCapability(cap: ServiceCapability): ServiceDefinition[] {\n return Object.values(SERVICES).filter(\n (s) => (s.capabilities as readonly ServiceCapability[]).includes(cap),\n );\n}\n\n/** Whether a service declares a given capability — e.g. whether an asset\n * type is transferable. Returns false for an unregistered/missing id rather\n * than throwing, since callers use this for UI copy, not authority checks. */\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\n/**\n * Parse a human-readable amount (e.g. \"1.5\") to its raw integer string\n * representation given the token's decimal places.\n * Uses pure BigInt arithmetic to avoid floating point precision loss.\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\n/**\n * Format a raw integer string (e.g. \"1500000\") to a human-readable decimal\n * string given the token's decimal places.\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\");\n return `${whole}.${fractional}`;\n}\n\n/**\n * Find a supported token by its contract address.\n *\n * Compares by numeric felt value so a caller-supplied address that isn't\n * zero-padded to 64 hex chars (`0x33068f6…`) still matches the stored padded\n * form (`0x033068f6…`) — a bare `.toLowerCase()` string compare would miss it,\n * the exact padding trap the address invariant warns against. Non-hex inputs\n * fall back to a case-insensitive string compare.\n */\nexport function getTokenByAddress(address: string): SupportedToken | undefined {\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 /* stored address not hex — fall through to string compare */\n }\n }\n return t.address.toLowerCase() === address.toLowerCase();\n });\n}\n\n/**\n * Find a supported token by its symbol (case-insensitive).\n */\nexport function getTokenBySymbol(symbol: string): SupportedToken | undefined {\n const upper = symbol.toUpperCase();\n return SUPPORTED_TOKENS.find((t) => t.symbol === upper);\n}\n\n/**\n * Return all tokens available for use in listing and offer dialogs.\n * Tokens with listable: false appear only as marketplace filter chips.\n */\nexport function getListableTokens(): ReadonlyArray<SupportedToken> {\n return SUPPORTED_TOKENS.filter((t) => t.listable);\n}\n","/**\n * Recursively convert all BigInt values to their decimal string representations.\n * Required before JSON serialisation and before passing objects to starknet.js\n * functions that expect string felts.\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\n/**\n * Convert a u256 represented as { low: string; high: string } to a single BigInt.\n */\nexport function u256ToBigInt(low: string, high: string): bigint {\n return BigInt(low) + (BigInt(high) << 128n);\n}\n","/**\n * Resilient Starknet RPC helpers — the single source of truth for \"what counts\n * as a transient RPC failure\" and the public fallback endpoint list, shared by\n * every Medialane app:\n * - dapp / io `starknetProvider` singletons (RpcProvider.baseFetch)\n * - io `/api/rpc` server-side proxy (upstream rotation)\n * - backend circuit breaker + receipt-rotation paths\n *\n * Motivation (2026-06-03): Alchemy's Starknet mainnet endpoint intermittently\n * returns HTTP 503 with the JSON-RPC envelope `-32001 \"Unable to complete\n * request at this time.\"` (~1 in 6 calls, while its status page reads green).\n * A single blip inside a `waitForTransaction` poll loop stalls mints/listings.\n * Failing over to a public endpoint recovers silently.\n */\n\n/**\n * Ordered public Starknet **mainnet** RPC endpoints (no API key required),\n * used as fallback after an app's configured primary (e.g. Alchemy) returns a\n * transient error. lava.build — RPC spec 0.8.1, permissive CORS — so it is\n * safe for browser `baseFetch` use as well as server-side rotation.\n *\n * blastapi.io and free-rpc.nethermind.io were removed (2026-07-04) — long\n * confirmed dead/unreliable in production; do not re-add them.\n */\nexport const PUBLIC_RPC_FALLBACKS: readonly string[] = [\n \"https://rpc.starknet.lava.build\",\n];\n\n/**\n * Matches transient failure signals in a raw response body or JSON-RPC error\n * message. Deterministic Starknet contract errors (revert / invalid params —\n * small positive JSON-RPC codes) MUST NOT match: they propagate verbatim so\n * callers see the real failure. Note `-32000` is intentionally absent — the io\n * `/api/rpc` proxy uses it for \"Unauthorized\", which must not trigger failover.\n */\nconst TRANSIENT_BODY_RE =\n /\"code\"\\s*:\\s*-32001|\"code\"\\s*:\\s*-32603|unable to complete|rate.?limit|too many|throttl|exceed.*quota|temporarily unavailable|service unavailable|overload|gateway.*time|upstream.*time|backend.*error/i;\n\n/**\n * Is this RPC response worth retrying against another endpoint?\n *\n * Accepts either an HTTP status + raw text body (client `baseFetch` path) or a\n * parsed JSON-RPC envelope (server proxy path). For parsed envelopes the\n * server-defined error-code range (`-32099..-32000`) is treated as transient;\n * for raw text only the explicit `-32001`/`-32603` codes + message hints match,\n * so a `-32000` \"Unauthorized\" text body is never mistaken for transient.\n */\nexport function isTransientRpcError(input: { status?: number; body?: unknown }): boolean {\n const { status, body } = input;\n if (typeof status === \"number\" && (status === 429 || status >= 500)) return true;\n if (body == null) return false;\n\n // Parsed JSON-RPC envelope: inspect error.code numerically.\n if (typeof body === \"object\") {\n const err = (body as { error?: { code?: unknown; message?: unknown } }).error;\n if (!err || typeof err !== \"object\") return false;\n const code = (err as { code?: unknown }).code;\n if (typeof code === \"number\") {\n if (code === 429) return true;\n if (code >= -32099 && code <= -32000) return true; // server-defined range (incl. -32001)\n if (code === -32603) return true; // generic internal error\n }\n const message = (err as { message?: unknown }).message;\n return typeof message === \"string\" ? TRANSIENT_BODY_RE.test(message) : false;\n }\n\n // Raw text body (client baseFetch path).\n return TRANSIENT_BODY_RE.test(String(body));\n}\n\nexport interface FailoverFetchOptions {\n /** Underlying fetch to wrap (e.g. one that adds a timeout). Defaults to the global `fetch`. */\n baseFetch?: typeof fetch;\n /** Invoked each time an endpoint is abandoned for the next one. */\n onFailover?: (info: { url: string; status?: number; error?: unknown }) => void;\n}\n\n/**\n * Build a `fetch` suitable for `RpcProvider.baseFetch` that tries each URL in\n * `urls` in order, advancing to the next only on a transient failure (network\n * error, 5xx/429, or a transient JSON-RPC envelope). The provider's own\n * `nodeUrl` argument is ignored — routing is controlled entirely by `urls` —\n * so callers should set `nodeUrl: urls[0]` (used only for spec negotiation).\n *\n * @example\n * const urls = [primaryAlchemyUrl, ...PUBLIC_RPC_FALLBACKS];\n * new RpcProvider({ nodeUrl: urls[0], baseFetch: createFailoverFetch(urls) });\n */\nexport function createFailoverFetch(\n urls: string[],\n options: FailoverFetchOptions = {},\n): typeof fetch {\n const endpoints = urls.filter((u): u is string => Boolean(u));\n if (endpoints.length === 0) {\n throw new Error(\"createFailoverFetch: at least one RPC URL is required\");\n }\n const doFetch = options.baseFetch ?? fetch;\n\n const failover = async (_input: unknown, init?: RequestInit): Promise<Response> => {\n let lastError: unknown;\n\n for (let i = 0; i < endpoints.length; i++) {\n const url = endpoints[i];\n const isLast = i === endpoints.length - 1;\n try {\n const res = await doFetch(url, init);\n const text = await res.text();\n const rebuilt = () =>\n new Response(text, { status: res.status, statusText: res.statusText, headers: res.headers });\n\n if (isLast || !isTransientRpcError({ status: res.status, body: text })) {\n return rebuilt();\n }\n options.onFailover?.({ url, status: res.status });\n } catch (err) {\n lastError = err;\n if (isLast) throw err;\n options.onFailover?.({ url, error: err });\n }\n }\n\n // Loop always returns/throws on the last endpoint; this satisfies the type checker.\n throw lastError ?? new Error(\"createFailoverFetch: all endpoints failed\");\n };\n\n return failover as unknown as typeof fetch;\n}\n"]}