@medialane/sdk 0.32.0 → 0.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/constants.ts","../src/fee/config.ts","../src/fee/build-fee-call.ts","../src/config.ts","../src/marketplace/signing.ts","../src/utils/bytearray.ts","../src/abis/ipMarketplace.ts","../src/abis/popCollection.ts","../src/abis/popFactory.ts","../src/abis/dropCollection.ts","../src/abis/dropFactory.ts","../src/abis/collectionRegistry.ts","../src/abis/medialane1155.ts","../src/abis/ipCollection1155Factory.ts","../src/abis/ipCollection1155.ts","../src/abis/ipCollection.ts","../src/abis/ipNft.ts","../src/abis/creatorCoinFactory.ts","../src/utils/bigint.ts","../src/utils/token.ts","../src/marketplace/errors.ts","../src/utils/rpc.ts","../src/marketplace/utils.ts","../src/marketplace/orders.ts","../src/marketplace/index.ts","../src/marketplace1155/orders.ts","../src/marketplace1155/index.ts","../src/utils/address.ts","../src/utils/retry.ts","../src/api/client.ts","../src/services/pop.ts","../src/services/drop.ts","../src/services/erc1155collection.ts","../src/services/creatorCoin.ts","../src/client.ts","../src/types/api.ts","../src/services/registry.ts"],"names":["z","cairo","TypedDataRevision","num","constants","RpcProvider","Contract","shortString","_contractCache","uint256"],"mappings":"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","file":"index.cjs","sourcesContent":["/** Medialane721 marketplace venue — immutable, ownerless (redesign, deployed 2026-05-31). */\nexport const MARKETPLACE_721_CONTRACT_MAINNET =\n \"0x069cf5391077e3ebdd9cb6aebf90ed530d29f0d6aa34a43f5afae938c0fb565e\";\n\n/** Class hash of the Medialane721 venue. */\nexport const MARKETPLACE_721_CLASS_HASH_MAINNET =\n \"0x04c6f952d747ad7ead1b3dad4c1d587837d38f8ec29d6c095a4afa5b5ece5957\";\n\n/** First mainnet block for the Medialane721 venue deployment. */\nexport const MARKETPLACE_721_START_BLOCK_MAINNET = 10350340;\n\n/** Medialane1155 marketplace venue — immutable, ownerless (redesign, deployed 2026-05-31). */\nexport const MARKETPLACE_1155_CONTRACT_MAINNET =\n \"0x040cd7b3e73bb3c892166e34bdc01d1797f97ecbc356c23f1cf38033cacf0077\";\n\n/** Class hash of the Medialane1155 venue. */\nexport const MARKETPLACE_1155_CLASS_HASH_MAINNET =\n \"0x02600bb720908f119afe482309d36c39d087587f0df9576454acfb6363e78cd8\";\n\n/** First mainnet block for the Medialane1155 venue deployment. */\nexport const MARKETPLACE_1155_START_BLOCK_MAINNET = 10350855;\n\nexport const COLLECTION_721_CONTRACT_MAINNET =\n \"0x0322cb7119955e01ac778d40976eb3ba50540bb0899f812d612f9c7e63e49fd2\";\n\n/** Class hash of the IPNft (per-collection ERC-721) implementation. */\nexport const IPNFT_CLASS_HASH_MAINNET =\n \"0x27ee4ded786d51bced1e94afec3034d6ffce71c032c45ee1ff283ccfa9db12e\";\n\n/** Class hash of the IPCollection registry. */\nexport const IPCOLLECTION_CLASS_HASH_MAINNET =\n \"0x287ccdff8b6655a2248cfe170d82eae3a35303cd00ef3e751b25ddca26d9095\";\n\n/** First mainnet block for the current MIP IPCollection registry deployment. */\nexport const COLLECTION_721_START_BLOCK_MAINNET = 10046166;\n\nexport const DROP_FACTORY_CONTRACT_MAINNET =\n \"0x03587f42e29daee1b193f6cf83bf8627908ed6632d0d83fcb26225c50547d800\";\n\nexport const POP_FACTORY_CONTRACT_MAINNET =\n \"0x00b32c34b427d8f346b5843ada6a37bd3368d879fc752cd52b68a87287f60111\";\n\n/** NFTComments on-chain comment system — immutable, no admin key. */\nexport const NFTCOMMENTS_CONTRACT_MAINNET =\n \"0x02cdac70c94447189af0389dfea63f4d5e4154ea8a563de288a5ab1c39e37843\";\n\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\nexport const SUPPORTED_NETWORKS = [\"mainnet\"] as const;\nexport type Network = (typeof SUPPORTED_NETWORKS)[number];\n\nexport const DEFAULT_RPC_URL = \"https://rpc.starknet.lava.build\";\n\nexport const POP_COLLECTION_CLASS_HASH_MAINNET = \"0x077c421686f10851872561953ea16898d933364b7f8937a5d7e2b1ba0a36263f\";\n\nexport const DROP_COLLECTION_CLASS_HASH_MAINNET = \"0x00092e72cdb63067521e803aaf7d4101c3e3ce026ae6bc045ec4228027e58282\";\n\nexport const COLLECTION_1155_CONTRACT_MAINNET =\n \"0x067064adcaaed61e17bf50ea802ea6482336126aec5b4d032b4ff8fbb5009131\";\n\n/** Class hash of the IPCollectionFactory implementation. */\nexport const COLLECTION_1155_FACTORY_CLASS_HASH_MAINNET =\n \"0x188321a7c9ca972cc63e352e3b3a4cdf33781852d957f4b4b62249310fe4c75\";\n\n/** Class hash of the IPCollection ERC-1155 implementation. */\nexport const COLLECTION_1155_CLASS_HASH_MAINNET =\n \"0x281e13803c906f20bbe158efb44b7a0273c56fdebbeeb55b2ba59530ddb1c80\";\n\n/** First mainnet block for the current ERC-1155 factory deployment. */\nexport const COLLECTION_1155_START_BLOCK_MAINNET = 10045611;\n\n// ─── Creator Coin ────────────────────────────────────────────────────────────\n// Faithful fork of unruggable.meme, Ekubo-only, deployed mainnet 2026-06-04.\n\n/** Creator Coin Factory — entrypoint: create_creator_coin + launch_on_ekubo. */\nexport const CREATOR_COIN_FACTORY_CONTRACT_MAINNET =\n \"0x50fa807b5274079fb19374673d7bab6d2dc3af7e1032ea43eb6e44bcbde4c3c\";\n\n/** EkuboLauncher — permanently holds (locks) each Creator Coin's LP position. */\nexport const CREATOR_COIN_EKUBO_LAUNCHER_MAINNET =\n \"0x4f7fceb5ac10f12f9544a09580592e5bdf1b7f04f48765eecf12286d8ccb7b4\";\n\n/** Class hash of the per-coin CreatorCoin ERC-20 the Factory deploys. */\nexport const CREATOR_COIN_CLASS_HASH_MAINNET =\n \"0x743e4c8a5b96bb83bbf4af04edbbb482d5ece89eed9b729a79fb7df0cd0b6b6\";\n\n/** Class hash of the Creator Coin Factory. */\nexport const CREATOR_COIN_FACTORY_CLASS_HASH_MAINNET =\n \"0x51765926b1344c9a20b8cd4b5abe7b7d47375ae97cf6804db3ea5d4b05a9b55\";\n\n/** First mainnet block of the Factory deployment. */\nexport const CREATOR_COIN_START_BLOCK_MAINNET = 10474544;\n\n/** Ekubo Core (Starknet mainnet) — Creator Coin pools live here; read spot price via `get_pool_price`. */\nexport const EKUBO_CORE_MAINNET =\n \"0x00000005dd3d2f4429af886cd1a3b08289dbcea99a294197e9eb43b0e0325b4b\";\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 { cairo, type Call } from \"starknet\";\nimport type { ResolvedFeeConfig } from \"./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 { z } from \"zod\";\nimport {\n SUPPORTED_NETWORKS,\n DEFAULT_RPC_URL,\n MARKETPLACE_721_CONTRACT_MAINNET,\n COLLECTION_721_CONTRACT_MAINNET,\n COLLECTION_1155_CONTRACT_MAINNET,\n MARKETPLACE_1155_CONTRACT_MAINNET,\n type Network,\n} from \"./constants.js\";\nimport type { RetryOptions } from \"./utils/retry.js\";\nimport { FeeConfigSchema, resolveFeeConfig, type ResolvedFeeConfig } from \"./fee/index.js\";\n\nexport const MedialaneConfigSchema = z.object({\n network: z.enum(SUPPORTED_NETWORKS).default(\"mainnet\"),\n rpcUrl: z.string().url().optional(),\n backendUrl: z.string().url().optional(),\n apiKey: z.string().optional(),\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 network: Network;\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\n const marketplace721Contract =\n parsed.marketplace721Contract ?? parsed.marketplaceContract ?? MARKETPLACE_721_CONTRACT_MAINNET;\n const collection721Contract =\n parsed.collection721Contract ?? parsed.collectionContract ?? COLLECTION_721_CONTRACT_MAINNET;\n\n return {\n network: parsed.network,\n rpcUrl: parsed.rpcUrl ?? DEFAULT_RPC_URL,\n backendUrl: parsed.backendUrl,\n apiKey: parsed.apiKey,\n marketplace721Contract,\n marketplaceContract: marketplace721Contract,\n marketplace1155Contract: parsed.marketplace1155Contract ?? MARKETPLACE_1155_CONTRACT_MAINNET,\n collection721Contract,\n collectionContract: collection721Contract,\n collection1155Contract: parsed.collection1155Contract ?? COLLECTION_1155_CONTRACT_MAINNET,\n retryOptions: parsed.retryOptions,\n feeConfig: resolveFeeConfig(parsed.feeConfig),\n };\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: \"4\",\n erc1155: \"3\",\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 { 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","// 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 },\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","export const CollectionRegistryABI = [\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: \"ip_collection_erc_721::types::Collection\",\n members: [\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: \"owner\", type: \"core::starknet::contract_address::ContractAddress\" },\n { name: \"ip_nft\", type: \"core::starknet::contract_address::ContractAddress\" },\n ],\n },\n {\n type: \"function\",\n name: \"list_user_collections\",\n inputs: [{ name: \"user\", type: \"core::starknet::contract_address::ContractAddress\" }],\n outputs: [{ type: \"core::array::Span::<core::integer::u256>\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"get_collection\",\n inputs: [{ name: \"collection_id\", type: \"core::integer::u256\" }],\n outputs: [{ type: \"ip_collection_erc_721::types::Collection\" }],\n state_mutability: \"view\",\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 },\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\": \"update_collection_class_hash\",\n \"inputs\": [\n {\n \"name\": \"new_class_hash\",\n \"type\": \"core::starknet::class_hash::ClassHash\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\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\": \"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\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"collection_class_hash\",\n \"type\": \"core::starknet::class_hash::ClassHash\"\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\": \"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::CollectionClassHashUpdated\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"previous_class_hash\",\n \"type\": \"core::starknet::class_hash::ClassHash\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"new_class_hash\",\n \"type\": \"core::starknet::class_hash::ClassHash\",\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\": \"OwnableEvent\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"CollectionDeployed\",\n \"type\": \"ip_programmable_erc1155_collections::IPCollectionFactory::IPCollectionFactory::CollectionDeployed\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"CollectionClassHashUpdated\",\n \"type\": \"ip_programmable_erc1155_collections::IPCollectionFactory::IPCollectionFactory::CollectionClassHashUpdated\",\n \"kind\": \"nested\"\n }\n ]\n }\n] as const;\n\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\": \"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_item\",\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 \"name\": \"token_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"batch_mint_item\",\n \"inputs\": [\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\": \"token_uris\",\n \"type\": \"core::array::Array::<core::byte_array::ByteArray>\"\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 },\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\": \"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\": \"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\n","export const IPCollectionABI = [\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\": \"total_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 \"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 \"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\": \"token\",\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"batch_archive\",\n \"inputs\": [\n {\n \"name\": \"tokens\",\n \"type\": \"core::array::Array::<core::byte_array::ByteArray>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer_token\",\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\",\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"batch_transfer\",\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\": \"tokens\",\n \"type\": \"core::array::Array::<core::byte_array::ByteArray>\"\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\": \"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\": \"token\",\n \"type\": \"core::byte_array::ByteArray\"\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\": \"token\",\n \"type\": \"core::byte_array::ByteArray\"\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\": \"token\",\n \"type\": \"core::byte_array::ByteArray\"\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 },\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\": \"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\": \"tokens\",\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::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\": \"tokens\",\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::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\n","export const IPNftABI = [\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 \"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\": \"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\": \"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\": \"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 }\n] as const;\n\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","/**\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","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","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","/**\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 fallbacks after an app's configured primary (e.g. Alchemy) returns a\n * transient error. lava.build first — RPC spec 0.8.1, permissive CORS — so it\n * is safe for browser `baseFetch` use as well as server-side rotation.\n */\nexport const PUBLIC_RPC_FALLBACKS: readonly string[] = [\n \"https://rpc.starknet.lava.build\",\n \"https://starknet-mainnet.public.blastapi.io/rpc/v0_7\",\n \"https://free-rpc.nethermind.io/mainnet-juno/v0_7\",\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 { RpcProvider, cairo, constants, num } 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\nexport function getChainId(_config: ResolvedConfig): constants.StarknetChainId {\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","import {\n type AccountInterface,\n type Abi,\n Contract,\n cairo,\n shortString,\n type TypedData,\n} from \"starknet\";\nimport { encodeByteArray } from \"../utils/bytearray.js\";\nimport { IPMarketplaceABI } from \"../abis/index.js\";\nimport type { ResolvedConfig } from \"../config.js\";\nimport { DEFAULT_CURRENCY } from \"../constants.js\";\nimport type {\n CreateListingParams,\n MakeOfferParams,\n FulfillOrderParams,\n CancelOrderParams,\n CartItem,\n MintParams,\n CreateCollectionParams,\n TxResult,\n OrderDetails,\n} from \"../types/marketplace.js\";\nimport { stringifyBigInts } from \"../utils/bigint.js\";\nimport { parseAmount } from \"../utils/token.js\";\nimport {\n buildOrderTypedData,\n buildCancellationTypedData,\n} from \"./signing.js\";\nimport { MedialaneError } from \"./errors.js\";\nimport { buildFeeCall } from \"../fee/index.js\";\nimport {\n toSignatureArray,\n getChainId,\n getProvider,\n resolveToken,\n generateSalt,\n resolveRoyaltyMaxBps,\n START_TIME_BUFFER_SECS,\n} from \"./utils.js\";\n\nconst _contractCache = new WeakMap<ResolvedConfig, { contract: Contract }>();\n\nfunction makeContract(config: ResolvedConfig): { contract: Contract; provider: ReturnType<typeof getProvider> } {\n const cached = _contractCache.get(config);\n const provider = getProvider(config);\n if (cached) return { ...cached, provider };\n\n const contract = new Contract(\n IPMarketplaceABI as unknown as Abi,\n config.marketplaceContract,\n provider\n );\n _contractCache.set(config, { contract });\n return { contract, provider };\n}\n\n\n/**\n * Create a listing — offerer offers ERC721, asks for ERC20.\n */\nexport async function createListing(\n account: AccountInterface,\n params: CreateListingParams,\n config: ResolvedConfig\n): Promise<TxResult> {\n const { nftContract, tokenId, price, currency = DEFAULT_CURRENCY, durationSeconds } = params;\n const { contract, provider } = makeContract(config);\n\n const token = resolveToken(currency);\n const priceWei = parseAmount(price, token.decimals);\n\n const now = Math.floor(Date.now() / 1000);\n const startTime = now + START_TIME_BUFFER_SECS;\n const endTime = now + durationSeconds;\n\n const counter = (await contract.get_counter(account.address)).toString();\n const royaltyMaxBps = await resolveRoyaltyMaxBps(provider, nftContract, tokenId, params.royaltyMaxBps);\n\n const orderParams = {\n offerer: account.address,\n marketplace: config.marketplaceContract,\n offer: {\n item_type: \"ERC721\",\n token: nftContract,\n identifier_or_criteria: tokenId,\n amount: \"1\",\n },\n consideration: {\n item_type: \"ERC20\",\n token: token.address,\n identifier_or_criteria: \"0\",\n amount: priceWei,\n recipient: account.address,\n },\n royalty_max_bps: royaltyMaxBps,\n start_time: startTime.toString(),\n end_time: endTime.toString(),\n salt: generateSalt(),\n counter,\n };\n\n const chainId = getChainId(config);\n const typedData = stringifyBigInts(buildOrderTypedData(orderParams, chainId)) as TypedData;\n\n const signature = await account.signMessage(typedData);\n const signatureArray = toSignatureArray(signature);\n\n const registerPayload = stringifyBigInts({\n parameters: {\n ...orderParams,\n offer: {\n ...orderParams.offer,\n item_type: shortString.encodeShortString(orderParams.offer.item_type),\n },\n consideration: {\n ...orderParams.consideration,\n item_type: shortString.encodeShortString(orderParams.consideration.item_type),\n },\n },\n signature: signatureArray,\n }) as Record<string, unknown>;\n\n const tokenIdUint256 = cairo.uint256(tokenId);\n\n // Check approval status before adding approve call\n let isAlreadyApproved = false;\n try {\n const result = await provider.callContract({\n contractAddress: nftContract,\n entrypoint: \"get_approved\",\n calldata: [tokenIdUint256.low.toString(), tokenIdUint256.high.toString()],\n });\n isAlreadyApproved =\n BigInt(result[0]).toString() === BigInt(config.marketplaceContract).toString();\n } catch {\n // Cannot check — include approve to be safe\n }\n\n const registerCall = contract.populate(\"register_order\", [registerPayload]);\n const calls = isAlreadyApproved\n ? [registerCall]\n : [\n {\n contractAddress: nftContract,\n entrypoint: \"approve\",\n calldata: [\n config.marketplaceContract,\n tokenIdUint256.low.toString(),\n tokenIdUint256.high.toString(),\n ],\n },\n registerCall,\n ];\n\n try {\n const tx = await account.execute(calls);\n await provider.waitForTransaction(tx.transaction_hash);\n return { txHash: tx.transaction_hash };\n } catch (err) {\n throw new MedialaneError(\"Failed to create listing\", \"TRANSACTION_FAILED\", err);\n }\n}\n\n/**\n * Make an offer — offerer offers ERC20, asks for ERC721.\n */\nexport async function makeOffer(\n account: AccountInterface,\n params: MakeOfferParams,\n config: ResolvedConfig\n): Promise<TxResult> {\n const { nftContract, tokenId, price, currency = DEFAULT_CURRENCY, durationSeconds } = params;\n const { contract, provider } = makeContract(config);\n\n const token = resolveToken(currency);\n const priceWei = parseAmount(price, token.decimals);\n\n const now = Math.floor(Date.now() / 1000);\n const startTime = now + START_TIME_BUFFER_SECS;\n const endTime = now + durationSeconds;\n\n const counter = (await contract.get_counter(account.address)).toString();\n const royaltyMaxBps = await resolveRoyaltyMaxBps(provider, nftContract, tokenId, params.royaltyMaxBps);\n\n const orderParams = {\n offerer: account.address,\n marketplace: config.marketplaceContract,\n offer: {\n item_type: \"ERC20\",\n token: token.address,\n identifier_or_criteria: \"0\",\n amount: priceWei,\n },\n consideration: {\n item_type: \"ERC721\",\n token: nftContract,\n identifier_or_criteria: tokenId,\n amount: \"1\",\n recipient: account.address,\n },\n royalty_max_bps: royaltyMaxBps,\n start_time: startTime.toString(),\n end_time: endTime.toString(),\n salt: generateSalt(),\n counter,\n };\n\n const chainId = getChainId(config);\n const typedData = stringifyBigInts(buildOrderTypedData(orderParams, chainId)) as TypedData;\n\n const signature = await account.signMessage(typedData);\n const signatureArray = toSignatureArray(signature);\n\n const registerPayload = stringifyBigInts({\n parameters: {\n ...orderParams,\n offer: {\n ...orderParams.offer,\n item_type: shortString.encodeShortString(orderParams.offer.item_type),\n },\n consideration: {\n ...orderParams.consideration,\n item_type: shortString.encodeShortString(orderParams.consideration.item_type),\n },\n },\n signature: signatureArray,\n }) as Record<string, unknown>;\n\n const amountUint256 = cairo.uint256(priceWei);\n const approveCall = {\n contractAddress: token.address,\n entrypoint: \"approve\",\n calldata: [\n config.marketplaceContract,\n amountUint256.low.toString(),\n amountUint256.high.toString(),\n ],\n };\n\n const registerCall = contract.populate(\"register_order\", [registerPayload]);\n\n try {\n const tx = await account.execute([approveCall, registerCall]);\n await provider.waitForTransaction(tx.transaction_hash);\n return { txHash: tx.transaction_hash };\n } catch (err) {\n throw new MedialaneError(\"Failed to make offer\", \"TRANSACTION_FAILED\", err);\n }\n}\n\n/**\n * Fulfill (buy) a single order.\n * Approves the payment token then calls fulfill_order atomically.\n */\nexport async function fulfillOrder(\n account: AccountInterface,\n params: FulfillOrderParams,\n config: ResolvedConfig\n): Promise<TxResult> {\n const { orderHash, paymentToken, totalPrice } = params;\n const { contract, provider } = makeContract(config);\n\n // Fulfilment is unsigned — the caller IS the fulfiller (audit F3).\n const totalPriceU256 = cairo.uint256(totalPrice);\n const approveCall = {\n contractAddress: paymentToken,\n entrypoint: \"approve\",\n calldata: [\n config.marketplaceContract,\n totalPriceU256.low.toString(),\n totalPriceU256.high.toString(),\n ],\n };\n\n const fulfillCall = contract.populate(\"fulfill_order\", [orderHash]);\n\n const feeCall = buildFeeCall(\n { surface: \"marketplace\", token: paymentToken, grossAmount: BigInt(totalPrice) },\n config.feeConfig\n );\n const calls = feeCall\n ? [approveCall, fulfillCall, feeCall]\n : [approveCall, fulfillCall];\n\n try {\n const tx = await account.execute(calls);\n await provider.waitForTransaction(tx.transaction_hash);\n return { txHash: tx.transaction_hash };\n } catch (err) {\n throw new MedialaneError(\"Failed to fulfill order\", \"TRANSACTION_FAILED\", err);\n }\n}\n\n/**\n * Cancel an order.\n */\nexport async function cancelOrder(\n account: AccountInterface,\n params: CancelOrderParams,\n config: ResolvedConfig\n): Promise<TxResult> {\n const { orderHash } = params;\n const { contract, provider } = makeContract(config);\n\n const chainId = getChainId(config);\n\n const cancelParams = {\n order_hash: orderHash,\n offerer: account.address,\n };\n\n const typedData = stringifyBigInts(\n buildCancellationTypedData(cancelParams, chainId)\n ) as TypedData;\n\n const signature = await account.signMessage(typedData);\n const signatureArray = toSignatureArray(signature);\n\n const cancelRequest = stringifyBigInts({\n cancelation: cancelParams,\n signature: signatureArray,\n }) as Record<string, unknown>;\n\n const call = contract.populate(\"cancel_order\", [cancelRequest]);\n\n try {\n const tx = await account.execute(call);\n await provider.waitForTransaction(tx.transaction_hash);\n return { txHash: tx.transaction_hash };\n } catch (err) {\n throw new MedialaneError(\"Failed to cancel order\", \"TRANSACTION_FAILED\", err);\n }\n}\n\n\n/**\n * Mint an NFT into a Medialane collection.\n * Calls `mint(collection_id, recipient, token_uri)` — no SNIP-12 signing required.\n */\nexport async function mint(\n account: AccountInterface,\n params: MintParams,\n config: ResolvedConfig\n): Promise<TxResult> {\n const { collectionId, recipient, tokenUri, collectionContract } = params;\n const provider = getProvider(config);\n const contractAddress = collectionContract ?? config.collectionContract;\n\n const id = cairo.uint256(collectionId);\n const calldata = [id.low.toString(), id.high.toString(), recipient, ...encodeByteArray(tokenUri)];\n\n try {\n const tx = await account.execute([{ contractAddress, entrypoint: \"mint\", calldata }]);\n await provider.waitForTransaction(tx.transaction_hash);\n return { txHash: tx.transaction_hash };\n } catch (err) {\n throw new MedialaneError(\"Failed to mint NFT\", \"TRANSACTION_FAILED\", err);\n }\n}\n\n/**\n * Create a new collection on the Medialane collection registry.\n * Calls `create_collection(name, symbol, base_uri)` — no SNIP-12 signing required.\n * Returns the transaction hash; listen for the CollectionCreated event to get the collection_id.\n */\nexport async function createCollection(\n account: AccountInterface,\n params: CreateCollectionParams,\n config: ResolvedConfig\n): Promise<TxResult> {\n const { name, symbol, baseUri, collectionContract } = params;\n const provider = getProvider(config);\n const contractAddress = collectionContract ?? config.collectionContract;\n\n const calldata = [\n ...encodeByteArray(name),\n ...encodeByteArray(symbol),\n ...encodeByteArray(baseUri),\n ];\n\n try {\n const tx = await account.execute([{ contractAddress, entrypoint: \"create_collection\", calldata }]);\n await provider.waitForTransaction(tx.transaction_hash);\n return { txHash: tx.transaction_hash };\n } catch (err) {\n throw new MedialaneError(\"Failed to create collection\", \"TRANSACTION_FAILED\", err);\n }\n}\n\n/**\n * Checkout a cart of multiple orders in a single atomic multicall.\n * Prompts wallet signatures sequentially (one per item), then executes\n * all approve + fulfill calls atomically.\n */\nexport async function checkoutCart(\n account: AccountInterface,\n items: CartItem[],\n config: ResolvedConfig\n): Promise<TxResult> {\n if (items.length === 0) throw new MedialaneError(\"Cart is empty\", \"INVALID_PARAMS\");\n\n const { contract, provider } = makeContract(config);\n\n // Group total ERC20 approval amounts by token\n const tokenTotals = new Map<string, bigint>();\n for (const item of items) {\n const prev = tokenTotals.get(item.considerationToken) ?? 0n;\n tokenTotals.set(item.considerationToken, prev + BigInt(item.considerationAmount));\n }\n\n const approveCalls = Array.from(tokenTotals.entries()).map(([tokenAddr, totalWei]) => {\n const amount = cairo.uint256(totalWei.toString());\n return {\n contractAddress: tokenAddr,\n entrypoint: \"approve\",\n calldata: [\n config.marketplaceContract,\n amount.low.toString(),\n amount.high.toString(),\n ],\n };\n });\n\n // Fulfilment is unsigned now — each fulfill is just a call; no per-item signing.\n const fulfillCalls = items.map((item) =>\n contract.populate(\"fulfill_order\", [item.orderHash]),\n );\n\n const feeCalls = Array.from(tokenTotals.entries())\n .map(([tokenAddr, totalWei]) =>\n buildFeeCall(\n { surface: \"marketplace\", token: tokenAddr, grossAmount: totalWei },\n config.feeConfig\n )\n )\n .filter((c): c is NonNullable<typeof c> => c !== null);\n\n try {\n const tx = await account.execute([...approveCalls, ...fulfillCalls, ...feeCalls]);\n await provider.waitForTransaction(tx.transaction_hash);\n return { txHash: tx.transaction_hash };\n } catch (err) {\n throw new MedialaneError(\"Cart checkout failed\", \"TRANSACTION_FAILED\", err);\n }\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\n/** Bulk-cancel: bump the caller's counter, invalidating all their open orders. */\nexport async function incrementCounter(\n account: AccountInterface,\n config: ResolvedConfig\n): Promise<TxResult> {\n const { contract, provider } = makeContract(config);\n const call = contract.populate(\"increment_counter\", []);\n try {\n const tx = await account.execute(call);\n await provider.waitForTransaction(tx.transaction_hash);\n return { txHash: tx.transaction_hash };\n } catch (err) {\n throw new MedialaneError(\"Failed to increment counter\", \"TRANSACTION_FAILED\", err);\n }\n}\n","import { type AccountInterface, type TypedData, constants } from \"starknet\";\nimport type { ResolvedConfig } from \"../config.js\";\nimport type {\n CreateListingParams,\n MakeOfferParams,\n FulfillOrderParams,\n CancelOrderParams,\n CartItem,\n MintParams,\n CreateCollectionParams,\n TxResult,\n OrderDetails,\n} from \"../types/marketplace.js\";\nimport {\n buildOrderTypedData,\n buildCancellationTypedData,\n} from \"./signing.js\";\nimport {\n createListing,\n makeOffer,\n fulfillOrder,\n cancelOrder,\n checkoutCart,\n mint,\n createCollection,\n getOrderDetails,\n getCounter,\n incrementCounter,\n} from \"./orders.js\";\n\nexport { MedialaneError } from \"./errors.js\";\n\nexport class MarketplaceModule {\n constructor(private readonly config: ResolvedConfig) {}\n\n // ─── Writes ───────────────────────────────────────────────────────────────\n\n createListing(account: AccountInterface, params: CreateListingParams): Promise<TxResult> {\n return createListing(account, params, this.config);\n }\n\n makeOffer(account: AccountInterface, params: MakeOfferParams): Promise<TxResult> {\n return makeOffer(account, params, this.config);\n }\n\n fulfillOrder(account: AccountInterface, params: FulfillOrderParams): Promise<TxResult> {\n return fulfillOrder(account, params, this.config);\n }\n\n cancelOrder(account: AccountInterface, params: CancelOrderParams): Promise<TxResult> {\n return cancelOrder(account, params, this.config);\n }\n\n checkoutCart(account: AccountInterface, items: CartItem[]): Promise<TxResult> {\n return checkoutCart(account, items, this.config);\n }\n\n mint(account: AccountInterface, params: MintParams): Promise<TxResult> {\n return mint(account, params, this.config);\n }\n\n createCollection(account: AccountInterface, params: CreateCollectionParams): Promise<TxResult> {\n return createCollection(account, params, this.config);\n }\n\n /** Bulk-cancel: bump the caller's counter, invalidating all their open orders. */\n incrementCounter(account: AccountInterface): Promise<TxResult> {\n return incrementCounter(account, this.config);\n }\n\n // ─── View calls ───────────────────────────────────────────────────────────\n\n getOrderDetails(orderHash: string): Promise<OrderDetails> {\n return getOrderDetails(orderHash, this.config);\n }\n\n getCounter(address: string): Promise<bigint> {\n return getCounter(address, this.config);\n }\n\n // ─── Typed data builders (for ChipiPay / custom signing flows) ───────────\n\n buildListingTypedData(\n params: Record<string, unknown>,\n chainId: constants.StarknetChainId\n ): TypedData {\n return buildOrderTypedData(params, chainId);\n }\n\n buildCancellationTypedData(\n params: Record<string, unknown>,\n chainId: constants.StarknetChainId\n ): TypedData {\n return buildCancellationTypedData(params, chainId);\n }\n}\n","import {\n type AccountInterface,\n type Abi,\n type TypedData,\n Contract,\n cairo,\n shortString,\n} from \"starknet\";\nimport { Medialane1155ABI } from \"../abis/index.js\";\nimport type { ResolvedConfig } from \"../config.js\";\nimport { DEFAULT_CURRENCY } from \"../constants.js\";\nimport { MedialaneError } from \"../marketplace/errors.js\";\nimport type {\n CreateListing1155Params,\n MakeOffer1155Params,\n FulfillOrder1155Params,\n CancelOrder1155Params,\n CartItem,\n TxResult,\n OrderDetails,\n} from \"../types/marketplace.js\";\nimport { stringifyBigInts } from \"../utils/bigint.js\";\nimport { parseAmount } from \"../utils/token.js\";\nimport {\n build1155OrderTypedData,\n build1155CancellationTypedData,\n} from \"../marketplace/signing.js\";\nimport {\n toSignatureArray,\n getChainId,\n getProvider,\n resolveToken,\n generateSalt,\n resolveRoyaltyMaxBps,\n START_TIME_BUFFER_SECS,\n} 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 const provider = getProvider(config);\n c = new Contract(\n Medialane1155ABI as unknown as Abi,\n config.marketplace1155Contract,\n provider\n );\n _contractCache.set(config, c);\n }\n return c;\n}\n\n/**\n * Create an ERC-1155 listing on Medialane1155.\n *\n * The offerer signs `OrderParameters` off-chain via SNIP-12, then the signed\n * order is submitted to `register_order`. The ERC-1155 token approval\n * (`set_approval_for_all`) must be granted before the buyer calls `fulfill_order`.\n */\nexport async function createListing1155(\n account: AccountInterface,\n params: CreateListing1155Params,\n config: ResolvedConfig\n): Promise<TxResult> {\n const {\n nftContract,\n tokenId,\n amount,\n pricePerUnit,\n currency = DEFAULT_CURRENCY,\n durationSeconds,\n } = params;\n\n const contract = getContract(config);\n const provider = getProvider(config);\n\n const token = resolveToken(currency);\n const priceWei = parseAmount(pricePerUnit, token.decimals);\n\n const now = Math.floor(Date.now() / 1000);\n const endTime = now + durationSeconds;\n const chainId = getChainId(config);\n\n const counter = (await contract.get_counter(account.address)).toString();\n const royaltyMaxBps = await resolveRoyaltyMaxBps(provider, nftContract, tokenId, params.royaltyMaxBps);\n\n const orderParams = {\n offerer: account.address,\n marketplace: config.marketplace1155Contract,\n offer: {\n item_type: \"ERC1155\",\n token: nftContract,\n identifier_or_criteria: tokenId,\n amount, // ERC-1155 leg amount = unit quantity\n },\n consideration: {\n item_type: \"ERC20\",\n token: token.address,\n identifier_or_criteria: \"0\",\n amount: priceWei, // payment leg amount = price PER UNIT\n recipient: account.address,\n },\n royalty_max_bps: royaltyMaxBps,\n start_time: (now + START_TIME_BUFFER_SECS).toString(),\n end_time: endTime.toString(),\n salt: generateSalt(),\n counter,\n };\n\n const typedData = stringifyBigInts(\n build1155OrderTypedData(orderParams, chainId)\n ) as TypedData;\n\n const signature = await account.signMessage(typedData);\n const signatureArray = toSignatureArray(signature);\n\n // item_type must be shortString encoded for calldata (felt252), but left as plain\n // string in orderParams used for SNIP-12 signing (typed data uses shortstring type).\n const orderPayload = stringifyBigInts({\n parameters: {\n ...orderParams,\n offer: {\n ...orderParams.offer,\n item_type: shortString.encodeShortString(orderParams.offer.item_type),\n },\n consideration: {\n ...orderParams.consideration,\n item_type: shortString.encodeShortString(orderParams.consideration.item_type),\n },\n },\n signature: signatureArray,\n }) as Record<string, unknown>;\n\n // Check if the marketplace is already approved to transfer the ERC-1155 tokens.\n let isApproved = false;\n try {\n const result = await provider.callContract({\n contractAddress: nftContract,\n entrypoint: \"is_approved_for_all\",\n calldata: [account.address, config.marketplace1155Contract],\n });\n // Returns a felt252: 1 = true, 0 = false\n isApproved = BigInt(result[0]) === 1n;\n } catch {\n // Cannot check — include approval call to be safe\n }\n\n const registerCall = contract.populate(\"register_order\", [orderPayload]);\n const calls = isApproved\n ? [registerCall]\n : [\n {\n contractAddress: nftContract,\n entrypoint: \"set_approval_for_all\",\n calldata: [config.marketplace1155Contract, \"1\"],\n },\n registerCall,\n ];\n\n try {\n const tx = await account.execute(calls);\n await provider.waitForTransaction(tx.transaction_hash);\n return { txHash: tx.transaction_hash };\n } catch (err) {\n throw new MedialaneError(\"Failed to create ERC-1155 listing\", \"TRANSACTION_FAILED\", err);\n }\n}\n\n/**\n * Fulfill (buy) `quantity` units of an ERC-1155 order. Unsigned — the caller\n * IS the fulfiller (audit F3). The fulfiller must have approved the Medialane1155\n * contract to spend `pricePerUnit × quantity` of the payment token before calling.\n */\nexport async function fulfillOrder1155(\n account: AccountInterface,\n params: FulfillOrder1155Params,\n config: ResolvedConfig\n): Promise<TxResult> {\n const { orderHash, paymentToken, totalPrice, quantity = \"1\" } = params;\n\n const contract = getContract(config);\n const provider = getProvider(config);\n\n const totalPriceU256 = cairo.uint256(totalPrice);\n const approveCall = {\n contractAddress: paymentToken,\n entrypoint: \"approve\",\n calldata: [\n config.marketplace1155Contract,\n totalPriceU256.low.toString(),\n totalPriceU256.high.toString(),\n ],\n };\n\n const fulfillCall = contract.populate(\"fulfill_order\", [orderHash, quantity]);\n\n try {\n const tx = await account.execute([approveCall, fulfillCall]);\n await provider.waitForTransaction(tx.transaction_hash);\n return { txHash: tx.transaction_hash };\n } catch (err) {\n throw new MedialaneError(\"Failed to fulfill ERC-1155 order\", \"TRANSACTION_FAILED\", err);\n }\n}\n\n/**\n * Cancel an ERC-1155 order. Only the original offerer can cancel: the offerer\n * signs `OrderCancellation` off-chain (no nonce), submitted to `cancel_order`.\n */\nexport async function cancelOrder1155(\n account: AccountInterface,\n params: CancelOrder1155Params,\n config: ResolvedConfig\n): Promise<TxResult> {\n const { orderHash } = params;\n\n const contract = getContract(config);\n const provider = getProvider(config);\n const chainId = getChainId(config);\n\n const cancelParams = {\n order_hash: orderHash,\n offerer: account.address,\n };\n\n const typedData = stringifyBigInts(\n build1155CancellationTypedData(cancelParams, chainId)\n ) as TypedData;\n\n const signature = await account.signMessage(typedData);\n const signatureArray = toSignatureArray(signature);\n\n const cancelPayload = stringifyBigInts({\n cancelation: cancelParams,\n signature: signatureArray,\n }) as Record<string, unknown>;\n\n const cancelCall = contract.populate(\"cancel_order\", [cancelPayload]);\n\n try {\n const tx = await account.execute(cancelCall);\n await provider.waitForTransaction(tx.transaction_hash);\n return { txHash: tx.transaction_hash };\n } catch (err) {\n throw new MedialaneError(\"Failed to cancel ERC-1155 order\", \"TRANSACTION_FAILED\", err);\n }\n}\n\n/**\n * Make an offer (bid) on an ERC-1155 token. The offerer offers ERC-20 and asks\n * for the specified ERC-1155 quantity. Signs `OrderParameters` off-chain via\n * SNIP-12, approves the ERC-20 spend, then submits to `register_order`.\n */\nexport async function makeOffer1155(\n account: AccountInterface,\n params: MakeOffer1155Params,\n config: ResolvedConfig\n): Promise<TxResult> {\n const {\n nftContract,\n tokenId,\n amount,\n price,\n currency = DEFAULT_CURRENCY,\n durationSeconds,\n } = params;\n\n const contract = getContract(config);\n const provider = getProvider(config);\n const chainId = getChainId(config);\n\n const token = resolveToken(currency);\n const priceWei = parseAmount(price, token.decimals);\n\n const now = Math.floor(Date.now() / 1000);\n const endTime = now + durationSeconds;\n\n const counter = (await contract.get_counter(account.address)).toString();\n const royaltyMaxBps = await resolveRoyaltyMaxBps(provider, nftContract, tokenId, params.royaltyMaxBps);\n\n const orderParams = {\n offerer: account.address,\n marketplace: config.marketplace1155Contract,\n offer: {\n item_type: \"ERC20\",\n token: token.address,\n identifier_or_criteria: \"0\",\n amount: priceWei, // price PER UNIT\n },\n consideration: {\n item_type: \"ERC1155\",\n token: nftContract,\n identifier_or_criteria: tokenId,\n amount, // unit quantity\n recipient: account.address,\n },\n royalty_max_bps: royaltyMaxBps,\n start_time: (now + START_TIME_BUFFER_SECS).toString(),\n end_time: endTime.toString(),\n salt: generateSalt(),\n counter,\n };\n\n const typedData = stringifyBigInts(\n build1155OrderTypedData(orderParams, chainId)\n ) as TypedData;\n\n const signature = await account.signMessage(typedData);\n const signatureArray = toSignatureArray(signature);\n\n const registerPayload = stringifyBigInts({\n parameters: {\n ...orderParams,\n offer: {\n ...orderParams.offer,\n item_type: shortString.encodeShortString(orderParams.offer.item_type),\n },\n consideration: {\n ...orderParams.consideration,\n item_type: shortString.encodeShortString(orderParams.consideration.item_type),\n },\n },\n signature: signatureArray,\n }) as Record<string, unknown>;\n\n // Bid pays per-unit price × quantity total — approve the full amount.\n const totalWei = BigInt(priceWei) * BigInt(amount);\n const amountU256 = cairo.uint256(totalWei.toString());\n const approveCall = {\n contractAddress: token.address,\n entrypoint: \"approve\",\n calldata: [\n config.marketplace1155Contract,\n amountU256.low.toString(),\n amountU256.high.toString(),\n ],\n };\n\n const registerCall = contract.populate(\"register_order\", [registerPayload]);\n\n try {\n const tx = await account.execute([approveCall, registerCall]);\n await provider.waitForTransaction(tx.transaction_hash);\n return { txHash: tx.transaction_hash };\n } catch (err) {\n throw new MedialaneError(\"Failed to make ERC-1155 offer\", \"TRANSACTION_FAILED\", err);\n }\n}\n\n/**\n * Checkout a cart of ERC-1155 orders in a single atomic multicall. Fulfilment\n * is unsigned now — group ERC-20 approvals by token, then one `fulfill_order`\n * call per item with its quantity.\n */\nexport async function checkoutCart1155(\n account: AccountInterface,\n items: CartItem[],\n config: ResolvedConfig\n): Promise<TxResult> {\n if (items.length === 0) throw new MedialaneError(\"Cart is empty\", \"INVALID_PARAMS\");\n\n const contract = getContract(config);\n const provider = getProvider(config);\n\n const tokenTotals = new Map<string, bigint>();\n for (const item of items) {\n const prev = tokenTotals.get(item.considerationToken) ?? 0n;\n tokenTotals.set(item.considerationToken, prev + BigInt(item.considerationAmount));\n }\n\n const approveCalls = Array.from(tokenTotals.entries()).map(([tokenAddr, totalWei]) => {\n const amount = cairo.uint256(totalWei.toString());\n return {\n contractAddress: tokenAddr,\n entrypoint: \"approve\",\n calldata: [\n config.marketplace1155Contract,\n amount.low.toString(),\n amount.high.toString(),\n ],\n };\n });\n\n const fulfillCalls = items.map((item) =>\n contract.populate(\"fulfill_order\", [item.orderHash, item.quantity ?? \"1\"]),\n );\n\n try {\n const tx = await account.execute([...approveCalls, ...fulfillCalls]);\n await provider.waitForTransaction(tx.transaction_hash);\n return { txHash: tx.transaction_hash };\n } catch (err) {\n throw new MedialaneError(\"ERC-1155 cart checkout failed\", \"TRANSACTION_FAILED\", err);\n }\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\n/** Bulk-cancel on the 1155 venue: bump the caller's counter. */\nexport async function incrementCounter1155(\n account: AccountInterface,\n config: ResolvedConfig\n): Promise<TxResult> {\n const contract = getContract(config);\n const provider = getProvider(config);\n const call = contract.populate(\"increment_counter\", []);\n try {\n const tx = await account.execute(call);\n await provider.waitForTransaction(tx.transaction_hash);\n return { txHash: tx.transaction_hash };\n } catch (err) {\n throw new MedialaneError(\"Failed to increment counter (1155)\", \"TRANSACTION_FAILED\", err);\n }\n}\n","import { type AccountInterface, type TypedData, constants } from \"starknet\";\nimport type { ResolvedConfig } from \"../config.js\";\nimport type {\n CreateListing1155Params,\n MakeOffer1155Params,\n FulfillOrder1155Params,\n CancelOrder1155Params,\n CartItem,\n TxResult,\n OrderDetails,\n} from \"../types/marketplace.js\";\nimport {\n build1155OrderTypedData,\n build1155CancellationTypedData,\n} from \"../marketplace/signing.js\";\nimport {\n createListing1155,\n makeOffer1155,\n fulfillOrder1155,\n cancelOrder1155,\n checkoutCart1155,\n getOrderDetails1155,\n getCounter1155,\n incrementCounter1155,\n} from \"./orders.js\";\n\nexport class Medialane1155Module {\n constructor(private readonly config: ResolvedConfig) {}\n\n // ─── Writes ───────────────────────────────────────────────────────────────\n\n /**\n * Create an ERC-1155 sell listing.\n * Optionally grants `set_approval_for_all` if not already approved.\n */\n createListing(account: AccountInterface, params: CreateListing1155Params): Promise<TxResult> {\n return createListing1155(account, params, this.config);\n }\n\n /**\n * Make an offer (bid) on an ERC-1155 token.\n * Approves the ERC-20 spend then calls `register_order` atomically.\n */\n makeOffer(account: AccountInterface, params: MakeOffer1155Params): Promise<TxResult> {\n return makeOffer1155(account, params, this.config);\n }\n\n /**\n * Fulfill (buy) an ERC-1155 listing.\n * Approves the payment token then calls `fulfill_order` atomically.\n */\n fulfillOrder(account: AccountInterface, params: FulfillOrder1155Params): Promise<TxResult> {\n return fulfillOrder1155(account, params, this.config);\n }\n\n /**\n * Cancel an ERC-1155 listing (offerer only).\n */\n cancelOrder(account: AccountInterface, params: CancelOrder1155Params): Promise<TxResult> {\n return cancelOrder1155(account, params, this.config);\n }\n\n /**\n * Checkout a cart of ERC-1155 orders atomically.\n * Signs one fulfillment per item (with quantity), sums ERC-20 approvals by token.\n */\n checkoutCart(account: AccountInterface, items: CartItem[]): Promise<TxResult> {\n return checkoutCart1155(account, items, this.config);\n }\n\n /** Bulk-cancel on the 1155 venue: bump the caller's counter. */\n incrementCounter(account: AccountInterface): Promise<TxResult> {\n return incrementCounter1155(account, this.config);\n }\n\n // ─── View calls ───────────────────────────────────────────────────────────\n\n getOrderDetails(orderHash: string): Promise<OrderDetails> {\n return getOrderDetails1155(orderHash, this.config);\n }\n\n getCounter(address: string): Promise<bigint> {\n return getCounter1155(address, this.config);\n }\n\n // ─── Typed data builders (for ChipiPay / custom signing flows) ───────────\n\n buildListingTypedData(\n params: Record<string, unknown>,\n chainId: constants.StarknetChainId\n ): TypedData {\n return build1155OrderTypedData(params, chainId);\n }\n\n buildCancellationTypedData(\n params: Record<string, unknown>,\n chainId: constants.StarknetChainId\n ): TypedData {\n return build1155CancellationTypedData(params, chainId);\n }\n}\n","import { num } from \"starknet\";\n\n/**\n * Normalize a Starknet address to a 0x-prefixed 64-character lowercase hex\n * string. Validates the input by routing through `BigInt(...)` — non-numeric\n * input throws `Invalid Starknet address: \"<input>\"`.\n *\n * The single source of truth for address normalization across Medialane.\n * `medialane-backend` re-exports this; do not maintain a parallel copy.\n */\nexport function normalizeAddress(address: string): string {\n try {\n const hex = num.toHex(BigInt(address));\n return \"0x\" + hex.slice(2).padStart(64, \"0\").toLowerCase();\n } catch {\n throw new Error(`Invalid Starknet address: \"${address}\"`);\n }\n}\n\n/**\n * Normalize a Starknet felt/hash (tx hash, order hash, etc.) to a 0x-prefixed\n * 64-character lowercase hex string. Same shape as `normalizeAddress` — kept\n * as a separate name so the *intent* of each call site is explicit.\n *\n * Starknet RPCs and wallets may omit leading zeroes for the same value;\n * database uniqueness must not treat those textual variants as different\n * transactions.\n */\nexport function normalizeHash(hash: string): string {\n try {\n const hex = num.toHex(BigInt(hash));\n return \"0x\" + hex.slice(2).padStart(64, \"0\").toLowerCase();\n } catch {\n throw new Error(`Invalid Starknet hash: \"${hash}\"`);\n }\n}\n\n/**\n * Shorten an address to \"0x1234...abcd\" format.\n */\nexport function shortenAddress(address: string, chars = 4): string {\n const norm = normalizeAddress(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 { 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 ApiCollectionProfile,\n ApiCreatorProfile,\n ApiCreatorListResult,\n ApiCollectionClaim,\n ApiCollectionSlugClaim,\n ApiUserWallet,\n ApiWalletType,\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 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 ) {\n this.baseHeaders = apiKey ? { \"x-api-key\": apiKey } : {};\n this.retryOptions = retryOptions;\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\", normalizeAddress(query.offerer));\n if (query.minPrice) params.set(\"minPrice\", query.minPrice);\n if (query.maxPrice) params.set(\"maxPrice\", query.maxPrice);\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/${normalizeAddress(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/${normalizeAddress(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/${normalizeAddress(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 ): 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 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: normalizeAddress(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/${normalizeAddress(contract)}`);\n }\n\n getCollectionTokens(\n contract: string,\n page = 1,\n limit = 20\n ): Promise<ApiResponse<ApiToken[]>> {\n return this.get<ApiResponse<ApiToken[]>>(\n `/v1/collections/${normalizeAddress(contract)}/tokens?page=${page}&limit=${limit}`\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 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/${normalizeAddress(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/${normalizeAddress(contract)}/${tokenId}/comments${qs ? `?${qs}` : \"\"}`\n );\n }\n\n // ─── Search ────────────────────────────────────────────────────────────────\n\n search(q: string, limit = 10): Promise<ApiResponse<ApiSearchResult> & { query: string }> {\n const params = new URLSearchParams({ q, limit: String(limit) });\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/${normalizeAddress(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/${normalizeAddress(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/${normalizeAddress(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/${normalizeAddress(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/${normalizeAddress(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 walletType?: ApiWalletType;\n appSource?: ApiAppSource;\n chain?: ApiChain;\n }): Promise<{\n accountId: string;\n publicId: string;\n walletAddress: string;\n chain: string;\n // Free-form provider label of the wallet identity (\"braavos\", \"chipipay\",\n // \"unknown\", …) — the backend folds walletType into Identity.provider. No\n // longer the ApiWalletType enum.\n walletType: 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 walletType?: ApiWalletType;\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/${normalizeAddress(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/${normalizeAddress(collection)}/${normalizeAddress(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(normalizeAddress).join(\",\") });\n const res = await this.get<{ data: PopBatchEligibilityItem[] }>(\n `/v1/pop/eligibility/${normalizeAddress(collection)}?${params}`\n );\n return res.data;\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/${normalizeAddress(collection)}/${normalizeAddress(wallet)}`\n );\n return res.data;\n }\n}\n","import { Contract, type AccountInterface } from \"starknet\";\nimport type { ResolvedConfig } from \"../config.js\";\nimport { normalizeAddress } from \"../utils/address.js\";\nimport { POPCollectionABI, POPFactoryABI } from \"../abis/index.js\";\nimport { POP_FACTORY_CONTRACT_MAINNET } from \"../constants.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 = POP_FACTORY_CONTRACT_MAINNET;\n }\n\n private _collection(address: string, account: AccountInterface) {\n return new Contract(POPCollectionABI as any, normalizeAddress(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 = new Contract(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 { Contract, type AccountInterface } from \"starknet\";\nimport type { ResolvedConfig } from \"../config.js\";\nimport { normalizeAddress } from \"../utils/address.js\";\nimport { DropCollectionABI, DropFactoryABI } from \"../abis/index.js\";\nimport { DROP_FACTORY_CONTRACT_MAINNET } from \"../constants.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 = DROP_FACTORY_CONTRACT_MAINNET;\n this.config = config;\n }\n\n private _collection(address: string, account: AccountInterface) {\n return new Contract(DropCollectionABI as any, normalizeAddress(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 = new Contract(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 { Contract, type AccountInterface } from \"starknet\";\nimport type { ResolvedConfig } from \"../config.js\";\nimport { normalizeAddress } from \"../utils/address.js\";\nimport { IPCollection1155FactoryABI, IPCollection1155ABI } from \"../abis/index.js\";\nimport { COLLECTION_1155_CONTRACT_MAINNET } from \"../constants.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 MintItemParams {\n /** ERC-1155 collection contract address */\n collection: string;\n /** Recipient wallet address */\n to: string;\n /** Token ID (u256 — use a numeric string or bigint) */\n tokenId: bigint | string;\n /** Number of copies to mint */\n value: bigint | string;\n /**\n * Metadata URI — must start with `ipfs://` or `ar://`.\n * Immutable: validated and stored on first mint of each token_id.\n */\n tokenUri: string;\n}\n\nexport interface BatchMintItemParams {\n /** ERC-1155 collection contract address */\n collection: string;\n /** Recipient wallet address */\n to: string;\n items: Array<{\n tokenId: bigint | string;\n value: bigint | string;\n tokenUri: string;\n }>;\n}\n\nexport class ERC1155CollectionService {\n private readonly factoryAddress: string;\n\n constructor(config: ResolvedConfig) {\n this.factoryAddress = config.collection1155Contract ?? COLLECTION_1155_CONTRACT_MAINNET;\n }\n\n private _factory(account: AccountInterface) {\n return new Contract(\n IPCollection1155FactoryABI as any,\n normalizeAddress(this.factoryAddress),\n account as any\n );\n }\n\n private _collection(address: string, account: AccountInterface) {\n return new Contract(\n IPCollection1155ABI as any,\n normalizeAddress(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 single token into an existing ERC-1155 collection.\n * Caller must be the collection owner.\n * The `tokenUri` is immutable — validated and stored on the first mint only.\n */\n async mintItem(\n account: AccountInterface,\n params: MintItemParams\n ): Promise<TxResult> {\n const collection = this._collection(params.collection, account);\n const call = collection.populate(\"mint_item\", [\n params.to,\n BigInt(params.tokenId),\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 token IDs into an existing ERC-1155 collection.\n * All items go to the same `to` address.\n * Caller must be the collection owner.\n */\n async batchMintItem(\n account: AccountInterface,\n params: BatchMintItemParams\n ): Promise<TxResult> {\n const collection = this._collection(params.collection, account);\n const tokenIds = params.items.map((i) => BigInt(i.tokenId));\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_item\", [\n params.to,\n tokenIds,\n values,\n tokenUris,\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 { Contract, RpcProvider, uint256, type AccountInterface, type Call, type ProviderInterface } from \"starknet\";\nimport type { ResolvedConfig } from \"../config.js\";\nimport { CreatorCoinFactoryABI } from \"../abis/index.js\";\nimport { CREATOR_COIN_FACTORY_CONTRACT_MAINNET, EKUBO_CORE_MAINNET } from \"../constants.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(\"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: EKUBO_CORE_MAINNET,\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/**\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 = CREATOR_COIN_FACTORY_CONTRACT_MAINNET;\n this.config = config;\n }\n\n private _factory(account: AccountInterface) {\n return new Contract(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 salt = params.salt ?? BigInt(\"0x\" + Date.now().toString(16));\n const call = this._factory(account).populate(\"create_creator_coin\", [\n params.owner,\n params.name,\n params.symbol,\n BigInt(params.initialSupply),\n BigInt(salt),\n ]);\n const res = await account.execute([call]);\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 ek = params.ekubo ?? VALIDATED_EKUBO_PARAMS;\n const factory = this._factory(account);\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: [this.factoryAddress, amt.low, amt.high],\n });\n }\n calls.push(factory.populate(\"launch_on_ekubo\", [launchParameters, ekuboParameters]));\n\n const res = await account.execute(calls);\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 { type MedialaneConfig, resolveConfig, type ResolvedConfig } from \"./config.js\";\nimport { MarketplaceModule } from \"./marketplace/index.js\";\nimport { Medialane1155Module } from \"./marketplace1155/index.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\";\n\nexport class MedialaneClient {\n /** On-chain marketplace interactions for ERC-721 assets (create listing, fulfill order, etc.) */\n readonly marketplace: MarketplaceModule;\n\n /** On-chain marketplace interactions for ERC-1155 assets (Medialane1155 contract). */\n readonly marketplace1155: Medialane1155Module;\n\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 };\n\n private readonly config: ResolvedConfig;\n\n constructor(rawConfig: MedialaneConfig = {}) {\n this.config = resolveConfig(rawConfig);\n\n this.marketplace = new MarketplaceModule(this.config);\n this.marketplace1155 = new Medialane1155Module(this.config);\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 };\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);\n }\n }\n\n get network() {\n return this.config.network;\n }\n\n get rpcUrl() {\n return this.config.rpcUrl;\n }\n\n get marketplaceContract() {\n return this.config.marketplaceContract;\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\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\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?: {\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\nexport interface ApiOrdersQuery {\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. */\n standard: \"ERC721\" | \"ERC1155\" | \"UNKNOWN\";\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// ─── 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 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 /** 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 ApiWalletType =\n | \"ARGENT\"\n | \"BRAAVOS\"\n | \"CARTRIDGE\"\n | \"PRIVY\"\n | \"CHIPIPAY\"\n | \"INJECTED\"\n | \"UNKNOWN\";\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","import type { ServiceDefinition, ServiceCapability } from \"../types/api.js\";\nimport {\n COLLECTION_721_CONTRACT_MAINNET,\n COLLECTION_721_START_BLOCK_MAINNET,\n COLLECTION_1155_CONTRACT_MAINNET,\n COLLECTION_1155_CLASS_HASH_MAINNET,\n COLLECTION_1155_START_BLOCK_MAINNET,\n POP_FACTORY_CONTRACT_MAINNET,\n POP_COLLECTION_CLASS_HASH_MAINNET,\n DROP_FACTORY_CONTRACT_MAINNET,\n DROP_COLLECTION_CLASS_HASH_MAINNET,\n MARKETPLACE_721_CONTRACT_MAINNET,\n MARKETPLACE_721_CLASS_HASH_MAINNET,\n MARKETPLACE_721_START_BLOCK_MAINNET,\n MARKETPLACE_1155_CONTRACT_MAINNET,\n MARKETPLACE_1155_CLASS_HASH_MAINNET,\n MARKETPLACE_1155_START_BLOCK_MAINNET,\n CREATOR_COIN_FACTORY_CONTRACT_MAINNET,\n CREATOR_COIN_FACTORY_CLASS_HASH_MAINNET,\n CREATOR_COIN_START_BLOCK_MAINNET,\n} from \"../constants.js\";\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 in year 2 (08-dao-governance §IV).\n *\n * Year-2 forward-compat: cross-account identity uses the future `AccountID`\n * contract (07-identity-model §IV) — no field here yet, intentionally.\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 factoryAddress: COLLECTION_721_CONTRACT_MAINNET,\n startBlock: COLLECTION_721_START_BLOCK_MAINNET,\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.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 factoryAddress: COLLECTION_1155_CONTRACT_MAINNET,\n classHash: COLLECTION_1155_CLASS_HASH_MAINNET,\n startBlock: COLLECTION_1155_START_BLOCK_MAINNET,\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 factoryAddress: POP_FACTORY_CONTRACT_MAINNET,\n classHash: POP_COLLECTION_CLASS_HASH_MAINNET,\n },\n uiVariant: \"pop\",\n capabilities: [\"claim\", \"transfer\"],\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 factoryAddress: DROP_FACTORY_CONTRACT_MAINNET,\n classHash: DROP_COLLECTION_CLASS_HASH_MAINNET,\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 \"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 factoryAddress: CREATOR_COIN_FACTORY_CONTRACT_MAINNET,\n classHash: CREATOR_COIN_FACTORY_CLASS_HASH_MAINNET,\n startBlock: CREATOR_COIN_START_BLOCK_MAINNET,\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 factoryAddress: MARKETPLACE_721_CONTRACT_MAINNET,\n classHash: MARKETPLACE_721_CLASS_HASH_MAINNET,\n startBlock: MARKETPLACE_721_START_BLOCK_MAINNET,\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 factoryAddress: MARKETPLACE_1155_CONTRACT_MAINNET,\n classHash: MARKETPLACE_1155_CLASS_HASH_MAINNET,\n startBlock: MARKETPLACE_1155_START_BLOCK_MAINNET,\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"]}
|
|
1
|
+
{"version":3,"sources":["../src/constants.ts","../src/fee/config.ts","../src/fee/build-fee-call.ts","../src/config.ts","../src/marketplace/signing.ts","../src/utils/bytearray.ts","../src/abis/ipMarketplace.ts","../src/abis/popCollection.ts","../src/abis/popFactory.ts","../src/abis/dropCollection.ts","../src/abis/dropFactory.ts","../src/abis/collectionRegistry.ts","../src/abis/medialane1155.ts","../src/abis/ipCollection1155Factory.ts","../src/abis/ipCollection1155.ts","../src/abis/ipCollection.ts","../src/abis/ipNft.ts","../src/abis/creatorCoinFactory.ts","../src/utils/bigint.ts","../src/utils/token.ts","../src/marketplace/errors.ts","../src/utils/rpc.ts","../src/marketplace/utils.ts","../src/marketplace/orders.ts","../src/marketplace/index.ts","../src/marketplace1155/orders.ts","../src/marketplace1155/index.ts","../src/utils/address.ts","../src/utils/retry.ts","../src/api/client.ts","../src/services/pop.ts","../src/services/drop.ts","../src/services/erc1155collection.ts","../src/services/creatorCoin.ts","../src/client.ts","../src/types/api.ts","../src/services/registry.ts"],"names":["z","cairo","TypedDataRevision","num","constants","RpcProvider","Contract","shortString","_contractCache","uint256"],"mappings":"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","file":"index.cjs","sourcesContent":["/** Medialane721 marketplace venue — immutable, ownerless (redesign, deployed 2026-05-31). */\nexport const MARKETPLACE_721_CONTRACT_MAINNET =\n \"0x069cf5391077e3ebdd9cb6aebf90ed530d29f0d6aa34a43f5afae938c0fb565e\";\n\n/** Class hash of the Medialane721 venue. */\nexport const MARKETPLACE_721_CLASS_HASH_MAINNET =\n \"0x04c6f952d747ad7ead1b3dad4c1d587837d38f8ec29d6c095a4afa5b5ece5957\";\n\n/** First mainnet block for the Medialane721 venue deployment. */\nexport const MARKETPLACE_721_START_BLOCK_MAINNET = 10350340;\n\n/** Medialane1155 marketplace venue — immutable, ownerless (redesign, deployed 2026-05-31). */\nexport const MARKETPLACE_1155_CONTRACT_MAINNET =\n \"0x040cd7b3e73bb3c892166e34bdc01d1797f97ecbc356c23f1cf38033cacf0077\";\n\n/** Class hash of the Medialane1155 venue. */\nexport const MARKETPLACE_1155_CLASS_HASH_MAINNET =\n \"0x02600bb720908f119afe482309d36c39d087587f0df9576454acfb6363e78cd8\";\n\n/** First mainnet block for the Medialane1155 venue deployment. */\nexport const MARKETPLACE_1155_START_BLOCK_MAINNET = 10350855;\n\nexport const COLLECTION_721_CONTRACT_MAINNET =\n \"0x0322cb7119955e01ac778d40976eb3ba50540bb0899f812d612f9c7e63e49fd2\";\n\n/** Class hash of the IPNft (per-collection ERC-721) implementation. */\nexport const IPNFT_CLASS_HASH_MAINNET =\n \"0x27ee4ded786d51bced1e94afec3034d6ffce71c032c45ee1ff283ccfa9db12e\";\n\n/** Class hash of the IPCollection registry. */\nexport const IPCOLLECTION_CLASS_HASH_MAINNET =\n \"0x287ccdff8b6655a2248cfe170d82eae3a35303cd00ef3e751b25ddca26d9095\";\n\n/** First mainnet block for the current MIP IPCollection registry deployment. */\nexport const COLLECTION_721_START_BLOCK_MAINNET = 10046166;\n\nexport const DROP_FACTORY_CONTRACT_MAINNET =\n \"0x03587f42e29daee1b193f6cf83bf8627908ed6632d0d83fcb26225c50547d800\";\n\nexport const POP_FACTORY_CONTRACT_MAINNET =\n \"0x00b32c34b427d8f346b5843ada6a37bd3368d879fc752cd52b68a87287f60111\";\n\n/** NFTComments on-chain comment system — immutable, no admin key. */\nexport const NFTCOMMENTS_CONTRACT_MAINNET =\n \"0x02cdac70c94447189af0389dfea63f4d5e4154ea8a563de288a5ab1c39e37843\";\n\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\nexport const SUPPORTED_NETWORKS = [\"mainnet\"] as const;\nexport type Network = (typeof SUPPORTED_NETWORKS)[number];\n\nexport const DEFAULT_RPC_URL = \"https://rpc.starknet.lava.build\";\n\nexport const POP_COLLECTION_CLASS_HASH_MAINNET = \"0x077c421686f10851872561953ea16898d933364b7f8937a5d7e2b1ba0a36263f\";\n\nexport const DROP_COLLECTION_CLASS_HASH_MAINNET = \"0x00092e72cdb63067521e803aaf7d4101c3e3ce026ae6bc045ec4228027e58282\";\n\nexport const COLLECTION_1155_CONTRACT_MAINNET =\n \"0x067064adcaaed61e17bf50ea802ea6482336126aec5b4d032b4ff8fbb5009131\";\n\n/** Class hash of the IPCollectionFactory implementation. */\nexport const COLLECTION_1155_FACTORY_CLASS_HASH_MAINNET =\n \"0x188321a7c9ca972cc63e352e3b3a4cdf33781852d957f4b4b62249310fe4c75\";\n\n/** Class hash of the IPCollection ERC-1155 implementation. */\nexport const COLLECTION_1155_CLASS_HASH_MAINNET =\n \"0x281e13803c906f20bbe158efb44b7a0273c56fdebbeeb55b2ba59530ddb1c80\";\n\n/** First mainnet block for the current ERC-1155 factory deployment. */\nexport const COLLECTION_1155_START_BLOCK_MAINNET = 10045611;\n\n// ─── Creator Coin ────────────────────────────────────────────────────────────\n// Faithful fork of unruggable.meme, Ekubo-only, deployed mainnet 2026-06-04.\n\n/** Creator Coin Factory — entrypoint: create_creator_coin + launch_on_ekubo. */\nexport const CREATOR_COIN_FACTORY_CONTRACT_MAINNET =\n \"0x50fa807b5274079fb19374673d7bab6d2dc3af7e1032ea43eb6e44bcbde4c3c\";\n\n/** EkuboLauncher — permanently holds (locks) each Creator Coin's LP position. */\nexport const CREATOR_COIN_EKUBO_LAUNCHER_MAINNET =\n \"0x4f7fceb5ac10f12f9544a09580592e5bdf1b7f04f48765eecf12286d8ccb7b4\";\n\n/** Class hash of the per-coin CreatorCoin ERC-20 the Factory deploys. */\nexport const CREATOR_COIN_CLASS_HASH_MAINNET =\n \"0x743e4c8a5b96bb83bbf4af04edbbb482d5ece89eed9b729a79fb7df0cd0b6b6\";\n\n/** Class hash of the Creator Coin Factory. */\nexport const CREATOR_COIN_FACTORY_CLASS_HASH_MAINNET =\n \"0x51765926b1344c9a20b8cd4b5abe7b7d47375ae97cf6804db3ea5d4b05a9b55\";\n\n/** First mainnet block of the Factory deployment. */\nexport const CREATOR_COIN_START_BLOCK_MAINNET = 10474544;\n\n/** Ekubo Core (Starknet mainnet) — Creator Coin pools live here; read spot price via `get_pool_price`. */\nexport const EKUBO_CORE_MAINNET =\n \"0x00000005dd3d2f4429af886cd1a3b08289dbcea99a294197e9eb43b0e0325b4b\";\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 { cairo, type Call } from \"starknet\";\nimport type { ResolvedFeeConfig } from \"./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 { z } from \"zod\";\nimport {\n SUPPORTED_NETWORKS,\n DEFAULT_RPC_URL,\n MARKETPLACE_721_CONTRACT_MAINNET,\n COLLECTION_721_CONTRACT_MAINNET,\n COLLECTION_1155_CONTRACT_MAINNET,\n MARKETPLACE_1155_CONTRACT_MAINNET,\n type Network,\n} from \"./constants.js\";\nimport type { RetryOptions } from \"./utils/retry.js\";\nimport { FeeConfigSchema, resolveFeeConfig, type ResolvedFeeConfig } from \"./fee/index.js\";\n\nexport const MedialaneConfigSchema = z.object({\n network: z.enum(SUPPORTED_NETWORKS).default(\"mainnet\"),\n rpcUrl: z.string().url().optional(),\n backendUrl: z.string().url().optional(),\n apiKey: z.string().optional(),\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 network: Network;\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\n const marketplace721Contract =\n parsed.marketplace721Contract ?? parsed.marketplaceContract ?? MARKETPLACE_721_CONTRACT_MAINNET;\n const collection721Contract =\n parsed.collection721Contract ?? parsed.collectionContract ?? COLLECTION_721_CONTRACT_MAINNET;\n\n return {\n network: parsed.network,\n rpcUrl: parsed.rpcUrl ?? DEFAULT_RPC_URL,\n backendUrl: parsed.backendUrl,\n apiKey: parsed.apiKey,\n marketplace721Contract,\n marketplaceContract: marketplace721Contract,\n marketplace1155Contract: parsed.marketplace1155Contract ?? MARKETPLACE_1155_CONTRACT_MAINNET,\n collection721Contract,\n collectionContract: collection721Contract,\n collection1155Contract: parsed.collection1155Contract ?? COLLECTION_1155_CONTRACT_MAINNET,\n retryOptions: parsed.retryOptions,\n feeConfig: resolveFeeConfig(parsed.feeConfig),\n };\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: \"4\",\n erc1155: \"3\",\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 { 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","// 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 },\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","export const CollectionRegistryABI = [\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: \"ip_collection_erc_721::types::Collection\",\n members: [\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: \"owner\", type: \"core::starknet::contract_address::ContractAddress\" },\n { name: \"ip_nft\", type: \"core::starknet::contract_address::ContractAddress\" },\n ],\n },\n {\n type: \"function\",\n name: \"list_user_collections\",\n inputs: [{ name: \"user\", type: \"core::starknet::contract_address::ContractAddress\" }],\n outputs: [{ type: \"core::array::Span::<core::integer::u256>\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"get_collection\",\n inputs: [{ name: \"collection_id\", type: \"core::integer::u256\" }],\n outputs: [{ type: \"ip_collection_erc_721::types::Collection\" }],\n state_mutability: \"view\",\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 },\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\": \"update_collection_class_hash\",\n \"inputs\": [\n {\n \"name\": \"new_class_hash\",\n \"type\": \"core::starknet::class_hash::ClassHash\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\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\": \"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\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"collection_class_hash\",\n \"type\": \"core::starknet::class_hash::ClassHash\"\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\": \"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::CollectionClassHashUpdated\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"previous_class_hash\",\n \"type\": \"core::starknet::class_hash::ClassHash\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"new_class_hash\",\n \"type\": \"core::starknet::class_hash::ClassHash\",\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\": \"OwnableEvent\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"CollectionDeployed\",\n \"type\": \"ip_programmable_erc1155_collections::IPCollectionFactory::IPCollectionFactory::CollectionDeployed\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"CollectionClassHashUpdated\",\n \"type\": \"ip_programmable_erc1155_collections::IPCollectionFactory::IPCollectionFactory::CollectionClassHashUpdated\",\n \"kind\": \"nested\"\n }\n ]\n }\n] as const;\n\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\": \"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_item\",\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 \"name\": \"token_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"batch_mint_item\",\n \"inputs\": [\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\": \"token_uris\",\n \"type\": \"core::array::Array::<core::byte_array::ByteArray>\"\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 },\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\": \"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\": \"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\n","export const IPCollectionABI = [\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\": \"total_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 \"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 \"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\": \"token\",\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"batch_archive\",\n \"inputs\": [\n {\n \"name\": \"tokens\",\n \"type\": \"core::array::Array::<core::byte_array::ByteArray>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer_token\",\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\",\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"batch_transfer\",\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\": \"tokens\",\n \"type\": \"core::array::Array::<core::byte_array::ByteArray>\"\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\": \"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\": \"token\",\n \"type\": \"core::byte_array::ByteArray\"\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\": \"token\",\n \"type\": \"core::byte_array::ByteArray\"\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\": \"token\",\n \"type\": \"core::byte_array::ByteArray\"\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 },\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\": \"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\": \"tokens\",\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::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\": \"tokens\",\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::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\n","export const IPNftABI = [\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 \"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\": \"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\": \"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\": \"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 }\n] as const;\n\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","/**\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","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","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","/**\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 fallbacks after an app's configured primary (e.g. Alchemy) returns a\n * transient error. lava.build first — RPC spec 0.8.1, permissive CORS — so it\n * is safe for browser `baseFetch` use as well as server-side rotation.\n */\nexport const PUBLIC_RPC_FALLBACKS: readonly string[] = [\n \"https://rpc.starknet.lava.build\",\n \"https://starknet-mainnet.public.blastapi.io/rpc/v0_7\",\n \"https://free-rpc.nethermind.io/mainnet-juno/v0_7\",\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 { RpcProvider, cairo, constants, num } 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\nexport function getChainId(_config: ResolvedConfig): constants.StarknetChainId {\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","import {\n type AccountInterface,\n type Abi,\n Contract,\n cairo,\n shortString,\n type TypedData,\n} from \"starknet\";\nimport { encodeByteArray } from \"../utils/bytearray.js\";\nimport { IPMarketplaceABI } from \"../abis/index.js\";\nimport type { ResolvedConfig } from \"../config.js\";\nimport { DEFAULT_CURRENCY } from \"../constants.js\";\nimport type {\n CreateListingParams,\n MakeOfferParams,\n FulfillOrderParams,\n CancelOrderParams,\n CartItem,\n MintParams,\n CreateCollectionParams,\n TxResult,\n OrderDetails,\n} from \"../types/marketplace.js\";\nimport { stringifyBigInts } from \"../utils/bigint.js\";\nimport { parseAmount } from \"../utils/token.js\";\nimport {\n buildOrderTypedData,\n buildCancellationTypedData,\n} from \"./signing.js\";\nimport { MedialaneError } from \"./errors.js\";\nimport { buildFeeCall } from \"../fee/index.js\";\nimport {\n toSignatureArray,\n getChainId,\n getProvider,\n resolveToken,\n generateSalt,\n resolveRoyaltyMaxBps,\n START_TIME_BUFFER_SECS,\n} from \"./utils.js\";\n\nconst _contractCache = new WeakMap<ResolvedConfig, { contract: Contract }>();\n\nfunction makeContract(config: ResolvedConfig): { contract: Contract; provider: ReturnType<typeof getProvider> } {\n const cached = _contractCache.get(config);\n const provider = getProvider(config);\n if (cached) return { ...cached, provider };\n\n const contract = new Contract(\n IPMarketplaceABI as unknown as Abi,\n config.marketplaceContract,\n provider\n );\n _contractCache.set(config, { contract });\n return { contract, provider };\n}\n\n\n/**\n * Create a listing — offerer offers ERC721, asks for ERC20.\n */\nexport async function createListing(\n account: AccountInterface,\n params: CreateListingParams,\n config: ResolvedConfig\n): Promise<TxResult> {\n const { nftContract, tokenId, price, currency = DEFAULT_CURRENCY, durationSeconds } = params;\n const { contract, provider } = makeContract(config);\n\n const token = resolveToken(currency);\n const priceWei = parseAmount(price, token.decimals);\n\n const now = Math.floor(Date.now() / 1000);\n const startTime = now + START_TIME_BUFFER_SECS;\n const endTime = now + durationSeconds;\n\n const counter = (await contract.get_counter(account.address)).toString();\n const royaltyMaxBps = await resolveRoyaltyMaxBps(provider, nftContract, tokenId, params.royaltyMaxBps);\n\n const orderParams = {\n offerer: account.address,\n marketplace: config.marketplaceContract,\n offer: {\n item_type: \"ERC721\",\n token: nftContract,\n identifier_or_criteria: tokenId,\n amount: \"1\",\n },\n consideration: {\n item_type: \"ERC20\",\n token: token.address,\n identifier_or_criteria: \"0\",\n amount: priceWei,\n recipient: account.address,\n },\n royalty_max_bps: royaltyMaxBps,\n start_time: startTime.toString(),\n end_time: endTime.toString(),\n salt: generateSalt(),\n counter,\n };\n\n const chainId = getChainId(config);\n const typedData = stringifyBigInts(buildOrderTypedData(orderParams, chainId)) as TypedData;\n\n const signature = await account.signMessage(typedData);\n const signatureArray = toSignatureArray(signature);\n\n const registerPayload = stringifyBigInts({\n parameters: {\n ...orderParams,\n offer: {\n ...orderParams.offer,\n item_type: shortString.encodeShortString(orderParams.offer.item_type),\n },\n consideration: {\n ...orderParams.consideration,\n item_type: shortString.encodeShortString(orderParams.consideration.item_type),\n },\n },\n signature: signatureArray,\n }) as Record<string, unknown>;\n\n const tokenIdUint256 = cairo.uint256(tokenId);\n\n // Check approval status before adding approve call\n let isAlreadyApproved = false;\n try {\n const result = await provider.callContract({\n contractAddress: nftContract,\n entrypoint: \"get_approved\",\n calldata: [tokenIdUint256.low.toString(), tokenIdUint256.high.toString()],\n });\n isAlreadyApproved =\n BigInt(result[0]).toString() === BigInt(config.marketplaceContract).toString();\n } catch {\n // Cannot check — include approve to be safe\n }\n\n const registerCall = contract.populate(\"register_order\", [registerPayload]);\n const calls = isAlreadyApproved\n ? [registerCall]\n : [\n {\n contractAddress: nftContract,\n entrypoint: \"approve\",\n calldata: [\n config.marketplaceContract,\n tokenIdUint256.low.toString(),\n tokenIdUint256.high.toString(),\n ],\n },\n registerCall,\n ];\n\n try {\n const tx = await account.execute(calls);\n await provider.waitForTransaction(tx.transaction_hash);\n return { txHash: tx.transaction_hash };\n } catch (err) {\n throw new MedialaneError(\"Failed to create listing\", \"TRANSACTION_FAILED\", err);\n }\n}\n\n/**\n * Make an offer — offerer offers ERC20, asks for ERC721.\n */\nexport async function makeOffer(\n account: AccountInterface,\n params: MakeOfferParams,\n config: ResolvedConfig\n): Promise<TxResult> {\n const { nftContract, tokenId, price, currency = DEFAULT_CURRENCY, durationSeconds } = params;\n const { contract, provider } = makeContract(config);\n\n const token = resolveToken(currency);\n const priceWei = parseAmount(price, token.decimals);\n\n const now = Math.floor(Date.now() / 1000);\n const startTime = now + START_TIME_BUFFER_SECS;\n const endTime = now + durationSeconds;\n\n const counter = (await contract.get_counter(account.address)).toString();\n const royaltyMaxBps = await resolveRoyaltyMaxBps(provider, nftContract, tokenId, params.royaltyMaxBps);\n\n const orderParams = {\n offerer: account.address,\n marketplace: config.marketplaceContract,\n offer: {\n item_type: \"ERC20\",\n token: token.address,\n identifier_or_criteria: \"0\",\n amount: priceWei,\n },\n consideration: {\n item_type: \"ERC721\",\n token: nftContract,\n identifier_or_criteria: tokenId,\n amount: \"1\",\n recipient: account.address,\n },\n royalty_max_bps: royaltyMaxBps,\n start_time: startTime.toString(),\n end_time: endTime.toString(),\n salt: generateSalt(),\n counter,\n };\n\n const chainId = getChainId(config);\n const typedData = stringifyBigInts(buildOrderTypedData(orderParams, chainId)) as TypedData;\n\n const signature = await account.signMessage(typedData);\n const signatureArray = toSignatureArray(signature);\n\n const registerPayload = stringifyBigInts({\n parameters: {\n ...orderParams,\n offer: {\n ...orderParams.offer,\n item_type: shortString.encodeShortString(orderParams.offer.item_type),\n },\n consideration: {\n ...orderParams.consideration,\n item_type: shortString.encodeShortString(orderParams.consideration.item_type),\n },\n },\n signature: signatureArray,\n }) as Record<string, unknown>;\n\n const amountUint256 = cairo.uint256(priceWei);\n const approveCall = {\n contractAddress: token.address,\n entrypoint: \"approve\",\n calldata: [\n config.marketplaceContract,\n amountUint256.low.toString(),\n amountUint256.high.toString(),\n ],\n };\n\n const registerCall = contract.populate(\"register_order\", [registerPayload]);\n\n try {\n const tx = await account.execute([approveCall, registerCall]);\n await provider.waitForTransaction(tx.transaction_hash);\n return { txHash: tx.transaction_hash };\n } catch (err) {\n throw new MedialaneError(\"Failed to make offer\", \"TRANSACTION_FAILED\", err);\n }\n}\n\n/**\n * Fulfill (buy) a single order.\n * Approves the payment token then calls fulfill_order atomically.\n */\nexport async function fulfillOrder(\n account: AccountInterface,\n params: FulfillOrderParams,\n config: ResolvedConfig\n): Promise<TxResult> {\n const { orderHash, paymentToken, totalPrice } = params;\n const { contract, provider } = makeContract(config);\n\n // Fulfilment is unsigned — the caller IS the fulfiller (audit F3).\n const totalPriceU256 = cairo.uint256(totalPrice);\n const approveCall = {\n contractAddress: paymentToken,\n entrypoint: \"approve\",\n calldata: [\n config.marketplaceContract,\n totalPriceU256.low.toString(),\n totalPriceU256.high.toString(),\n ],\n };\n\n const fulfillCall = contract.populate(\"fulfill_order\", [orderHash]);\n\n const feeCall = buildFeeCall(\n { surface: \"marketplace\", token: paymentToken, grossAmount: BigInt(totalPrice) },\n config.feeConfig\n );\n const calls = feeCall\n ? [approveCall, fulfillCall, feeCall]\n : [approveCall, fulfillCall];\n\n try {\n const tx = await account.execute(calls);\n await provider.waitForTransaction(tx.transaction_hash);\n return { txHash: tx.transaction_hash };\n } catch (err) {\n throw new MedialaneError(\"Failed to fulfill order\", \"TRANSACTION_FAILED\", err);\n }\n}\n\n/**\n * Cancel an order.\n */\nexport async function cancelOrder(\n account: AccountInterface,\n params: CancelOrderParams,\n config: ResolvedConfig\n): Promise<TxResult> {\n const { orderHash } = params;\n const { contract, provider } = makeContract(config);\n\n const chainId = getChainId(config);\n\n const cancelParams = {\n order_hash: orderHash,\n offerer: account.address,\n };\n\n const typedData = stringifyBigInts(\n buildCancellationTypedData(cancelParams, chainId)\n ) as TypedData;\n\n const signature = await account.signMessage(typedData);\n const signatureArray = toSignatureArray(signature);\n\n const cancelRequest = stringifyBigInts({\n cancelation: cancelParams,\n signature: signatureArray,\n }) as Record<string, unknown>;\n\n const call = contract.populate(\"cancel_order\", [cancelRequest]);\n\n try {\n const tx = await account.execute(call);\n await provider.waitForTransaction(tx.transaction_hash);\n return { txHash: tx.transaction_hash };\n } catch (err) {\n throw new MedialaneError(\"Failed to cancel order\", \"TRANSACTION_FAILED\", err);\n }\n}\n\n\n/**\n * Mint an NFT into a Medialane collection.\n * Calls `mint(collection_id, recipient, token_uri)` — no SNIP-12 signing required.\n */\nexport async function mint(\n account: AccountInterface,\n params: MintParams,\n config: ResolvedConfig\n): Promise<TxResult> {\n const { collectionId, recipient, tokenUri, collectionContract } = params;\n const provider = getProvider(config);\n const contractAddress = collectionContract ?? config.collectionContract;\n\n const id = cairo.uint256(collectionId);\n const calldata = [id.low.toString(), id.high.toString(), recipient, ...encodeByteArray(tokenUri)];\n\n try {\n const tx = await account.execute([{ contractAddress, entrypoint: \"mint\", calldata }]);\n await provider.waitForTransaction(tx.transaction_hash);\n return { txHash: tx.transaction_hash };\n } catch (err) {\n throw new MedialaneError(\"Failed to mint NFT\", \"TRANSACTION_FAILED\", err);\n }\n}\n\n/**\n * Create a new collection on the Medialane collection registry.\n * Calls `create_collection(name, symbol, base_uri)` — no SNIP-12 signing required.\n * Returns the transaction hash; listen for the CollectionCreated event to get the collection_id.\n */\nexport async function createCollection(\n account: AccountInterface,\n params: CreateCollectionParams,\n config: ResolvedConfig\n): Promise<TxResult> {\n const { name, symbol, baseUri, collectionContract } = params;\n const provider = getProvider(config);\n const contractAddress = collectionContract ?? config.collectionContract;\n\n const calldata = [\n ...encodeByteArray(name),\n ...encodeByteArray(symbol),\n ...encodeByteArray(baseUri),\n ];\n\n try {\n const tx = await account.execute([{ contractAddress, entrypoint: \"create_collection\", calldata }]);\n await provider.waitForTransaction(tx.transaction_hash);\n return { txHash: tx.transaction_hash };\n } catch (err) {\n throw new MedialaneError(\"Failed to create collection\", \"TRANSACTION_FAILED\", err);\n }\n}\n\n/**\n * Checkout a cart of multiple orders in a single atomic multicall.\n * Prompts wallet signatures sequentially (one per item), then executes\n * all approve + fulfill calls atomically.\n */\nexport async function checkoutCart(\n account: AccountInterface,\n items: CartItem[],\n config: ResolvedConfig\n): Promise<TxResult> {\n if (items.length === 0) throw new MedialaneError(\"Cart is empty\", \"INVALID_PARAMS\");\n\n const { contract, provider } = makeContract(config);\n\n // Group total ERC20 approval amounts by token\n const tokenTotals = new Map<string, bigint>();\n for (const item of items) {\n const prev = tokenTotals.get(item.considerationToken) ?? 0n;\n tokenTotals.set(item.considerationToken, prev + BigInt(item.considerationAmount));\n }\n\n const approveCalls = Array.from(tokenTotals.entries()).map(([tokenAddr, totalWei]) => {\n const amount = cairo.uint256(totalWei.toString());\n return {\n contractAddress: tokenAddr,\n entrypoint: \"approve\",\n calldata: [\n config.marketplaceContract,\n amount.low.toString(),\n amount.high.toString(),\n ],\n };\n });\n\n // Fulfilment is unsigned now — each fulfill is just a call; no per-item signing.\n const fulfillCalls = items.map((item) =>\n contract.populate(\"fulfill_order\", [item.orderHash]),\n );\n\n const feeCalls = Array.from(tokenTotals.entries())\n .map(([tokenAddr, totalWei]) =>\n buildFeeCall(\n { surface: \"marketplace\", token: tokenAddr, grossAmount: totalWei },\n config.feeConfig\n )\n )\n .filter((c): c is NonNullable<typeof c> => c !== null);\n\n try {\n const tx = await account.execute([...approveCalls, ...fulfillCalls, ...feeCalls]);\n await provider.waitForTransaction(tx.transaction_hash);\n return { txHash: tx.transaction_hash };\n } catch (err) {\n throw new MedialaneError(\"Cart checkout failed\", \"TRANSACTION_FAILED\", err);\n }\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\n/** Bulk-cancel: bump the caller's counter, invalidating all their open orders. */\nexport async function incrementCounter(\n account: AccountInterface,\n config: ResolvedConfig\n): Promise<TxResult> {\n const { contract, provider } = makeContract(config);\n const call = contract.populate(\"increment_counter\", []);\n try {\n const tx = await account.execute(call);\n await provider.waitForTransaction(tx.transaction_hash);\n return { txHash: tx.transaction_hash };\n } catch (err) {\n throw new MedialaneError(\"Failed to increment counter\", \"TRANSACTION_FAILED\", err);\n }\n}\n","import { type AccountInterface, type TypedData, constants } from \"starknet\";\nimport type { ResolvedConfig } from \"../config.js\";\nimport type {\n CreateListingParams,\n MakeOfferParams,\n FulfillOrderParams,\n CancelOrderParams,\n CartItem,\n MintParams,\n CreateCollectionParams,\n TxResult,\n OrderDetails,\n} from \"../types/marketplace.js\";\nimport {\n buildOrderTypedData,\n buildCancellationTypedData,\n} from \"./signing.js\";\nimport {\n createListing,\n makeOffer,\n fulfillOrder,\n cancelOrder,\n checkoutCart,\n mint,\n createCollection,\n getOrderDetails,\n getCounter,\n incrementCounter,\n} from \"./orders.js\";\n\nexport { MedialaneError } from \"./errors.js\";\n\nexport class MarketplaceModule {\n constructor(private readonly config: ResolvedConfig) {}\n\n // ─── Writes ───────────────────────────────────────────────────────────────\n\n createListing(account: AccountInterface, params: CreateListingParams): Promise<TxResult> {\n return createListing(account, params, this.config);\n }\n\n makeOffer(account: AccountInterface, params: MakeOfferParams): Promise<TxResult> {\n return makeOffer(account, params, this.config);\n }\n\n fulfillOrder(account: AccountInterface, params: FulfillOrderParams): Promise<TxResult> {\n return fulfillOrder(account, params, this.config);\n }\n\n cancelOrder(account: AccountInterface, params: CancelOrderParams): Promise<TxResult> {\n return cancelOrder(account, params, this.config);\n }\n\n checkoutCart(account: AccountInterface, items: CartItem[]): Promise<TxResult> {\n return checkoutCart(account, items, this.config);\n }\n\n mint(account: AccountInterface, params: MintParams): Promise<TxResult> {\n return mint(account, params, this.config);\n }\n\n createCollection(account: AccountInterface, params: CreateCollectionParams): Promise<TxResult> {\n return createCollection(account, params, this.config);\n }\n\n /** Bulk-cancel: bump the caller's counter, invalidating all their open orders. */\n incrementCounter(account: AccountInterface): Promise<TxResult> {\n return incrementCounter(account, this.config);\n }\n\n // ─── View calls ───────────────────────────────────────────────────────────\n\n getOrderDetails(orderHash: string): Promise<OrderDetails> {\n return getOrderDetails(orderHash, this.config);\n }\n\n getCounter(address: string): Promise<bigint> {\n return getCounter(address, this.config);\n }\n\n // ─── Typed data builders (for ChipiPay / custom signing flows) ───────────\n\n buildListingTypedData(\n params: Record<string, unknown>,\n chainId: constants.StarknetChainId\n ): TypedData {\n return buildOrderTypedData(params, chainId);\n }\n\n buildCancellationTypedData(\n params: Record<string, unknown>,\n chainId: constants.StarknetChainId\n ): TypedData {\n return buildCancellationTypedData(params, chainId);\n }\n}\n","import {\n type AccountInterface,\n type Abi,\n type TypedData,\n Contract,\n cairo,\n shortString,\n} from \"starknet\";\nimport { Medialane1155ABI } from \"../abis/index.js\";\nimport type { ResolvedConfig } from \"../config.js\";\nimport { DEFAULT_CURRENCY } from \"../constants.js\";\nimport { MedialaneError } from \"../marketplace/errors.js\";\nimport type {\n CreateListing1155Params,\n MakeOffer1155Params,\n FulfillOrder1155Params,\n CancelOrder1155Params,\n CartItem,\n TxResult,\n OrderDetails,\n} from \"../types/marketplace.js\";\nimport { stringifyBigInts } from \"../utils/bigint.js\";\nimport { parseAmount } from \"../utils/token.js\";\nimport {\n build1155OrderTypedData,\n build1155CancellationTypedData,\n} from \"../marketplace/signing.js\";\nimport {\n toSignatureArray,\n getChainId,\n getProvider,\n resolveToken,\n generateSalt,\n resolveRoyaltyMaxBps,\n START_TIME_BUFFER_SECS,\n} 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 const provider = getProvider(config);\n c = new Contract(\n Medialane1155ABI as unknown as Abi,\n config.marketplace1155Contract,\n provider\n );\n _contractCache.set(config, c);\n }\n return c;\n}\n\n/**\n * Create an ERC-1155 listing on Medialane1155.\n *\n * The offerer signs `OrderParameters` off-chain via SNIP-12, then the signed\n * order is submitted to `register_order`. The ERC-1155 token approval\n * (`set_approval_for_all`) must be granted before the buyer calls `fulfill_order`.\n */\nexport async function createListing1155(\n account: AccountInterface,\n params: CreateListing1155Params,\n config: ResolvedConfig\n): Promise<TxResult> {\n const {\n nftContract,\n tokenId,\n amount,\n pricePerUnit,\n currency = DEFAULT_CURRENCY,\n durationSeconds,\n } = params;\n\n const contract = getContract(config);\n const provider = getProvider(config);\n\n const token = resolveToken(currency);\n const priceWei = parseAmount(pricePerUnit, token.decimals);\n\n const now = Math.floor(Date.now() / 1000);\n const endTime = now + durationSeconds;\n const chainId = getChainId(config);\n\n const counter = (await contract.get_counter(account.address)).toString();\n const royaltyMaxBps = await resolveRoyaltyMaxBps(provider, nftContract, tokenId, params.royaltyMaxBps);\n\n const orderParams = {\n offerer: account.address,\n marketplace: config.marketplace1155Contract,\n offer: {\n item_type: \"ERC1155\",\n token: nftContract,\n identifier_or_criteria: tokenId,\n amount, // ERC-1155 leg amount = unit quantity\n },\n consideration: {\n item_type: \"ERC20\",\n token: token.address,\n identifier_or_criteria: \"0\",\n amount: priceWei, // payment leg amount = price PER UNIT\n recipient: account.address,\n },\n royalty_max_bps: royaltyMaxBps,\n start_time: (now + START_TIME_BUFFER_SECS).toString(),\n end_time: endTime.toString(),\n salt: generateSalt(),\n counter,\n };\n\n const typedData = stringifyBigInts(\n build1155OrderTypedData(orderParams, chainId)\n ) as TypedData;\n\n const signature = await account.signMessage(typedData);\n const signatureArray = toSignatureArray(signature);\n\n // item_type must be shortString encoded for calldata (felt252), but left as plain\n // string in orderParams used for SNIP-12 signing (typed data uses shortstring type).\n const orderPayload = stringifyBigInts({\n parameters: {\n ...orderParams,\n offer: {\n ...orderParams.offer,\n item_type: shortString.encodeShortString(orderParams.offer.item_type),\n },\n consideration: {\n ...orderParams.consideration,\n item_type: shortString.encodeShortString(orderParams.consideration.item_type),\n },\n },\n signature: signatureArray,\n }) as Record<string, unknown>;\n\n // Check if the marketplace is already approved to transfer the ERC-1155 tokens.\n let isApproved = false;\n try {\n const result = await provider.callContract({\n contractAddress: nftContract,\n entrypoint: \"is_approved_for_all\",\n calldata: [account.address, config.marketplace1155Contract],\n });\n // Returns a felt252: 1 = true, 0 = false\n isApproved = BigInt(result[0]) === 1n;\n } catch {\n // Cannot check — include approval call to be safe\n }\n\n const registerCall = contract.populate(\"register_order\", [orderPayload]);\n const calls = isApproved\n ? [registerCall]\n : [\n {\n contractAddress: nftContract,\n entrypoint: \"set_approval_for_all\",\n calldata: [config.marketplace1155Contract, \"1\"],\n },\n registerCall,\n ];\n\n try {\n const tx = await account.execute(calls);\n await provider.waitForTransaction(tx.transaction_hash);\n return { txHash: tx.transaction_hash };\n } catch (err) {\n throw new MedialaneError(\"Failed to create ERC-1155 listing\", \"TRANSACTION_FAILED\", err);\n }\n}\n\n/**\n * Fulfill (buy) `quantity` units of an ERC-1155 order. Unsigned — the caller\n * IS the fulfiller (audit F3). The fulfiller must have approved the Medialane1155\n * contract to spend `pricePerUnit × quantity` of the payment token before calling.\n */\nexport async function fulfillOrder1155(\n account: AccountInterface,\n params: FulfillOrder1155Params,\n config: ResolvedConfig\n): Promise<TxResult> {\n const { orderHash, paymentToken, totalPrice, quantity = \"1\" } = params;\n\n const contract = getContract(config);\n const provider = getProvider(config);\n\n const totalPriceU256 = cairo.uint256(totalPrice);\n const approveCall = {\n contractAddress: paymentToken,\n entrypoint: \"approve\",\n calldata: [\n config.marketplace1155Contract,\n totalPriceU256.low.toString(),\n totalPriceU256.high.toString(),\n ],\n };\n\n const fulfillCall = contract.populate(\"fulfill_order\", [orderHash, quantity]);\n\n try {\n const tx = await account.execute([approveCall, fulfillCall]);\n await provider.waitForTransaction(tx.transaction_hash);\n return { txHash: tx.transaction_hash };\n } catch (err) {\n throw new MedialaneError(\"Failed to fulfill ERC-1155 order\", \"TRANSACTION_FAILED\", err);\n }\n}\n\n/**\n * Cancel an ERC-1155 order. Only the original offerer can cancel: the offerer\n * signs `OrderCancellation` off-chain (no nonce), submitted to `cancel_order`.\n */\nexport async function cancelOrder1155(\n account: AccountInterface,\n params: CancelOrder1155Params,\n config: ResolvedConfig\n): Promise<TxResult> {\n const { orderHash } = params;\n\n const contract = getContract(config);\n const provider = getProvider(config);\n const chainId = getChainId(config);\n\n const cancelParams = {\n order_hash: orderHash,\n offerer: account.address,\n };\n\n const typedData = stringifyBigInts(\n build1155CancellationTypedData(cancelParams, chainId)\n ) as TypedData;\n\n const signature = await account.signMessage(typedData);\n const signatureArray = toSignatureArray(signature);\n\n const cancelPayload = stringifyBigInts({\n cancelation: cancelParams,\n signature: signatureArray,\n }) as Record<string, unknown>;\n\n const cancelCall = contract.populate(\"cancel_order\", [cancelPayload]);\n\n try {\n const tx = await account.execute(cancelCall);\n await provider.waitForTransaction(tx.transaction_hash);\n return { txHash: tx.transaction_hash };\n } catch (err) {\n throw new MedialaneError(\"Failed to cancel ERC-1155 order\", \"TRANSACTION_FAILED\", err);\n }\n}\n\n/**\n * Make an offer (bid) on an ERC-1155 token. The offerer offers ERC-20 and asks\n * for the specified ERC-1155 quantity. Signs `OrderParameters` off-chain via\n * SNIP-12, approves the ERC-20 spend, then submits to `register_order`.\n */\nexport async function makeOffer1155(\n account: AccountInterface,\n params: MakeOffer1155Params,\n config: ResolvedConfig\n): Promise<TxResult> {\n const {\n nftContract,\n tokenId,\n amount,\n price,\n currency = DEFAULT_CURRENCY,\n durationSeconds,\n } = params;\n\n const contract = getContract(config);\n const provider = getProvider(config);\n const chainId = getChainId(config);\n\n const token = resolveToken(currency);\n const priceWei = parseAmount(price, token.decimals);\n\n const now = Math.floor(Date.now() / 1000);\n const endTime = now + durationSeconds;\n\n const counter = (await contract.get_counter(account.address)).toString();\n const royaltyMaxBps = await resolveRoyaltyMaxBps(provider, nftContract, tokenId, params.royaltyMaxBps);\n\n const orderParams = {\n offerer: account.address,\n marketplace: config.marketplace1155Contract,\n offer: {\n item_type: \"ERC20\",\n token: token.address,\n identifier_or_criteria: \"0\",\n amount: priceWei, // price PER UNIT\n },\n consideration: {\n item_type: \"ERC1155\",\n token: nftContract,\n identifier_or_criteria: tokenId,\n amount, // unit quantity\n recipient: account.address,\n },\n royalty_max_bps: royaltyMaxBps,\n start_time: (now + START_TIME_BUFFER_SECS).toString(),\n end_time: endTime.toString(),\n salt: generateSalt(),\n counter,\n };\n\n const typedData = stringifyBigInts(\n build1155OrderTypedData(orderParams, chainId)\n ) as TypedData;\n\n const signature = await account.signMessage(typedData);\n const signatureArray = toSignatureArray(signature);\n\n const registerPayload = stringifyBigInts({\n parameters: {\n ...orderParams,\n offer: {\n ...orderParams.offer,\n item_type: shortString.encodeShortString(orderParams.offer.item_type),\n },\n consideration: {\n ...orderParams.consideration,\n item_type: shortString.encodeShortString(orderParams.consideration.item_type),\n },\n },\n signature: signatureArray,\n }) as Record<string, unknown>;\n\n // Bid pays per-unit price × quantity total — approve the full amount.\n const totalWei = BigInt(priceWei) * BigInt(amount);\n const amountU256 = cairo.uint256(totalWei.toString());\n const approveCall = {\n contractAddress: token.address,\n entrypoint: \"approve\",\n calldata: [\n config.marketplace1155Contract,\n amountU256.low.toString(),\n amountU256.high.toString(),\n ],\n };\n\n const registerCall = contract.populate(\"register_order\", [registerPayload]);\n\n try {\n const tx = await account.execute([approveCall, registerCall]);\n await provider.waitForTransaction(tx.transaction_hash);\n return { txHash: tx.transaction_hash };\n } catch (err) {\n throw new MedialaneError(\"Failed to make ERC-1155 offer\", \"TRANSACTION_FAILED\", err);\n }\n}\n\n/**\n * Checkout a cart of ERC-1155 orders in a single atomic multicall. Fulfilment\n * is unsigned now — group ERC-20 approvals by token, then one `fulfill_order`\n * call per item with its quantity.\n */\nexport async function checkoutCart1155(\n account: AccountInterface,\n items: CartItem[],\n config: ResolvedConfig\n): Promise<TxResult> {\n if (items.length === 0) throw new MedialaneError(\"Cart is empty\", \"INVALID_PARAMS\");\n\n const contract = getContract(config);\n const provider = getProvider(config);\n\n const tokenTotals = new Map<string, bigint>();\n for (const item of items) {\n const prev = tokenTotals.get(item.considerationToken) ?? 0n;\n tokenTotals.set(item.considerationToken, prev + BigInt(item.considerationAmount));\n }\n\n const approveCalls = Array.from(tokenTotals.entries()).map(([tokenAddr, totalWei]) => {\n const amount = cairo.uint256(totalWei.toString());\n return {\n contractAddress: tokenAddr,\n entrypoint: \"approve\",\n calldata: [\n config.marketplace1155Contract,\n amount.low.toString(),\n amount.high.toString(),\n ],\n };\n });\n\n const fulfillCalls = items.map((item) =>\n contract.populate(\"fulfill_order\", [item.orderHash, item.quantity ?? \"1\"]),\n );\n\n try {\n const tx = await account.execute([...approveCalls, ...fulfillCalls]);\n await provider.waitForTransaction(tx.transaction_hash);\n return { txHash: tx.transaction_hash };\n } catch (err) {\n throw new MedialaneError(\"ERC-1155 cart checkout failed\", \"TRANSACTION_FAILED\", err);\n }\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\n/** Bulk-cancel on the 1155 venue: bump the caller's counter. */\nexport async function incrementCounter1155(\n account: AccountInterface,\n config: ResolvedConfig\n): Promise<TxResult> {\n const contract = getContract(config);\n const provider = getProvider(config);\n const call = contract.populate(\"increment_counter\", []);\n try {\n const tx = await account.execute(call);\n await provider.waitForTransaction(tx.transaction_hash);\n return { txHash: tx.transaction_hash };\n } catch (err) {\n throw new MedialaneError(\"Failed to increment counter (1155)\", \"TRANSACTION_FAILED\", err);\n }\n}\n","import { type AccountInterface, type TypedData, constants } from \"starknet\";\nimport type { ResolvedConfig } from \"../config.js\";\nimport type {\n CreateListing1155Params,\n MakeOffer1155Params,\n FulfillOrder1155Params,\n CancelOrder1155Params,\n CartItem,\n TxResult,\n OrderDetails,\n} from \"../types/marketplace.js\";\nimport {\n build1155OrderTypedData,\n build1155CancellationTypedData,\n} from \"../marketplace/signing.js\";\nimport {\n createListing1155,\n makeOffer1155,\n fulfillOrder1155,\n cancelOrder1155,\n checkoutCart1155,\n getOrderDetails1155,\n getCounter1155,\n incrementCounter1155,\n} from \"./orders.js\";\n\nexport class Medialane1155Module {\n constructor(private readonly config: ResolvedConfig) {}\n\n // ─── Writes ───────────────────────────────────────────────────────────────\n\n /**\n * Create an ERC-1155 sell listing.\n * Optionally grants `set_approval_for_all` if not already approved.\n */\n createListing(account: AccountInterface, params: CreateListing1155Params): Promise<TxResult> {\n return createListing1155(account, params, this.config);\n }\n\n /**\n * Make an offer (bid) on an ERC-1155 token.\n * Approves the ERC-20 spend then calls `register_order` atomically.\n */\n makeOffer(account: AccountInterface, params: MakeOffer1155Params): Promise<TxResult> {\n return makeOffer1155(account, params, this.config);\n }\n\n /**\n * Fulfill (buy) an ERC-1155 listing.\n * Approves the payment token then calls `fulfill_order` atomically.\n */\n fulfillOrder(account: AccountInterface, params: FulfillOrder1155Params): Promise<TxResult> {\n return fulfillOrder1155(account, params, this.config);\n }\n\n /**\n * Cancel an ERC-1155 listing (offerer only).\n */\n cancelOrder(account: AccountInterface, params: CancelOrder1155Params): Promise<TxResult> {\n return cancelOrder1155(account, params, this.config);\n }\n\n /**\n * Checkout a cart of ERC-1155 orders atomically.\n * Signs one fulfillment per item (with quantity), sums ERC-20 approvals by token.\n */\n checkoutCart(account: AccountInterface, items: CartItem[]): Promise<TxResult> {\n return checkoutCart1155(account, items, this.config);\n }\n\n /** Bulk-cancel on the 1155 venue: bump the caller's counter. */\n incrementCounter(account: AccountInterface): Promise<TxResult> {\n return incrementCounter1155(account, this.config);\n }\n\n // ─── View calls ───────────────────────────────────────────────────────────\n\n getOrderDetails(orderHash: string): Promise<OrderDetails> {\n return getOrderDetails1155(orderHash, this.config);\n }\n\n getCounter(address: string): Promise<bigint> {\n return getCounter1155(address, this.config);\n }\n\n // ─── Typed data builders (for ChipiPay / custom signing flows) ───────────\n\n buildListingTypedData(\n params: Record<string, unknown>,\n chainId: constants.StarknetChainId\n ): TypedData {\n return build1155OrderTypedData(params, chainId);\n }\n\n buildCancellationTypedData(\n params: Record<string, unknown>,\n chainId: constants.StarknetChainId\n ): TypedData {\n return build1155CancellationTypedData(params, chainId);\n }\n}\n","import { num } from \"starknet\";\n\n/**\n * Normalize a Starknet address to a 0x-prefixed 64-character lowercase hex\n * string. Validates the input by routing through `BigInt(...)` — non-numeric\n * input throws `Invalid Starknet address: \"<input>\"`.\n *\n * The single source of truth for address normalization across Medialane.\n * `medialane-backend` re-exports this; do not maintain a parallel copy.\n */\nexport function normalizeAddress(address: string): string {\n try {\n const hex = num.toHex(BigInt(address));\n return \"0x\" + hex.slice(2).padStart(64, \"0\").toLowerCase();\n } catch {\n throw new Error(`Invalid Starknet address: \"${address}\"`);\n }\n}\n\n/**\n * Normalize a Starknet felt/hash (tx hash, order hash, etc.) to a 0x-prefixed\n * 64-character lowercase hex string. Same shape as `normalizeAddress` — kept\n * as a separate name so the *intent* of each call site is explicit.\n *\n * Starknet RPCs and wallets may omit leading zeroes for the same value;\n * database uniqueness must not treat those textual variants as different\n * transactions.\n */\nexport function normalizeHash(hash: string): string {\n try {\n const hex = num.toHex(BigInt(hash));\n return \"0x\" + hex.slice(2).padStart(64, \"0\").toLowerCase();\n } catch {\n throw new Error(`Invalid Starknet hash: \"${hash}\"`);\n }\n}\n\n/**\n * Shorten an address to \"0x1234...abcd\" format.\n */\nexport function shortenAddress(address: string, chars = 4): string {\n const norm = normalizeAddress(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 { 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 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 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 ) {\n this.baseHeaders = apiKey ? { \"x-api-key\": apiKey } : {};\n this.retryOptions = retryOptions;\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\", normalizeAddress(query.offerer));\n if (query.minPrice) params.set(\"minPrice\", query.minPrice);\n if (query.maxPrice) params.set(\"maxPrice\", query.maxPrice);\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/${normalizeAddress(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/${normalizeAddress(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/${normalizeAddress(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 ): 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 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: normalizeAddress(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/${normalizeAddress(contract)}`);\n }\n\n getCollectionTokens(\n contract: string,\n page = 1,\n limit = 20\n ): Promise<ApiResponse<ApiToken[]>> {\n return this.get<ApiResponse<ApiToken[]>>(\n `/v1/collections/${normalizeAddress(contract)}/tokens?page=${page}&limit=${limit}`\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 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/${normalizeAddress(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/${normalizeAddress(contract)}/${tokenId}/comments${qs ? `?${qs}` : \"\"}`\n );\n }\n\n // ─── Search ────────────────────────────────────────────────────────────────\n\n search(q: string, limit = 10): Promise<ApiResponse<ApiSearchResult> & { query: string }> {\n const params = new URLSearchParams({ q, limit: String(limit) });\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/${normalizeAddress(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/${normalizeAddress(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/${normalizeAddress(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/${normalizeAddress(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/${normalizeAddress(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/${normalizeAddress(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/${normalizeAddress(collection)}/${normalizeAddress(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(normalizeAddress).join(\",\") });\n const res = await this.get<{ data: PopBatchEligibilityItem[] }>(\n `/v1/pop/eligibility/${normalizeAddress(collection)}?${params}`\n );\n return res.data;\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/${normalizeAddress(collection)}/${normalizeAddress(wallet)}`\n );\n return res.data;\n }\n}\n","import { Contract, type AccountInterface } from \"starknet\";\nimport type { ResolvedConfig } from \"../config.js\";\nimport { normalizeAddress } from \"../utils/address.js\";\nimport { POPCollectionABI, POPFactoryABI } from \"../abis/index.js\";\nimport { POP_FACTORY_CONTRACT_MAINNET } from \"../constants.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 = POP_FACTORY_CONTRACT_MAINNET;\n }\n\n private _collection(address: string, account: AccountInterface) {\n return new Contract(POPCollectionABI as any, normalizeAddress(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 = new Contract(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 { Contract, type AccountInterface } from \"starknet\";\nimport type { ResolvedConfig } from \"../config.js\";\nimport { normalizeAddress } from \"../utils/address.js\";\nimport { DropCollectionABI, DropFactoryABI } from \"../abis/index.js\";\nimport { DROP_FACTORY_CONTRACT_MAINNET } from \"../constants.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 = DROP_FACTORY_CONTRACT_MAINNET;\n this.config = config;\n }\n\n private _collection(address: string, account: AccountInterface) {\n return new Contract(DropCollectionABI as any, normalizeAddress(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 = new Contract(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 { Contract, type AccountInterface } from \"starknet\";\nimport type { ResolvedConfig } from \"../config.js\";\nimport { normalizeAddress } from \"../utils/address.js\";\nimport { IPCollection1155FactoryABI, IPCollection1155ABI } from \"../abis/index.js\";\nimport { COLLECTION_1155_CONTRACT_MAINNET } from \"../constants.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 MintItemParams {\n /** ERC-1155 collection contract address */\n collection: string;\n /** Recipient wallet address */\n to: string;\n /** Token ID (u256 — use a numeric string or bigint) */\n tokenId: bigint | string;\n /** Number of copies to mint */\n value: bigint | string;\n /**\n * Metadata URI — must start with `ipfs://` or `ar://`.\n * Immutable: validated and stored on first mint of each token_id.\n */\n tokenUri: string;\n}\n\nexport interface BatchMintItemParams {\n /** ERC-1155 collection contract address */\n collection: string;\n /** Recipient wallet address */\n to: string;\n items: Array<{\n tokenId: bigint | string;\n value: bigint | string;\n tokenUri: string;\n }>;\n}\n\nexport class ERC1155CollectionService {\n private readonly factoryAddress: string;\n\n constructor(config: ResolvedConfig) {\n this.factoryAddress = config.collection1155Contract ?? COLLECTION_1155_CONTRACT_MAINNET;\n }\n\n private _factory(account: AccountInterface) {\n return new Contract(\n IPCollection1155FactoryABI as any,\n normalizeAddress(this.factoryAddress),\n account as any\n );\n }\n\n private _collection(address: string, account: AccountInterface) {\n return new Contract(\n IPCollection1155ABI as any,\n normalizeAddress(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 single token into an existing ERC-1155 collection.\n * Caller must be the collection owner.\n * The `tokenUri` is immutable — validated and stored on the first mint only.\n */\n async mintItem(\n account: AccountInterface,\n params: MintItemParams\n ): Promise<TxResult> {\n const collection = this._collection(params.collection, account);\n const call = collection.populate(\"mint_item\", [\n params.to,\n BigInt(params.tokenId),\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 token IDs into an existing ERC-1155 collection.\n * All items go to the same `to` address.\n * Caller must be the collection owner.\n */\n async batchMintItem(\n account: AccountInterface,\n params: BatchMintItemParams\n ): Promise<TxResult> {\n const collection = this._collection(params.collection, account);\n const tokenIds = params.items.map((i) => BigInt(i.tokenId));\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_item\", [\n params.to,\n tokenIds,\n values,\n tokenUris,\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 { Contract, RpcProvider, uint256, type AccountInterface, type Call, type ProviderInterface } from \"starknet\";\nimport type { ResolvedConfig } from \"../config.js\";\nimport { CreatorCoinFactoryABI } from \"../abis/index.js\";\nimport { CREATOR_COIN_FACTORY_CONTRACT_MAINNET, EKUBO_CORE_MAINNET } from \"../constants.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(\"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: EKUBO_CORE_MAINNET,\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/**\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 = CREATOR_COIN_FACTORY_CONTRACT_MAINNET;\n this.config = config;\n }\n\n private _factory(account: AccountInterface) {\n return new Contract(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 salt = params.salt ?? BigInt(\"0x\" + Date.now().toString(16));\n const call = this._factory(account).populate(\"create_creator_coin\", [\n params.owner,\n params.name,\n params.symbol,\n BigInt(params.initialSupply),\n BigInt(salt),\n ]);\n const res = await account.execute([call]);\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 ek = params.ekubo ?? VALIDATED_EKUBO_PARAMS;\n const factory = this._factory(account);\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: [this.factoryAddress, amt.low, amt.high],\n });\n }\n calls.push(factory.populate(\"launch_on_ekubo\", [launchParameters, ekuboParameters]));\n\n const res = await account.execute(calls);\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 { type MedialaneConfig, resolveConfig, type ResolvedConfig } from \"./config.js\";\nimport { MarketplaceModule } from \"./marketplace/index.js\";\nimport { Medialane1155Module } from \"./marketplace1155/index.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\";\n\nexport class MedialaneClient {\n /** On-chain marketplace interactions for ERC-721 assets (create listing, fulfill order, etc.) */\n readonly marketplace: MarketplaceModule;\n\n /** On-chain marketplace interactions for ERC-1155 assets (Medialane1155 contract). */\n readonly marketplace1155: Medialane1155Module;\n\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 };\n\n private readonly config: ResolvedConfig;\n\n constructor(rawConfig: MedialaneConfig = {}) {\n this.config = resolveConfig(rawConfig);\n\n this.marketplace = new MarketplaceModule(this.config);\n this.marketplace1155 = new Medialane1155Module(this.config);\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 };\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);\n }\n }\n\n get network() {\n return this.config.network;\n }\n\n get rpcUrl() {\n return this.config.rpcUrl;\n }\n\n get marketplaceContract() {\n return this.config.marketplaceContract;\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\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\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?: {\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\nexport interface ApiOrdersQuery {\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. */\n standard: \"ERC721\" | \"ERC1155\" | \"UNKNOWN\";\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// ─── 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 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 /** 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 ApiWalletType =\n | \"ARGENT\"\n | \"BRAAVOS\"\n | \"CARTRIDGE\"\n | \"PRIVY\"\n | \"CHIPIPAY\"\n | \"INJECTED\"\n | \"UNKNOWN\";\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","import type { ServiceDefinition, ServiceCapability } from \"../types/api.js\";\nimport {\n COLLECTION_721_CONTRACT_MAINNET,\n COLLECTION_721_START_BLOCK_MAINNET,\n COLLECTION_1155_CONTRACT_MAINNET,\n COLLECTION_1155_CLASS_HASH_MAINNET,\n COLLECTION_1155_START_BLOCK_MAINNET,\n POP_FACTORY_CONTRACT_MAINNET,\n POP_COLLECTION_CLASS_HASH_MAINNET,\n DROP_FACTORY_CONTRACT_MAINNET,\n DROP_COLLECTION_CLASS_HASH_MAINNET,\n MARKETPLACE_721_CONTRACT_MAINNET,\n MARKETPLACE_721_CLASS_HASH_MAINNET,\n MARKETPLACE_721_START_BLOCK_MAINNET,\n MARKETPLACE_1155_CONTRACT_MAINNET,\n MARKETPLACE_1155_CLASS_HASH_MAINNET,\n MARKETPLACE_1155_START_BLOCK_MAINNET,\n CREATOR_COIN_FACTORY_CONTRACT_MAINNET,\n CREATOR_COIN_FACTORY_CLASS_HASH_MAINNET,\n CREATOR_COIN_START_BLOCK_MAINNET,\n} from \"../constants.js\";\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 in year 2 (08-dao-governance §IV).\n *\n * Year-2 forward-compat: cross-account identity uses the future `AccountID`\n * contract (07-identity-model §IV) — no field here yet, intentionally.\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 factoryAddress: COLLECTION_721_CONTRACT_MAINNET,\n startBlock: COLLECTION_721_START_BLOCK_MAINNET,\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.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 factoryAddress: COLLECTION_1155_CONTRACT_MAINNET,\n classHash: COLLECTION_1155_CLASS_HASH_MAINNET,\n startBlock: COLLECTION_1155_START_BLOCK_MAINNET,\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 factoryAddress: POP_FACTORY_CONTRACT_MAINNET,\n classHash: POP_COLLECTION_CLASS_HASH_MAINNET,\n },\n uiVariant: \"pop\",\n capabilities: [\"claim\", \"transfer\"],\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 factoryAddress: DROP_FACTORY_CONTRACT_MAINNET,\n classHash: DROP_COLLECTION_CLASS_HASH_MAINNET,\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 \"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 factoryAddress: CREATOR_COIN_FACTORY_CONTRACT_MAINNET,\n classHash: CREATOR_COIN_FACTORY_CLASS_HASH_MAINNET,\n startBlock: CREATOR_COIN_START_BLOCK_MAINNET,\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 factoryAddress: MARKETPLACE_721_CONTRACT_MAINNET,\n classHash: MARKETPLACE_721_CLASS_HASH_MAINNET,\n startBlock: MARKETPLACE_721_START_BLOCK_MAINNET,\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 factoryAddress: MARKETPLACE_1155_CONTRACT_MAINNET,\n classHash: MARKETPLACE_1155_CLASS_HASH_MAINNET,\n startBlock: MARKETPLACE_1155_START_BLOCK_MAINNET,\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"]}
|