@medialane/sdk 0.76.0 → 0.77.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/chains.ts","../../src/fee/config.ts","../../src/config.ts","../../src/utils/address.ts","../../src/utils/retry.ts","../../src/api/client.ts","../../src/constants.ts","../../src/starknet/marketplace/errors.ts","../../src/utils/rpc.ts","../../src/starknet/marketplace/utils.ts","../../src/starknet/abis/ipMarketplace.ts","../../src/starknet/abis/popCollection.ts","../../src/starknet/abis/popFactory.ts","../../src/starknet/abis/dropCollection.ts","../../src/starknet/abis/dropFactory.ts","../../src/starknet/abis/medialane1155.ts","../../src/starknet/abis/ipCollection1155Factory.ts","../../src/starknet/abis/ipCollection1155.ts","../../src/starknet/abis/ipCollection.ts","../../src/starknet/abis/ipNft.ts","../../src/starknet/abis/creatorCoinFactory.ts","../../src/starknet/abis/ipTicketCollection.ts","../../src/starknet/abis/ipTicketCollectionFactory.ts","../../src/starknet/abis/ipClubFactory.ts","../../src/starknet/abis/ipClubCollection.ts","../../src/starknet/abis/ipSponsorship.ts","../../src/starknet/abis/ipGenesis.ts","../../src/starknet/services/pop.ts","../../src/starknet/fee/build-fee-call.ts","../../src/starknet/services/drop.ts","../../src/starknet/services/erc1155collection.ts","../../src/utils/token.ts","../../src/starknet/services/coinLaunchMath.ts","../../src/starknet/services/creatorCoin.ts","../../src/starknet/services/ticket.ts","../../src/starknet/services/club.ts","../../src/starknet/services/sponsorship.ts","../../src/starknet/client.ts","../../src/starknet/marketplace/orders.ts","../../src/starknet/marketplace1155/orders.ts","../../src/utils/bigint.ts","../../src/starknet/marketplace/signing.ts","../../src/starknet/marketplace/build.ts","../../src/starknet/marketplace1155/build.ts","../../src/starknet/venue.ts","../../src/starknet/admin-auth/types.ts","../../src/starknet/admin-auth/digest.ts","../../src/starknet/admin-auth/request.ts","../../src/starknet/admin-auth/grant.ts","../../src/starknet/admin-auth/headers.ts","../../src/starknet/siws/client.ts","../../src/starknet/bytearray.ts","../../src/starknet/business-provisioning/derive.ts","../../src/starknet/business-provisioning/account.ts","../../src/starknet/business-provisioning/handoff.ts","../../src/starknet/business-provisioning/deploy.ts"],"names":["z","hash","keccak_256","base58","base32","Contract","constants","RpcProvider","cairo","COIN_DECIMALS","uint256","CairoOption","CairoOptionVariant","_contractCache","TypedDataRevision","shortString","contractFor","registerPayload","num","ec","encode","extract","sha256","expand"],"mappings":"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","file":"index.cjs","sourcesContent":["// Single source of per-chain coordinates for Medialane's own services\n// (spec 2026-06-13 §3.1, Decision A). Keyed by CHAIN ALONE — Medialane is\n// mainnet-only, so there is no network axis (refines decisions.md D-9).\n\n/** Mirrors the backend Prisma `Chain` enum. */\nexport const CHAINS = [\"STARKNET\", \"ETHEREUM\", \"SOLANA\", \"BASE\", \"STELLAR\", \"BITCOIN\"] as const;\nexport type Chain = (typeof CHAINS)[number];\n\n/** Starknet coordinates of Medialane services + venues. All fields optional\n * because not every service exists on every chain. */\nexport interface StarknetCoordinates {\n rpcUrl: string;\n marketplace721?: `0x${string}`;\n marketplace721ClassHash?: `0x${string}`;\n marketplace721StartBlock?: number;\n marketplace1155?: `0x${string}`;\n marketplace1155ClassHash?: `0x${string}`;\n marketplace1155StartBlock?: number;\n collection721?: `0x${string}`;\n collection721StartBlock?: number;\n ipNftClassHash?: `0x${string}`;\n ipCollectionClassHash?: `0x${string}`;\n collection1155?: `0x${string}`;\n collection1155FactoryClassHash?: `0x${string}`;\n collection1155ClassHash?: `0x${string}`;\n collection1155StartBlock?: number;\n popFactory?: `0x${string}`;\n popCollectionClassHash?: `0x${string}`;\n dropFactory?: `0x${string}`;\n dropCollectionClassHash?: `0x${string}`;\n nftComments?: `0x${string}`;\n creatorCoinFactory?: `0x${string}`;\n creatorCoinEkuboLauncher?: `0x${string}`;\n creatorCoinClassHash?: `0x${string}`;\n creatorCoinFactoryClassHash?: `0x${string}`;\n creatorCoinStartBlock?: number;\n ekuboCore?: `0x${string}`;\n ipTicketsFactory?: `0x${string}`;\n ipTicketCollectionClassHash?: `0x${string}`;\n ipTicketsFactoryClassHash?: `0x${string}`;\n ipTicketsStartBlock?: number;\n ipClubFactory?: `0x${string}`;\n ipClubFactoryClassHash?: `0x${string}`;\n ipClubCollectionClassHash?: `0x${string}`;\n ipClubFactoryStartBlock?: number;\n ipSponsorship?: `0x${string}`;\n ipSponsorshipClassHash?: `0x${string}`;\n ipSponsorshipStartBlock?: number;\n mediaWalletClassHash?: `0x${string}`;\n}\n\n/** Coordinates per chain. Only STARKNET is populated today; adding a chain\n * means adding an entry here (litmus test, spec §7). */\n/** EVM coordinates — one shape for Ethereum and Base (same bytecode, two\n * chains). Populated at deploy time (federation Phase 4). */\nexport interface EvmCoordinates {\n rpcUrl: string;\n marketplace721?: `0x${string}`;\n marketplace721StartBlock?: number;\n marketplace1155?: `0x${string}`;\n marketplace1155StartBlock?: number;\n mipRegistry?: `0x${string}`;\n mipRegistryStartBlock?: number;\n mipEditionsRegistry?: `0x${string}`;\n mipEditionsRegistryStartBlock?: number;\n}\n\n/** Solana coordinates — base58 program ids. Populated at deploy time. */\nexport interface SolanaCoordinates {\n rpcUrl: string;\n mipCollectionsProgram?: string;\n marketplaceProgram?: string;\n startSlot?: number;\n}\n\n/** Stellar (Soroban) coordinates — strkey contract ids. Populated at deploy\n * time; the registry takes the collection WASM hash as a constructor arg. */\nexport interface StellarCoordinates {\n rpcUrl: string;\n mipRegistry?: string;\n marketplace?: string;\n collectionWasmHash?: string;\n startLedger?: number;\n}\n\n/** Per-chain coordinate shapes. Every chain is an equal entry — no chain is\n * privileged in core (chain-sovereignty I2/I4). */\nexport interface CoordinatesByChain {\n STARKNET?: StarknetCoordinates;\n ETHEREUM?: EvmCoordinates;\n BASE?: EvmCoordinates;\n SOLANA?: SolanaCoordinates;\n STELLAR?: StellarCoordinates;\n BITCOIN?: never;\n}\n\n/** @deprecated Renamed — use `StarknetCoordinates` (coordinates are per-chain-shaped). */\nexport type ChainCoordinates = StarknetCoordinates;\n\nconst COORDINATES: CoordinatesByChain = {\n STARKNET: {\n rpcUrl: \"https://rpc.starknet.lava.build\",\n marketplace721: \"0x03eda9a2b6ad90845a43591bac8083ebaf677d51fdf20f503b2c01889e3131fc\",\n marketplace721ClassHash: \"0x0700d9230d07e5203e27778c0dc70f9134d2b25bf319f7cf8348dc66a6923e90\",\n marketplace721StartBlock: 11198146,\n marketplace1155: \"0x07c4ce1c19ea48cc11135ed22b19ff745f5aec508c3828593002e4f76fdb1b38\",\n marketplace1155ClassHash: \"0x0242f5c388da7cee2d99e2a69453c8159bf927fbec4e797a3cfdcbbcb5b68328\",\n marketplace1155StartBlock: 11198267,\n collection721: \"0x0225c3ae09506b8d97adc39649ca740dad5aac195b7f5f0441cc1852947acaea\",\n collection721StartBlock: 11198496,\n ipNftClassHash: \"0x012d3ae40ba35c7e2be0946532dac60e48932447912fdf96b674da67c029b9cc\",\n ipCollectionClassHash: \"0x022155a1a130a40e57aac4b89c07fab3f616bc351b1270fc40f756b963afe8b4\",\n collection1155: \"0x015368976d46fae5bfa1c58600f641d5aa5dbbf53ebc6b78aa3922194aad3551\",\n collection1155FactoryClassHash: \"0x04eb6b419770f13bd191f120b9fc9ee624c0613ad4490062d293ca2016b3b1d2\",\n collection1155ClassHash: \"0x06cf3f5a2322dac35e07a6064a5b8802f19fda8aa3f4726f0cb7bc05dea1bd78\",\n collection1155StartBlock: 11199527,\n popFactory: \"0x00b32c34b427d8f346b5843ada6a37bd3368d879fc752cd52b68a87287f60111\",\n popCollectionClassHash: \"0x077c421686f10851872561953ea16898d933364b7f8937a5d7e2b1ba0a36263f\",\n dropFactory: \"0x03587f42e29daee1b193f6cf83bf8627908ed6632d0d83fcb26225c50547d800\",\n dropCollectionClassHash: \"0x00092e72cdb63067521e803aaf7d4101c3e3ce026ae6bc045ec4228027e58282\",\n nftComments: \"0x02cdac70c94447189af0389dfea63f4d5e4154ea8a563de288a5ab1c39e37843\",\n creatorCoinFactory: \"0x50fa807b5274079fb19374673d7bab6d2dc3af7e1032ea43eb6e44bcbde4c3c\",\n creatorCoinEkuboLauncher: \"0x4f7fceb5ac10f12f9544a09580592e5bdf1b7f04f48765eecf12286d8ccb7b4\",\n creatorCoinClassHash: \"0x743e4c8a5b96bb83bbf4af04edbbb482d5ece89eed9b729a79fb7df0cd0b6b6\",\n creatorCoinFactoryClassHash: \"0x51765926b1344c9a20b8cd4b5abe7b7d47375ae97cf6804db3ea5d4b05a9b55\",\n creatorCoinStartBlock: 10474544,\n ekuboCore: \"0x00000005dd3d2f4429af886cd1a3b08289dbcea99a294197e9eb43b0e0325b4b\",\n ipTicketsFactory: \"0x0767bf5b57e1f812463159b5ed683183e1b0c3f942b74871b5c6cd6a93c15e99\",\n ipTicketCollectionClassHash: \"0x0449e8eb7c117740d07cb8e0157d32c8ba3d19d1cfd2784ed5e139f5a1e04acc\",\n ipTicketsFactoryClassHash: \"0x04a739ac3a673ebd0db96bb24475600797c3ed34827e79517f9b2b1640276e6a\",\n ipTicketsStartBlock: 11933694,\n ipClubFactory: \"0x06a0b0be16d70c78f2e18119dbf90e5911cbfd5d8d484bc555dc61d96f56a2b9\",\n ipClubFactoryClassHash: \"0x05d9d431bd3532b1fa4d5bab572f49c5ad8034ee3cc83951aa41ae82c9cad266\",\n ipClubCollectionClassHash: \"0x05b8477c72e6bf0cf64967d71155021fd4d77d9a57e8805c6b40709121c002c5\",\n ipClubFactoryStartBlock: 11928775,\n // v3 redesign (deployed 2026-07-15): single contract is both the\n // offer/bid/proposal registry and the license collection (embeds\n // ERC721Component directly) — no separate receipt contract, no\n // set_minter bootstrap. Supersedes the 2026-07-02 v2 address, which had\n // zero offers/licenses ever issued (clean cutover, no reclassification).\n ipSponsorship: \"0x03729ebe0fedf29ec97fca34db09174772af7f870af26a26e024a61040143e5c\",\n ipSponsorshipClassHash: \"0x0626daac2ed7e2bf630ef5b10104b3202db1559216c0c1a504c0e99be2fbfec3\",\n ipSponsorshipStartBlock: 11896456,\n mediaWalletClassHash: \"0x014b210c7d47392691144bafecdca3c6c7791cc295ea305988da0a724c05ac31\",\n },\n};\n\nexport function getCoordinates(chain: \"STARKNET\"): StarknetCoordinates;\nexport function getCoordinates(chain: \"ETHEREUM\" | \"BASE\"): EvmCoordinates;\nexport function getCoordinates(chain: \"SOLANA\"): SolanaCoordinates;\nexport function getCoordinates(chain: \"STELLAR\"): StellarCoordinates;\nexport function getCoordinates(\n chain: Chain,\n): StarknetCoordinates | EvmCoordinates | SolanaCoordinates | StellarCoordinates;\nexport function getCoordinates(\n chain: Chain,\n): StarknetCoordinates | EvmCoordinates | SolanaCoordinates | StellarCoordinates {\n const c = COORDINATES[chain];\n if (!c) throw new Error(`No coordinates configured for chain \"${chain}\"`);\n return c;\n}\n\nexport const DEFAULT_CHAIN: Chain = \"STARKNET\";\n\n/** Typed Starknet coordinates for Starknet-only modules; throws when the\n * client is scoped to another chain. */\nexport function getStarknetCoordinates(chain: Chain): StarknetCoordinates {\n if (chain !== \"STARKNET\") {\n throw new Error(`This module is Starknet-only (client chain: \"${chain}\")`);\n }\n return getCoordinates(\"STARKNET\");\n}\n","import { z } from \"zod\";\n\nexport const FeeConfigSchema = z.object({\n enabled: z.boolean().default(true),\n fundAddress: z.string().min(1).optional(),\n marketplaceBps: z.number().int().min(0).max(10000).default(100),\n launchpadBps: z.number().int().min(0).max(10000).default(100),\n});\n\nexport type FeeConfig = z.input<typeof FeeConfigSchema>;\n\nexport interface ResolvedFeeConfig {\n enabled: boolean;\n fundAddress: string | undefined;\n marketplaceBps: number;\n launchpadBps: number;\n}\n\nexport function resolveFeeConfig(raw: FeeConfig | undefined): ResolvedFeeConfig {\n const p = FeeConfigSchema.parse(raw ?? {});\n return {\n enabled: p.enabled,\n fundAddress: p.fundAddress,\n marketplaceBps: p.marketplaceBps,\n launchpadBps: p.launchpadBps,\n };\n}\n","import { z } from \"zod\";\nimport { CHAINS, getCoordinates, DEFAULT_CHAIN, type Chain } from \"./chains.js\";\nimport type { RetryOptions } from \"./utils/retry.js\";\nimport { FeeConfigSchema, resolveFeeConfig, type ResolvedFeeConfig } from \"./fee/index.js\";\n\nexport const MedialaneConfigSchema = z.object({\n // Chain-scoped client (spec 2026-06-13 Decision B): one client per chain,\n // coordinates resolved from the registry. Replaces the removed `network` axis.\n chain: z.enum(CHAINS).default(DEFAULT_CHAIN),\n rpcUrl: z.string().url().optional(),\n backendUrl: z.string().url().optional(),\n apiKey: z.string().optional(),\n // Per-contract overrides remain for tests/forks; default from the registry.\n marketplace721Contract: z.string().optional(),\n marketplaceContract: z.string().optional(),\n marketplace1155Contract: z.string().optional(),\n collection721Contract: z.string().optional(),\n collectionContract: z.string().optional(),\n collection1155Contract: z.string().optional(),\n retryOptions: z.object({\n maxAttempts: z.number().int().min(1).max(10).optional(),\n baseDelayMs: z.number().int().min(0).optional(),\n maxDelayMs: z.number().int().min(0).optional(),\n }).optional(),\n feeConfig: FeeConfigSchema.optional(),\n});\n\nexport type MedialaneConfig = z.input<typeof MedialaneConfigSchema>;\n\nexport interface ResolvedConfig {\n chain: Chain;\n rpcUrl: string;\n backendUrl: string | undefined;\n apiKey: string | undefined;\n marketplace721Contract: string;\n marketplaceContract: string;\n marketplace1155Contract: string;\n collection721Contract: string;\n collectionContract: string;\n collection1155Contract: string;\n retryOptions?: RetryOptions;\n feeConfig: ResolvedFeeConfig;\n}\n\nexport function resolveConfig(raw: MedialaneConfig): ResolvedConfig {\n const parsed = MedialaneConfigSchema.parse(raw);\n const coords = getCoordinates(parsed.chain);\n // The resolved contract fields are the Starknet module surface; on other\n // chains they stay unset and the per-chain adapters resolve their own\n // coordinates.\n const sn = (parsed.chain === \"STARKNET\" ? coords : {}) as import(\"./chains.js\").StarknetCoordinates;\n\n const marketplace721Contract =\n parsed.marketplace721Contract ?? parsed.marketplaceContract ?? sn.marketplace721!;\n const collection721Contract =\n parsed.collection721Contract ?? parsed.collectionContract ?? sn.collection721!;\n\n return {\n chain: parsed.chain,\n rpcUrl: parsed.rpcUrl ?? coords.rpcUrl,\n backendUrl: parsed.backendUrl,\n apiKey: parsed.apiKey,\n marketplace721Contract,\n marketplaceContract: marketplace721Contract,\n marketplace1155Contract: parsed.marketplace1155Contract ?? sn.marketplace1155!,\n collection721Contract,\n collectionContract: collection721Contract,\n collection1155Contract: parsed.collection1155Contract ?? sn.collection1155!,\n retryOptions: parsed.retryOptions,\n feeConfig: resolveFeeConfig(parsed.feeConfig),\n };\n}\n","import { keccak_256 } from \"@noble/hashes/sha3.js\";\nimport { base32, base58 } from \"@scure/base\";\nimport type { Chain } from \"../chains.js\";\n\n/**\n * Normalize an address to its chain's canonical form. The single source of\n * address normalization across Medialane (07-identity §I; spec 2026-06-13 §3.2).\n * `medialane-backend` re-exports this; do not maintain a parallel copy.\n *\n * - STARKNET: 0x-prefixed 64-char lowercase hex (felt, zero-padded).\n * - ETHEREUM / BASE: EIP-55 mixed-case checksum.\n * - SOLANA: base58, validated as a 32-byte public key, returned verbatim.\n * - STELLAR: strkey (G… account / C… contract), CRC16-XModem-verified,\n * canonical uppercase.\n * - BITCOIN: not implemented — a non-foreclosed seam, gated on a future\n * Bitcoin fork (chain-sovereignty §2); never a built path today.\n */\nexport function normalizeAddress(chain: Chain, address: string): string {\n switch (chain) {\n case \"STARKNET\":\n return normalizeStarknet(address);\n case \"ETHEREUM\":\n case \"BASE\":\n return normalizeEvm(address);\n case \"SOLANA\":\n return normalizeSolana(address);\n case \"STELLAR\":\n return normalizeStellar(address);\n case \"BITCOIN\":\n throw new Error(\"BITCOIN address normalization not implemented\");\n }\n}\n\nfunction normalizeStarknet(address: string): string {\n try {\n const hex = BigInt(address).toString(16);\n return \"0x\" + hex.padStart(64, \"0\").toLowerCase();\n } catch {\n throw new Error(`Invalid STARKNET address: \"${address}\"`);\n }\n}\n\nfunction normalizeEvm(address: string): string {\n const m = /^0x([0-9a-fA-F]{40})$/.exec(address);\n if (!m) throw new Error(`Invalid ETHEREUM/BASE address: \"${address}\"`);\n const lower = m[1].toLowerCase();\n // EIP-55: keccak256 of the lowercase hex (ASCII, no 0x); uppercase the i-th\n // hex char when the i-th nibble of the hash is >= 8.\n const hash = keccak_256(new TextEncoder().encode(lower));\n let out = \"0x\";\n for (let i = 0; i < 40; i++) {\n const nibble = (hash[i >> 1]! >> (i % 2 === 0 ? 4 : 0)) & 0xf;\n out += nibble >= 8 ? lower[i]!.toUpperCase() : lower[i];\n }\n return out;\n}\n\nfunction normalizeSolana(address: string): string {\n try {\n const bytes = base58.decode(address);\n if (bytes.length !== 32) throw new Error(\"not a 32-byte key\");\n return address; // base58 is canonical and case-sensitive — return as-is\n } catch {\n throw new Error(`Invalid SOLANA address: \"${address}\"`);\n }\n}\n\n/** Stellar strkey version bytes: 'G' account (6<<3), 'C' contract (2<<3). */\nconst STELLAR_VERSION_BYTES = new Set([6 << 3, 2 << 3]);\n\nfunction normalizeStellar(address: string): string {\n const upper = address.toUpperCase();\n if (!/^[GC][A-Z2-7]{55}$/.test(upper)) {\n throw new Error(`Invalid STELLAR address: \"${address}\"`);\n }\n let decoded: Uint8Array;\n try {\n decoded = base32.decode(upper);\n } catch {\n throw new Error(`Invalid STELLAR address: \"${address}\"`);\n }\n if (decoded.length !== 35 || !STELLAR_VERSION_BYTES.has(decoded[0]!)) {\n throw new Error(`Invalid STELLAR address: \"${address}\"`);\n }\n const payload = decoded.subarray(0, 33);\n const checksum = decoded[33]! | (decoded[34]! << 8);\n if (crc16xmodem(payload) !== checksum) {\n throw new Error(`Invalid STELLAR address: \"${address}\"`);\n }\n return upper;\n}\n\n/** CRC16-XModem (poly 0x1021, init 0x0000) — the strkey checksum. */\nfunction crc16xmodem(bytes: Uint8Array): number {\n let crc = 0;\n for (const byte of bytes) {\n crc ^= byte << 8;\n for (let i = 0; i < 8; i++) {\n crc = crc & 0x8000 ? ((crc << 1) ^ 0x1021) & 0xffff : (crc << 1) & 0xffff;\n }\n }\n return crc;\n}\n\n/**\n * Normalize a felt/hash (tx hash, order hash) to 0x-prefixed 64-char lowercase\n * hex. Starknet-shaped; chain-scoped at call sites that handle other chains'\n * hashes.\n */\nexport function normalizeHash(hash: string): string {\n try {\n const hex = BigInt(hash).toString(16);\n return \"0x\" + hex.padStart(64, \"0\").toLowerCase();\n } catch {\n throw new Error(`Invalid hash: \"${hash}\"`);\n }\n}\n\n/** Shorten an address to \"0x1234...abcd\" form, normalized for its chain. */\nexport function shortenAddress(chain: Chain, address: string, chars = 4): string {\n const norm = normalizeAddress(chain, address);\n return `${norm.slice(0, chars + 2)}...${norm.slice(-chars)}`;\n}\n","import { MedialaneApiError } from \"../api/client.js\";\n\nexport interface RetryOptions {\n maxAttempts?: number;\n baseDelayMs?: number;\n maxDelayMs?: number;\n}\n\nconst DEFAULT_MAX_ATTEMPTS = 3;\nconst DEFAULT_BASE_DELAY_MS = 300;\nconst DEFAULT_MAX_DELAY_MS = 5000;\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport async function withRetry<T>(\n fn: () => Promise<T>,\n opts?: RetryOptions\n): Promise<T> {\n const maxAttempts = opts?.maxAttempts ?? DEFAULT_MAX_ATTEMPTS;\n const baseDelayMs = opts?.baseDelayMs ?? DEFAULT_BASE_DELAY_MS;\n const maxDelayMs = opts?.maxDelayMs ?? DEFAULT_MAX_DELAY_MS;\n\n let lastError: unknown;\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n try {\n return await fn();\n } catch (err) {\n lastError = err;\n\n // Don't retry 4xx client errors — EXCEPT 429 (rate limited), which is\n // transient and clears with a short wait.\n if (err instanceof MedialaneApiError && err.status < 500 && err.status !== 429) {\n throw err;\n }\n\n // Retry on 5xx, 429, or network errors (TypeError from fetch).\n const isRetryable =\n (err instanceof MedialaneApiError && (err.status >= 500 || err.status === 429)) ||\n err instanceof TypeError;\n\n if (!isRetryable || attempt === maxAttempts - 1) {\n throw err;\n }\n\n // Prefer the server's Retry-After when it gave one (429 rate limits),\n // otherwise exponential backoff with jitter. Either way capped at\n // maxDelayMs so a client never hangs on a long server-asked wait.\n const retryAfterMs = err instanceof MedialaneApiError ? err.retryAfterMs : undefined;\n const backoff = baseDelayMs * Math.pow(2, attempt) + Math.random() * baseDelayMs;\n const delay = Math.min(retryAfterMs ?? backoff, maxDelayMs);\n await sleep(delay);\n }\n }\n\n throw lastError;\n}\n","import { normalizeAddress } from \"../utils/address.js\";\nimport type { Chain } from \"../chains.js\";\nimport type { ChainFilter } from \"../types/api.js\";\nimport type { MedialaneErrorCode } from \"../types/errors.js\";\nimport { withRetry, type RetryOptions } from \"../utils/retry.js\";\nimport type {\n ApiOrder,\n ApiOrdersQuery,\n ApiCounterOffersQuery,\n ApiToken,\n ApiCollection,\n ApiCoin,\n ApiUserRewards,\n ApiRewardsLeaderboardEntry,\n ApiRewardsConfig,\n ApiRewardsBatchEntry,\n ApiPointEvent,\n ApiCoinsQuery,\n ApiCollectionProfile,\n ApiCreatorProfile,\n ApiCreatorListResult,\n ApiCollectionClaim,\n ApiCollectionSlugClaim,\n ApiBusinessProvisioning,\n ApiWalletActivity,\n ApiUserWallet,\n ApiAppSource,\n ApiChain,\n ApiActivity,\n ApiActivitiesQuery,\n ApiComment,\n ApiRemixOffer,\n ApiRemixOffersQuery,\n ApiPublicRemix,\n ApiSearchResult,\n ApiIntent,\n ApiIntentCreated,\n ApiMetadataSignedUrl,\n ApiMetadataUpload,\n ApiPortalMe,\n ApiPortalKey,\n ApiPortalKeyCreated,\n ApiUsageDay,\n ApiWebhookEndpoint,\n ApiWebhookCreated,\n CreateWebhookParams,\n CreateListingIntentParams,\n MakeOfferIntentParams,\n FulfillOrderIntentParams,\n CancelOrderIntentParams,\n CreateMintIntentParams,\n CreateCollectionIntentParams,\n CreateCounterOfferIntentParams,\n CreateRemixOfferParams,\n AutoRemixOfferParams,\n ConfirmSelfRemixParams,\n ConfirmRemixOfferParams,\n ApiResponse,\n CollectionSort,\n CollectionTokensSort,\n PopClaimStatus,\n PopBatchEligibilityItem,\n DropMintStatus,\n} from \"../types/api.js\";\n\nfunction deriveErrorCode(status: number): MedialaneErrorCode {\n if (status === 404) return \"TOKEN_NOT_FOUND\";\n if (status === 429) return \"RATE_LIMITED\";\n if (status === 410) return \"INTENT_EXPIRED\";\n if (status === 401 || status === 403) return \"UNAUTHORIZED\";\n if (status === 400) return \"INVALID_PARAMS\";\n return \"UNKNOWN\";\n}\n\nexport class MedialaneApiError extends Error {\n readonly code: MedialaneErrorCode;\n constructor(\n public readonly status: number,\n message: string,\n /** Parsed `Retry-After` (ms) when the server sent one — used by withRetry on 429. */\n public readonly retryAfterMs?: number,\n ) {\n super(message);\n this.name = \"MedialaneApiError\";\n this.code = deriveErrorCode(status);\n }\n}\n\n/** Parse an HTTP `Retry-After` header (delta-seconds or HTTP-date) to milliseconds. */\nexport function parseRetryAfter(value: string | null): number | undefined {\n if (!value) return undefined;\n const seconds = Number(value);\n if (Number.isFinite(seconds)) return Math.max(0, seconds * 1000);\n const date = Date.parse(value);\n if (!Number.isNaN(date)) return Math.max(0, date - Date.now());\n return undefined;\n}\n\nexport class ApiClient {\n private readonly baseHeaders: Record<string, string>;\n private readonly retryOptions: RetryOptions | undefined;\n\n constructor(\n private readonly baseUrl: string,\n apiKey?: string,\n retryOptions?: RetryOptions,\n private readonly chain: Chain = \"STARKNET\"\n ) {\n this.baseHeaders = apiKey ? { \"x-api-key\": apiKey } : {};\n this.retryOptions = retryOptions;\n }\n\n /** Normalize an address for this client's chain (chain-scoped — Decision B). */\n private addr(a: string): string {\n return normalizeAddress(this.chain, a);\n }\n\n /**\n * The one HTTP path for the whole client: base headers (incl. x-api-key),\n * JSON error unwrapping, and `withRetry` (5xx/network only — 4xx never\n * retried). `allow404`/`allow403` turn those statuses into a `null` result\n * instead of a throw, for \"profile may not exist\" / \"not a holder\" reads —\n * so no method needs to hand-roll `fetch` to get that behavior.\n */\n private async request<T>(\n path: string,\n init?: RequestInit,\n opts?: { allow404?: boolean; allow403?: boolean },\n ): Promise<T> {\n const url = `${this.baseUrl.replace(/\\/$/, \"\")}${path}`;\n const headers: Record<string, string> = { ...this.baseHeaders };\n if (!(init?.body instanceof FormData)) {\n headers[\"Content-Type\"] = \"application/json\";\n }\n const allowed = (status: number): boolean =>\n (opts?.allow404 === true && status === 404) || (opts?.allow403 === true && status === 403);\n\n const res = await withRetry(async () => {\n const response = await fetch(url, {\n ...init,\n headers: { ...headers, ...(init?.headers as Record<string, string> | undefined) },\n });\n if (!response.ok && !allowed(response.status)) {\n const text = await response.text().catch(() => response.statusText);\n let message = text;\n try {\n const body = JSON.parse(text) as { error?: string };\n if (body.error) message = body.error;\n } catch {\n // use raw text\n }\n throw new MedialaneApiError(response.status, message, parseRetryAfter(response.headers.get(\"retry-after\")));\n }\n return response;\n }, this.retryOptions);\n\n if (allowed(res.status)) return null as T;\n return res.json() as Promise<T>;\n }\n\n private get<T>(path: string): Promise<T> {\n return this.request<T>(path, { method: \"GET\" });\n }\n\n private post<T>(path: string, body: unknown): Promise<T> {\n return this.request<T>(path, { method: \"POST\", body: JSON.stringify(body) });\n }\n\n private patch<T>(path: string, body: unknown): Promise<T> {\n return this.request<T>(path, { method: \"PATCH\", body: JSON.stringify(body) });\n }\n\n private del<T>(path: string): Promise<T> {\n return this.request<T>(path, { method: \"DELETE\" });\n }\n\n /** Bearer header for Clerk-JWT-authenticated routes. */\n private bearer(clerkToken: string): Record<string, string> {\n return { Authorization: `Bearer ${clerkToken}` };\n }\n\n // ─── Orders ────────────────────────────────────────────────────────────────\n\n getOrders(query: ApiOrdersQuery = {}): Promise<ApiResponse<ApiOrder[]>> {\n const params = new URLSearchParams();\n if (query.status) params.set(\"status\", query.status);\n if (query.collection) params.set(\"collection\", query.collection);\n if (query.currency) params.set(\"currency\", query.currency);\n if (query.sort) params.set(\"sort\", query.sort);\n if (query.page !== undefined) params.set(\"page\", String(query.page));\n if (query.limit !== undefined) params.set(\"limit\", String(query.limit));\n if (query.offerer) params.set(\"offerer\", this.addr(query.offerer));\n if (query.minPrice) params.set(\"minPrice\", query.minPrice);\n if (query.maxPrice) params.set(\"maxPrice\", query.maxPrice);\n if (query.chain) params.set(\"chain\", query.chain);\n const qs = params.toString();\n return this.get<ApiResponse<ApiOrder[]>>(`/v1/orders${qs ? `?${qs}` : \"\"}`);\n }\n\n getOrder(orderHash: string): Promise<ApiResponse<ApiOrder>> {\n return this.get<ApiResponse<ApiOrder>>(`/v1/orders/${orderHash}`);\n }\n\n getActiveOrdersForToken(contract: string, tokenId: string): Promise<ApiResponse<ApiOrder[]>> {\n return this.get<ApiResponse<ApiOrder[]>>(`/v1/orders/token/${this.addr(contract)}/${tokenId}`);\n }\n\n getOrdersByUser(address: string, page = 1, limit = 20): Promise<ApiResponse<ApiOrder[]>> {\n return this.get<ApiResponse<ApiOrder[]>>(\n `/v1/orders/user/${this.addr(address)}?page=${page}&limit=${limit}`\n );\n }\n\n // ─── Tokens ────────────────────────────────────────────────────────────────\n\n getToken(contract: string, tokenId: string, wait = false): Promise<ApiResponse<ApiToken>> {\n return this.get<ApiResponse<ApiToken>>(\n `/v1/tokens/${contract}/${tokenId}${wait ? \"?wait=true\" : \"\"}`\n );\n }\n\n getTokensByOwner(address: string, page = 1, limit = 20): Promise<ApiResponse<ApiToken[]>> {\n return this.get<ApiResponse<ApiToken[]>>(\n `/v1/tokens/owned/${this.addr(address)}?page=${page}&limit=${limit}`\n );\n }\n\n getTokenHistory(\n contract: string,\n tokenId: string,\n page = 1,\n limit = 20\n ): Promise<ApiResponse<ApiActivity[]>> {\n return this.get<ApiResponse<ApiActivity[]>>(\n `/v1/tokens/${contract}/${tokenId}/history?page=${page}&limit=${limit}`\n );\n }\n\n // ─── Collections ───────────────────────────────────────────────────────────\n\n getCollections(\n page = 1,\n limit = 20,\n isKnown?: boolean,\n sort?: CollectionSort,\n service?: string,\n chain?: ChainFilter\n ): Promise<ApiResponse<ApiCollection[]>> {\n const params = new URLSearchParams({ page: String(page), limit: String(limit) });\n if (isKnown !== undefined) params.set(\"isKnown\", String(isKnown));\n if (sort) params.set(\"sort\", sort);\n if (service) params.set(\"service\", service);\n if (chain) params.set(\"chain\", chain);\n return this.get<ApiResponse<ApiCollection[]>>(`/v1/collections?${params}`);\n }\n\n getCollectionsByOwner(owner: string, page = 1, limit = 50): Promise<ApiResponse<ApiCollection[]>> {\n const params = new URLSearchParams({ owner: this.addr(owner), page: String(page), limit: String(limit) });\n return this.get<ApiResponse<ApiCollection[]>>(`/v1/collections?${params}`);\n }\n\n getCollection(contract: string): Promise<ApiResponse<ApiCollection>> {\n return this.get<ApiResponse<ApiCollection>>(`/v1/collections/${this.addr(contract)}`);\n }\n\n getCollectionTokens(\n contract: string,\n page = 1,\n limit = 20,\n sort: CollectionTokensSort = \"recent\"\n ): Promise<ApiResponse<ApiToken[]>> {\n return this.get<ApiResponse<ApiToken[]>>(\n `/v1/collections/${this.addr(contract)}/tokens?page=${page}&limit=${limit}&sort=${sort}`\n );\n }\n\n // ─── Activities ────────────────────────────────────────────────────────────\n\n getActivities(query: ApiActivitiesQuery = {}): Promise<ApiResponse<ApiActivity[]>> {\n const params = new URLSearchParams();\n if (query.type) params.set(\"type\", query.type);\n if (query.page !== undefined) params.set(\"page\", String(query.page));\n if (query.limit !== undefined) params.set(\"limit\", String(query.limit));\n if (query.chain) params.set(\"chain\", query.chain);\n const qs = params.toString();\n return this.get<ApiResponse<ApiActivity[]>>(`/v1/activities${qs ? `?${qs}` : \"\"}`);\n }\n\n getActivitiesByAddress(\n address: string,\n page = 1,\n limit = 20\n ): Promise<ApiResponse<ApiActivity[]>> {\n return this.get<ApiResponse<ApiActivity[]>>(\n `/v1/activities/${this.addr(address)}?page=${page}&limit=${limit}`\n );\n }\n\n // ─── Comments ──────────────────────────────────────────────────────────────\n\n getTokenComments(\n contract: string,\n tokenId: string,\n opts: { page?: number; limit?: number } = {}\n ): Promise<ApiResponse<ApiComment[]>> {\n const params = new URLSearchParams();\n if (opts.page !== undefined) params.set(\"page\", String(opts.page));\n if (opts.limit !== undefined) params.set(\"limit\", String(opts.limit));\n const qs = params.toString();\n return this.get<ApiResponse<ApiComment[]>>(\n `/v1/tokens/${this.addr(contract)}/${tokenId}/comments${qs ? `?${qs}` : \"\"}`\n );\n }\n\n // ─── Search ────────────────────────────────────────────────────────────────\n\n search(q: string, limit = 10, chain?: ChainFilter): Promise<ApiResponse<ApiSearchResult> & { query: string }> {\n const params = new URLSearchParams({ q, limit: String(limit) });\n if (chain) params.set(\"chain\", chain);\n return this.get<ApiResponse<ApiSearchResult> & { query: string }>(\n `/v1/search?${params.toString()}`\n );\n }\n\n // ─── Intents ───────────────────────────────────────────────────────────────\n\n createListingIntent(\n params: CreateListingIntentParams\n ): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/listing\", params);\n }\n\n createOfferIntent(\n params: MakeOfferIntentParams\n ): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/offer\", params);\n }\n\n createFulfillIntent(\n params: FulfillOrderIntentParams\n ): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/fulfill\", params);\n }\n\n createCancelIntent(\n params: CancelOrderIntentParams\n ): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/cancel\", params);\n }\n\n getIntent(id: string): Promise<ApiResponse<ApiIntent>> {\n return this.get<ApiResponse<ApiIntent>>(`/v1/intents/${id}`);\n }\n\n submitIntentSignature(id: string, signature: string[]): Promise<ApiResponse<ApiIntent>> {\n return this.patch<ApiResponse<ApiIntent>>(`/v1/intents/${id}/signature`, { signature });\n }\n\n confirmIntent(id: string, txHash: string): Promise<ApiResponse<ApiIntent>> {\n return this.patch<ApiResponse<ApiIntent>>(`/v1/intents/${id}/confirm`, { txHash });\n }\n\n createMintIntent(params: CreateMintIntentParams): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/mint\", params);\n }\n\n createCollectionIntent(params: CreateCollectionIntentParams): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/create-collection\", params);\n }\n\n /**\n * Create a counter-offer intent. The seller proposes a new price in response\n * to a buyer's active bid. clerkToken is optional — the endpoint authenticates\n * via the tenant API key; pass a Clerk JWT only if your backend requires it.\n */\n createCounterOfferIntent(\n params: CreateCounterOfferIntentParams,\n clerkToken?: string\n ): Promise<ApiResponse<ApiIntentCreated>> {\n const extraHeaders: Record<string, string> = clerkToken ? { \"Authorization\": `Bearer ${clerkToken}` } : {};\n return this.request<ApiResponse<ApiIntentCreated>>(\"/v1/intents/counter-offer\", {\n method: \"POST\",\n body: JSON.stringify(params),\n headers: extraHeaders,\n });\n }\n\n /**\n * Fetch counter-offers. Pass `originalOrderHash` (buyer view) or\n * `sellerAddress` (seller view) — at least one is required.\n */\n getCounterOffers(query: ApiCounterOffersQuery): Promise<ApiResponse<ApiOrder[]>> {\n const params = new URLSearchParams();\n if (query.originalOrderHash) params.set(\"originalOrderHash\", query.originalOrderHash);\n if (query.sellerAddress) params.set(\"sellerAddress\", query.sellerAddress);\n if (query.page !== undefined) params.set(\"page\", String(query.page));\n if (query.limit !== undefined) params.set(\"limit\", String(query.limit));\n return this.get<ApiResponse<ApiOrder[]>>(`/v1/orders/counter-offers?${params}`);\n }\n\n // ─── Metadata ──────────────────────────────────────────────────────────────\n\n getMetadataSignedUrl(): Promise<ApiResponse<ApiMetadataSignedUrl>> {\n return this.get<ApiResponse<ApiMetadataSignedUrl>>(\"/v1/metadata/signed-url\");\n }\n\n uploadMetadata(metadata: Record<string, unknown>): Promise<ApiResponse<ApiMetadataUpload>> {\n return this.post<ApiResponse<ApiMetadataUpload>>(\"/v1/metadata/upload\", metadata);\n }\n\n resolveMetadata(uri: string): Promise<ApiResponse<unknown>> {\n const params = new URLSearchParams({ uri });\n return this.get<ApiResponse<unknown>>(`/v1/metadata/resolve?${params.toString()}`);\n }\n\n uploadFile(file: File): Promise<ApiResponse<ApiMetadataUpload>> {\n const formData = new FormData();\n formData.append(\"file\", file);\n // Content-Type is intentionally omitted — request() detects FormData and\n // lets the runtime set multipart/form-data with the correct boundary.\n return this.request<ApiResponse<ApiMetadataUpload>>(\"/v1/metadata/upload-file\", {\n method: \"POST\",\n body: formData,\n });\n }\n\n // ─── Portal (tenant self-service) ──────────────────────────────────────────\n\n getMe(): Promise<ApiResponse<ApiPortalMe>> {\n return this.get<ApiResponse<ApiPortalMe>>(\"/v1/portal/me\");\n }\n\n getApiKeys(): Promise<ApiResponse<ApiPortalKey[]>> {\n return this.get<ApiResponse<ApiPortalKey[]>>(\"/v1/portal/keys\");\n }\n\n createApiKey(label?: string): Promise<ApiResponse<ApiPortalKeyCreated>> {\n return this.post<ApiResponse<ApiPortalKeyCreated>>(\"/v1/portal/keys\", label ? { label } : {});\n }\n\n deleteApiKey(id: string): Promise<ApiResponse<{ id: string; status: string }>> {\n return this.del<ApiResponse<{ id: string; status: string }>>(`/v1/portal/keys/${id}`);\n }\n\n getUsage(): Promise<ApiResponse<ApiUsageDay[]>> {\n return this.get<ApiResponse<ApiUsageDay[]>>(\"/v1/portal/usage\");\n }\n\n getWebhooks(): Promise<ApiResponse<ApiWebhookEndpoint[]>> {\n return this.get<ApiResponse<ApiWebhookEndpoint[]>>(\"/v1/portal/webhooks\");\n }\n\n createWebhook(params: CreateWebhookParams): Promise<ApiResponse<ApiWebhookCreated>> {\n return this.post<ApiResponse<ApiWebhookCreated>>(\"/v1/portal/webhooks\", params);\n }\n\n deleteWebhook(id: string): Promise<ApiResponse<{ id: string; status: string }>> {\n return this.del<ApiResponse<{ id: string; status: string }>>(\n `/v1/portal/webhooks/${id}`\n );\n }\n\n // ─── Collection Claims ──────────────────────────────────────────────────────\n\n /**\n * Path 1: On-chain auto claim. Sends both x-api-key (tenant auth) and\n * Authorization: Bearer (Clerk JWT) simultaneously.\n */\n async claimCollection(\n contractAddress: string,\n walletAddress: string,\n clerkToken: string\n ): Promise<{ verified: boolean; collection?: ApiCollection; reason?: string }> {\n return this.request(\"/v1/collections/claim\", {\n method: \"POST\",\n body: JSON.stringify({ contractAddress, walletAddress }),\n headers: this.bearer(clerkToken),\n });\n }\n\n /**\n * Path 3: Manual off-chain claim request (email-based).\n */\n requestCollectionClaim(params: {\n contractAddress: string;\n walletAddress?: string;\n email: string;\n notes?: string;\n }): Promise<{ claim: ApiCollectionClaim }> {\n return this.request(\"/v1/collections/claim/request\", {\n method: \"POST\",\n body: JSON.stringify(params),\n });\n }\n\n // ─── Business Provisioning ──────────────────────────────────────────────────\n\n registerBusinessProvisioning(params: {\n chain: \"STARKNET\";\n walletAddress: string;\n recipientScheme: string;\n recipientValue: string;\n interimOwnerPubkey: string;\n }): Promise<ApiResponse<ApiBusinessProvisioning & { claimUrl: string }>> {\n return this.post<ApiResponse<ApiBusinessProvisioning & { claimUrl: string }>>(\"/v1/business/provisioning\", params);\n }\n\n completeBusinessProvisioning(id: string): Promise<ApiResponse<ApiBusinessProvisioning>> {\n return this.post<ApiResponse<ApiBusinessProvisioning>>(`/v1/business/provisioning/${id}/complete`, {});\n }\n\n // ─── Collection Profiles ────────────────────────────────────────────────────\n\n getCollectionProfile(contractAddress: string): Promise<ApiCollectionProfile | null> {\n return this.request<ApiCollectionProfile | null>(\n `/v1/collections/${this.addr(contractAddress)}/profile`,\n { method: \"GET\" },\n { allow404: true },\n );\n }\n\n /**\n * Update collection profile. Requires Clerk JWT for ownership check.\n */\n updateCollectionProfile(\n contractAddress: string,\n data: Partial<Omit<ApiCollectionProfile, \"contractAddress\" | \"chain\" | \"updatedBy\" | \"updatedAt\">>,\n clerkToken: string\n ): Promise<ApiCollectionProfile> {\n return this.request<ApiCollectionProfile>(\n `/v1/collections/${this.addr(contractAddress)}/profile`,\n { method: \"PATCH\", body: JSON.stringify(data), headers: this.bearer(clerkToken) },\n );\n }\n\n getWalletActivity(\n address: string,\n siwsToken: string,\n chain: \"STARKNET\" = \"STARKNET\",\n ): Promise<ApiResponse<ApiWalletActivity[]>> {\n return this.request<ApiResponse<ApiWalletActivity[]>>(\n `/v1/wallet-activity?address=${this.addr(address)}&chain=${chain}`,\n { method: \"GET\", headers: this.bearer(siwsToken) },\n );\n }\n\n getGatedContent(\n contractAddress: string,\n clerkToken: string\n ): Promise<{ title: string; url: string; type: string } | null> {\n return this.request<{ title: string; url: string; type: string } | null>(\n `/v1/collections/${this.addr(contractAddress)}/gated-content`,\n { method: \"GET\", headers: this.bearer(clerkToken) },\n { allow404: true, allow403: true },\n );\n }\n\n // ─── Creator Profiles ───────────────────────────────────────────────────────\n\n /** List all creators with an approved username. */\n getCreators(opts: { search?: string; page?: number; limit?: number } = {}): Promise<ApiCreatorListResult> {\n const params = new URLSearchParams();\n if (opts.search) params.set(\"search\", opts.search);\n if (opts.page) params.set(\"page\", String(opts.page));\n if (opts.limit) params.set(\"limit\", String(opts.limit));\n const qs = params.toString();\n return this.get<ApiCreatorListResult>(`/v1/creators${qs ? `?${qs}` : \"\"}`);\n }\n\n getCreatorProfile(walletAddress: string): Promise<ApiCreatorProfile | null> {\n return this.request<ApiCreatorProfile | null>(\n `/v1/creators/${this.addr(walletAddress)}/profile`,\n { method: \"GET\" },\n { allow404: true },\n );\n }\n\n /** Resolve a username slug to a creator profile (public). */\n getCreatorByUsername(username: string): Promise<ApiCreatorProfile | null> {\n return this.request<ApiCreatorProfile | null>(\n `/v1/creators/by-username/${encodeURIComponent(username.toLowerCase().trim())}`,\n { method: \"GET\" },\n { allow404: true },\n );\n }\n\n /**\n * Update creator profile. Requires Clerk JWT; wallet must match authenticated user.\n */\n updateCreatorProfile(\n walletAddress: string,\n data: Partial<Omit<ApiCreatorProfile, \"walletAddress\" | \"chain\" | \"updatedAt\">>,\n clerkToken: string\n ): Promise<ApiCreatorProfile> {\n return this.request<ApiCreatorProfile>(\n `/v1/creators/${this.addr(walletAddress)}/profile`,\n { method: \"PATCH\", body: JSON.stringify(data), headers: this.bearer(clerkToken) },\n );\n }\n\n // ─── Collection Slug Claims ───────────────────────────────────────────────────\n\n /** Check if a collection slug is available (public, no auth). */\n checkCollectionSlugAvailability(slug: string): Promise<{ available: boolean; reason?: string }> {\n return this.get<{ available: boolean; reason?: string }>(\n `/v1/collection-slug-claims/check/${encodeURIComponent(slug.toLowerCase().trim())}`,\n );\n }\n\n /** Submit a slug claim for a collection. Requires Clerk JWT — caller must be the collection owner. */\n submitCollectionSlugClaim(\n contractAddress: string,\n slug: string,\n clerkToken: string,\n notifyEmail?: string\n ): Promise<{ claim: ApiCollectionSlugClaim }> {\n return this.request<{ claim: ApiCollectionSlugClaim }>(\"/v1/collection-slug-claims\", {\n method: \"POST\",\n body: JSON.stringify({ contractAddress, slug, notifyEmail }),\n headers: this.bearer(clerkToken),\n });\n }\n\n /** Returns all slug claims submitted by the authenticated wallet. Requires Clerk JWT. */\n getMyCollectionSlugClaims(clerkToken: string): Promise<{ claims: ApiCollectionSlugClaim[] }> {\n return this.request<{ claims: ApiCollectionSlugClaim[] }>(\"/v1/collection-slug-claims/me\", {\n method: \"GET\",\n headers: this.bearer(clerkToken),\n });\n }\n\n /** Resolve a collection slug to a full collection. Returns null if not found. */\n getCollectionBySlug(slug: string): Promise<ApiCollection | null> {\n return this.request<ApiCollection | null>(\n `/v1/collections/by-slug/${encodeURIComponent(slug.toLowerCase().trim())}`,\n { method: \"GET\" },\n { allow404: true },\n );\n }\n\n // ─── User Wallet ─────────────────────────────────────────────────────────────\n\n /**\n * Upsert the authenticated user's wallet address in the backend DB.\n * Call after onboarding when ChipiPay confirms the wallet address.\n * Requires Clerk JWT; no tenant API key needed.\n */\n /**\n * Frictionless wallet registration. Tenant API key only (no Clerk JWT required).\n * Idempotent — backend's ensureAccountForWallet upserts and upgrades existing\n * UNKNOWN walletType rows when a more specific value is supplied.\n */\n async registerUser(params: {\n walletAddress: string;\n // Free-form wallet-software label (\"braavos\" / \"ready\" / \"chipipay\" / …).\n // The backend lowercases it into Identity.provider and never gates on it\n // (07-identity §II) — so it's a plain string, not a closed enum.\n walletType?: string;\n appSource?: ApiAppSource;\n chain?: ApiChain;\n }): Promise<{\n accountId: string;\n publicId: string;\n walletAddress: string;\n chain: string;\n // The wallet identity's free-form provider label, echoed back from\n // Identity.provider (\"braavos\" / \"chipipay\" / \"unknown\" / …).\n provider: string;\n appSource: ApiAppSource;\n createdAt: string;\n }> {\n return this.post(\"/v1/users/register\", params);\n }\n\n async upsertMyWallet(\n clerkToken: string,\n options: {\n // Free-form provider label (see registerUser); lowercased into\n // Identity.provider by the backend, never gated on.\n walletType?: string;\n appSource?: ApiAppSource;\n // 07-identity §I: the Wallet identifier is (chain, address). v1\n // backend rejects anything other than STARKNET on this route (the\n // auth path can only prove Starknet ownership); the field exists\n // so the year-2 multichain shape is locked in.\n chain?: ApiChain;\n } = {},\n ): Promise<ApiUserWallet> {\n const body: Record<string, string> = {\n walletType: options.walletType ?? \"UNKNOWN\",\n appSource: options.appSource ?? \"MEDIALANE_SDK\",\n };\n if (options.chain) body.chain = options.chain;\n return this.request<ApiUserWallet>(\"/v1/users/me\", {\n method: \"POST\",\n body: JSON.stringify(body),\n headers: this.bearer(clerkToken),\n });\n }\n\n /**\n * Get the authenticated user's stored wallet address from the backend DB.\n * Returns null if the user has not completed onboarding yet.\n * Requires Clerk JWT; no tenant API key needed.\n */\n getMyWallet(clerkToken: string): Promise<ApiUserWallet | null> {\n return this.request<ApiUserWallet | null>(\n \"/v1/users/me\",\n { method: \"GET\", headers: this.bearer(clerkToken) },\n { allow404: true },\n );\n }\n\n // ─── Remix Licensing ─────────────────────────────────────────────────────────\n\n /**\n * Get public remixes of a token (open to everyone).\n */\n getTokenRemixes(\n contract: string,\n tokenId: string,\n opts: { page?: number; limit?: number } = {}\n ): Promise<ApiResponse<ApiPublicRemix[]>> {\n const params = new URLSearchParams();\n if (opts.page !== undefined) params.set(\"page\", String(opts.page));\n if (opts.limit !== undefined) params.set(\"limit\", String(opts.limit));\n const qs = params.toString();\n return this.get<ApiResponse<ApiPublicRemix[]>>(\n `/v1/tokens/${this.addr(contract)}/${tokenId}/remixes${qs ? `?${qs}` : \"\"}`\n );\n }\n\n /**\n * Submit a custom remix offer for a token. Requires Clerk JWT.\n */\n submitRemixOffer(\n params: CreateRemixOfferParams,\n clerkToken: string\n ): Promise<ApiResponse<ApiRemixOffer>> {\n return this.request<ApiResponse<ApiRemixOffer>>(\"/v1/remix-offers\", {\n method: \"POST\",\n body: JSON.stringify(params),\n headers: { \"Authorization\": `Bearer ${clerkToken}` },\n });\n }\n\n /**\n * Submit an auto remix offer for a token with an open license. Requires Clerk JWT.\n */\n submitAutoRemixOffer(\n params: AutoRemixOfferParams,\n clerkToken: string\n ): Promise<ApiResponse<ApiRemixOffer>> {\n return this.request<ApiResponse<ApiRemixOffer>>(\"/v1/remix-offers/auto\", {\n method: \"POST\",\n body: JSON.stringify(params),\n headers: { \"Authorization\": `Bearer ${clerkToken}` },\n });\n }\n\n /**\n * Record a self-remix (owner remixing their own token). Requires Clerk JWT.\n */\n confirmSelfRemix(\n params: ConfirmSelfRemixParams,\n clerkToken: string\n ): Promise<ApiResponse<ApiRemixOffer>> {\n return this.request<ApiResponse<ApiRemixOffer>>(\"/v1/remix-offers/self/confirm\", {\n method: \"POST\",\n body: JSON.stringify(params),\n headers: { \"Authorization\": `Bearer ${clerkToken}` },\n });\n }\n\n /**\n * List remix offers by role. Requires Clerk JWT.\n * role=\"creator\" — offers where you are the original creator.\n * role=\"requester\" — offers you made.\n */\n getRemixOffers(\n query: ApiRemixOffersQuery,\n clerkToken: string\n ): Promise<ApiResponse<ApiRemixOffer[]>> {\n const params = new URLSearchParams({ role: query.role });\n if (query.page !== undefined) params.set(\"page\", String(query.page));\n if (query.limit !== undefined) params.set(\"limit\", String(query.limit));\n return this.request<ApiResponse<ApiRemixOffer[]>>(`/v1/remix-offers?${params}`, {\n method: \"GET\",\n headers: this.bearer(clerkToken),\n });\n }\n\n /**\n * Get a single remix offer. Clerk JWT optional (price/currency hidden for non-participants).\n */\n getRemixOffer(id: string, clerkToken?: string): Promise<ApiResponse<ApiRemixOffer>> {\n return this.request<ApiResponse<ApiRemixOffer>>(`/v1/remix-offers/${id}`, {\n method: \"GET\",\n headers: clerkToken ? this.bearer(clerkToken) : undefined,\n });\n }\n\n /**\n * Creator approves a remix offer (authorises the requester to mint). Requires Clerk JWT.\n */\n confirmRemixOffer(\n id: string,\n params: ConfirmRemixOfferParams,\n clerkToken: string\n ): Promise<ApiResponse<ApiRemixOffer>> {\n return this.request<ApiResponse<ApiRemixOffer>>(`/v1/remix-offers/${id}/confirm`, {\n method: \"POST\",\n body: JSON.stringify(params),\n headers: { \"Authorization\": `Bearer ${clerkToken}` },\n });\n }\n\n /**\n * Creator rejects a remix offer. Requires Clerk JWT.\n */\n rejectRemixOffer(id: string, clerkToken: string): Promise<ApiResponse<ApiRemixOffer>> {\n return this.request<ApiResponse<ApiRemixOffer>>(`/v1/remix-offers/${id}/reject`, {\n method: \"POST\",\n body: JSON.stringify({}),\n headers: { \"Authorization\": `Bearer ${clerkToken}` },\n });\n }\n\n /**\n * Requester extends the expiry of a pending remix offer by 1–30 days.\n * Requires Clerk JWT.\n */\n extendRemixOffer(id: string, days: number, clerkToken: string): Promise<ApiResponse<ApiRemixOffer>> {\n return this.request<ApiResponse<ApiRemixOffer>>(`/v1/remix-offers/${id}/extend`, {\n method: \"POST\",\n body: JSON.stringify({ days }),\n headers: { \"Authorization\": `Bearer ${clerkToken}` },\n });\n }\n\n // ─── POP Protocol ──────────────────────────────────────────────────────────\n\n getPopCollections(opts: { page?: number; limit?: number; sort?: CollectionSort } = {}): Promise<ApiResponse<ApiCollection[]>> {\n return this.getCollections(opts.page ?? 1, opts.limit ?? 20, undefined, opts.sort, \"POP_PROTOCOL\");\n }\n\n async getPopEligibility(collection: string, wallet: string): Promise<PopClaimStatus> {\n const res = await this.get<{ data: PopClaimStatus }>(\n `/v1/pop/eligibility/${this.addr(collection)}/${this.addr(wallet)}`\n );\n return res.data;\n }\n\n async getPopEligibilityBatch(collection: string, wallets: string[]): Promise<PopBatchEligibilityItem[]> {\n const params = new URLSearchParams({ wallets: wallets.map((w) => this.addr(w)).join(\",\") });\n const res = await this.get<{ data: PopBatchEligibilityItem[] }>(\n `/v1/pop/eligibility/${this.addr(collection)}?${params}`\n );\n return res.data;\n }\n\n // ─── Coins (fungible — ERC-20 etc.) ───────────────────────────────────────────\n // Coins are a separate model from Collections (spec 2026-06-14). Price/liquidity\n // is read live from Ekubo (CreatorCoinService.getPrice), never from these.\n\n getCoins(opts: ApiCoinsQuery = {}): Promise<ApiResponse<ApiCoin[]>> {\n const params = new URLSearchParams();\n if (opts.page) params.set(\"page\", String(opts.page));\n if (opts.limit) params.set(\"limit\", String(opts.limit));\n if (opts.service) params.set(\"service\", opts.service);\n if (opts.chain) params.set(\"chain\", opts.chain);\n const qs = params.toString();\n return this.get<ApiResponse<ApiCoin[]>>(`/v1/coins${qs ? `?${qs}` : \"\"}`);\n }\n\n getCoin(contract: string): Promise<{ data: ApiCoin }> {\n return this.get<{ data: ApiCoin }>(`/v1/coins/${this.addr(contract)}`);\n }\n\n // ─── Collection Drop ────────────────────────────────────────────────────────\n\n getDropCollections(opts: { page?: number; limit?: number; sort?: CollectionSort } = {}): Promise<ApiResponse<ApiCollection[]>> {\n return this.getCollections(opts.page ?? 1, opts.limit ?? 20, undefined, opts.sort, \"COLLECTION_DROP\");\n }\n\n async getDropMintStatus(collection: string, wallet: string): Promise<DropMintStatus> {\n const res = await this.get<{ data: DropMintStatus }>(\n `/v1/drop/mint-status/${this.addr(collection)}/${this.addr(wallet)}`\n );\n return res.data;\n }\n\n // ─── Rewards (v0.49.0) ─────────────────────────────────────────────────────\n // Scores are recomputed on a schedule by the backend (~15 min) — reads only.\n\n /** Score + level + progress + badges for one address (zeroed for unknown). */\n async getRewards(address: string): Promise<ApiUserRewards> {\n const res = await this.get<{ data: ApiUserRewards }>(`/v1/rewards/${this.addr(address)}`);\n return res.data;\n }\n\n /** Paginated XP leaderboard. */\n getRewardsLeaderboard(page = 1, limit = 50): Promise<ApiResponse<ApiRewardsLeaderboardEntry[]>> {\n return this.get<ApiResponse<ApiRewardsLeaderboardEntry[]>>(`/v1/rewards?page=${page}&limit=${limit}`);\n }\n\n /** Point-event history for an address. */\n getRewardsEvents(address: string, page = 1, limit = 20): Promise<ApiResponse<ApiPointEvent[]>> {\n return this.get<ApiResponse<ApiPointEvent[]>>(\n `/v1/rewards/${this.addr(address)}/events?page=${page}&limit=${limit}`\n );\n }\n\n /** Reward configuration: level ladder, enabled action XP values, badge catalog. */\n async getRewardsConfig(): Promise<ApiRewardsConfig> {\n const res = await this.get<{ data: ApiRewardsConfig }>(`/v1/rewards/config`);\n return res.data;\n }\n\n /** Minimal level info for up to 50 addresses — one call per list page. */\n async getRewardsBatch(addresses: string[]): Promise<ApiRewardsBatchEntry[]> {\n if (addresses.length === 0) return [];\n const params = new URLSearchParams({ addresses: addresses.map((a) => this.addr(a)).join(\",\") });\n const res = await this.get<{ data: ApiRewardsBatchEntry[] }>(`/v1/rewards/batch?${params}`);\n return res.data;\n }\n}\n","import { getCoordinates } from \"./chains.js\";\n\n// Flat per-chain contract constants. Chain-named (each contract is deployed on a\n// specific chain), derived from the chains.ts registry so there is one source.\nconst SN = getCoordinates(\"STARKNET\");\n\n// ── Marketplace ───────────────────────────────────────────────────────────────\nexport const STARKNET_MARKETPLACE_721_CONTRACT = SN.marketplace721!;\nexport const STARKNET_MARKETPLACE_721_CLASS_HASH = SN.marketplace721ClassHash!;\nexport const STARKNET_MARKETPLACE_721_START_BLOCK = SN.marketplace721StartBlock!;\nexport const STARKNET_MARKETPLACE_1155_CONTRACT = SN.marketplace1155!;\nexport const STARKNET_MARKETPLACE_1155_CLASS_HASH = SN.marketplace1155ClassHash!;\nexport const STARKNET_MARKETPLACE_1155_START_BLOCK = SN.marketplace1155StartBlock!;\n\n// ── Collections ───────────────────────────────────────────────────────────────\nexport const STARKNET_COLLECTION_721_CONTRACT = SN.collection721!;\nexport const STARKNET_COLLECTION_721_START_BLOCK = SN.collection721StartBlock!;\nexport const STARKNET_IPNFT_CLASS_HASH = SN.ipNftClassHash!;\nexport const STARKNET_IPCOLLECTION_CLASS_HASH = SN.ipCollectionClassHash!;\nexport const STARKNET_COLLECTION_1155_CONTRACT = SN.collection1155!;\nexport const STARKNET_COLLECTION_1155_FACTORY_CLASS_HASH = SN.collection1155FactoryClassHash!;\nexport const STARKNET_COLLECTION_1155_CLASS_HASH = SN.collection1155ClassHash!;\nexport const STARKNET_COLLECTION_1155_START_BLOCK = SN.collection1155StartBlock!;\n\n// ── POP / Drop / Comments ─────────────────────────────────────────────────────\nexport const STARKNET_POP_FACTORY_CONTRACT = SN.popFactory!;\nexport const STARKNET_POP_COLLECTION_CLASS_HASH = SN.popCollectionClassHash!;\nexport const STARKNET_DROP_FACTORY_CONTRACT = SN.dropFactory!;\nexport const STARKNET_DROP_COLLECTION_CLASS_HASH = SN.dropCollectionClassHash!;\nexport const STARKNET_NFTCOMMENTS_CONTRACT = SN.nftComments!;\n\n// ── IP Tickets / IP Club / IP Sponsorship ─────────────────────────────────────\n// Not yet deployed — these resolve to `undefined` at runtime until chains.ts's\n// STARKNET coordinates are populated (Phase 3/4 deploy). The `!` assertion\n// mirrors the existing convention above; falsy-guard callers (`if (X && ...)`)\n// still behave correctly regardless.\nexport const STARKNET_IP_TICKETS_FACTORY_CONTRACT = SN.ipTicketsFactory!;\nexport const STARKNET_IP_TICKET_COLLECTION_CLASS_HASH = SN.ipTicketCollectionClassHash!;\nexport const STARKNET_IP_CLUB_FACTORY_CONTRACT = SN.ipClubFactory!;\nexport const STARKNET_IP_CLUB_COLLECTION_CLASS_HASH = SN.ipClubCollectionClassHash!;\nexport const STARKNET_IP_SPONSORSHIP_CONTRACT = SN.ipSponsorship!;\nexport const STARKNET_IP_SPONSORSHIP_CLASS_HASH = SN.ipSponsorshipClassHash!;\n\n// ── MediaWallet (self-custody account) ─────────────────────────────────────────\nexport const STARKNET_MEDIAWALLET_CLASS_HASH = SN.mediaWalletClassHash!;\n\n// ── Creator Coin (Ekubo) ──────────────────────────────────────────────────────\nexport const STARKNET_CREATOR_COIN_FACTORY_CONTRACT = SN.creatorCoinFactory!;\nexport const STARKNET_CREATOR_COIN_EKUBO_LAUNCHER = SN.creatorCoinEkuboLauncher!;\nexport const STARKNET_CREATOR_COIN_CLASS_HASH = SN.creatorCoinClassHash!;\nexport const STARKNET_CREATOR_COIN_FACTORY_CLASS_HASH = SN.creatorCoinFactoryClassHash!;\nexport const STARKNET_CREATOR_COIN_START_BLOCK = SN.creatorCoinStartBlock!;\nexport const STARKNET_EKUBO_CORE = SN.ekuboCore!;\n\n// ── Tokens (chain-agnostic) ───────────────────────────────────────────────────\nexport const SUPPORTED_TOKENS = [\n {\n // Circle-native USDC on Starknet (canonical)\n symbol: \"USDC\",\n address:\n \"0x033068f6539f8e6e6b131e6b2b814e6c34a5224bc66947c47dab9dfee93b35fb\",\n decimals: 6,\n listable: true,\n },\n {\n symbol: \"USDT\",\n address:\n \"0x068f5c6a61780768455de69077e07e89787839bf8166decfbf92b645209c0fb8\",\n decimals: 6,\n listable: true,\n },\n {\n symbol: \"ETH\",\n address:\n \"0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7\",\n decimals: 18,\n listable: true,\n },\n {\n symbol: \"STRK\",\n address:\n \"0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d\",\n decimals: 18,\n listable: true,\n },\n {\n symbol: \"WBTC\",\n address:\n \"0x03fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac\",\n decimals: 8,\n listable: true,\n },\n] as const;\n\nexport type SupportedTokenSymbol = (typeof SUPPORTED_TOKENS)[number][\"symbol\"];\n\n/** Default currency for listings and offers — Circle-native USDC on Starknet. */\nexport const DEFAULT_CURRENCY: SupportedTokenSymbol = \"USDC\";\n","import type { 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 fallback after an app's configured primary (e.g. Alchemy) returns a\n * transient error. lava.build — RPC spec 0.8.1, permissive CORS — so it is\n * safe for browser `baseFetch` use as well as server-side rotation.\n *\n * blastapi.io and free-rpc.nethermind.io were removed (2026-07-04) — long\n * confirmed dead/unreliable in production; do not re-add them.\n */\nexport const PUBLIC_RPC_FALLBACKS: readonly string[] = [\n \"https://rpc.starknet.lava.build\",\n];\n\n/**\n * Matches transient failure signals in a raw response body or JSON-RPC error\n * message. Deterministic Starknet contract errors (revert / invalid params —\n * small positive JSON-RPC codes) MUST NOT match: they propagate verbatim so\n * callers see the real failure. Note `-32000` is intentionally absent — the io\n * `/api/rpc` proxy uses it for \"Unauthorized\", which must not trigger failover.\n */\nconst TRANSIENT_BODY_RE =\n /\"code\"\\s*:\\s*-32001|\"code\"\\s*:\\s*-32603|unable to complete|rate.?limit|too many|throttl|exceed.*quota|temporarily unavailable|service unavailable|overload|gateway.*time|upstream.*time|backend.*error/i;\n\n/**\n * Is this RPC response worth retrying against another endpoint?\n *\n * Accepts either an HTTP status + raw text body (client `baseFetch` path) or a\n * parsed JSON-RPC envelope (server proxy path). For parsed envelopes the\n * server-defined error-code range (`-32099..-32000`) is treated as transient;\n * for raw text only the explicit `-32001`/`-32603` codes + message hints match,\n * so a `-32000` \"Unauthorized\" text body is never mistaken for transient.\n */\nexport function isTransientRpcError(input: { status?: number; body?: unknown }): boolean {\n const { status, body } = input;\n if (typeof status === \"number\" && (status === 429 || status >= 500)) return true;\n if (body == null) return false;\n\n // Parsed JSON-RPC envelope: inspect error.code numerically.\n if (typeof body === \"object\") {\n const err = (body as { error?: { code?: unknown; message?: unknown } }).error;\n if (!err || typeof err !== \"object\") return false;\n const code = (err as { code?: unknown }).code;\n if (typeof code === \"number\") {\n if (code === 429) return true;\n if (code >= -32099 && code <= -32000) return true; // server-defined range (incl. -32001)\n if (code === -32603) return true; // generic internal error\n }\n const message = (err as { message?: unknown }).message;\n return typeof message === \"string\" ? TRANSIENT_BODY_RE.test(message) : false;\n }\n\n // Raw text body (client baseFetch path).\n return TRANSIENT_BODY_RE.test(String(body));\n}\n\nexport interface FailoverFetchOptions {\n /** Underlying fetch to wrap (e.g. one that adds a timeout). Defaults to the global `fetch`. */\n baseFetch?: typeof fetch;\n /** Invoked each time an endpoint is abandoned for the next one. */\n onFailover?: (info: { url: string; status?: number; error?: unknown }) => void;\n}\n\n/**\n * Build a `fetch` suitable for `RpcProvider.baseFetch` that tries each URL in\n * `urls` in order, advancing to the next only on a transient failure (network\n * error, 5xx/429, or a transient JSON-RPC envelope). The provider's own\n * `nodeUrl` argument is ignored — routing is controlled entirely by `urls` —\n * so callers should set `nodeUrl: urls[0]` (used only for spec negotiation).\n *\n * @example\n * const urls = [primaryAlchemyUrl, ...PUBLIC_RPC_FALLBACKS];\n * new RpcProvider({ nodeUrl: urls[0], baseFetch: createFailoverFetch(urls) });\n */\nexport function createFailoverFetch(\n urls: string[],\n options: FailoverFetchOptions = {},\n): typeof fetch {\n const endpoints = urls.filter((u): u is string => Boolean(u));\n if (endpoints.length === 0) {\n throw new Error(\"createFailoverFetch: at least one RPC URL is required\");\n }\n const doFetch = options.baseFetch ?? fetch;\n\n const failover = async (_input: unknown, init?: RequestInit): Promise<Response> => {\n let lastError: unknown;\n\n for (let i = 0; i < endpoints.length; i++) {\n const url = endpoints[i];\n const isLast = i === endpoints.length - 1;\n try {\n const res = await doFetch(url, init);\n const text = await res.text();\n const rebuilt = () =>\n new Response(text, { status: res.status, statusText: res.statusText, headers: res.headers });\n\n if (isLast || !isTransientRpcError({ status: res.status, body: text })) {\n return rebuilt();\n }\n options.onFailover?.({ url, status: res.status });\n } catch (err) {\n lastError = err;\n if (isLast) throw err;\n options.onFailover?.({ url, error: err });\n }\n }\n\n // Loop always returns/throws on the last endpoint; this satisfies the type checker.\n throw lastError ?? new Error(\"createFailoverFetch: all endpoints failed\");\n };\n\n return failover as unknown as typeof fetch;\n}\n","import { Contract, RpcProvider, cairo, constants, num, type Abi } from \"starknet\";\nimport type { ResolvedConfig } from \"../../config.js\";\nimport { SUPPORTED_TOKENS } from \"../../constants.js\";\nimport { MedialaneError } from \"./errors.js\";\nimport { createFailoverFetch, PUBLIC_RPC_FALLBACKS } from \"../../utils/rpc.js\";\n\n/** Seconds added to current unix time when setting order start_time.\n * Provides buffer for Starknet tx inclusion (~6s blocks). */\nexport const START_TIME_BUFFER_SECS = 30;\n\n/** Full-felt (248-bit) random salt. With the redesigned schema, salt is the\n * sole order-hash uniqueness source (nonce was removed), so it must be wide. */\nexport function generateSalt(): string {\n const bytes = new Uint8Array(31);\n crypto.getRandomValues(bytes);\n const hex = Array.from(bytes, (b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n return num.toHex(BigInt(\"0x\" + hex));\n}\n\n/** The signed EIP-2981 royalty cap (bps) for an order. Reads the NFT's live\n * 2981 rate via `royalty_info(tokenId, 10000)` — the returned amount equals the\n * bps when salePrice is 10000. Any non-2981 NFT or failure yields \"0\" (no\n * royalty — never over-pay). An explicit override short-circuits the read. */\nexport async function resolveRoyaltyMaxBps(\n provider: RpcProvider,\n nft: string,\n tokenId: string,\n override?: string,\n): Promise<string> {\n if (override !== undefined) return override;\n try {\n const id = cairo.uint256(tokenId);\n const res = await provider.callContract({\n contractAddress: nft,\n entrypoint: \"royalty_info\",\n calldata: [id.low.toString(), id.high.toString(), \"10000\", \"0\"],\n });\n // returns [receiver, amount.low, amount.high]; amount == bps at salePrice 10000\n return BigInt(res[1] ?? \"0\").toString();\n } catch {\n return \"0\";\n }\n}\n\nexport function toSignatureArray(sig: unknown): string[] {\n if (Array.isArray(sig)) return sig as string[];\n const s = sig as { r: bigint | string; s: bigint | string };\n return [s.r.toString(), s.s.toString()];\n}\n\n/**\n * Construct a `Contract` across starknet major versions. starknet v8 changed the\n * constructor to a single options object (`{ abi, address, providerOrAccount }`)\n * and REMOVED the v6/v7 positional form — passing `(abi, address, provider)` to\n * v8 lands the ABI in the options slot, so the parser reads `options.abi`\n * (undefined) and throws `abi.find is not a function`. The dapp runs starknet v8\n * while this SDK builds against v6, so every `new Contract(...)` must route\n * through here. Detected by constructor arity (v8 = 1, v6/v7 = 2+).\n */\nexport function newContract(abi: Abi, address: string, providerOrAccount?: unknown): Contract {\n const C = Contract as unknown as { length: number };\n return C.length === 1\n ? new (Contract as unknown as new (opts: unknown) => Contract)({ abi, address, providerOrAccount })\n : new (Contract as unknown as new (a: Abi, addr: string, p?: unknown) => Contract)(\n abi,\n address,\n providerOrAccount,\n );\n}\n\nexport function getChainId(config: ResolvedConfig): constants.StarknetChainId {\n // SNIP-12 signing is Starknet-only today; EVM/Solana signing arrives behind\n // the verify seam (spec 2026-06-13 §3.4), not here.\n if (config.chain !== \"STARKNET\") {\n throw new Error(`SNIP-12 signing is Starknet-only; got chain \"${config.chain}\"`);\n }\n return constants.StarknetChainId.SN_MAIN;\n}\n\nexport function resolveToken(currency: string) {\n const token = SUPPORTED_TOKENS.find(\n (t) => t.symbol === currency.toUpperCase() || t.address.toLowerCase() === currency.toLowerCase()\n );\n if (!token) throw new MedialaneError(`Unsupported currency: ${currency}`, \"INVALID_PARAMS\");\n return token;\n}\n\nconst _providerCache = new WeakMap<ResolvedConfig, RpcProvider>();\n\nexport function getProvider(config: ResolvedConfig): RpcProvider {\n let p = _providerCache.get(config);\n if (!p) {\n // Fail over to public endpoints when the configured RPC (often Alchemy)\n // returns a transient error — e.g. the intermittent 503 / -32001 that\n // stalls reads (get_counter, royalty_info) and waitForTransaction loops.\n const urls = Array.from(new Set([config.rpcUrl, ...PUBLIC_RPC_FALLBACKS]));\n p = new RpcProvider({ nodeUrl: urls[0], baseFetch: createFailoverFetch(urls) });\n _providerCache.set(config, p);\n }\n return p;\n}\n","// Auto-generated from Medialane721 class (redesigned venue). Do not hand-edit.\nexport const IPMarketplaceABI = [\n {\n \"type\": \"impl\",\n \"name\": \"Medialane721Impl\",\n \"interface_name\": \"medialane_marketplace_erc721::core::interface::IMedialane\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc721::core::types::OfferItem\",\n \"members\": [\n {\n \"name\": \"item_type\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"token\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"identifier_or_criteria\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"core::felt252\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc721::core::types::ConsiderationItem\",\n \"members\": [\n {\n \"name\": \"item_type\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"token\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"identifier_or_criteria\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc721::core::types::OrderParameters\",\n \"members\": [\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"offer\",\n \"type\": \"medialane_marketplace_erc721::core::types::OfferItem\"\n },\n {\n \"name\": \"consideration\",\n \"type\": \"medialane_marketplace_erc721::core::types::ConsiderationItem\"\n },\n {\n \"name\": \"royalty_max_bps\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"salt\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"counter\",\n \"type\": \"core::felt252\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc721::core::types::Order\",\n \"members\": [\n {\n \"name\": \"parameters\",\n \"type\": \"medialane_marketplace_erc721::core::types::OrderParameters\"\n },\n {\n \"name\": \"signature\",\n \"type\": \"core::array::Array::<core::felt252>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc721::core::types::OrderCancellation\",\n \"members\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc721::core::types::CancelRequest\",\n \"members\": [\n {\n \"name\": \"cancelation\",\n \"type\": \"medialane_marketplace_erc721::core::types::OrderCancellation\"\n },\n {\n \"name\": \"signature\",\n \"type\": \"core::array::Array::<core::felt252>\"\n }\n ]\n },\n {\n \"type\": \"enum\",\n \"name\": \"medialane_marketplace_erc721::core::types::OrderStatus\",\n \"variants\": [\n {\n \"name\": \"None\",\n \"type\": \"()\"\n },\n {\n \"name\": \"Created\",\n \"type\": \"()\"\n },\n {\n \"name\": \"Filled\",\n \"type\": \"()\"\n },\n {\n \"name\": \"Cancelled\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc721::core::types::OrderDetails\",\n \"members\": [\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"offer\",\n \"type\": \"medialane_marketplace_erc721::core::types::OfferItem\"\n },\n {\n \"name\": \"consideration\",\n \"type\": \"medialane_marketplace_erc721::core::types::ConsiderationItem\"\n },\n {\n \"name\": \"royalty_max_bps\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"order_status\",\n \"type\": \"medialane_marketplace_erc721::core::types::OrderStatus\"\n },\n {\n \"name\": \"counter\",\n \"type\": \"core::felt252\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"medialane_marketplace_erc721::core::interface::IMedialane\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"register_order\",\n \"inputs\": [\n {\n \"name\": \"order\",\n \"type\": \"medialane_marketplace_erc721::core::types::Order\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"fulfill_order\",\n \"inputs\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"cancel_order\",\n \"inputs\": [\n {\n \"name\": \"cancel_request\",\n \"type\": \"medialane_marketplace_erc721::core::types::CancelRequest\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"increment_counter\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_order_details\",\n \"inputs\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"medialane_marketplace_erc721::core::types::OrderDetails\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_order_hash\",\n \"inputs\": [\n {\n \"name\": \"parameters\",\n \"type\": \"medialane_marketplace_erc721::core::types::OrderParameters\"\n },\n {\n \"name\": \"signer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::felt252\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_cancellation_hash\",\n \"inputs\": [\n {\n \"name\": \"cancellation\",\n \"type\": \"medialane_marketplace_erc721::core::types::OrderCancellation\"\n },\n {\n \"name\": \"signer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::felt252\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_counter\",\n \"inputs\": [\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::felt252\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_native_token_address\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"constructor\",\n \"name\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"native_token_address\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"medialane_marketplace_erc721::core::events::OrderCreated\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::integer::u256\",\n \"members\": [\n {\n \"name\": \"low\",\n \"type\": \"core::integer::u128\"\n },\n {\n \"name\": \"high\",\n \"type\": \"core::integer::u128\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"medialane_marketplace_erc721::core::events::OrderFulfilled\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"fulfiller\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"sale_amount\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"royalty_receiver\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"royalty_amount\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"medialane_marketplace_erc721::core::events::OrderCancelled\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"medialane_marketplace_erc721::core::events::CounterIncremented\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"new_counter\",\n \"type\": \"core::felt252\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"medialane_marketplace_erc721::core::medialane::Medialane721::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"OrderCreated\",\n \"type\": \"medialane_marketplace_erc721::core::events::OrderCreated\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"OrderFulfilled\",\n \"type\": \"medialane_marketplace_erc721::core::events::OrderFulfilled\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"OrderCancelled\",\n \"type\": \"medialane_marketplace_erc721::core::events::OrderCancelled\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"CounterIncremented\",\n \"type\": \"medialane_marketplace_erc721::core::events::CounterIncremented\",\n \"kind\": \"nested\"\n }\n ]\n }\n] as const;\n","export const POPCollectionABI = [\n {\n type: \"struct\",\n name: \"core::byte_array::ByteArray\",\n members: [\n { name: \"data\", type: \"core::array::Array::<core::felt252>\" },\n { name: \"pending_word\", type: \"core::felt252\" },\n { name: \"pending_word_len\", type: \"core::integer::u32\" },\n ],\n },\n {\n type: \"function\",\n name: \"claim\",\n inputs: [],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"admin_mint\",\n inputs: [\n { name: \"recipient\", type: \"core::starknet::contract_address::ContractAddress\" },\n { name: \"custom_uri\", type: \"core::byte_array::ByteArray\" },\n ],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"add_to_allowlist\",\n inputs: [{ name: \"address\", type: \"core::starknet::contract_address::ContractAddress\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"batch_add_to_allowlist\",\n inputs: [{ name: \"addresses\", type: \"core::array::Array::<core::starknet::contract_address::ContractAddress>\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"remove_from_allowlist\",\n inputs: [{ name: \"address\", type: \"core::starknet::contract_address::ContractAddress\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"set_token_uri\",\n inputs: [\n { name: \"token_id\", type: \"core::integer::u256\" },\n { name: \"uri\", type: \"core::byte_array::ByteArray\" },\n ],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"set_paused\",\n inputs: [{ name: \"paused\", type: \"core::bool\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"is_eligible\",\n inputs: [{ name: \"address\", type: \"core::starknet::contract_address::ContractAddress\" }],\n outputs: [{ type: \"core::bool\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"has_claimed\",\n inputs: [{ name: \"address\", type: \"core::starknet::contract_address::ContractAddress\" }],\n outputs: [{ type: \"core::bool\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"total_minted\",\n inputs: [],\n outputs: [{ type: \"core::integer::u256\" }],\n state_mutability: \"view\",\n },\n] as const;\n\n","export const POPFactoryABI = [\n {\n type: \"struct\",\n name: \"core::byte_array::ByteArray\",\n members: [\n { name: \"data\", type: \"core::array::Array::<core::felt252>\" },\n { name: \"pending_word\", type: \"core::felt252\" },\n { name: \"pending_word_len\", type: \"core::integer::u32\" },\n ],\n },\n {\n type: \"enum\",\n name: \"pop_protocol::types::EventType\",\n variants: [\n { name: \"Conference\", type: \"()\" },\n { name: \"Bootcamp\", type: \"()\" },\n { name: \"Workshop\", type: \"()\" },\n { name: \"Hackathon\", type: \"()\" },\n { name: \"Meetup\", type: \"()\" },\n { name: \"Course\", type: \"()\" },\n { name: \"Other\", type: \"()\" },\n ],\n },\n {\n type: \"function\",\n name: \"create_collection\",\n inputs: [\n { name: \"name\", type: \"core::byte_array::ByteArray\" },\n { name: \"symbol\", type: \"core::byte_array::ByteArray\" },\n { name: \"base_uri\", type: \"core::byte_array::ByteArray\" },\n { name: \"claim_end_time\", type: \"core::integer::u64\" },\n { name: \"event_type\", type: \"pop_protocol::types::EventType\" },\n ],\n outputs: [{ type: \"core::starknet::contract_address::ContractAddress\" }],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"register_provider\",\n inputs: [\n { name: \"provider\", type: \"core::starknet::contract_address::ContractAddress\" },\n { name: \"name\", type: \"core::byte_array::ByteArray\" },\n { name: \"website_url\", type: \"core::byte_array::ByteArray\" },\n ],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"set_pop_collection_class_hash\",\n inputs: [{ name: \"new_class_hash\", type: \"core::starknet::class_hash::ClassHash\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n] as const;\n\n","export const DropCollectionABI = [\n {\n type: \"struct\",\n name: \"core::byte_array::ByteArray\",\n members: [\n { name: \"data\", type: \"core::array::Array::<core::felt252>\" },\n { name: \"pending_word\", type: \"core::felt252\" },\n { name: \"pending_word_len\", type: \"core::integer::u32\" },\n ],\n },\n {\n type: \"struct\",\n name: \"collection_drop::types::ClaimConditions\",\n members: [\n { name: \"start_time\", type: \"core::integer::u64\" },\n { name: \"end_time\", type: \"core::integer::u64\" },\n { name: \"price\", type: \"core::integer::u256\" },\n { name: \"payment_token\", type: \"core::starknet::contract_address::ContractAddress\" },\n { name: \"max_quantity_per_wallet\", type: \"core::integer::u256\" },\n ],\n },\n {\n type: \"function\",\n name: \"claim\",\n inputs: [{ name: \"quantity\", type: \"core::integer::u256\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"admin_mint\",\n inputs: [\n { name: \"recipient\", type: \"core::starknet::contract_address::ContractAddress\" },\n { name: \"quantity\", type: \"core::integer::u256\" },\n { name: \"custom_uri\", type: \"core::byte_array::ByteArray\" },\n ],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"set_claim_conditions\",\n inputs: [{ name: \"conditions\", type: \"collection_drop::types::ClaimConditions\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"get_claim_conditions\",\n inputs: [],\n outputs: [{ type: \"collection_drop::types::ClaimConditions\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"set_allowlist_enabled\",\n inputs: [{ name: \"enabled\", type: \"core::bool\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"is_allowlist_enabled\",\n inputs: [],\n outputs: [{ type: \"core::bool\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"add_to_allowlist\",\n inputs: [{ name: \"address\", type: \"core::starknet::contract_address::ContractAddress\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"batch_add_to_allowlist\",\n inputs: [{ name: \"addresses\", type: \"core::array::Array::<core::starknet::contract_address::ContractAddress>\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"remove_from_allowlist\",\n inputs: [{ name: \"address\", type: \"core::starknet::contract_address::ContractAddress\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"is_allowlisted\",\n inputs: [{ name: \"address\", type: \"core::starknet::contract_address::ContractAddress\" }],\n outputs: [{ type: \"core::bool\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"set_base_uri\",\n inputs: [{ name: \"new_uri\", type: \"core::byte_array::ByteArray\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"set_token_uri\",\n inputs: [\n { name: \"token_id\", type: \"core::integer::u256\" },\n { name: \"uri\", type: \"core::byte_array::ByteArray\" },\n ],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"set_paused\",\n inputs: [{ name: \"paused\", type: \"core::bool\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"withdraw_payments\",\n inputs: [],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"get_drop_id\",\n inputs: [],\n outputs: [{ type: \"core::integer::u256\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"get_max_supply\",\n inputs: [],\n outputs: [{ type: \"core::integer::u256\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"total_minted\",\n inputs: [],\n outputs: [{ type: \"core::integer::u256\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"remaining_supply\",\n inputs: [],\n outputs: [{ type: \"core::integer::u256\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"minted_by_wallet\",\n inputs: [{ name: \"wallet\", type: \"core::starknet::contract_address::ContractAddress\" }],\n outputs: [{ type: \"core::integer::u256\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"is_paused\",\n inputs: [],\n outputs: [{ type: \"core::bool\" }],\n state_mutability: \"view\",\n },\n] as const;\n\n","export const DropFactoryABI = [\n {\n type: \"struct\",\n name: \"core::byte_array::ByteArray\",\n members: [\n { name: \"data\", type: \"core::array::Array::<core::felt252>\" },\n { name: \"pending_word\", type: \"core::felt252\" },\n { name: \"pending_word_len\", type: \"core::integer::u32\" },\n ],\n },\n {\n type: \"struct\",\n name: \"collection_drop::types::ClaimConditions\",\n members: [\n { name: \"start_time\", type: \"core::integer::u64\" },\n { name: \"end_time\", type: \"core::integer::u64\" },\n { name: \"price\", type: \"core::integer::u256\" },\n { name: \"payment_token\", type: \"core::starknet::contract_address::ContractAddress\" },\n { name: \"max_quantity_per_wallet\", type: \"core::integer::u256\" },\n ],\n },\n {\n type: \"function\",\n name: \"register_organizer\",\n inputs: [\n { name: \"organizer\", type: \"core::starknet::contract_address::ContractAddress\" },\n { name: \"name\", type: \"core::byte_array::ByteArray\" },\n ],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"revoke_organizer\",\n inputs: [{ name: \"organizer\", type: \"core::starknet::contract_address::ContractAddress\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"is_active_organizer\",\n inputs: [{ name: \"organizer\", type: \"core::starknet::contract_address::ContractAddress\" }],\n outputs: [{ type: \"core::bool\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"create_drop\",\n inputs: [\n { name: \"name\", type: \"core::byte_array::ByteArray\" },\n { name: \"symbol\", type: \"core::byte_array::ByteArray\" },\n { name: \"base_uri\", type: \"core::byte_array::ByteArray\" },\n { name: \"max_supply\", type: \"core::integer::u256\" },\n { name: \"initial_conditions\", type: \"collection_drop::types::ClaimConditions\" },\n ],\n outputs: [{ type: \"core::starknet::contract_address::ContractAddress\" }],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"get_drop_address\",\n inputs: [{ name: \"drop_id\", type: \"core::integer::u256\" }],\n outputs: [{ type: \"core::starknet::contract_address::ContractAddress\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"get_last_drop_id\",\n inputs: [],\n outputs: [{ type: \"core::integer::u256\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"get_organizer_drop_count\",\n inputs: [{ name: \"organizer\", type: \"core::starknet::contract_address::ContractAddress\" }],\n outputs: [{ type: \"core::integer::u32\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"set_drop_collection_class_hash\",\n inputs: [{ name: \"new_class_hash\", type: \"core::starknet::class_hash::ClassHash\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n] as const;\n\n","// Auto-generated from Medialane1155 class (redesigned venue). Do not hand-edit.\nexport const Medialane1155ABI = [\n {\n \"type\": \"impl\",\n \"name\": \"Medialane1155Impl\",\n \"interface_name\": \"medialane_marketplace_erc1155::core::interface::IMedialane1155\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc1155::core::types::OfferItem\",\n \"members\": [\n {\n \"name\": \"item_type\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"token\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"identifier_or_criteria\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"core::felt252\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc1155::core::types::ConsiderationItem\",\n \"members\": [\n {\n \"name\": \"item_type\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"token\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"identifier_or_criteria\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc1155::core::types::OrderParameters\",\n \"members\": [\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"offer\",\n \"type\": \"medialane_marketplace_erc1155::core::types::OfferItem\"\n },\n {\n \"name\": \"consideration\",\n \"type\": \"medialane_marketplace_erc1155::core::types::ConsiderationItem\"\n },\n {\n \"name\": \"royalty_max_bps\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"salt\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"counter\",\n \"type\": \"core::felt252\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc1155::core::types::Order\",\n \"members\": [\n {\n \"name\": \"parameters\",\n \"type\": \"medialane_marketplace_erc1155::core::types::OrderParameters\"\n },\n {\n \"name\": \"signature\",\n \"type\": \"core::array::Array::<core::felt252>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc1155::core::types::OrderCancellation\",\n \"members\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc1155::core::types::CancelRequest\",\n \"members\": [\n {\n \"name\": \"cancelation\",\n \"type\": \"medialane_marketplace_erc1155::core::types::OrderCancellation\"\n },\n {\n \"name\": \"signature\",\n \"type\": \"core::array::Array::<core::felt252>\"\n }\n ]\n },\n {\n \"type\": \"enum\",\n \"name\": \"medialane_marketplace_erc1155::core::types::OrderStatus\",\n \"variants\": [\n {\n \"name\": \"None\",\n \"type\": \"()\"\n },\n {\n \"name\": \"Created\",\n \"type\": \"()\"\n },\n {\n \"name\": \"Filled\",\n \"type\": \"()\"\n },\n {\n \"name\": \"Cancelled\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc1155::core::types::OrderDetails\",\n \"members\": [\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"offer\",\n \"type\": \"medialane_marketplace_erc1155::core::types::OfferItem\"\n },\n {\n \"name\": \"consideration\",\n \"type\": \"medialane_marketplace_erc1155::core::types::ConsiderationItem\"\n },\n {\n \"name\": \"royalty_max_bps\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"order_status\",\n \"type\": \"medialane_marketplace_erc1155::core::types::OrderStatus\"\n },\n {\n \"name\": \"remaining_amount\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"counter\",\n \"type\": \"core::felt252\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"medialane_marketplace_erc1155::core::interface::IMedialane1155\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"register_order\",\n \"inputs\": [\n {\n \"name\": \"order\",\n \"type\": \"medialane_marketplace_erc1155::core::types::Order\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"fulfill_order\",\n \"inputs\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"quantity\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"cancel_order\",\n \"inputs\": [\n {\n \"name\": \"cancel_request\",\n \"type\": \"medialane_marketplace_erc1155::core::types::CancelRequest\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"increment_counter\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_order_details\",\n \"inputs\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"medialane_marketplace_erc1155::core::types::OrderDetails\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_order_hash\",\n \"inputs\": [\n {\n \"name\": \"parameters\",\n \"type\": \"medialane_marketplace_erc1155::core::types::OrderParameters\"\n },\n {\n \"name\": \"signer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::felt252\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_cancellation_hash\",\n \"inputs\": [\n {\n \"name\": \"cancellation\",\n \"type\": \"medialane_marketplace_erc1155::core::types::OrderCancellation\"\n },\n {\n \"name\": \"signer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::felt252\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_counter\",\n \"inputs\": [\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::felt252\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_native_token_address\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"constructor\",\n \"name\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"native_token_address\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"medialane_marketplace_erc1155::core::events::OrderCreated\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::integer::u256\",\n \"members\": [\n {\n \"name\": \"low\",\n \"type\": \"core::integer::u128\"\n },\n {\n \"name\": \"high\",\n \"type\": \"core::integer::u128\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"medialane_marketplace_erc1155::core::events::OrderFulfilled\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"fulfiller\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"quantity\",\n \"type\": \"core::felt252\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"remaining_amount\",\n \"type\": \"core::felt252\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"sale_amount\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"royalty_receiver\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"royalty_amount\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"medialane_marketplace_erc1155::core::events::OrderCancelled\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"medialane_marketplace_erc1155::core::events::CounterIncremented\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"new_counter\",\n \"type\": \"core::felt252\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"medialane_marketplace_erc1155::core::medialane::Medialane1155::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"OrderCreated\",\n \"type\": \"medialane_marketplace_erc1155::core::events::OrderCreated\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"OrderFulfilled\",\n \"type\": \"medialane_marketplace_erc1155::core::events::OrderFulfilled\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"OrderCancelled\",\n \"type\": \"medialane_marketplace_erc1155::core::events::OrderCancelled\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"CounterIncremented\",\n \"type\": \"medialane_marketplace_erc1155::core::events::CounterIncremented\",\n \"kind\": \"nested\"\n }\n ]\n }\n] as const;\n","export const IPCollection1155FactoryABI = [\n {\n \"type\": \"impl\",\n \"name\": \"IPCollectionFactoryImpl\",\n \"interface_name\": \"ip_programmable_erc1155_collections::interfaces::IIPCollectionFactory::IIPCollectionFactory\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::byte_array::ByteArray\",\n \"members\": [\n {\n \"name\": \"data\",\n \"type\": \"core::array::Array::<core::bytes_31::bytes31>\"\n },\n {\n \"name\": \"pending_word\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"pending_word_len\",\n \"type\": \"core::internal::bounded_int::BoundedInt::<0, 30>\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"ip_programmable_erc1155_collections::interfaces::IIPCollectionFactory::IIPCollectionFactory\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"collection_class_hash\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::class_hash::ClassHash\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"version\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"deploy_collection\",\n \"inputs\": [\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"base_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"constructor\",\n \"name\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"collection_class_hash\",\n \"type\": \"core::starknet::class_hash::ClassHash\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_programmable_erc1155_collections::IPCollectionFactory::IPCollectionFactory::CollectionDeployed\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"collection_address\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"base_uri\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_programmable_erc1155_collections::IPCollectionFactory::IPCollectionFactory::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"CollectionDeployed\",\n \"type\": \"ip_programmable_erc1155_collections::IPCollectionFactory::IPCollectionFactory::CollectionDeployed\",\n \"kind\": \"nested\"\n }\n ]\n }\n] as const;\n","export const IPCollection1155ABI = [\n {\n \"type\": \"impl\",\n \"name\": \"ERC1155MetadataURIImpl\",\n \"interface_name\": \"openzeppelin_token::erc1155::interface::IERC1155MetadataURI\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::integer::u256\",\n \"members\": [\n {\n \"name\": \"low\",\n \"type\": \"core::integer::u128\"\n },\n {\n \"name\": \"high\",\n \"type\": \"core::integer::u128\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::byte_array::ByteArray\",\n \"members\": [\n {\n \"name\": \"data\",\n \"type\": \"core::array::Array::<core::bytes_31::bytes31>\"\n },\n {\n \"name\": \"pending_word\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"pending_word_len\",\n \"type\": \"core::internal::bounded_int::BoundedInt::<0, 30>\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc1155::interface::IERC1155MetadataURI\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"uri\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"IPCollectionImpl\",\n \"interface_name\": \"ip_programmable_erc1155_collections::interfaces::IIPCollection::IIPCollection\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::integer::u256>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::integer::u256>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"ip_programmable_erc1155_collections::types::TokenData\",\n \"members\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"metadata_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"original_creator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"registered_at\",\n \"type\": \"core::integer::u64\"\n }\n ]\n },\n {\n \"type\": \"enum\",\n \"name\": \"core::bool\",\n \"variants\": [\n {\n \"name\": \"False\",\n \"type\": \"()\"\n },\n {\n \"name\": \"True\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"ip_programmable_erc1155_collections::interfaces::IIPCollection::IIPCollection\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"name\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"symbol\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"base_uri\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"version\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"mint_edition\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"token_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"batch_mint_edition\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"values\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"token_uris\",\n \"type\": \"core::array::Array::<core::byte_array::ByteArray>\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"add_supply\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_collection_creator\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_token_creator\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_token_registered_at\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u64\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_token_data\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"ip_programmable_erc1155_collections::types::TokenData\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"total_editions\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"token_exists\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"OwnableMixinImpl\",\n \"interface_name\": \"openzeppelin_access::ownable::interface::OwnableABI\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_access::ownable::interface::OwnableABI\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer_ownership\",\n \"inputs\": [\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounce_ownership\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"SRC5Impl\",\n \"interface_name\": \"openzeppelin_introspection::interface::ISRC5\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_introspection::interface::ISRC5\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"supports_interface\",\n \"inputs\": [\n {\n \"name\": \"interface_id\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC1155Impl\",\n \"interface_name\": \"openzeppelin_token::erc1155::interface::IERC1155\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::starknet::contract_address::ContractAddress>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::starknet::contract_address::ContractAddress>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::felt252>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::felt252>\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc1155::interface::IERC1155\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"balance_of\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balance_of_batch\",\n \"inputs\": [\n {\n \"name\": \"accounts\",\n \"type\": \"core::array::Span::<core::starknet::contract_address::ContractAddress>\"\n },\n {\n \"name\": \"token_ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safe_transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safe_batch_transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"values\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_approved_for_all\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_approval_for_all\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC1155CamelImpl\",\n \"interface_name\": \"openzeppelin_token::erc1155::interface::IERC1155Camel\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc1155::interface::IERC1155Camel\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balanceOfBatch\",\n \"inputs\": [\n {\n \"name\": \"accounts\",\n \"type\": \"core::array::Span::<core::starknet::contract_address::ContractAddress>\"\n },\n {\n \"name\": \"tokenIds\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safeTransferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safeBatchTransferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenIds\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"values\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isApprovedForAll\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setApprovalForAll\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC2981Impl\",\n \"interface_name\": \"openzeppelin_token::common::erc2981::interface::IERC2981\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::common::erc2981::interface::IERC2981\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"royalty_info\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"sale_price\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"(core::starknet::contract_address::ContractAddress, core::integer::u256)\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC2981InfoImpl\",\n \"interface_name\": \"openzeppelin_token::common::erc2981::interface::IERC2981Info\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::common::erc2981::interface::IERC2981Info\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"default_royalty\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"(core::starknet::contract_address::ContractAddress, core::integer::u128, core::integer::u128)\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"token_royalty\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"(core::starknet::contract_address::ContractAddress, core::integer::u128, core::integer::u128)\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC2981AdminOwnableImpl\",\n \"interface_name\": \"openzeppelin_token::common::erc2981::interface::IERC2981Admin\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::common::erc2981::interface::IERC2981Admin\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"set_default_royalty\",\n \"inputs\": [\n {\n \"name\": \"receiver\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"fee_numerator\",\n \"type\": \"core::integer::u128\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"delete_default_royalty\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_token_royalty\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"receiver\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"fee_numerator\",\n \"type\": \"core::integer::u128\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"reset_token_royalty\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"constructor\",\n \"name\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"base_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferred\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"previous_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferStarted\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"previous_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"OwnershipTransferred\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferred\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"OwnershipTransferStarted\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferStarted\",\n \"kind\": \"nested\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferSingle\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferBatch\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"values\",\n \"type\": \"core::array::Span::<core::integer::u256>\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::ApprovalForAll\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::URI\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"value\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"TransferSingle\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferSingle\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"TransferBatch\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferBatch\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"ApprovalForAll\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::ApprovalForAll\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"URI\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::URI\",\n \"kind\": \"nested\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::common::erc2981::erc2981::ERC2981Component::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_programmable_erc1155_collections::IPCollection::IPCollection::IPMinted\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"uri\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"registered_at\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_programmable_erc1155_collections::IPCollection::IPCollection::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"SRC5Event\",\n \"type\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"OwnableEvent\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"ERC1155Event\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"ERC2981Event\",\n \"type\": \"openzeppelin_token::common::erc2981::erc2981::ERC2981Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"IPMinted\",\n \"type\": \"ip_programmable_erc1155_collections::IPCollection::IPCollection::IPMinted\",\n \"kind\": \"nested\"\n }\n ]\n }\n] as const;\n","export const IPCollectionABI =\n[\n {\n \"type\": \"impl\",\n \"name\": \"IPCollectionImpl\",\n \"interface_name\": \"ip_collection_erc_721::interfaces::IIPCollection::IIPCollection\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::byte_array::ByteArray\",\n \"members\": [\n {\n \"name\": \"data\",\n \"type\": \"core::array::Array::<core::bytes_31::bytes31>\"\n },\n {\n \"name\": \"pending_word\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"pending_word_len\",\n \"type\": \"core::internal::bounded_int::BoundedInt::<0, 30>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::integer::u256\",\n \"members\": [\n {\n \"name\": \"low\",\n \"type\": \"core::integer::u128\"\n },\n {\n \"name\": \"high\",\n \"type\": \"core::integer::u128\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::integer::u256>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::integer::u256>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"ip_collection_erc_721::types::Collection\",\n \"members\": [\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"base_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"ip_nft\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ]\n },\n {\n \"type\": \"enum\",\n \"name\": \"core::bool\",\n \"variants\": [\n {\n \"name\": \"False\",\n \"type\": \"()\"\n },\n {\n \"name\": \"True\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"ip_collection_erc_721::types::CollectionStats\",\n \"members\": [\n {\n \"name\": \"total_minted\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"total_archived\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"protocol_routed_transfers\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"last_mint_time\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"last_archive_time\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"last_transfer_time\",\n \"type\": \"core::integer::u64\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"ip_collection_erc_721::types::TokenData\",\n \"members\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"metadata_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"original_creator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"registered_at\",\n \"type\": \"core::integer::u64\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"ip_collection_erc_721::interfaces::IIPCollection::IIPCollection\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"create_collection\",\n \"inputs\": [\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"base_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"mint\",\n \"inputs\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u128\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"batch_mint\",\n \"inputs\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"recipients\",\n \"type\": \"core::array::Array::<core::starknet::contract_address::ContractAddress>\"\n },\n {\n \"name\": \"token_uris\",\n \"type\": \"core::array::Array::<core::byte_array::ByteArray>\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::array::Array::<core::integer::u128>\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer_collection_ownership\",\n \"inputs\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"archive\",\n \"inputs\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"batch_archive\",\n \"inputs\": [\n {\n \"name\": \"collection_ids\",\n \"type\": \"core::array::Array::<core::integer::u256>\"\n },\n {\n \"name\": \"token_ids\",\n \"type\": \"core::array::Array::<core::integer::u256>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer_token\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"batch_transfer\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"collection_ids\",\n \"type\": \"core::array::Array::<core::integer::u256>\"\n },\n {\n \"name\": \"token_ids\",\n \"type\": \"core::array::Array::<core::integer::u256>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"list_user_tokens_per_collection\",\n \"inputs\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"user\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"list_user_collections\",\n \"inputs\": [\n {\n \"name\": \"user\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_collection\",\n \"inputs\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"ip_collection_erc_721::types::Collection\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_collection_count\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"version\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_valid_collection\",\n \"inputs\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_collection_stats\",\n \"inputs\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"ip_collection_erc_721::types::CollectionStats\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_collection_owner\",\n \"inputs\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_token\",\n \"inputs\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"ip_collection_erc_721::types::TokenData\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_valid_token\",\n \"inputs\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_transferable_token\",\n \"inputs\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"constructor\",\n \"name\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"ip_nft_class_hash\",\n \"type\": \"core::starknet::class_hash::ClassHash\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_collection_erc_721::IPCollection::IPCollection::CollectionCreated\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"base_uri\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_collection_erc_721::IPCollection::IPCollection::CollectionOwnershipTransferred\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"previous_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_collection_erc_721::IPCollection::IPCollection::TokenMinted\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"metadata_uri\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u128\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_collection_erc_721::IPCollection::IPCollection::TokenMintedBatch\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"token_ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"owners\",\n \"type\": \"core::array::Array::<core::starknet::contract_address::ContractAddress>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"metadata_uris\",\n \"type\": \"core::array::Array::<core::byte_array::ByteArray>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_collection_erc_721::IPCollection::IPCollection::TokenArchived\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_collection_erc_721::IPCollection::IPCollection::TokenArchivedBatch\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"collection_ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"token_ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_collection_erc_721::IPCollection::IPCollection::TokenTransferred\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_collection_erc_721::IPCollection::IPCollection::TokenTransferredBatch\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"collection_ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"token_ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_collection_erc_721::IPCollection::IPCollection::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"CollectionCreated\",\n \"type\": \"ip_collection_erc_721::IPCollection::IPCollection::CollectionCreated\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"CollectionOwnershipTransferred\",\n \"type\": \"ip_collection_erc_721::IPCollection::IPCollection::CollectionOwnershipTransferred\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"TokenMinted\",\n \"type\": \"ip_collection_erc_721::IPCollection::IPCollection::TokenMinted\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"TokenMintedBatch\",\n \"type\": \"ip_collection_erc_721::IPCollection::IPCollection::TokenMintedBatch\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"TokenArchived\",\n \"type\": \"ip_collection_erc_721::IPCollection::IPCollection::TokenArchived\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"TokenArchivedBatch\",\n \"type\": \"ip_collection_erc_721::IPCollection::IPCollection::TokenArchivedBatch\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"TokenTransferred\",\n \"type\": \"ip_collection_erc_721::IPCollection::IPCollection::TokenTransferred\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"TokenTransferredBatch\",\n \"type\": \"ip_collection_erc_721::IPCollection::IPCollection::TokenTransferredBatch\",\n \"kind\": \"nested\"\n }\n ]\n }\n] as const;\n","export const IPNftABI =\n[\n {\n \"type\": \"impl\",\n \"name\": \"ERC721Metadata\",\n \"interface_name\": \"openzeppelin_token::erc721::interface::IERC721Metadata\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::byte_array::ByteArray\",\n \"members\": [\n {\n \"name\": \"data\",\n \"type\": \"core::array::Array::<core::bytes_31::bytes31>\"\n },\n {\n \"name\": \"pending_word\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"pending_word_len\",\n \"type\": \"core::internal::bounded_int::BoundedInt::<0, 30>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::integer::u256\",\n \"members\": [\n {\n \"name\": \"low\",\n \"type\": \"core::integer::u128\"\n },\n {\n \"name\": \"high\",\n \"type\": \"core::integer::u128\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc721::interface::IERC721Metadata\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"name\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"symbol\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"token_uri\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC721MetadataCamelOnly\",\n \"interface_name\": \"openzeppelin_token::erc721::interface::IERC721MetadataCamelOnly\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc721::interface::IERC721MetadataCamelOnly\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"tokenURI\",\n \"inputs\": [\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"IPNftImpl\",\n \"interface_name\": \"ip_collection_erc_721::interfaces::IIPNFT::IIPNft\"\n },\n {\n \"type\": \"enum\",\n \"name\": \"core::bool\",\n \"variants\": [\n {\n \"name\": \"False\",\n \"type\": \"()\"\n },\n {\n \"name\": \"True\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::integer::u256>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::integer::u256>\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"ip_collection_erc_721::interfaces::IIPNFT::IIPNft\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"mint\",\n \"inputs\": [\n {\n \"name\": \"recipient\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"token_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u128\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"archive\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_archived\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_collection_id\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_registry\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"version\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"base_uri\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"all_tokens_of_owner\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"token_exists\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_full_token_data\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"(core::starknet::contract_address::ContractAddress, core::byte_array::ByteArray, core::starknet::contract_address::ContractAddress, core::integer::u64)\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_token_creator\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_token_registered_at\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u64\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC721Impl\",\n \"interface_name\": \"openzeppelin_token::erc721::interface::IERC721\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::felt252>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::felt252>\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc721::interface::IERC721\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"balance_of\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner_of\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safe_transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"approve\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_approval_for_all\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_approved\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_approved_for_all\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC721CamelOnly\",\n \"interface_name\": \"openzeppelin_token::erc721::interface::IERC721CamelOnly\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc721::interface::IERC721CamelOnly\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"ownerOf\",\n \"inputs\": [\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safeTransferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setApprovalForAll\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getApproved\",\n \"inputs\": [\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isApprovedForAll\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC721EnumerableImpl\",\n \"interface_name\": \"openzeppelin_token::erc721::extensions::erc721_enumerable::interface::IERC721Enumerable\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc721::extensions::erc721_enumerable::interface::IERC721Enumerable\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"total_supply\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"token_by_index\",\n \"inputs\": [\n {\n \"name\": \"index\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"token_of_owner_by_index\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"index\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"SRC5Impl\",\n \"interface_name\": \"openzeppelin_introspection::interface::ISRC5\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_introspection::interface::ISRC5\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"supports_interface\",\n \"inputs\": [\n {\n \"name\": \"interface_id\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC2981Impl\",\n \"interface_name\": \"openzeppelin_token::common::erc2981::interface::IERC2981\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::common::erc2981::interface::IERC2981\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"royalty_info\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"sale_price\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"(core::starknet::contract_address::ContractAddress, core::integer::u256)\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC2981InfoImpl\",\n \"interface_name\": \"openzeppelin_token::common::erc2981::interface::IERC2981Info\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::common::erc2981::interface::IERC2981Info\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"default_royalty\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"(core::starknet::contract_address::ContractAddress, core::integer::u128, core::integer::u128)\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"token_royalty\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"(core::starknet::contract_address::ContractAddress, core::integer::u128, core::integer::u128)\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"constructor\",\n \"name\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"base_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"registry\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::erc721::ERC721Component::Transfer\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::erc721::ERC721Component::Approval\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::erc721::ERC721Component::ApprovalForAll\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::erc721::ERC721Component::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Transfer\",\n \"type\": \"openzeppelin_token::erc721::erc721::ERC721Component::Transfer\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"Approval\",\n \"type\": \"openzeppelin_token::erc721::erc721::ERC721Component::Approval\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"ApprovalForAll\",\n \"type\": \"openzeppelin_token::erc721::erc721::ERC721Component::ApprovalForAll\",\n \"kind\": \"nested\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::extensions::erc721_enumerable::erc721_enumerable::ERC721EnumerableComponent::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::common::erc2981::erc2981::ERC2981Component::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_collection_erc_721::IPNft::IPNft::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"ERC721Event\",\n \"type\": \"openzeppelin_token::erc721::erc721::ERC721Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"SRC5Event\",\n \"type\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"ERC721EnumerableEvent\",\n \"type\": \"openzeppelin_token::erc721::extensions::erc721_enumerable::erc721_enumerable::ERC721EnumerableComponent::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"ERC2981Event\",\n \"type\": \"openzeppelin_token::common::erc2981::erc2981::ERC2981Component::Event\",\n \"kind\": \"flat\"\n }\n ]\n }\n] as const;\n","// Auto-extracted from the deployed Creator Coin Factory class (scarb 2.4.3 build).\n// Covers create_creator_coin / launch_on_ekubo / views. Do not edit by hand.\nexport const CreatorCoinFactoryABI = [{\"type\":\"impl\",\"name\":\"FactoryImpl\",\"interface_name\":\"creator_coin::factory::interface::IFactory\"},{\"type\":\"struct\",\"name\":\"core::integer::u256\",\"members\":[{\"name\":\"low\",\"type\":\"core::integer::u128\"},{\"name\":\"high\",\"type\":\"core::integer::u128\"}]},{\"type\":\"struct\",\"name\":\"core::array::Span::<core::starknet::contract_address::ContractAddress>\",\"members\":[{\"name\":\"snapshot\",\"type\":\"@core::array::Array::<core::starknet::contract_address::ContractAddress>\"}]},{\"type\":\"struct\",\"name\":\"core::array::Span::<core::integer::u256>\",\"members\":[{\"name\":\"snapshot\",\"type\":\"@core::array::Array::<core::integer::u256>\"}]},{\"type\":\"struct\",\"name\":\"creator_coin::factory::LaunchParameters\",\"members\":[{\"name\":\"creator_coin_address\",\"type\":\"core::starknet::contract_address::ContractAddress\"},{\"name\":\"transfer_restriction_delay\",\"type\":\"core::integer::u64\"},{\"name\":\"max_percentage_buy_launch\",\"type\":\"core::integer::u16\"},{\"name\":\"quote_address\",\"type\":\"core::starknet::contract_address::ContractAddress\"},{\"name\":\"initial_holders\",\"type\":\"core::array::Span::<core::starknet::contract_address::ContractAddress>\"},{\"name\":\"initial_holders_amounts\",\"type\":\"core::array::Span::<core::integer::u256>\"}]},{\"type\":\"enum\",\"name\":\"core::bool\",\"variants\":[{\"name\":\"False\",\"type\":\"()\"},{\"name\":\"True\",\"type\":\"()\"}]},{\"type\":\"struct\",\"name\":\"ekubo::types::i129::i129\",\"members\":[{\"name\":\"mag\",\"type\":\"core::integer::u128\"},{\"name\":\"sign\",\"type\":\"core::bool\"}]},{\"type\":\"struct\",\"name\":\"creator_coin::exchanges::ekubo::ekubo_adapter::EkuboPoolParameters\",\"members\":[{\"name\":\"fee\",\"type\":\"core::integer::u128\"},{\"name\":\"tick_spacing\",\"type\":\"core::integer::u128\"},{\"name\":\"starting_price\",\"type\":\"ekubo::types::i129::i129\"},{\"name\":\"bound\",\"type\":\"core::integer::u128\"}]},{\"type\":\"struct\",\"name\":\"ekubo::types::keys::PoolKey\",\"members\":[{\"name\":\"token0\",\"type\":\"core::starknet::contract_address::ContractAddress\"},{\"name\":\"token1\",\"type\":\"core::starknet::contract_address::ContractAddress\"},{\"name\":\"fee\",\"type\":\"core::integer::u128\"},{\"name\":\"tick_spacing\",\"type\":\"core::integer::u128\"},{\"name\":\"extension\",\"type\":\"core::starknet::contract_address::ContractAddress\"}]},{\"type\":\"struct\",\"name\":\"ekubo::types::bounds::Bounds\",\"members\":[{\"name\":\"lower\",\"type\":\"ekubo::types::i129::i129\"},{\"name\":\"upper\",\"type\":\"ekubo::types::i129::i129\"}]},{\"type\":\"struct\",\"name\":\"creator_coin::exchanges::ekubo::launcher::EkuboLP\",\"members\":[{\"name\":\"owner\",\"type\":\"core::starknet::contract_address::ContractAddress\"},{\"name\":\"quote_address\",\"type\":\"core::starknet::contract_address::ContractAddress\"},{\"name\":\"pool_key\",\"type\":\"ekubo::types::keys::PoolKey\"},{\"name\":\"bounds\",\"type\":\"ekubo::types::bounds::Bounds\"}]},{\"type\":\"enum\",\"name\":\"creator_coin::exchanges::SupportedExchanges\",\"variants\":[{\"name\":\"Jediswap\",\"type\":\"()\"},{\"name\":\"Ekubo\",\"type\":\"()\"},{\"name\":\"Starkdefi\",\"type\":\"()\"}]},{\"type\":\"enum\",\"name\":\"creator_coin::token::creator_coin::LiquidityType\",\"variants\":[{\"name\":\"JediERC20\",\"type\":\"core::starknet::contract_address::ContractAddress\"},{\"name\":\"StarkDeFiERC20\",\"type\":\"core::starknet::contract_address::ContractAddress\"},{\"name\":\"EkuboNFT\",\"type\":\"core::integer::u64\"}]},{\"type\":\"enum\",\"name\":\"core::option::Option::<(core::starknet::contract_address::ContractAddress, creator_coin::token::creator_coin::LiquidityType)>\",\"variants\":[{\"name\":\"Some\",\"type\":\"(core::starknet::contract_address::ContractAddress, creator_coin::token::creator_coin::LiquidityType)\"},{\"name\":\"None\",\"type\":\"()\"}]},{\"type\":\"interface\",\"name\":\"creator_coin::factory::interface::IFactory\",\"items\":[{\"type\":\"function\",\"name\":\"create_creator_coin\",\"inputs\":[{\"name\":\"owner\",\"type\":\"core::starknet::contract_address::ContractAddress\"},{\"name\":\"name\",\"type\":\"core::felt252\"},{\"name\":\"symbol\",\"type\":\"core::felt252\"},{\"name\":\"initial_supply\",\"type\":\"core::integer::u256\"},{\"name\":\"contract_address_salt\",\"type\":\"core::felt252\"}],\"outputs\":[{\"type\":\"core::starknet::contract_address::ContractAddress\"}],\"state_mutability\":\"external\"},{\"type\":\"function\",\"name\":\"launch_on_jediswap\",\"inputs\":[{\"name\":\"launch_parameters\",\"type\":\"creator_coin::factory::LaunchParameters\"},{\"name\":\"quote_amount\",\"type\":\"core::integer::u256\"},{\"name\":\"unlock_time\",\"type\":\"core::integer::u64\"}],\"outputs\":[{\"type\":\"core::starknet::contract_address::ContractAddress\"}],\"state_mutability\":\"external\"},{\"type\":\"function\",\"name\":\"launch_on_ekubo\",\"inputs\":[{\"name\":\"launch_parameters\",\"type\":\"creator_coin::factory::LaunchParameters\"},{\"name\":\"ekubo_parameters\",\"type\":\"creator_coin::exchanges::ekubo::ekubo_adapter::EkuboPoolParameters\"}],\"outputs\":[{\"type\":\"(core::integer::u64, creator_coin::exchanges::ekubo::launcher::EkuboLP)\"}],\"state_mutability\":\"external\"},{\"type\":\"function\",\"name\":\"launch_on_starkdefi\",\"inputs\":[{\"name\":\"launch_parameters\",\"type\":\"creator_coin::factory::LaunchParameters\"},{\"name\":\"quote_amount\",\"type\":\"core::integer::u256\"},{\"name\":\"unlock_time\",\"type\":\"core::integer::u64\"}],\"outputs\":[{\"type\":\"core::starknet::contract_address::ContractAddress\"}],\"state_mutability\":\"external\"},{\"type\":\"function\",\"name\":\"exchange_address\",\"inputs\":[{\"name\":\"exchange\",\"type\":\"creator_coin::exchanges::SupportedExchanges\"}],\"outputs\":[{\"type\":\"core::starknet::contract_address::ContractAddress\"}],\"state_mutability\":\"view\"},{\"type\":\"function\",\"name\":\"lock_manager_address\",\"inputs\":[],\"outputs\":[{\"type\":\"core::starknet::contract_address::ContractAddress\"}],\"state_mutability\":\"view\"},{\"type\":\"function\",\"name\":\"locked_liquidity\",\"inputs\":[{\"name\":\"token\",\"type\":\"core::starknet::contract_address::ContractAddress\"}],\"outputs\":[{\"type\":\"core::option::Option::<(core::starknet::contract_address::ContractAddress, creator_coin::token::creator_coin::LiquidityType)>\"}],\"state_mutability\":\"view\"},{\"type\":\"function\",\"name\":\"is_creator_coin\",\"inputs\":[{\"name\":\"address\",\"type\":\"core::starknet::contract_address::ContractAddress\"}],\"outputs\":[{\"type\":\"core::bool\"}],\"state_mutability\":\"view\"},{\"type\":\"function\",\"name\":\"ekubo_core_address\",\"inputs\":[],\"outputs\":[{\"type\":\"core::starknet::contract_address::ContractAddress\"}],\"state_mutability\":\"view\"}]},{\"type\":\"struct\",\"name\":\"core::array::Span::<(creator_coin::exchanges::SupportedExchanges, core::starknet::contract_address::ContractAddress)>\",\"members\":[{\"name\":\"snapshot\",\"type\":\"@core::array::Array::<(creator_coin::exchanges::SupportedExchanges, core::starknet::contract_address::ContractAddress)>\"}]},{\"type\":\"struct\",\"name\":\"core::array::Span::<(core::starknet::contract_address::ContractAddress, core::starknet::contract_address::ContractAddress)>\",\"members\":[{\"name\":\"snapshot\",\"type\":\"@core::array::Array::<(core::starknet::contract_address::ContractAddress, core::starknet::contract_address::ContractAddress)>\"}]},{\"type\":\"constructor\",\"name\":\"constructor\",\"inputs\":[{\"name\":\"creator_coin_class_hash\",\"type\":\"core::starknet::class_hash::ClassHash\"},{\"name\":\"lock_manager_address\",\"type\":\"core::starknet::contract_address::ContractAddress\"},{\"name\":\"exchanges\",\"type\":\"core::array::Span::<(creator_coin::exchanges::SupportedExchanges, core::starknet::contract_address::ContractAddress)>\"},{\"name\":\"migrated_tokens\",\"type\":\"core::array::Span::<(core::starknet::contract_address::ContractAddress, core::starknet::contract_address::ContractAddress)>\"}]},{\"type\":\"event\",\"name\":\"creator_coin::factory::factory::Factory::CreatorCoinCreated\",\"kind\":\"struct\",\"members\":[{\"name\":\"owner\",\"type\":\"core::starknet::contract_address::ContractAddress\",\"kind\":\"data\"},{\"name\":\"name\",\"type\":\"core::felt252\",\"kind\":\"data\"},{\"name\":\"symbol\",\"type\":\"core::felt252\",\"kind\":\"data\"},{\"name\":\"initial_supply\",\"type\":\"core::integer::u256\",\"kind\":\"data\"},{\"name\":\"creator_coin_address\",\"type\":\"core::starknet::contract_address::ContractAddress\",\"kind\":\"data\"}]},{\"type\":\"event\",\"name\":\"creator_coin::factory::factory::Factory::CreatorCoinLaunched\",\"kind\":\"struct\",\"members\":[{\"name\":\"creator_coin_address\",\"type\":\"core::starknet::contract_address::ContractAddress\",\"kind\":\"data\"},{\"name\":\"quote_token\",\"type\":\"core::starknet::contract_address::ContractAddress\",\"kind\":\"data\"},{\"name\":\"exchange_name\",\"type\":\"core::felt252\",\"kind\":\"data\"}]},{\"type\":\"event\",\"name\":\"creator_coin::factory::factory::Factory::Event\",\"kind\":\"enum\",\"variants\":[{\"name\":\"CreatorCoinCreated\",\"type\":\"creator_coin::factory::factory::Factory::CreatorCoinCreated\",\"kind\":\"nested\"},{\"name\":\"CreatorCoinLaunched\",\"type\":\"creator_coin::factory::factory::Factory::CreatorCoinLaunched\",\"kind\":\"nested\"}]}] as const;\n","export const IPTicketCollectionABI = [\n {\n \"type\": \"impl\",\n \"name\": \"ERC1155MetadataURIImpl\",\n \"interface_name\": \"openzeppelin_token::erc1155::interface::IERC1155MetadataURI\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::integer::u256\",\n \"members\": [\n {\n \"name\": \"low\",\n \"type\": \"core::integer::u128\"\n },\n {\n \"name\": \"high\",\n \"type\": \"core::integer::u128\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::byte_array::ByteArray\",\n \"members\": [\n {\n \"name\": \"data\",\n \"type\": \"core::array::Array::<core::bytes_31::bytes31>\"\n },\n {\n \"name\": \"pending_word\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"pending_word_len\",\n \"type\": \"core::internal::bounded_int::BoundedInt::<0, 30>\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc1155::interface::IERC1155MetadataURI\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"uri\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"IPTicketCollectionImpl\",\n \"interface_name\": \"ip_ticket::interface::IIPTicketCollection\"\n },\n {\n \"type\": \"enum\",\n \"name\": \"core::option::Option::<core::integer::u64>\",\n \"variants\": [\n {\n \"name\": \"Some\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"None\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"enum\",\n \"name\": \"core::bool\",\n \"variants\": [\n {\n \"name\": \"False\",\n \"type\": \"()\"\n },\n {\n \"name\": \"True\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"ip_ticket::types::Ticket\",\n \"members\": [\n {\n \"name\": \"max_supply\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"minted\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"core::option::Option::<core::integer::u64>\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"core::option::Option::<core::integer::u64>\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u16\"\n },\n {\n \"name\": \"metadata_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"ip_ticket::interface::IIPTicketCollection\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"create_ticket\",\n \"inputs\": [\n {\n \"name\": \"max_supply\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"core::option::Option::<core::integer::u64>\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"core::option::Option::<core::integer::u64>\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u16\"\n },\n {\n \"name\": \"metadata_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"mint\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_valid\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"holder\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_ticket\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"ip_ticket::types::Ticket\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"ticket_count\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"name\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"symbol\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"base_uri\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"royalty_info\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"sale_price\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"(core::starknet::contract_address::ContractAddress, core::integer::u256)\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"royaltyInfo\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"sale_price\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"(core::starknet::contract_address::ContractAddress, core::integer::u256)\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"version\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC1155Impl\",\n \"interface_name\": \"openzeppelin_token::erc1155::interface::IERC1155\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::starknet::contract_address::ContractAddress>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::starknet::contract_address::ContractAddress>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::integer::u256>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::integer::u256>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::felt252>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::felt252>\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc1155::interface::IERC1155\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"balance_of\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balance_of_batch\",\n \"inputs\": [\n {\n \"name\": \"accounts\",\n \"type\": \"core::array::Span::<core::starknet::contract_address::ContractAddress>\"\n },\n {\n \"name\": \"token_ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safe_transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safe_batch_transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"values\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_approved_for_all\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_approval_for_all\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC1155CamelImpl\",\n \"interface_name\": \"openzeppelin_token::erc1155::interface::IERC1155Camel\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc1155::interface::IERC1155Camel\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balanceOfBatch\",\n \"inputs\": [\n {\n \"name\": \"accounts\",\n \"type\": \"core::array::Span::<core::starknet::contract_address::ContractAddress>\"\n },\n {\n \"name\": \"tokenIds\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safeTransferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safeBatchTransferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenIds\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"values\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isApprovedForAll\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setApprovalForAll\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"SRC5Impl\",\n \"interface_name\": \"openzeppelin_introspection::interface::ISRC5\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_introspection::interface::ISRC5\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"supports_interface\",\n \"inputs\": [\n {\n \"name\": \"interface_id\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"OwnableMixinImpl\",\n \"interface_name\": \"openzeppelin_access::ownable::interface::OwnableABI\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_access::ownable::interface::OwnableABI\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer_ownership\",\n \"inputs\": [\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounce_ownership\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"constructor\",\n \"name\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"base_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferSingle\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferBatch\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"values\",\n \"type\": \"core::array::Span::<core::integer::u256>\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::ApprovalForAll\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::URI\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"value\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"TransferSingle\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferSingle\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"TransferBatch\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferBatch\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"ApprovalForAll\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::ApprovalForAll\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"URI\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::URI\",\n \"kind\": \"nested\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferred\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"previous_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferStarted\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"previous_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"OwnershipTransferred\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferred\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"OwnershipTransferStarted\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferStarted\",\n \"kind\": \"nested\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_ticket::IPTicketCollection::IPTicketCollection::TicketCreated\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"max_supply\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"core::option::Option::<core::integer::u64>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"core::option::Option::<core::integer::u64>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"metadata_uri\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_ticket::IPTicketCollection::IPTicketCollection::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"ERC1155Event\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"SRC5Event\",\n \"type\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"OwnableEvent\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"TicketCreated\",\n \"type\": \"ip_ticket::IPTicketCollection::IPTicketCollection::TicketCreated\",\n \"kind\": \"nested\"\n }\n ]\n }\n] as const;\n","export const IPTicketCollectionFactoryABI = [\n {\n \"type\": \"impl\",\n \"name\": \"IPTicketCollectionFactoryImpl\",\n \"interface_name\": \"ip_ticket::interface::IIPTicketCollectionFactory\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::byte_array::ByteArray\",\n \"members\": [\n {\n \"name\": \"data\",\n \"type\": \"core::array::Array::<core::bytes_31::bytes31>\"\n },\n {\n \"name\": \"pending_word\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"pending_word_len\",\n \"type\": \"core::internal::bounded_int::BoundedInt::<0, 30>\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"ip_ticket::interface::IIPTicketCollectionFactory\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"collection_class_hash\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::class_hash::ClassHash\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"version\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"deploy_collection\",\n \"inputs\": [\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"base_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"SRC5Impl\",\n \"interface_name\": \"openzeppelin_introspection::interface::ISRC5\"\n },\n {\n \"type\": \"enum\",\n \"name\": \"core::bool\",\n \"variants\": [\n {\n \"name\": \"False\",\n \"type\": \"()\"\n },\n {\n \"name\": \"True\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_introspection::interface::ISRC5\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"supports_interface\",\n \"inputs\": [\n {\n \"name\": \"interface_id\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"constructor\",\n \"name\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"collection_class_hash\",\n \"type\": \"core::starknet::class_hash::ClassHash\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_ticket::IPTicketCollectionFactory::IPTicketCollectionFactory::CollectionDeployed\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"collection_address\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_ticket::IPTicketCollectionFactory::IPTicketCollectionFactory::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"SRC5Event\",\n \"type\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"CollectionDeployed\",\n \"type\": \"ip_ticket::IPTicketCollectionFactory::IPTicketCollectionFactory::CollectionDeployed\",\n \"kind\": \"nested\"\n }\n ]\n }\n] as const;\n","export const IPClubFactoryABI = [\n {\n \"type\": \"impl\",\n \"name\": \"IPClubCollectionFactoryImpl\",\n \"interface_name\": \"ip_club::interface::IIPClubCollectionFactory\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::byte_array::ByteArray\",\n \"members\": [\n {\n \"name\": \"data\",\n \"type\": \"core::array::Array::<core::bytes_31::bytes31>\"\n },\n {\n \"name\": \"pending_word\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"pending_word_len\",\n \"type\": \"core::internal::bounded_int::BoundedInt::<0, 30>\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"ip_club::interface::IIPClubCollectionFactory\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"collection_class_hash\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::class_hash::ClassHash\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"version\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"deploy_collection\",\n \"inputs\": [\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"base_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"SRC5Impl\",\n \"interface_name\": \"openzeppelin_introspection::interface::ISRC5\"\n },\n {\n \"type\": \"enum\",\n \"name\": \"core::bool\",\n \"variants\": [\n {\n \"name\": \"False\",\n \"type\": \"()\"\n },\n {\n \"name\": \"True\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_introspection::interface::ISRC5\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"supports_interface\",\n \"inputs\": [\n {\n \"name\": \"interface_id\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"constructor\",\n \"name\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"collection_class_hash\",\n \"type\": \"core::starknet::class_hash::ClassHash\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_club::IPClubCollectionFactory::IPClubCollectionFactory::ClubDeployed\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"collection_address\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_club::IPClubCollectionFactory::IPClubCollectionFactory::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"SRC5Event\",\n \"type\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"ClubDeployed\",\n \"type\": \"ip_club::IPClubCollectionFactory::IPClubCollectionFactory::ClubDeployed\",\n \"kind\": \"nested\"\n }\n ]\n }\n] as const;\n","export const IPClubCollectionABI = [\n {\n \"type\": \"impl\",\n \"name\": \"ERC1155MetadataURIImpl\",\n \"interface_name\": \"openzeppelin_token::erc1155::interface::IERC1155MetadataURI\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::integer::u256\",\n \"members\": [\n {\n \"name\": \"low\",\n \"type\": \"core::integer::u128\"\n },\n {\n \"name\": \"high\",\n \"type\": \"core::integer::u128\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::byte_array::ByteArray\",\n \"members\": [\n {\n \"name\": \"data\",\n \"type\": \"core::array::Array::<core::bytes_31::bytes31>\"\n },\n {\n \"name\": \"pending_word\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"pending_word_len\",\n \"type\": \"core::internal::bounded_int::BoundedInt::<0, 30>\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc1155::interface::IERC1155MetadataURI\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"uri\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"IPClubCollectionImpl\",\n \"interface_name\": \"ip_club::interface::IIPClubCollection\"\n },\n {\n \"type\": \"enum\",\n \"name\": \"core::option::Option::<core::integer::u64>\",\n \"variants\": [\n {\n \"name\": \"Some\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"None\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"enum\",\n \"name\": \"core::bool\",\n \"variants\": [\n {\n \"name\": \"False\",\n \"type\": \"()\"\n },\n {\n \"name\": \"True\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"ip_club::types::Membership\",\n \"members\": [\n {\n \"name\": \"max_supply\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"minted\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"core::option::Option::<core::integer::u64>\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"core::option::Option::<core::integer::u64>\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u16\"\n },\n {\n \"name\": \"metadata_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"ip_club::interface::IIPClubCollection\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"create_membership\",\n \"inputs\": [\n {\n \"name\": \"max_supply\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"core::option::Option::<core::integer::u64>\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"core::option::Option::<core::integer::u64>\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u16\"\n },\n {\n \"name\": \"metadata_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"mint\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_member\",\n \"inputs\": [\n {\n \"name\": \"holder\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_member_of\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"holder\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_membership\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"ip_club::types::Membership\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"name\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"symbol\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"base_uri\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"royalty_info\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"sale_price\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"(core::starknet::contract_address::ContractAddress, core::integer::u256)\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"royaltyInfo\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"sale_price\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"(core::starknet::contract_address::ContractAddress, core::integer::u256)\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"version\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC1155Impl\",\n \"interface_name\": \"openzeppelin_token::erc1155::interface::IERC1155\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::starknet::contract_address::ContractAddress>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::starknet::contract_address::ContractAddress>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::integer::u256>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::integer::u256>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::felt252>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::felt252>\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc1155::interface::IERC1155\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"balance_of\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balance_of_batch\",\n \"inputs\": [\n {\n \"name\": \"accounts\",\n \"type\": \"core::array::Span::<core::starknet::contract_address::ContractAddress>\"\n },\n {\n \"name\": \"token_ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safe_transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safe_batch_transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"values\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_approved_for_all\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_approval_for_all\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC1155CamelImpl\",\n \"interface_name\": \"openzeppelin_token::erc1155::interface::IERC1155Camel\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc1155::interface::IERC1155Camel\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balanceOfBatch\",\n \"inputs\": [\n {\n \"name\": \"accounts\",\n \"type\": \"core::array::Span::<core::starknet::contract_address::ContractAddress>\"\n },\n {\n \"name\": \"tokenIds\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safeTransferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safeBatchTransferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenIds\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"values\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isApprovedForAll\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setApprovalForAll\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"SRC5Impl\",\n \"interface_name\": \"openzeppelin_introspection::interface::ISRC5\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_introspection::interface::ISRC5\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"supports_interface\",\n \"inputs\": [\n {\n \"name\": \"interface_id\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"OwnableMixinImpl\",\n \"interface_name\": \"openzeppelin_access::ownable::interface::OwnableABI\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_access::ownable::interface::OwnableABI\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer_ownership\",\n \"inputs\": [\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounce_ownership\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"constructor\",\n \"name\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"base_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferSingle\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferBatch\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"values\",\n \"type\": \"core::array::Span::<core::integer::u256>\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::ApprovalForAll\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::URI\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"value\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"TransferSingle\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferSingle\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"TransferBatch\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferBatch\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"ApprovalForAll\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::ApprovalForAll\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"URI\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::URI\",\n \"kind\": \"nested\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferred\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"previous_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferStarted\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"previous_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"OwnershipTransferred\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferred\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"OwnershipTransferStarted\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferStarted\",\n \"kind\": \"nested\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_club::IPClubCollection::IPClubCollection::MembershipCreated\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"max_supply\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"core::option::Option::<core::integer::u64>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"core::option::Option::<core::integer::u64>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"metadata_uri\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_club::IPClubCollection::IPClubCollection::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"ERC1155Event\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"SRC5Event\",\n \"type\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"OwnableEvent\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"MembershipCreated\",\n \"type\": \"ip_club::IPClubCollection::IPClubCollection::MembershipCreated\",\n \"kind\": \"nested\"\n }\n ]\n }\n] as const;\n","export const IPSponsorshipABI = [\n {\n \"type\": \"impl\",\n \"name\": \"ERC721MetadataImpl\",\n \"interface_name\": \"openzeppelin_token::erc721::interface::IERC721Metadata\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::byte_array::ByteArray\",\n \"members\": [\n {\n \"name\": \"data\",\n \"type\": \"core::array::Array::<core::bytes_31::bytes31>\"\n },\n {\n \"name\": \"pending_word\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"pending_word_len\",\n \"type\": \"core::internal::bounded_int::BoundedInt::<0, 30>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::integer::u256\",\n \"members\": [\n {\n \"name\": \"low\",\n \"type\": \"core::integer::u128\"\n },\n {\n \"name\": \"high\",\n \"type\": \"core::integer::u128\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc721::interface::IERC721Metadata\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"name\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"symbol\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"token_uri\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC721MetadataCamelOnlyImpl\",\n \"interface_name\": \"openzeppelin_token::erc721::interface::IERC721MetadataCamelOnly\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc721::interface::IERC721MetadataCamelOnly\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"tokenURI\",\n \"inputs\": [\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"IPSponsorshipImpl\",\n \"interface_name\": \"ip_sponsorship::interface::IIPSponsorship\"\n },\n {\n \"type\": \"enum\",\n \"name\": \"core::bool\",\n \"variants\": [\n {\n \"name\": \"False\",\n \"type\": \"()\"\n },\n {\n \"name\": \"True\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"enum\",\n \"name\": \"core::option::Option::<core::starknet::contract_address::ContractAddress>\",\n \"variants\": [\n {\n \"name\": \"Some\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"None\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"ip_sponsorship::types::SponsorshipOffer\",\n \"members\": [\n {\n \"name\": \"author\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"nft_contract\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"min_amount\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"duration\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"payment_token\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"license_terms_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"transferable\",\n \"type\": \"core::bool\"\n },\n {\n \"name\": \"specific_sponsor\",\n \"type\": \"core::option::Option::<core::starknet::contract_address::ContractAddress>\"\n },\n {\n \"name\": \"open\",\n \"type\": \"core::bool\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u256\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"ip_sponsorship::types::SponsorshipProposal\",\n \"members\": [\n {\n \"name\": \"proposer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"nft_contract\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"duration\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"valid_until\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"payment_token\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"license_terms_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"transferable\",\n \"type\": \"core::bool\"\n },\n {\n \"name\": \"open\",\n \"type\": \"core::bool\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u256\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"ip_sponsorship::interface::IIPSponsorship\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"create_offer\",\n \"inputs\": [\n {\n \"name\": \"nft_contract\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"min_amount\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"duration\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"payment_token\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"license_terms_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"transferable\",\n \"type\": \"core::bool\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"specific_sponsor\",\n \"type\": \"core::option::Option::<core::starknet::contract_address::ContractAddress>\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_offer_open\",\n \"inputs\": [\n {\n \"name\": \"offer_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"open\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"place_bid\",\n \"inputs\": [\n {\n \"name\": \"offer_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"retract_bid\",\n \"inputs\": [\n {\n \"name\": \"offer_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"accept_bid\",\n \"inputs\": [\n {\n \"name\": \"offer_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"sponsor\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_offer\",\n \"inputs\": [\n {\n \"name\": \"offer_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"ip_sponsorship::types::SponsorshipOffer\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_bid\",\n \"inputs\": [\n {\n \"name\": \"offer_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"sponsor\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_last_offer_id\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_last_license_id\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"propose_sponsorship\",\n \"inputs\": [\n {\n \"name\": \"nft_contract\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"duration\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"valid_until\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"payment_token\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"license_terms_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"transferable\",\n \"type\": \"core::bool\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"withdraw_proposal\",\n \"inputs\": [\n {\n \"name\": \"proposal_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"accept_proposal\",\n \"inputs\": [\n {\n \"name\": \"proposal_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"reject_proposal\",\n \"inputs\": [\n {\n \"name\": \"proposal_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_proposal\",\n \"inputs\": [\n {\n \"name\": \"proposal_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"ip_sponsorship::types::SponsorshipProposal\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_last_proposal_id\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"royalty_info\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"sale_price\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"(core::starknet::contract_address::ContractAddress, core::integer::u256)\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"royaltyInfo\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"sale_price\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"(core::starknet::contract_address::ContractAddress, core::integer::u256)\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"version\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC721Impl\",\n \"interface_name\": \"openzeppelin_token::erc721::interface::IERC721\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::felt252>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::felt252>\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc721::interface::IERC721\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"balance_of\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner_of\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safe_transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"approve\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_approval_for_all\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_approved\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_approved_for_all\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC721CamelOnly\",\n \"interface_name\": \"openzeppelin_token::erc721::interface::IERC721CamelOnly\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc721::interface::IERC721CamelOnly\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"ownerOf\",\n \"inputs\": [\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safeTransferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setApprovalForAll\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getApproved\",\n \"inputs\": [\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isApprovedForAll\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"SRC5Impl\",\n \"interface_name\": \"openzeppelin_introspection::interface::ISRC5\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_introspection::interface::ISRC5\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"supports_interface\",\n \"inputs\": [\n {\n \"name\": \"interface_id\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"constructor\",\n \"name\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::erc721::ERC721Component::Transfer\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::erc721::ERC721Component::Approval\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::erc721::ERC721Component::ApprovalForAll\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::erc721::ERC721Component::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Transfer\",\n \"type\": \"openzeppelin_token::erc721::erc721::ERC721Component::Transfer\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"Approval\",\n \"type\": \"openzeppelin_token::erc721::erc721::ERC721Component::Approval\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"ApprovalForAll\",\n \"type\": \"openzeppelin_token::erc721::erc721::ERC721Component::ApprovalForAll\",\n \"kind\": \"nested\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_sponsorship::IPSponsorship::IPSponsorship::OfferCreated\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"offer_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"author\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"nft_contract\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"min_amount\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"duration\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"payment_token\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"license_terms_uri\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"transferable\",\n \"type\": \"core::bool\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"specific_sponsor\",\n \"type\": \"core::option::Option::<core::starknet::contract_address::ContractAddress>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_sponsorship::IPSponsorship::IPSponsorship::OfferStatusUpdated\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"offer_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"open\",\n \"type\": \"core::bool\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"updated_at\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_sponsorship::IPSponsorship::IPSponsorship::BidPlaced\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"offer_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"sponsor\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"bid_at\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_sponsorship::IPSponsorship::IPSponsorship::BidRetracted\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"offer_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"sponsor\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"retracted_at\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_sponsorship::IPSponsorship::IPSponsorship::SponsorshipAccepted\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"offer_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"license_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"sponsor\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"author\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"expires_at\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_sponsorship::IPSponsorship::IPSponsorship::ProposalCreated\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"proposal_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"proposer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"nft_contract\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"duration\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"valid_until\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"payment_token\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"license_terms_uri\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"transferable\",\n \"type\": \"core::bool\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_sponsorship::IPSponsorship::IPSponsorship::ProposalClosed\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"proposal_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"accepted\",\n \"type\": \"core::bool\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"closed_at\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_sponsorship::IPSponsorship::IPSponsorship::ProposalAccepted\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"proposal_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"license_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"sponsor\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"author\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"expires_at\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_sponsorship::IPSponsorship::IPSponsorship::LicenseMinted\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"author\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"asset_contract\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"asset_token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"expires_at\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"transferable\",\n \"type\": \"core::bool\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"license_terms_uri\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"minted_at\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_sponsorship::IPSponsorship::IPSponsorship::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"ERC721Event\",\n \"type\": \"openzeppelin_token::erc721::erc721::ERC721Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"SRC5Event\",\n \"type\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"OfferCreated\",\n \"type\": \"ip_sponsorship::IPSponsorship::IPSponsorship::OfferCreated\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"OfferStatusUpdated\",\n \"type\": \"ip_sponsorship::IPSponsorship::IPSponsorship::OfferStatusUpdated\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"BidPlaced\",\n \"type\": \"ip_sponsorship::IPSponsorship::IPSponsorship::BidPlaced\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"BidRetracted\",\n \"type\": \"ip_sponsorship::IPSponsorship::IPSponsorship::BidRetracted\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"SponsorshipAccepted\",\n \"type\": \"ip_sponsorship::IPSponsorship::IPSponsorship::SponsorshipAccepted\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"ProposalCreated\",\n \"type\": \"ip_sponsorship::IPSponsorship::IPSponsorship::ProposalCreated\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"ProposalClosed\",\n \"type\": \"ip_sponsorship::IPSponsorship::IPSponsorship::ProposalClosed\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"ProposalAccepted\",\n \"type\": \"ip_sponsorship::IPSponsorship::IPSponsorship::ProposalAccepted\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"LicenseMinted\",\n \"type\": \"ip_sponsorship::IPSponsorship::IPSponsorship::LicenseMinted\",\n \"kind\": \"nested\"\n }\n ]\n }\n] as const;\n","export const IPGenesisABI = [\n {\n \"type\": \"impl\",\n \"name\": \"MIPImpl\",\n \"interface_name\": \"mip::interfaces::IMIP\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::byte_array::ByteArray\",\n \"members\": [\n {\n \"name\": \"data\",\n \"type\": \"core::array::Array::<core::bytes_31::bytes31>\"\n },\n {\n \"name\": \"pending_word\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"pending_word_len\",\n \"type\": \"core::internal::bounded_int::BoundedInt::<0, 30>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::integer::u256\",\n \"members\": [\n {\n \"name\": \"low\",\n \"type\": \"core::integer::u128\"\n },\n {\n \"name\": \"high\",\n \"type\": \"core::integer::u128\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"mip::interfaces::IMIP\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"mint_item\",\n \"inputs\": [\n {\n \"name\": \"recipient\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"uri\",\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"CounterImpl\",\n \"interface_name\": \"mip::interfaces::ICounter\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"mip::interfaces::ICounter\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"current\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"increment\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"decrement\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC721MixinImpl\",\n \"interface_name\": \"openzeppelin_token::erc721::interface::ERC721ABI\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::felt252>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::felt252>\"\n }\n ]\n },\n {\n \"type\": \"enum\",\n \"name\": \"core::bool\",\n \"variants\": [\n {\n \"name\": \"False\",\n \"type\": \"()\"\n },\n {\n \"name\": \"True\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc721::interface::ERC721ABI\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"balance_of\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner_of\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safe_transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"approve\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_approval_for_all\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_approved\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_approved_for_all\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"supports_interface\",\n \"inputs\": [\n {\n \"name\": \"interface_id\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"name\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"symbol\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"token_uri\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"ownerOf\",\n \"inputs\": [\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safeTransferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setApprovalForAll\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getApproved\",\n \"inputs\": [\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isApprovedForAll\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"tokenURI\",\n \"inputs\": [\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"OwnableMixinImpl\",\n \"interface_name\": \"openzeppelin_access::ownable::interface::OwnableABI\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_access::ownable::interface::OwnableABI\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer_ownership\",\n \"inputs\": [\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounce_ownership\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC721EnumerableImpl\",\n \"interface_name\": \"openzeppelin_token::erc721::extensions::erc721_enumerable::interface::IERC721Enumerable\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc721::extensions::erc721_enumerable::interface::IERC721Enumerable\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"total_supply\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"token_by_index\",\n \"inputs\": [\n {\n \"name\": \"index\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"token_of_owner_by_index\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"index\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"constructor\",\n \"name\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::erc721::ERC721Component::Transfer\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::erc721::ERC721Component::Approval\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::erc721::ERC721Component::ApprovalForAll\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::erc721::ERC721Component::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Transfer\",\n \"type\": \"openzeppelin_token::erc721::erc721::ERC721Component::Transfer\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"Approval\",\n \"type\": \"openzeppelin_token::erc721::erc721::ERC721Component::Approval\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"ApprovalForAll\",\n \"type\": \"openzeppelin_token::erc721::erc721::ERC721Component::ApprovalForAll\",\n \"kind\": \"nested\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferred\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"previous_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferStarted\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"previous_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"OwnershipTransferred\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferred\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"OwnershipTransferStarted\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferStarted\",\n \"kind\": \"nested\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::extensions::erc721_enumerable::erc721_enumerable::ERC721EnumerableComponent::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"mip::mip::MIP::CounterComponent::CounterIncremented\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"mip::mip::MIP::CounterComponent::CounterDecremented\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"mip::mip::MIP::CounterComponent::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"CounterIncremented\",\n \"type\": \"mip::mip::MIP::CounterComponent::CounterIncremented\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"CounterDecremented\",\n \"type\": \"mip::mip::MIP::CounterComponent::CounterDecremented\",\n \"kind\": \"nested\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"mip::mip::MIP::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"ERC721Event\",\n \"type\": \"openzeppelin_token::erc721::erc721::ERC721Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"OwnableEvent\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"SRC5Event\",\n \"type\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"ERC721EnumerableEvent\",\n \"type\": \"openzeppelin_token::erc721::extensions::erc721_enumerable::erc721_enumerable::ERC721EnumerableComponent::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"CounterEvent\",\n \"type\": \"mip::mip::MIP::CounterComponent::Event\",\n \"kind\": \"flat\"\n }\n ]\n }\n] as const;\n","import { newContract } from \"../marketplace/utils.js\";\nimport { type AccountInterface } from \"starknet\";\nimport type { ResolvedConfig } from \"../../config.js\";\nimport { normalizeAddress } from \"../../utils/address.js\";\nimport { POPCollectionABI, POPFactoryABI } from \"../abis/index.js\";\nimport { getStarknetCoordinates } from \"../../chains.js\";\nimport type { CreatePopCollectionParams } from \"../../types/services.js\";\nimport type { TxResult } from \"../../types/marketplace.js\";\n\nexport type { CreatePopCollectionParams };\n\nexport class PopService {\n private readonly factoryAddress: string;\n\n constructor(config: ResolvedConfig) {\n this.factoryAddress = getStarknetCoordinates(config.chain).popFactory!;\n }\n\n private _collection(address: string, account: AccountInterface) {\n return newContract(POPCollectionABI as any, normalizeAddress(\"STARKNET\",address), account as any);\n }\n\n async claim(account: AccountInterface, collectionAddress: string): Promise<TxResult> {\n const call = this._collection(collectionAddress, account).populate(\"claim\", []);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n async adminMint(\n account: AccountInterface,\n params: { collection: string; recipient: string; customUri?: string }\n ): Promise<TxResult> {\n const call = this._collection(params.collection, account).populate(\"admin_mint\", [\n params.recipient,\n params.customUri ?? \"\",\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n async addToAllowlist(\n account: AccountInterface,\n params: { collection: string; address: string }\n ): Promise<TxResult> {\n const call = this._collection(params.collection, account).populate(\"add_to_allowlist\", [params.address]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n async batchAddToAllowlist(\n account: AccountInterface,\n params: { collection: string; addresses: string[] }\n ): Promise<TxResult> {\n const collection = this._collection(params.collection, account);\n const CHUNK = 200;\n const calls = [];\n for (let i = 0; i < params.addresses.length; i += CHUNK) {\n calls.push(collection.populate(\"batch_add_to_allowlist\", [params.addresses.slice(i, i + CHUNK)]));\n }\n const res = await account.execute(calls);\n return { txHash: res.transaction_hash };\n }\n\n async removeFromAllowlist(\n account: AccountInterface,\n params: { collection: string; address: string }\n ): Promise<TxResult> {\n const call = this._collection(params.collection, account).populate(\"remove_from_allowlist\", [params.address]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n async setTokenUri(\n account: AccountInterface,\n params: { collection: string; tokenId: string | bigint; uri: string }\n ): Promise<TxResult> {\n const call = this._collection(params.collection, account).populate(\"set_token_uri\", [\n BigInt(params.tokenId),\n params.uri,\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n async setPaused(\n account: AccountInterface,\n params: { collection: string; paused: boolean }\n ): Promise<TxResult> {\n const call = this._collection(params.collection, account).populate(\"set_paused\", [params.paused]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n async createCollection(\n account: AccountInterface,\n params: CreatePopCollectionParams\n ): Promise<TxResult> {\n const factory = newContract(POPFactoryABI as any, this.factoryAddress, account as any);\n const call = factory.populate(\"create_collection\", [\n params.name,\n params.symbol,\n params.baseUri,\n params.claimEndTime,\n { [params.eventType]: {} },\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n}\n","import { cairo, type Call } from \"starknet\";\nimport type { ResolvedFeeConfig } from \"../../fee/config.js\";\n\nexport type FeeSurface = \"marketplace\" | \"launchpad\";\n\nexport interface BuildFeeCallParams {\n surface: FeeSurface;\n /** ERC-20 address the gross amount is denominated in. */\n token: string;\n /** Gross amount in raw token units (e.g. price in wei, or price * quantity). */\n grossAmount: bigint;\n}\n\n/**\n * The single source of truth for the platform fee. Returns one ERC-20\n * `transfer(fundAddress, feeAmount)` Call to bundle into the settlement\n * multicall, or `null` when no fee should be charged.\n *\n * Fail-safe: returns null if disabled, no fund address, or the fee floors to 0.\n */\nexport function buildFeeCall(\n p: BuildFeeCallParams,\n cfg: ResolvedFeeConfig\n): Call | null {\n if (!cfg.enabled || !cfg.fundAddress) return null;\n const bps = p.surface === \"marketplace\" ? cfg.marketplaceBps : cfg.launchpadBps;\n if (bps <= 0) return null;\n const fee = (p.grossAmount * BigInt(bps)) / 10000n;\n if (fee <= 0n) return null;\n const u = cairo.uint256(fee.toString());\n return {\n contractAddress: p.token,\n entrypoint: \"transfer\",\n calldata: [cfg.fundAddress, u.low.toString(), u.high.toString()],\n };\n}\n","import { newContract } from \"../marketplace/utils.js\";\nimport { type AccountInterface } from \"starknet\";\nimport type { ResolvedConfig } from \"../../config.js\";\nimport { normalizeAddress } from \"../../utils/address.js\";\nimport { DropCollectionABI, DropFactoryABI } from \"../abis/index.js\";\nimport { getStarknetCoordinates } from \"../../chains.js\";\nimport type { ClaimConditions, CreateDropParams } from \"../../types/services.js\";\nimport type { TxResult } from \"../../types/marketplace.js\";\nimport { buildFeeCall } from \"../fee/index.js\";\n\nexport type { ClaimConditions, CreateDropParams };\n\nfunction toContractConditions(c: ClaimConditions) {\n return {\n start_time: c.startTime,\n end_time: c.endTime,\n price: BigInt(c.price),\n payment_token: c.paymentToken,\n max_quantity_per_wallet: BigInt(c.maxQuantityPerWallet),\n };\n}\n\nexport class DropService {\n private readonly factoryAddress: string;\n private readonly config: ResolvedConfig;\n\n constructor(config: ResolvedConfig) {\n this.factoryAddress = getStarknetCoordinates(config.chain).dropFactory!;\n this.config = config;\n }\n\n private _collection(address: string, account: AccountInterface) {\n return newContract(DropCollectionABI as any, normalizeAddress(\"STARKNET\",address), account as any);\n }\n\n async claim(\n account: AccountInterface,\n collectionAddress: string,\n quantity: bigint | string | number = 1\n ): Promise<TxResult> {\n const collection = this._collection(collectionAddress, account);\n const qty = BigInt(quantity);\n const claimCall = collection.populate(\"claim\", [qty]);\n\n // get_claim_conditions() → { price (u256), payment_token, ... }\n const conditions = (await collection.get_claim_conditions()) as {\n price: bigint;\n payment_token: bigint | string;\n };\n const price = BigInt(conditions.price);\n const paymentToken =\n typeof conditions.payment_token === \"bigint\"\n ? \"0x\" + conditions.payment_token.toString(16)\n : conditions.payment_token;\n\n const feeCall =\n price > 0n\n ? buildFeeCall(\n { surface: \"launchpad\", token: paymentToken, grossAmount: price * qty },\n this.config.feeConfig\n )\n : null;\n\n const calls = feeCall ? [claimCall, feeCall] : [claimCall];\n const res = await account.execute(calls);\n return { txHash: res.transaction_hash };\n }\n\n async adminMint(\n account: AccountInterface,\n params: { collection: string; recipient: string; quantity?: bigint | string | number; customUri?: string }\n ): Promise<TxResult> {\n const call = this._collection(params.collection, account).populate(\"admin_mint\", [\n params.recipient,\n BigInt(params.quantity ?? 1),\n params.customUri ?? \"\",\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n async setClaimConditions(\n account: AccountInterface,\n params: { collection: string; conditions: ClaimConditions }\n ): Promise<TxResult> {\n const call = this._collection(params.collection, account).populate(\"set_claim_conditions\", [\n toContractConditions(params.conditions),\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n async setAllowlistEnabled(\n account: AccountInterface,\n params: { collection: string; enabled: boolean }\n ): Promise<TxResult> {\n const call = this._collection(params.collection, account).populate(\"set_allowlist_enabled\", [params.enabled]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n async addToAllowlist(\n account: AccountInterface,\n params: { collection: string; address: string }\n ): Promise<TxResult> {\n const call = this._collection(params.collection, account).populate(\"add_to_allowlist\", [params.address]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n async batchAddToAllowlist(\n account: AccountInterface,\n params: { collection: string; addresses: string[] }\n ): Promise<TxResult> {\n const collection = this._collection(params.collection, account);\n const CHUNK = 200;\n const calls = [];\n for (let i = 0; i < params.addresses.length; i += CHUNK) {\n calls.push(collection.populate(\"batch_add_to_allowlist\", [params.addresses.slice(i, i + CHUNK)]));\n }\n const res = await account.execute(calls);\n return { txHash: res.transaction_hash };\n }\n\n async setPaused(\n account: AccountInterface,\n params: { collection: string; paused: boolean }\n ): Promise<TxResult> {\n const call = this._collection(params.collection, account).populate(\"set_paused\", [params.paused]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n async withdrawPayments(\n account: AccountInterface,\n params: { collection: string }\n ): Promise<TxResult> {\n const call = this._collection(params.collection, account).populate(\"withdraw_payments\", []);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n async createDrop(account: AccountInterface, params: CreateDropParams): Promise<TxResult> {\n const factory = newContract(DropFactoryABI as any, this.factoryAddress, account as any);\n const call = factory.populate(\"create_drop\", [\n params.name,\n params.symbol,\n params.baseUri,\n BigInt(params.maxSupply),\n toContractConditions(params.initialConditions),\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n}\n","import { newContract } from \"../marketplace/utils.js\";\nimport { type AccountInterface } from \"starknet\";\nimport type { ResolvedConfig } from \"../../config.js\";\nimport { normalizeAddress } from \"../../utils/address.js\";\nimport { IPCollection1155FactoryABI, IPCollection1155ABI } from \"../abis/index.js\";\nimport { getStarknetCoordinates } from \"../../chains.js\";\nimport type { TxResult } from \"../../types/marketplace.js\";\n\nexport interface DeployCollectionParams {\n /** Human-readable collection name (e.g. \"My IP Collection\") */\n name: string;\n /** Short ticker symbol (e.g. \"MIP\") */\n symbol: string;\n /**\n * Collection-level metadata URI (e.g. \"ipfs://Qm…/collection.json\").\n * Should point to a JSON containing `name`, `description`, `image`, and `external_link`.\n * Stored on-chain at deploy time. Pass an empty string if not available.\n */\n baseUri: string;\n}\n\nexport interface MintEditionParams {\n /** ERC-1155 collection contract address */\n collection: string;\n /** Recipient wallet address */\n to: string;\n /** Number of copies of this new edition to mint */\n value: bigint | string;\n /**\n * Metadata URI — must start with `ipfs://` or `ar://`.\n * Immutable: validated and stored at mint. The token id is assigned on-chain\n * (sequential from 1); read it from the `IPMinted` event of the returned tx.\n */\n tokenUri: string;\n}\n\nexport interface BatchMintEditionParams {\n /** ERC-1155 collection contract address */\n collection: string;\n /** Recipient wallet address */\n to: string;\n /** New editions to create; ids are assigned sequentially on-chain. */\n items: Array<{\n value: bigint | string;\n tokenUri: string;\n }>;\n}\n\nexport interface AddSupplyParams {\n /** ERC-1155 collection contract address */\n collection: string;\n /** Recipient wallet address */\n to: string;\n /** Existing edition id to mint more copies of (reverts if it doesn't exist) */\n tokenId: bigint | string;\n /** Number of additional copies */\n value: bigint | string;\n}\n\nexport class ERC1155CollectionService {\n private readonly factoryAddress: string;\n\n constructor(config: ResolvedConfig) {\n this.factoryAddress = config.collection1155Contract ?? getStarknetCoordinates(config.chain).collection1155!;\n }\n\n private _factory(account: AccountInterface) {\n return newContract(\n IPCollection1155FactoryABI as any,\n normalizeAddress(\"STARKNET\",this.factoryAddress),\n account as any\n );\n }\n\n private _collection(address: string, account: AccountInterface) {\n return newContract(\n IPCollection1155ABI as any,\n normalizeAddress(\"STARKNET\",address),\n account as any\n );\n }\n\n /**\n * Deploy a new ERC-1155 IP collection.\n * Caller becomes the collection owner and can mint items.\n * Returns the transaction hash; the deployed collection address is emitted\n * in the `CollectionDeployed` event of the factory.\n */\n async deployCollection(\n account: AccountInterface,\n params: DeployCollectionParams\n ): Promise<TxResult> {\n const factory = this._factory(account);\n const call = factory.populate(\"deploy_collection\", [params.name, params.symbol, params.baseUri]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /**\n * Mint a new edition into an existing ERC-1155 collection.\n * Caller must be the collection owner. The token id is assigned on-chain\n * (sequential from 1) — read it from the `IPMinted` event of the returned tx.\n * The `tokenUri` is immutable.\n */\n async mintEdition(\n account: AccountInterface,\n params: MintEditionParams\n ): Promise<TxResult> {\n const collection = this._collection(params.collection, account);\n const call = collection.populate(\"mint_edition\", [\n params.to,\n BigInt(params.value),\n params.tokenUri,\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /**\n * Batch-mint multiple new editions into an existing ERC-1155 collection.\n * All editions go to the same `to` address; ids are assigned sequentially\n * on-chain. Caller must be the collection owner.\n */\n async batchMintEdition(\n account: AccountInterface,\n params: BatchMintEditionParams\n ): Promise<TxResult> {\n const collection = this._collection(params.collection, account);\n const values = params.items.map((i) => BigInt(i.value));\n const tokenUris = params.items.map((i) => i.tokenUri);\n const call = collection.populate(\"batch_mint_edition\", [\n params.to,\n values,\n tokenUris,\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /**\n * Mint additional copies of an EXISTING edition into an ERC-1155 collection.\n * Reverts on-chain if `tokenId` has never been minted. Provenance/URI unchanged.\n * Caller must be the collection owner.\n */\n async addSupply(\n account: AccountInterface,\n params: AddSupplyParams\n ): Promise<TxResult> {\n const collection = this._collection(params.collection, account);\n const call = collection.populate(\"add_supply\", [\n params.to,\n BigInt(params.tokenId),\n BigInt(params.value),\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /**\n * Set the default ERC-2981 royalty for the entire collection.\n * `feeNumerator` is out of 10 000 (e.g. 500 = 5%).\n * Caller must be the collection owner.\n */\n async setDefaultRoyalty(\n account: AccountInterface,\n params: { collection: string; receiver: string; feeNumerator: number }\n ): Promise<TxResult> {\n const collection = this._collection(params.collection, account);\n const call = collection.populate(\"set_default_royalty\", [\n params.receiver,\n BigInt(params.feeNumerator),\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /**\n * Set a per-token ERC-2981 royalty override.\n * `feeNumerator` is out of 10 000. Caller must be the collection owner.\n */\n async setTokenRoyalty(\n account: AccountInterface,\n params: { collection: string; tokenId: bigint | string; receiver: string; feeNumerator: number }\n ): Promise<TxResult> {\n const collection = this._collection(params.collection, account);\n const call = collection.populate(\"set_token_royalty\", [\n BigInt(params.tokenId),\n params.receiver,\n BigInt(params.feeNumerator),\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /**\n * Approve the Medialane1155 marketplace (or any operator) to transfer\n * all tokens on behalf of `account`. Required before listing.\n */\n async setApprovalForAll(\n account: AccountInterface,\n params: { collection: string; operator: string; approved: boolean }\n ): Promise<TxResult> {\n const collection = this._collection(params.collection, account);\n const call = collection.populate(\"set_approval_for_all\", [\n params.operator,\n params.approved,\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n}\n","import { SUPPORTED_TOKENS } from \"../constants.js\";\n\nexport type SupportedToken = (typeof SUPPORTED_TOKENS)[number];\n\n/**\n * Parse a human-readable amount (e.g. \"1.5\") to its raw integer string\n * representation given the token's decimal places.\n * Uses pure BigInt arithmetic to avoid floating point precision loss.\n */\nexport function parseAmount(human: string, decimals: number): string {\n const [whole, frac = \"\"] = human.split(\".\");\n const fracPadded = frac.padEnd(decimals, \"0\").slice(0, decimals);\n return (BigInt(whole) * BigInt(10) ** BigInt(decimals) + BigInt(fracPadded)).toString();\n}\n\n/**\n * Format a raw integer string (e.g. \"1500000\") to a human-readable decimal\n * string given the token's decimal places.\n */\nexport function formatAmount(raw: string, decimals: number): string {\n const value = BigInt(raw);\n const factor = 10n ** BigInt(decimals);\n const whole = value / factor;\n const remainder = value % factor;\n const fractional = remainder.toString().padStart(decimals, \"0\");\n return `${whole}.${fractional}`;\n}\n\n/**\n * Find a supported token by its contract address.\n *\n * Compares by numeric felt value so a caller-supplied address that isn't\n * zero-padded to 64 hex chars (`0x33068f6…`) still matches the stored padded\n * form (`0x033068f6…`) — a bare `.toLowerCase()` string compare would miss it,\n * the exact padding trap the address invariant warns against. Non-hex inputs\n * fall back to a case-insensitive string compare.\n */\nexport function getTokenByAddress(address: string): SupportedToken | undefined {\n let target: bigint | null = null;\n try {\n target = BigInt(address);\n } catch {\n target = null;\n }\n return SUPPORTED_TOKENS.find((t) => {\n if (target !== null) {\n try {\n return BigInt(t.address) === target;\n } catch {\n /* stored address not hex — fall through to string compare */\n }\n }\n return t.address.toLowerCase() === address.toLowerCase();\n });\n}\n\n/**\n * Find a supported token by its symbol (case-insensitive).\n */\nexport function getTokenBySymbol(symbol: string): SupportedToken | undefined {\n const upper = symbol.toUpperCase();\n return SUPPORTED_TOKENS.find((t) => t.symbol === upper);\n}\n\n/**\n * Return all tokens available for use in listing and offer dialogs.\n * Tokens with listable: false appear only as marketplace filter chips.\n */\nexport function getListableTokens(): ReadonlyArray<SupportedToken> {\n return SUPPORTED_TOKENS.filter((t) => t.listable);\n}\n","/** App-layer guards + math for the Creator Coin launch flow.\n * Price is the fixed, smoke-validated 0.01 quote/coin (VALIDATED_EKUBO_PARAMS);\n * supply is the lever. Coins are always 18-decimal. v1 quote tokens are 18-dec. */\n\nexport const COIN_DECIMALS = 18;\nexport const LAUNCH_PRICE_QUOTE_PER_COIN = 0.01; // fixed; matches VALIDATED_EKUBO_PARAMS\nexport const MIN_SUPPLY = 1_000n;\nexport const MAX_SUPPLY = 1_000_000_000_000n; // 1e12 (audit M-3 ceiling)\nexport const MAX_FELT_BYTES = 31; // felt252 short string\n\nfunction byteLen(s: string): number {\n return new TextEncoder().encode(s).length;\n}\n\nexport function validateName(s: string): string | null {\n if (!s.trim()) return \"Name is required\";\n if (byteLen(s) > MAX_FELT_BYTES) return `Name must be at most ${MAX_FELT_BYTES} bytes`;\n return null;\n}\n\nexport function validateSymbol(s: string): string | null {\n if (!s.trim()) return \"Symbol is required\";\n if (byteLen(s) > MAX_FELT_BYTES) return `Symbol must be at most ${MAX_FELT_BYTES} bytes`;\n return null;\n}\n\nexport function validateSupply(human: string): string | null {\n if (!/^\\d+$/.test(human.trim())) return \"Supply must be a whole number\";\n const v = BigInt(human.trim());\n if (v < MIN_SUPPLY) return `Supply must be at least ${MIN_SUPPLY.toString()}`;\n if (v > MAX_SUPPLY) return `Supply must be at most ${MAX_SUPPLY.toString()}`;\n return null;\n}\n\n/** Human integer → raw base units (default 18-dec coin). */\nexport function toRaw(human: bigint, decimals = COIN_DECIMALS): bigint {\n return human * 10n ** BigInt(decimals);\n}\n\n/** Team allocation in raw coin units. `pct` is whole-percent 0–10. */\nexport function teamCoinsRaw(supplyRaw: bigint, pct: number): bigint {\n const bps = BigInt(Math.round(pct * 100)); // 5% -> 500 bps\n return (supplyRaw * bps) / 10_000n;\n}\n\n/** Quote (raw) needed to buy the team allocation back out of the pool:\n * teamCoins(human) × 0.01, in the quote token's raw units.\n * = teamCoinsRaw × 10^quoteDecimals / (100 × 10^18). For 18-dec quote → /100. */\nexport function buybackQuoteRaw(teamCoinsRawValue: bigint, quoteDecimals: number): bigint {\n return (teamCoinsRawValue * 10n ** BigInt(quoteDecimals)) / (100n * 10n ** BigInt(COIN_DECIMALS));\n}\n\n/** Fully-diluted value (human, in quote) for the live preview. */\nexport function fdvHuman(supplyHuman: number): number {\n return supplyHuman * LAUNCH_PRICE_QUOTE_PER_COIN;\n}\n","import { newContract } from \"../marketplace/utils.js\";\nimport { RpcProvider, hash, uint256, type AccountInterface, type Call, type Contract, type ProviderInterface } from \"starknet\";\nimport type { ResolvedConfig } from \"../../config.js\";\nimport { CreatorCoinFactoryABI } from \"../abis/index.js\";\nimport { getStarknetCoordinates } from \"../../chains.js\";\nimport { getTokenByAddress } from \"../../utils/token.js\";\nimport { normalizeAddress } from \"../../utils/address.js\";\nimport type { TxResult } from \"../../types/marketplace.js\";\nimport { LAUNCH_PRICE_QUOTE_PER_COIN } from \"./coinLaunchMath.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\nconst TICK_BASE = 1.000001; // Ekubo's tick base (NOT Uniswap's 1.0001) — docs.ekubo.org/integration-guides/reference/math-1-pager\n\n/**\n * Compute the Ekubo `EkuboPoolParams` for launching a coin at `price`\n * (default: the fixed 0.01 quote/coin every launch already uses) against a\n * quote token of any decimals — not just the 18-decimal case\n * `VALIDATED_EKUBO_PARAMS` was smoke-tested for.\n *\n * No address/ordering parameters: the contract itself determines\n * `is_token1_quote` on-chain (`launcher.cairo`) and flips the tick's SIGN\n * accordingly — magnitude never changes with ordering. This function\n * always computes the tick as if quote were token1; the contract\n * compensates sign itself if that assumption doesn't hold for the real\n * deployed addresses (this is exactly what \"sign: true yields 0.01\n * quote/coin regardless of token0/1 ordering\" already meant).\n *\n * `fee`/`tickSpacing`/`bound` are decimal-independent (bound is a pure\n * tick-count offset, not a price) and reused from `VALIDATED_EKUBO_PARAMS`\n * as-is. Only `startingPrice` is computed:\n * decAdj = 10^(coinDecimals − quoteDecimals)\n * rawRatio = price / decAdj\n * tick = trunc(log(rawRatio) / log(1.000001) / tickSpacing) × tickSpacing\n * (rounds toward zero, not nearest — confirmed against the\n * known-good on-chain constant, which is 769×tickSpacing,\n * not the nearer 770×tickSpacing)\n * sign = tick < 0\n *\n * Cross-verified against the real on-chain constant: for an 18-decimal\n * quote this reproduces `VALIDATED_EKUBO_PARAMS.startingPrice` exactly\n * (mag 4600158 = 769 × tickSpacing 5982).\n */\nexport function priceToEkuboParams(\n quoteDecimals: number,\n price: number = LAUNCH_PRICE_QUOTE_PER_COIN,\n): EkuboPoolParams {\n const decAdj = 10 ** (COIN_DECIMALS - quoteDecimals);\n const rawRatio = price / decAdj;\n\n const tickSpacing = Number(VALIDATED_EKUBO_PARAMS.tickSpacing);\n const rawTick = Math.log(rawRatio) / Math.log(TICK_BASE);\n const roundedTick = Math.trunc(rawTick / tickSpacing) * tickSpacing;\n\n return {\n fee: VALIDATED_EKUBO_PARAMS.fee,\n tickSpacing: VALIDATED_EKUBO_PARAMS.tickSpacing,\n startingPrice: { mag: BigInt(Math.abs(roundedTick)), sign: roundedTick < 0 },\n bound: VALIDATED_EKUBO_PARAMS.bound,\n };\n}\n\n/** A Creator Coin's live spot price, read from its Ekubo pool. */\nexport interface CreatorCoinPrice {\n /** Quote tokens per 1 coin, human units (e.g. 0.0101 = 0.0101 STRK/coin). */\n quotePerCoin: number;\n /** The quote token the coin is paired against on Ekubo. */\n quoteToken: string;\n quoteSymbol: string | null;\n quoteDecimals: number;\n}\n\nconst COIN_DECIMALS = 18; // CreatorCoin is always 18 decimals\n\n/**\n * Read a Creator Coin's live spot price directly from its Ekubo pool (read-only).\n *\n * Self-contained: discovers the pool params (quote token, fee, tick spacing) from the\n * coin's own `launched_with_liquidity_parameters`, reads `Core.get_pool_price`, and\n * converts the `sqrt_ratio` to quote-per-coin (handling token0/1 ordering + decimals).\n * Returns `null` if the coin isn't launched on Ekubo. No backend, no swap-quote\n * dependency — works for day-one coins that AVNU doesn't index yet.\n */\nexport async function getCreatorCoinPrice(\n coinAddress: string,\n provider: ProviderInterface,\n): Promise<CreatorCoinPrice | null> {\n // Option<LiquidityParameters::Ekubo({ ekubo_pool_parameters:{fee,tick_spacing,\n // starting_price(mag,sign),bound}, quote_address })>\n // felts: [opt(0=Some), variant(0=Ekubo), fee, tick_spacing, sp_mag, sp_sign, bound, quote]\n const r = await provider.callContract({\n contractAddress: coinAddress,\n entrypoint: \"launched_with_liquidity_parameters\",\n calldata: [],\n });\n if (BigInt(r[0]) !== 0n || BigInt(r[1]) !== 0n) return null; // not launched, or not Ekubo\n const fee = r[2];\n const tickSpacing = r[3];\n // Zero-pad to 64 hex so it matches SUPPORTED_TOKENS (the RPC returns it unpadded).\n const quoteToken = normalizeAddress(\"STARKNET\",\"0x\" + BigInt(r[7]).toString(16));\n const token = getTokenByAddress(quoteToken);\n const quoteDecimals = token?.decimals ?? 18;\n\n const ci = BigInt(coinAddress);\n const qi = BigInt(quoteToken);\n const [t0, t1] = ci < qi ? [coinAddress, quoteToken] : [quoteToken, coinAddress];\n const quoteIsToken0 = qi === BigInt(t0);\n\n // Core.get_pool_price(PoolKey{token0,token1,fee,tick_spacing,extension}) -> PoolPrice{sqrt_ratio:u256, tick:i129}\n const pp = await provider.callContract({\n contractAddress: getStarknetCoordinates(\"STARKNET\").ekuboCore!,\n entrypoint: \"get_pool_price\",\n calldata: [t0, t1, fee, tickSpacing, \"0x0\"],\n });\n const sqrt = BigInt(pp[0]) + (BigInt(pp[1] ?? \"0x0\") << 128n);\n // price(token1/token0) = (sqrt_ratio / 2^128)^2, raw units; coin is 18 decimals.\n const priceT1perT0 = (Number(sqrt) / 2 ** 128) ** 2;\n const decAdj = 10 ** (COIN_DECIMALS - quoteDecimals);\n const quotePerCoin = (quoteIsToken0 ? 1 / priceT1perT0 : priceT1perT0) * decAdj;\n\n return { quotePerCoin, quoteToken, quoteSymbol: token?.symbol ?? null, quoteDecimals };\n}\n\n// ── Account-free call builders ───────────────────────────────────────────────\n// Apps that execute through their own pipeline (io's ChipiPay atomic chokepoint,\n// paymaster flows) need the calls, not an executor. The service methods below\n// build on these — one calldata source for every app.\n\n// Lazy — constructing at module scope breaks the \"no side effects at import\n// time\" convention and crashes CJS-interop consumers whose ABI barrel hasn't\n// evaluated yet (dapp webpack build, 2026-06-10).\nlet _factoryContract: Contract | null = null;\nfunction factoryContract(): Contract {\n if (!_factoryContract) {\n _factoryContract = newContract(\n CreatorCoinFactoryABI as any,\n getStarknetCoordinates(\"STARKNET\").creatorCoinFactory!,\n );\n }\n return _factoryContract;\n}\n\n/** Build the `create_creator_coin` call (full supply minted to the Factory). */\nexport function buildCreateCreatorCoinCall(params: CreateCreatorCoinParams): Call {\n const salt = params.salt ?? BigInt(\"0x\" + Date.now().toString(16));\n return factoryContract().populate(\"create_creator_coin\", [\n params.owner,\n params.name,\n params.symbol,\n BigInt(params.initialSupply),\n BigInt(salt),\n ]);\n}\n\n/**\n * Build the Ekubo launch multicall: optional quote `transfer` (pre-funds the\n * Factory for the team-allocation buyback) + `launch_on_ekubo`.\n */\nexport function buildLaunchOnEkuboCalls(params: EkuboLaunchParams): Call[] {\n const ek = params.ekubo ?? VALIDATED_EKUBO_PARAMS;\n\n const launchParameters = {\n creator_coin_address: params.creatorCoin,\n transfer_restriction_delay: params.transferRestrictionDelay ?? 0,\n max_percentage_buy_launch: params.maxPercentageBuyLaunch ?? 200,\n quote_address: params.quoteToken,\n initial_holders: params.initialHolders,\n initial_holders_amounts: params.initialHoldersAmounts.map((a) => BigInt(a)),\n };\n const ekuboParameters = {\n fee: BigInt(ek.fee),\n tick_spacing: BigInt(ek.tickSpacing),\n starting_price: { mag: BigInt(ek.startingPrice.mag), sign: ek.startingPrice.sign },\n bound: BigInt(ek.bound),\n };\n\n const calls: Call[] = [];\n if (params.quoteFundAmount !== undefined) {\n const amt = uint256.bnToUint256(BigInt(params.quoteFundAmount));\n calls.push({\n contractAddress: params.quoteToken,\n entrypoint: \"transfer\",\n calldata: [getStarknetCoordinates(\"STARKNET\").creatorCoinFactory!, amt.low, amt.high],\n });\n }\n calls.push(factoryContract().populate(\"launch_on_ekubo\", [launchParameters, ekuboParameters]));\n return calls;\n}\n\n/** Minimal receipt shape — works with any starknet.js receipt version. */\nexport interface CreatorCoinReceiptLike {\n events?: Array<{ from_address?: string; keys?: string[]; data?: string[] }>;\n}\n\nconst CREATOR_COIN_CREATED_SELECTOR = hash.getSelectorFromName(\"CreatorCoinCreated\");\n\n/**\n * Pull the deployed coin address from a `create_creator_coin` tx receipt.\n * Event data = [owner, name, symbol, supply_low, supply_high, coin_address].\n * Throws when the receipt carries no matching Factory event.\n */\nexport function parseCreatorCoinCreated(receipt: CreatorCoinReceiptLike): string {\n const factory = normalizeAddress(\"STARKNET\",getStarknetCoordinates(\"STARKNET\").creatorCoinFactory!);\n for (const ev of receipt?.events ?? []) {\n let from: string;\n try {\n from = normalizeAddress(\"STARKNET\",ev.from_address ?? \"\");\n } catch {\n continue;\n }\n if (from !== factory) continue;\n const k0 = ev.keys?.[0];\n if (!k0 || normalizeAddress(\"STARKNET\",k0) !== normalizeAddress(\"STARKNET\",CREATOR_COIN_CREATED_SELECTOR)) continue;\n const data = ev.data ?? [];\n if (data.length < 1) continue;\n return normalizeAddress(\"STARKNET\",data[data.length - 1]); // coin_address is last\n }\n throw new Error(\"Coin deployed but the coin address could not be read from the receipt\");\n}\n\n/**\n * On-chain Creator Coin interactions (Ekubo-only launchpad).\n * Faithful fork of unruggable.meme — permanent LP lock + team-allocation buyback.\n */\nexport class CreatorCoinService {\n private readonly factoryAddress: string;\n private readonly config: ResolvedConfig;\n\n constructor(config: ResolvedConfig) {\n this.factoryAddress = getStarknetCoordinates(config.chain).creatorCoinFactory!;\n this.config = config;\n }\n\n private _factory(account: AccountInterface) {\n return newContract(CreatorCoinFactoryABI as any, this.factoryAddress, account as any);\n }\n\n /** Deploy a fixed-supply CreatorCoin (full supply minted to the Factory). */\n async createCreatorCoin(\n account: AccountInterface,\n params: CreateCreatorCoinParams\n ): Promise<TxResult> {\n const res = await account.execute([buildCreateCreatorCoinCall(params)]);\n return { txHash: res.transaction_hash };\n }\n\n /**\n * Launch a coin on Ekubo (owner-only). Optionally pre-funds the Factory with\n * quote (for the buyback) in the same multicall. Liquidity is permanently\n * locked in the EkuboLauncher.\n */\n async launchOnEkubo(account: AccountInterface, params: EkuboLaunchParams): Promise<TxResult> {\n const res = await account.execute(buildLaunchOnEkuboCalls(params));\n return { txHash: res.transaction_hash };\n }\n\n /** View: is this address a Factory-deployed Creator Coin? */\n async isCreatorCoin(address: string, account: AccountInterface): Promise<boolean> {\n const r = await this._factory(account).is_creator_coin(address);\n return BigInt(r as any) === 1n;\n }\n\n /** Read a coin's live Ekubo spot price (quote-per-coin) via the configured RPC.\n * Read-only; returns null if the coin isn't launched on Ekubo. */\n async getPrice(coinAddress: string): Promise<CreatorCoinPrice | null> {\n return getCreatorCoinPrice(coinAddress, new RpcProvider({ nodeUrl: this.config.rpcUrl }));\n }\n}\n","import { newContract } from \"../marketplace/utils.js\";\nimport { CairoOption, CairoOptionVariant, RpcProvider, cairo, type AccountInterface } from \"starknet\";\nimport type { ResolvedConfig } from \"../../config.js\";\nimport { normalizeAddress } from \"../../utils/address.js\";\nimport { IPTicketCollectionABI, IPTicketCollectionFactoryABI } from \"../abis/index.js\";\nimport { getStarknetCoordinates } from \"../../chains.js\";\nimport type { CreateTicketParams, MintTicketsParams } from \"../../types/services.js\";\nimport type { TxResult } from \"../../types/marketplace.js\";\n\nexport type { CreateTicketParams, MintTicketsParams };\n\nexport interface TicketRecord {\n maxSupply: bigint;\n minted: bigint;\n startTime: number | null;\n endTime: number | null;\n royaltyBps: number;\n metadataUri: string;\n}\n\nexport class TicketService {\n private readonly factoryAddress?: string;\n private readonly config: ResolvedConfig;\n\n constructor(config: ResolvedConfig) {\n this.config = config;\n this.factoryAddress = getStarknetCoordinates(config.chain).ipTicketsFactory;\n }\n\n private _factory(account: AccountInterface, factoryAddress?: string) {\n const address = factoryAddress ?? this.factoryAddress;\n if (!address) throw new Error(\"IP-Tickets factory address not configured for this chain\");\n return newContract(IPTicketCollectionFactoryABI as any, normalizeAddress(\"STARKNET\", address), account as any);\n }\n\n private _collection(address: string, account: AccountInterface) {\n return newContract(IPTicketCollectionABI as any, normalizeAddress(\"STARKNET\", address), account as any);\n }\n\n private _collectionRead(address: string) {\n const provider = new RpcProvider({ nodeUrl: this.config.rpcUrl });\n return newContract(IPTicketCollectionABI as any, normalizeAddress(\"STARKNET\", address), provider);\n }\n\n /**\n * Deploys a new IPTicketCollection via the factory. Caller becomes owner.\n * `baseUri` is the collection-level metadata URI, embedded on-chain in the\n * deploy transaction.\n */\n async deployCollection(\n account: AccountInterface,\n params: { name: string; symbol: string; baseUri: string; factoryAddress?: string }\n ): Promise<TxResult> {\n const call = this._factory(account, params.factoryAddress).populate(\"deploy_collection\", [\n params.name,\n params.symbol,\n params.baseUri,\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /** Owner-only. Creates a new ticket inside the caller's deployed collection. */\n async createTicket(account: AccountInterface, params: CreateTicketParams): Promise<TxResult> {\n const startTime = params.startTime != null\n ? new CairoOption(CairoOptionVariant.Some, params.startTime)\n : new CairoOption(CairoOptionVariant.None);\n const endTime = params.endTime != null\n ? new CairoOption(CairoOptionVariant.Some, params.endTime)\n : new CairoOption(CairoOptionVariant.None);\n const call = this._collection(params.collection, account).populate(\"create_ticket\", [\n cairo.uint256(params.maxSupply),\n startTime,\n endTime,\n params.royaltyBps,\n params.metadataUri,\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /** Owner-only. Mints `amount` of `tokenId` to `to`. */\n async mint(account: AccountInterface, params: MintTicketsParams): Promise<TxResult> {\n const call = this._collection(params.collection, account).populate(\"mint\", [\n params.to,\n cairo.uint256(params.tokenId),\n cairo.uint256(params.amount),\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /** Read — true if holder has balance > 0 and current time is within the ticket window. */\n async isValid(params: { collection: string; tokenId: bigint | string; holder: string }): Promise<boolean> {\n const result = await this._collectionRead(params.collection).call(\"is_valid\", [\n cairo.uint256(params.tokenId),\n params.holder,\n ]);\n return Boolean(result);\n }\n\n /** Read — number of tickets created so far (ids are sequential from 1). */\n async getTicketCount(params: { collection: string }): Promise<bigint> {\n const result = await this._collectionRead(params.collection).call(\"ticket_count\", []);\n return BigInt(result as any);\n }\n\n /** Read — returns the Ticket record for a token ID. */\n async getTicket(params: {\n collection: string;\n tokenId: bigint | string;\n }): Promise<TicketRecord> {\n const t = await this._collectionRead(params.collection).call(\"get_ticket\", [\n cairo.uint256(params.tokenId),\n ]) as any;\n return {\n maxSupply: BigInt(t.max_supply),\n minted: BigInt(t.minted),\n startTime: t.start_time?.variant === \"Some\" ? Number(t.start_time.values[0] ?? t.start_time.value) : null,\n endTime: t.end_time?.variant === \"Some\" ? Number(t.end_time.values[0] ?? t.end_time.value) : null,\n royaltyBps: Number(t.royalty_bps),\n metadataUri: t.metadata_uri as string,\n };\n }\n}\n","import { newContract } from \"../marketplace/utils.js\";\nimport { CairoOption, CairoOptionVariant, RpcProvider, cairo, type AccountInterface } from \"starknet\";\nimport type { ResolvedConfig } from \"../../config.js\";\nimport { normalizeAddress } from \"../../utils/address.js\";\nimport { IPClubCollectionABI, IPClubFactoryABI } from \"../abis/index.js\";\nimport { getStarknetCoordinates } from \"../../chains.js\";\nimport type { CreateMembershipParams, MintMembershipsParams } from \"../../types/services.js\";\nimport type { TxResult } from \"../../types/marketplace.js\";\n\nexport type { CreateMembershipParams, MintMembershipsParams };\n\nexport interface MembershipRecord {\n maxSupply: bigint;\n minted: bigint;\n startTime: number | null;\n endTime: number | null;\n royaltyBps: number;\n metadataUri: string;\n}\n\nexport class ClubService {\n private readonly factoryAddress?: string;\n private readonly config: ResolvedConfig;\n\n constructor(config: ResolvedConfig) {\n this.config = config;\n this.factoryAddress = getStarknetCoordinates(config.chain).ipClubFactory;\n }\n\n private _factory(account: AccountInterface, factoryAddress?: string) {\n const address = factoryAddress ?? this.factoryAddress;\n if (!address) throw new Error(\"IP-Club factory address not configured for this chain\");\n return newContract(IPClubFactoryABI as any, normalizeAddress(\"STARKNET\", address), account as any);\n }\n\n private _collection(address: string, account: AccountInterface) {\n return newContract(IPClubCollectionABI as any, normalizeAddress(\"STARKNET\", address), account as any);\n }\n\n private _collectionRead(address: string) {\n const provider = new RpcProvider({ nodeUrl: this.config.rpcUrl });\n return newContract(IPClubCollectionABI as any, normalizeAddress(\"STARKNET\", address), provider);\n }\n\n /**\n * Deploys a new IPClubCollection via the factory. Caller becomes owner.\n * `baseUri` is the collection-level metadata URI, embedded on-chain in the\n * deploy transaction.\n */\n async deployCollection(\n account: AccountInterface,\n params: { name: string; symbol: string; baseUri: string; factoryAddress?: string }\n ): Promise<TxResult> {\n const call = this._factory(account, params.factoryAddress).populate(\"deploy_collection\", [\n params.name,\n params.symbol,\n params.baseUri,\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /** Owner-only. Creates a new membership tier inside the caller's deployed collection. */\n async createMembership(account: AccountInterface, params: CreateMembershipParams): Promise<TxResult> {\n const startTime = params.startTime != null\n ? new CairoOption(CairoOptionVariant.Some, params.startTime)\n : new CairoOption(CairoOptionVariant.None);\n const endTime = params.endTime != null\n ? new CairoOption(CairoOptionVariant.Some, params.endTime)\n : new CairoOption(CairoOptionVariant.None);\n const call = this._collection(params.collection, account).populate(\"create_membership\", [\n cairo.uint256(params.maxSupply),\n startTime,\n endTime,\n params.royaltyBps,\n params.metadataUri,\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /**\n * Owner-only. Mints `amount` of `tokenId` to `to`. The validity window\n * gates membership, never minting — future-window tiers mint fine.\n */\n async mint(account: AccountInterface, params: MintMembershipsParams): Promise<TxResult> {\n const call = this._collection(params.collection, account).populate(\"mint\", [\n params.to,\n cairo.uint256(params.tokenId),\n cairo.uint256(params.amount),\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /** Read — true if holder holds any tier currently inside its validity window. */\n async isMember(params: { collection: string; holder: string }): Promise<boolean> {\n const result = await this._collectionRead(params.collection).call(\"is_member\", [\n params.holder,\n ]);\n return Boolean(result);\n }\n\n /** Read — true if holder holds `tokenId` and the current time is inside its window. */\n async isMemberOf(params: { collection: string; tokenId: bigint | string; holder: string }): Promise<boolean> {\n const result = await this._collectionRead(params.collection).call(\"is_member_of\", [\n cairo.uint256(params.tokenId),\n params.holder,\n ]);\n return Boolean(result);\n }\n\n /** Read — returns the Membership record for a token ID. */\n async getMembership(params: {\n collection: string;\n tokenId: bigint | string;\n }): Promise<MembershipRecord> {\n const m = await this._collectionRead(params.collection).call(\"get_membership\", [\n cairo.uint256(params.tokenId),\n ]) as any;\n return {\n maxSupply: BigInt(m.max_supply),\n minted: BigInt(m.minted),\n startTime: m.start_time?.variant === \"Some\" ? Number(m.start_time.values[0] ?? m.start_time.value) : null,\n endTime: m.end_time?.variant === \"Some\" ? Number(m.end_time.values[0] ?? m.end_time.value) : null,\n royaltyBps: Number(m.royalty_bps),\n metadataUri: m.metadata_uri as string,\n };\n }\n}\n","import { newContract } from \"../marketplace/utils.js\";\nimport { CairoOption, CairoOptionVariant, RpcProvider, cairo, type AccountInterface } from \"starknet\";\nimport type { ResolvedConfig } from \"../../config.js\";\nimport { normalizeAddress } from \"../../utils/address.js\";\nimport { IPSponsorshipABI } from \"../abis/index.js\";\nimport { getStarknetCoordinates } from \"../../chains.js\";\nimport type { CreateSponsorshipOfferParams, ProposeSponsorshipParams } from \"../../types/services.js\";\nimport type { TxResult } from \"../../types/marketplace.js\";\n\nexport type { CreateSponsorshipOfferParams, ProposeSponsorshipParams };\n\nexport interface SponsorshipOfferRecord {\n author: string;\n nftContract: string;\n tokenId: bigint;\n minAmount: bigint;\n duration: number;\n paymentToken: string;\n licenseTermsUri: string;\n transferable: boolean;\n specificSponsor: string | null;\n open: boolean;\n royaltyBps: bigint;\n}\n\nexport interface SponsorshipProposalRecord {\n proposer: string;\n nftContract: string;\n tokenId: bigint;\n amount: bigint;\n duration: number;\n /** Unix seconds; 0 = no deadline. */\n validUntil: number;\n paymentToken: string;\n licenseTermsUri: string;\n transferable: boolean;\n open: boolean;\n royaltyBps: bigint;\n}\n\n/**\n * IP Sponsorship v3 — one contract is both the offer/bid/proposal registry\n * AND the issued license collection (a standard ERC-721; embeds\n * ERC721Component directly, no separate receipt contract, no `set_minter`\n * bootstrap). `transferable`/expiry are declarative terms only — never\n * contract-enforced against a transfer — carried in `license_terms_uri`\n * metadata and the `LicenseMinted` event; the indexer, not this contract,\n * derives validity. A license moves through the standard ERC-721\n * `transfer_from`/`safe_transfer_from` on this same contract address, so\n * there is no bespoke transfer wrapper here.\n */\nexport class SponsorshipService {\n private readonly sponsorshipAddress?: string;\n private readonly config: ResolvedConfig;\n\n constructor(config: ResolvedConfig) {\n this.config = config;\n this.sponsorshipAddress = getStarknetCoordinates(config.chain).ipSponsorship;\n }\n\n private _contract(account: AccountInterface, address?: string) {\n const resolved = address ?? this.sponsorshipAddress;\n if (!resolved) {\n throw new Error(\"IP-Sponsorship address not configured for this chain\");\n }\n return newContract(IPSponsorshipABI as any, normalizeAddress(\"STARKNET\", resolved), account as any);\n }\n\n private _contractRead(address?: string) {\n const resolved = address ?? this.sponsorshipAddress;\n if (!resolved) {\n throw new Error(\"IP-Sponsorship address not configured for this chain\");\n }\n const provider = new RpcProvider({ nodeUrl: this.config.rpcUrl });\n return newContract(IPSponsorshipABI as any, normalizeAddress(\"STARKNET\", resolved), provider);\n }\n\n // ── Offers (owner-initiated) ───────────────────────────────────────────────\n\n /** The offer author must currently own (nftContract, tokenId) — enforced on-chain at create and accept. */\n async createOffer(\n account: AccountInterface,\n params: CreateSponsorshipOfferParams & { sponsorshipAddress?: string }\n ): Promise<TxResult> {\n const specificSponsor = params.specificSponsor\n ? new CairoOption(CairoOptionVariant.Some, params.specificSponsor)\n : new CairoOption(CairoOptionVariant.None);\n\n const call = this._contract(account, params.sponsorshipAddress).populate(\"create_offer\", [\n params.nftContract,\n cairo.uint256(params.tokenId),\n cairo.uint256(params.minAmount),\n params.duration,\n params.paymentToken,\n params.licenseTermsUri,\n params.transferable,\n cairo.uint256(params.royaltyBps),\n specificSponsor,\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /** Reversible — gates new bids/acceptance only. */\n async setOfferOpen(\n account: AccountInterface,\n params: { offerId: bigint | string; open: boolean; sponsorshipAddress?: string }\n ): Promise<TxResult> {\n const call = this._contract(account, params.sponsorshipAddress).populate(\"set_offer_open\", [\n cairo.uint256(params.offerId),\n params.open,\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /** A bid is a signal plus an open ERC-20 allowance — no tokens move until accepted. Prepends the approve. */\n async placeBid(\n account: AccountInterface,\n params: { offerId: bigint | string; amount: bigint | string; paymentToken: string; sponsorshipAddress?: string }\n ): Promise<TxResult> {\n const sponsorshipAddress = params.sponsorshipAddress ?? this.sponsorshipAddress;\n if (!sponsorshipAddress) {\n throw new Error(\"IP-Sponsorship address not configured for this chain\");\n }\n const amount = cairo.uint256(params.amount);\n const approveCall = {\n contractAddress: params.paymentToken,\n entrypoint: \"approve\",\n calldata: [normalizeAddress(\"STARKNET\", sponsorshipAddress), amount.low.toString(), amount.high.toString()],\n };\n const bidCall = this._contract(account, sponsorshipAddress).populate(\"place_bid\", [\n cairo.uint256(params.offerId),\n amount,\n ]);\n const res = await account.execute([approveCall, bidCall]);\n return { txHash: res.transaction_hash };\n }\n\n async retractBid(\n account: AccountInterface,\n params: { offerId: bigint | string; sponsorshipAddress?: string }\n ): Promise<TxResult> {\n const call = this._contract(account, params.sponsorshipAddress).populate(\"retract_bid\", [\n cairo.uint256(params.offerId),\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /**\n * Author-only. Re-verifies IP ownership, settles the sponsor's payment\n * (allowance pull, no escrow), and mints the license — a real ERC-721 on\n * this same contract — to the sponsor, all atomically in one call.\n */\n async acceptBid(\n account: AccountInterface,\n params: { offerId: bigint | string; sponsor: string; sponsorshipAddress?: string }\n ): Promise<TxResult> {\n const call = this._contract(account, params.sponsorshipAddress).populate(\"accept_bid\", [\n cairo.uint256(params.offerId),\n params.sponsor,\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n // ── Proposals (sponsor-initiated) ──────────────────────────────────────────\n // The symmetric counterpart to offers/bids: a sponsor proposes fixed terms\n // on an asset with no open offer yet; only the asset's current owner may\n // accept or reject. Unlike an offer, the SPONSOR chooses `paymentToken` here\n // — an accepting owner's UI should surface only recognized tokens, since a\n // bad-faith ERC-20 could return `true` on `transfer_from` without moving funds.\n\n async proposeSponsorship(\n account: AccountInterface,\n params: ProposeSponsorshipParams & { sponsorshipAddress?: string }\n ): Promise<TxResult> {\n const call = this._contract(account, params.sponsorshipAddress).populate(\"propose_sponsorship\", [\n params.nftContract,\n cairo.uint256(params.tokenId),\n cairo.uint256(params.amount),\n params.duration,\n params.validUntil ?? 0,\n params.paymentToken,\n params.licenseTermsUri,\n params.transferable,\n cairo.uint256(params.royaltyBps),\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /** Proposer-only. Advisory against an acceptance in flight in the same block. */\n async withdrawProposal(\n account: AccountInterface,\n params: { proposalId: bigint | string; sponsorshipAddress?: string }\n ): Promise<TxResult> {\n const call = this._contract(account, params.sponsorshipAddress).populate(\"withdraw_proposal\", [\n cairo.uint256(params.proposalId),\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /**\n * Asset-owner-only (re-verified on-chain — a proposal binds to the asset,\n * not a person: whoever owns it at acceptance time is paid and issues the\n * license). Settles payment and mints the license atomically, same as\n * `acceptBid`.\n */\n async acceptProposal(\n account: AccountInterface,\n params: { proposalId: bigint | string; sponsorshipAddress?: string }\n ): Promise<TxResult> {\n const call = this._contract(account, params.sponsorshipAddress).populate(\"accept_proposal\", [\n cairo.uint256(params.proposalId),\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /** Asset-owner-only. */\n async rejectProposal(\n account: AccountInterface,\n params: { proposalId: bigint | string; sponsorshipAddress?: string }\n ): Promise<TxResult> {\n const call = this._contract(account, params.sponsorshipAddress).populate(\"reject_proposal\", [\n cairo.uint256(params.proposalId),\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n // ── Reads ───────────────────────────────────────────────────────────────────\n\n async getOffer(params: { offerId: bigint | string; sponsorshipAddress?: string }): Promise<SponsorshipOfferRecord> {\n const o = await this._contractRead(params.sponsorshipAddress).call(\"get_offer\", [\n cairo.uint256(params.offerId),\n ]) as any;\n return {\n author: o.author as string,\n nftContract: o.nft_contract as string,\n tokenId: BigInt(o.token_id),\n minAmount: BigInt(o.min_amount),\n duration: Number(o.duration),\n paymentToken: o.payment_token as string,\n licenseTermsUri: o.license_terms_uri as string,\n transferable: Boolean(o.transferable),\n specificSponsor: o.specific_sponsor?.variant === \"Some\"\n ? (o.specific_sponsor.values?.[0] ?? o.specific_sponsor.value)\n : null,\n open: Boolean(o.open),\n royaltyBps: BigInt(o.royalty_bps),\n };\n }\n\n async getBid(params: { offerId: bigint | string; sponsor: string; sponsorshipAddress?: string }): Promise<bigint> {\n const result = await this._contractRead(params.sponsorshipAddress).call(\"get_bid\", [\n cairo.uint256(params.offerId),\n params.sponsor,\n ]);\n return BigInt(result as any);\n }\n\n async getProposal(params: { proposalId: bigint | string; sponsorshipAddress?: string }): Promise<SponsorshipProposalRecord> {\n const p = await this._contractRead(params.sponsorshipAddress).call(\"get_proposal\", [\n cairo.uint256(params.proposalId),\n ]) as any;\n return {\n proposer: p.proposer as string,\n nftContract: p.nft_contract as string,\n tokenId: BigInt(p.token_id),\n amount: BigInt(p.amount),\n duration: Number(p.duration),\n validUntil: Number(p.valid_until),\n paymentToken: p.payment_token as string,\n licenseTermsUri: p.license_terms_uri as string,\n transferable: Boolean(p.transferable),\n open: Boolean(p.open),\n royaltyBps: BigInt(p.royalty_bps),\n };\n }\n\n async getLastOfferId(params?: { sponsorshipAddress?: string }): Promise<bigint> {\n const result = await this._contractRead(params?.sponsorshipAddress).call(\"get_last_offer_id\", []);\n return BigInt(result as any);\n }\n\n async getLastProposalId(params?: { sponsorshipAddress?: string }): Promise<bigint> {\n const result = await this._contractRead(params?.sponsorshipAddress).call(\"get_last_proposal_id\", []);\n return BigInt(result as any);\n }\n\n async getLastLicenseId(params?: { sponsorshipAddress?: string }): Promise<bigint> {\n const result = await this._contractRead(params?.sponsorshipAddress).call(\"get_last_license_id\", []);\n return BigInt(result as any);\n }\n\n /** EIP-2981 — royalty recipient (the license's issuing author) and amount owed on a resale at `salePrice`. */\n async royaltyInfo(params: {\n licenseId: bigint | string;\n salePrice: bigint | string;\n sponsorshipAddress?: string;\n }): Promise<{ recipient: string; amount: bigint }> {\n const [recipient, amount] = await this._contractRead(params.sponsorshipAddress).call(\"royalty_info\", [\n cairo.uint256(params.licenseId),\n cairo.uint256(params.salePrice),\n ]) as any;\n return { recipient: recipient as string, amount: BigInt(amount) };\n }\n}\n","import { type MedialaneConfig, resolveConfig, type ResolvedConfig } from \"../config.js\";\nimport { ApiClient } from \"../api/client.js\";\nimport { PopService } from \"./services/pop.js\";\nimport { DropService } from \"./services/drop.js\";\nimport { ERC1155CollectionService } from \"./services/erc1155collection.js\";\nimport { CreatorCoinService } from \"./services/creatorCoin.js\";\nimport { TicketService } from \"./services/ticket.js\";\nimport { ClubService } from \"./services/club.js\";\nimport { SponsorshipService } from \"./services/sponsorship.js\";\n\n// Marketplace order execution is NOT on the client (0.64.0): it goes through\n// StarknetVenue over the VenueSigner capability port (./venue.ts) — the app's\n// wallet layer signs and submits; the venue builds and reads.\nexport class MedialaneClient {\n /**\n * Off-chain API client — covers all /v1/* backend endpoints.\n * Requires `backendUrl` in config; pass `apiKey` for authenticated routes.\n */\n readonly api: ApiClient;\n\n readonly services: {\n readonly pop: PopService;\n readonly drop: DropService;\n readonly erc1155Collection: ERC1155CollectionService;\n readonly creatorCoin: CreatorCoinService;\n readonly ticket: TicketService;\n readonly club: ClubService;\n readonly sponsorship: SponsorshipService;\n };\n\n private readonly config: ResolvedConfig;\n\n constructor(rawConfig: MedialaneConfig = {}) {\n this.config = resolveConfig(rawConfig);\n\n this.services = {\n pop: new PopService(this.config),\n drop: new DropService(this.config),\n erc1155Collection: new ERC1155CollectionService(this.config),\n creatorCoin: new CreatorCoinService(this.config),\n ticket: new TicketService(this.config),\n club: new ClubService(this.config),\n sponsorship: new SponsorshipService(this.config),\n };\n\n if (!this.config.backendUrl) {\n // When backendUrl is not configured, `client.api.*()` must fail with a\n // helpful message. Wrap a real ApiClient (built with a sentinel URL so\n // it never silently dispatches) in a Proxy that intercepts ONLY actual\n // ApiClient methods — Symbol access, .then (Promise unwrapping),\n // .toString, .inspect (Node/Bun debug) and other host introspection\n // are returned unchanged so they don't fabricate throwing functions.\n const sentinel = new ApiClient(\"https://medialane-sdk-no-backend.invalid\", this.config.apiKey);\n const apiMethodNames = new Set<string | symbol>(\n Object.getOwnPropertyNames(ApiClient.prototype).filter(\n (k) => k !== \"constructor\" && typeof (sentinel as unknown as Record<string, unknown>)[k] === \"function\",\n ),\n );\n this.api = new Proxy(sentinel, {\n get(target, prop, receiver) {\n if (typeof prop === \"symbol\" || !apiMethodNames.has(prop)) {\n return Reflect.get(target, prop, receiver);\n }\n return () => {\n throw new Error(\n `backendUrl not configured. Pass backendUrl to MedialaneClient to use .api.${String(prop)}()`,\n );\n };\n },\n });\n } else {\n this.api = new ApiClient(this.config.backendUrl, this.config.apiKey, this.config.retryOptions, this.config.chain);\n }\n }\n\n get chain() {\n return this.config.chain;\n }\n\n get rpcUrl() {\n return this.config.rpcUrl;\n }\n\n get marketplaceContract() {\n return this.config.marketplaceContract;\n }\n}\n","// Pure view reads on the ERC-721 venue. The self-executing order writes that\n// used to live here (createListing/makeOffer/fulfillOrder/cancelOrder/\n// checkoutCart/mint/createCollection/incrementCounter) were removed in 0.64.0:\n// order execution goes through StarknetVenue over the VenueSigner capability\n// port (../venue.ts) — one source for order construction; the app's wallet\n// layer signs and submits. Calldata/typed-data construction lives in the pure\n// builders (./build.ts, ./signing.ts).\nimport { type Abi, Contract } from \"starknet\";\nimport { IPMarketplaceABI } from \"../abis/index.js\";\nimport type { ResolvedConfig } from \"../../config.js\";\nimport type { OrderDetails } from \"../../types/marketplace.js\";\nimport { getProvider, newContract } from \"./utils.js\";\n\nconst _contractCache = new WeakMap<ResolvedConfig, { contract: Contract }>();\n\nfunction makeContract(config: ResolvedConfig): { contract: Contract } {\n const cached = _contractCache.get(config);\n if (cached) return cached;\n const contract = newContract(\n IPMarketplaceABI as unknown as Abi,\n config.marketplaceContract,\n getProvider(config)\n );\n const entry = { contract };\n _contractCache.set(config, entry);\n return entry;\n}\n\nexport async function getOrderDetails(\n orderHash: string,\n config: ResolvedConfig\n): Promise<OrderDetails> {\n const { contract } = makeContract(config);\n return contract.get_order_details(orderHash) as Promise<OrderDetails>;\n}\n\nexport async function getCounter(\n address: string,\n config: ResolvedConfig\n): Promise<bigint> {\n const { contract } = makeContract(config);\n return BigInt((await contract.get_counter(address)).toString());\n}\n","// Pure view reads on the ERC-1155 venue. The self-executing order writes that\n// used to live here (createListing1155/makeOffer1155/fulfillOrder1155/\n// cancelOrder1155/checkoutCart1155/incrementCounter1155) were removed in\n// 0.64.0 — order execution goes through StarknetVenue over the VenueSigner\n// capability port (../venue.ts). Calldata/typed-data construction lives in\n// the pure builders (./build.ts, ../marketplace/signing.ts).\nimport { type Abi, Contract } from \"starknet\";\nimport { Medialane1155ABI } from \"../abis/index.js\";\nimport type { ResolvedConfig } from \"../../config.js\";\nimport type { OrderDetails } from \"../../types/marketplace.js\";\nimport { getProvider, newContract } from \"../marketplace/utils.js\";\n\nconst _contractCache = new WeakMap<ResolvedConfig, Contract>();\n\nfunction getContract(config: ResolvedConfig): Contract {\n let c = _contractCache.get(config);\n if (!c) {\n c = newContract(Medialane1155ABI as unknown as Abi, config.marketplace1155Contract, getProvider(config));\n _contractCache.set(config, c);\n }\n return c;\n}\n\nexport async function getOrderDetails1155(\n orderHash: string,\n config: ResolvedConfig\n): Promise<OrderDetails> {\n const contract = getContract(config);\n return contract.get_order_details(orderHash) as Promise<OrderDetails>;\n}\n\nexport async function getCounter1155(\n address: string,\n config: ResolvedConfig\n): Promise<bigint> {\n const contract = getContract(config);\n return BigInt((await contract.get_counter(address)).toString());\n}\n","/**\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 { type TypedData, TypedDataRevision, constants } from \"starknet\";\n\n// ── Shared SNIP-12 building blocks ─────────────────────────────────────────────\n\nconst STARKNET_DOMAIN = [\n { name: \"name\", type: \"shortstring\" },\n { name: \"version\", type: \"shortstring\" },\n { name: \"chainId\", type: \"shortstring\" },\n { name: \"revision\", type: \"shortstring\" },\n];\n\nconst OFFER_ITEM = [\n { name: \"item_type\", type: \"shortstring\" },\n { name: \"token\", type: \"ContractAddress\" },\n { name: \"identifier_or_criteria\", type: \"felt\" },\n { name: \"amount\", type: \"felt\" },\n];\n\nconst CONSIDERATION_ITEM = [\n { name: \"item_type\", type: \"shortstring\" },\n { name: \"token\", type: \"ContractAddress\" },\n { name: \"identifier_or_criteria\", type: \"felt\" },\n { name: \"amount\", type: \"felt\" },\n { name: \"recipient\", type: \"ContractAddress\" },\n];\n\nconst ORDER_PARAMETERS = [\n { name: \"offerer\", type: \"ContractAddress\" },\n { name: \"marketplace\", type: \"ContractAddress\" },\n { name: \"offer\", type: \"OfferItem\" },\n { name: \"consideration\", type: \"ConsiderationItem\" },\n { name: \"royalty_max_bps\", type: \"felt\" },\n { name: \"start_time\", type: \"felt\" },\n { name: \"end_time\", type: \"felt\" },\n { name: \"salt\", type: \"felt\" },\n { name: \"counter\", type: \"felt\" },\n];\n\nconst ORDER_CANCELLATION = [\n { name: \"order_hash\", type: \"felt\" },\n { name: \"offerer\", type: \"ContractAddress\" },\n];\n\n/**\n * SNIP-12 domain version per marketplace contract:\n * ERC-721 marketplace → \"1\"\n * ERC-1155 marketplace V2 → \"2\"\n *\n * If the Cairo contracts are ever redeployed with different SNIP-12 domains,\n * update only this lookup — every builder reads through it.\n */\nconst DOMAIN_VERSION: Record<\"erc721\" | \"erc1155\", string> = {\n erc721: \"5\",\n erc1155: \"4\",\n};\n\nfunction buildDomain(standard: \"erc721\" | \"erc1155\", chainId: constants.StarknetChainId | string) {\n return {\n name: \"Medialane\",\n version: DOMAIN_VERSION[standard],\n chainId,\n revision: TypedDataRevision.ACTIVE,\n };\n}\n\n// ── Public builders ────────────────────────────────────────────────────────────\n\n/**\n * Build SNIP-12 typed data for signing an OrderParameters struct.\n * The shape is identical across ERC-721 and ERC-1155 (nested OfferItem +\n * ConsiderationItem) — only the domain version differs.\n */\nexport function buildOrderTypedData(\n message: Record<string, unknown>,\n chainId: constants.StarknetChainId | string,\n): TypedData {\n return {\n domain: buildDomain(\"erc721\", chainId),\n primaryType: \"OrderParameters\",\n types: {\n StarknetDomain: STARKNET_DOMAIN,\n OrderParameters: ORDER_PARAMETERS,\n OfferItem: OFFER_ITEM,\n ConsiderationItem: CONSIDERATION_ITEM,\n },\n message,\n };\n}\n\nexport function build1155OrderTypedData(\n message: Record<string, unknown>,\n chainId: constants.StarknetChainId | string,\n): TypedData {\n return {\n domain: buildDomain(\"erc1155\", chainId),\n primaryType: \"OrderParameters\",\n types: {\n StarknetDomain: STARKNET_DOMAIN,\n OrderParameters: ORDER_PARAMETERS,\n OfferItem: OFFER_ITEM,\n ConsiderationItem: CONSIDERATION_ITEM,\n },\n message,\n };\n}\n\n/** OrderCancellation typed data — identical shape across both standards. */\nexport function buildCancellationTypedData(\n message: Record<string, unknown>,\n chainId: constants.StarknetChainId | string,\n): TypedData {\n return {\n domain: buildDomain(\"erc721\", chainId),\n primaryType: \"OrderCancellation\",\n types: {\n StarknetDomain: STARKNET_DOMAIN,\n OrderCancellation: ORDER_CANCELLATION,\n },\n message,\n };\n}\n\nexport function build1155CancellationTypedData(\n message: Record<string, unknown>,\n chainId: constants.StarknetChainId | string,\n): TypedData {\n return {\n domain: buildDomain(\"erc1155\", chainId),\n primaryType: \"OrderCancellation\",\n types: {\n StarknetDomain: STARKNET_DOMAIN,\n OrderCancellation: ORDER_CANCELLATION,\n },\n message,\n };\n}\n","import { type Abi, type Call, type TypedData, Contract, cairo, shortString } from \"starknet\";\nimport { IPMarketplaceABI } from \"../abis/index.js\";\nimport type { ResolvedConfig } from \"../../config.js\";\nimport { stringifyBigInts } from \"../../utils/bigint.js\";\nimport { buildOrderTypedData, buildCancellationTypedData } from \"./signing.js\";\nimport { buildFeeCall } from \"../fee/index.js\";\nimport { getChainId, getProvider, newContract } from \"./utils.js\";\n\n/**\n * Pure calldata builders for the 721 marketplace — no signing, no execution, no\n * provider *writes*. Salt, counter, and times are injected by the caller so the\n * output is deterministic and testable. Both the legacy `MarketplaceModule`\n * execute-methods and the chain-neutral `StarknetVenue` build calls through here,\n * so their calldata is identical by construction.\n */\n\nexport interface OrderLeg {\n item_type: string;\n token: string;\n identifier_or_criteria: string;\n amount: string;\n recipient?: string;\n}\n\nexport interface OrderParams {\n offerer: string;\n marketplace: string;\n offer: OrderLeg;\n consideration: OrderLeg;\n royalty_max_bps: string;\n start_time: string;\n end_time: string;\n salt: string;\n counter: string;\n}\n\nexport interface BuildListingInput {\n offerer: string;\n nftContract: string;\n tokenId: string;\n /** ERC-20 consideration amount, base units. */\n priceWei: string;\n paymentTokenAddress: string;\n royaltyMaxBps: string;\n startTime: number;\n endTime: number;\n salt: string;\n counter: string;\n}\n\nexport type BuildOfferInput = BuildListingInput;\n\nfunction contractFor(cfg: ResolvedConfig): Contract {\n return newContract(IPMarketplaceABI as unknown as Abi, cfg.marketplaceContract, getProvider(cfg));\n}\n\nexport function buildListingOrder(\n i: BuildListingInput,\n cfg: ResolvedConfig,\n): { orderParams: OrderParams; typedData: TypedData } {\n const orderParams: OrderParams = {\n offerer: i.offerer,\n marketplace: cfg.marketplaceContract,\n offer: { item_type: \"ERC721\", token: i.nftContract, identifier_or_criteria: i.tokenId, amount: \"1\" },\n consideration: {\n item_type: \"ERC20\",\n token: i.paymentTokenAddress,\n identifier_or_criteria: \"0\",\n amount: i.priceWei,\n recipient: i.offerer,\n },\n royalty_max_bps: i.royaltyMaxBps,\n start_time: String(i.startTime),\n end_time: String(i.endTime),\n salt: i.salt,\n counter: i.counter,\n };\n const typedData = stringifyBigInts(buildOrderTypedData(orderParams as unknown as Record<string, unknown>, getChainId(cfg))) as TypedData;\n return { orderParams, typedData };\n}\n\nexport function buildOfferOrder(\n i: BuildOfferInput,\n cfg: ResolvedConfig,\n): { orderParams: OrderParams; typedData: TypedData } {\n const orderParams: OrderParams = {\n offerer: i.offerer,\n marketplace: cfg.marketplaceContract,\n offer: { item_type: \"ERC20\", token: i.paymentTokenAddress, identifier_or_criteria: \"0\", amount: i.priceWei },\n consideration: {\n item_type: \"ERC721\",\n token: i.nftContract,\n identifier_or_criteria: i.tokenId,\n amount: \"1\",\n recipient: i.offerer,\n },\n royalty_max_bps: i.royaltyMaxBps,\n start_time: String(i.startTime),\n end_time: String(i.endTime),\n salt: i.salt,\n counter: i.counter,\n };\n const typedData = stringifyBigInts(buildOrderTypedData(orderParams as unknown as Record<string, unknown>, getChainId(cfg))) as TypedData;\n return { orderParams, typedData };\n}\n\nfunction registerPayload(orderParams: OrderParams, signature: string[]) {\n return stringifyBigInts({\n parameters: {\n ...orderParams,\n offer: { ...orderParams.offer, item_type: shortString.encodeShortString(orderParams.offer.item_type) },\n consideration: {\n ...orderParams.consideration,\n item_type: shortString.encodeShortString(orderParams.consideration.item_type),\n },\n },\n signature,\n }) as Record<string, unknown>;\n}\n\nexport function buildRegisterCalls(\n a: { orderParams: OrderParams; signature: string[]; approvalNeeded: boolean; approve: Call },\n cfg: ResolvedConfig,\n): Call[] {\n const registerCall = contractFor(cfg).populate(\"register_order\", [registerPayload(a.orderParams, a.signature)]);\n return a.approvalNeeded ? [a.approve, registerCall] : [registerCall];\n}\n\nexport function buildFulfillCalls(\n a: { orderHash: string; paymentToken: string; totalPrice: string },\n cfg: ResolvedConfig,\n): Call[] {\n const u = cairo.uint256(a.totalPrice);\n const approve: Call = {\n contractAddress: a.paymentToken,\n entrypoint: \"approve\",\n calldata: [cfg.marketplaceContract, u.low.toString(), u.high.toString()],\n };\n const fulfill = contractFor(cfg).populate(\"fulfill_order\", [a.orderHash]);\n const fee = buildFeeCall(\n { surface: \"marketplace\", token: a.paymentToken, grossAmount: BigInt(a.totalPrice) },\n cfg.feeConfig,\n );\n return fee ? [approve, fulfill, fee] : [approve, fulfill];\n}\n\nexport function buildCancelCalls(\n a: { orderHash: string; offerer: string; signature: string[] },\n cfg: ResolvedConfig,\n): Call[] {\n const cancelRequest = stringifyBigInts({\n cancelation: { order_hash: a.orderHash, offerer: a.offerer },\n signature: a.signature,\n }) as Record<string, unknown>;\n return [contractFor(cfg).populate(\"cancel_order\", [cancelRequest])];\n}\n\n/** SNIP-12 typed data for a cancellation (offerer signs `{ order_hash, offerer }`). */\nexport function buildCancelTypedData(orderHash: string, offerer: string, cfg: ResolvedConfig): TypedData {\n return stringifyBigInts(buildCancellationTypedData({ order_hash: orderHash, offerer }, getChainId(cfg))) as TypedData;\n}\n","import { type Abi, type Call, type TypedData, Contract, cairo, shortString } from \"starknet\";\nimport { Medialane1155ABI } from \"../abis/index.js\";\nimport type { ResolvedConfig } from \"../../config.js\";\nimport { stringifyBigInts } from \"../../utils/bigint.js\";\nimport { build1155OrderTypedData, build1155CancellationTypedData } from \"../marketplace/signing.js\";\nimport { buildFeeCall } from \"../fee/index.js\";\nimport { getChainId, getProvider, newContract } from \"../marketplace/utils.js\";\nimport type { OrderParams } from \"../marketplace/build.js\";\n\n/**\n * Pure calldata builders for the ERC-1155 marketplace — the 1155 mirror of\n * `marketplace/build.ts`. Salt/counter/times are injected so output is\n * deterministic. Both the legacy `Medialane1155Module` and `StarknetVenue` build\n * through here, so their calldata is identical by construction — except that\n * `buildFulfill1155Calls` now composes the platform fee (the legacy\n * `fulfillOrder1155` did not; this closes the 1155 fee-parity gap so 721 and 1155\n * buys charge the creators-fund fee uniformly).\n */\n\nexport interface Build1155ListingInput {\n offerer: string;\n nftContract: string;\n tokenId: string;\n /** ERC-1155 unit quantity offered. */\n quantity: string;\n /** ERC-20 consideration amount PER UNIT, base units. */\n priceWeiPerUnit: string;\n paymentTokenAddress: string;\n royaltyMaxBps: string;\n startTime: number;\n endTime: number;\n salt: string;\n counter: string;\n}\n\nexport type Build1155OfferInput = Build1155ListingInput;\n\nfunction contractFor(cfg: ResolvedConfig): Contract {\n return newContract(Medialane1155ABI as unknown as Abi, cfg.marketplace1155Contract, getProvider(cfg));\n}\n\nexport function buildListing1155Order(\n i: Build1155ListingInput,\n cfg: ResolvedConfig,\n): { orderParams: OrderParams; typedData: TypedData } {\n const orderParams: OrderParams = {\n offerer: i.offerer,\n marketplace: cfg.marketplace1155Contract,\n offer: { item_type: \"ERC1155\", token: i.nftContract, identifier_or_criteria: i.tokenId, amount: i.quantity },\n consideration: {\n item_type: \"ERC20\",\n token: i.paymentTokenAddress,\n identifier_or_criteria: \"0\",\n amount: i.priceWeiPerUnit,\n recipient: i.offerer,\n },\n royalty_max_bps: i.royaltyMaxBps,\n start_time: String(i.startTime),\n end_time: String(i.endTime),\n salt: i.salt,\n counter: i.counter,\n };\n const typedData = stringifyBigInts(\n build1155OrderTypedData(orderParams as unknown as Record<string, unknown>, getChainId(cfg)),\n ) as TypedData;\n return { orderParams, typedData };\n}\n\nexport function buildOffer1155Order(\n i: Build1155OfferInput,\n cfg: ResolvedConfig,\n): { orderParams: OrderParams; typedData: TypedData } {\n const orderParams: OrderParams = {\n offerer: i.offerer,\n marketplace: cfg.marketplace1155Contract,\n offer: { item_type: \"ERC20\", token: i.paymentTokenAddress, identifier_or_criteria: \"0\", amount: i.priceWeiPerUnit },\n consideration: {\n item_type: \"ERC1155\",\n token: i.nftContract,\n identifier_or_criteria: i.tokenId,\n amount: i.quantity,\n recipient: i.offerer,\n },\n royalty_max_bps: i.royaltyMaxBps,\n start_time: String(i.startTime),\n end_time: String(i.endTime),\n salt: i.salt,\n counter: i.counter,\n };\n const typedData = stringifyBigInts(\n build1155OrderTypedData(orderParams as unknown as Record<string, unknown>, getChainId(cfg)),\n ) as TypedData;\n return { orderParams, typedData };\n}\n\nfunction registerPayload(orderParams: OrderParams, signature: string[]) {\n return stringifyBigInts({\n parameters: {\n ...orderParams,\n offer: { ...orderParams.offer, item_type: shortString.encodeShortString(orderParams.offer.item_type) },\n consideration: {\n ...orderParams.consideration,\n item_type: shortString.encodeShortString(orderParams.consideration.item_type),\n },\n },\n signature,\n }) as Record<string, unknown>;\n}\n\nexport function buildRegister1155Calls(\n a: { orderParams: OrderParams; signature: string[]; approvalNeeded: boolean; approve: Call },\n cfg: ResolvedConfig,\n): Call[] {\n const registerCall = contractFor(cfg).populate(\"register_order\", [registerPayload(a.orderParams, a.signature)]);\n return a.approvalNeeded ? [a.approve, registerCall] : [registerCall];\n}\n\nexport function buildFulfill1155Calls(\n a: { orderHash: string; paymentToken: string; totalPrice: string; quantity: string },\n cfg: ResolvedConfig,\n): Call[] {\n const u = cairo.uint256(a.totalPrice);\n const approve: Call = {\n contractAddress: a.paymentToken,\n entrypoint: \"approve\",\n calldata: [cfg.marketplace1155Contract, u.low.toString(), u.high.toString()],\n };\n const fulfill = contractFor(cfg).populate(\"fulfill_order\", [a.orderHash, a.quantity]);\n const fee = buildFeeCall(\n { surface: \"marketplace\", token: a.paymentToken, grossAmount: BigInt(a.totalPrice) },\n cfg.feeConfig,\n );\n return fee ? [approve, fulfill, fee] : [approve, fulfill];\n}\n\nexport function buildCancel1155Calls(\n a: { orderHash: string; offerer: string; signature: string[] },\n cfg: ResolvedConfig,\n): Call[] {\n const cancelPayload = stringifyBigInts({\n cancelation: { order_hash: a.orderHash, offerer: a.offerer },\n signature: a.signature,\n }) as Record<string, unknown>;\n return [contractFor(cfg).populate(\"cancel_order\", [cancelPayload])];\n}\n\n/** SNIP-12 typed data for a 1155 cancellation (offerer signs `{ order_hash, offerer }`). */\nexport function buildCancel1155TypedData(orderHash: string, offerer: string, cfg: ResolvedConfig): TypedData {\n return stringifyBigInts(\n build1155CancellationTypedData({ order_hash: orderHash, offerer }, getChainId(cfg)),\n ) as TypedData;\n}\n","import { type Call, cairo, hash, num, type ProviderInterface } from \"starknet\";\nimport type {\n VenueAdapter,\n RegisterOrderParams,\n OrderRef,\n AdapterTxResult,\n} from \"../adapters/types.js\";\nimport type { StarknetVenueSigner } from \"./index.js\";\nimport type { ResolvedConfig } from \"../config.js\";\nimport { getOrderDetails } from \"./marketplace/orders.js\";\nimport { resolveToken, START_TIME_BUFFER_SECS } from \"./marketplace/utils.js\";\nimport {\n buildListingOrder,\n buildOfferOrder,\n buildRegisterCalls,\n buildFulfillCalls,\n buildCancelCalls,\n buildCancelTypedData,\n} from \"./marketplace/build.js\";\nimport {\n buildListing1155Order,\n buildOffer1155Order,\n buildRegister1155Calls,\n buildFulfill1155Calls,\n buildCancel1155Calls,\n buildCancel1155TypedData,\n} from \"./marketplace1155/build.js\";\n\n/** Default listing duration when the caller specifies no expiry (endTime 0). */\nconst NO_EXPIRY_SECONDS = 100 * 365 * 24 * 3600;\n\n/** What a stored/registered order resolves to for fulfilment/cancellation. */\nexport interface ResolvedOrder {\n /** ERC-20 consideration token address. */\n paymentToken: string;\n /** Per-unit price in raw token units, as a decimal string. The total paid is\n * `unitPrice × quantity` (quantity is 1 for ERC-721). */\n unitPrice: string;\n /** Which venue the order lives on. */\n standard: \"ERC721\" | \"ERC1155\";\n}\n\n/**\n * Dependencies for {@link StarknetVenue}. The token standard is resolved through\n * injected reads (the backend already tracks it per collection) rather than an\n * on-chain interface probe — Starknet has no single canonical ERC-1155 interface\n * id and the app already carries the standard from the indexer.\n */\nexport interface StarknetVenueDeps {\n config: ResolvedConfig;\n /** Read provider for building (counter/approval reads) and the post-tx receipt. */\n provider: ProviderInterface;\n /** Resolve a registered order (payment token, per-unit price, venue) from its digest. */\n resolveOrder: (orderRef: OrderRef) => Promise<ResolvedOrder>;\n /** Resolve a collection's token standard (from the indexer). */\n resolveStandard: (contract: string) => Promise<\"ERC721\" | \"ERC1155\">;\n}\n\n/**\n * First-class Starknet venue adapter. It orchestrates the marketplace protocol\n * over the chain-neutral {@link StarknetVenueSigner} capability port: it *builds*\n * typed data + calldata via the pure marketplace builders and *reads* chain state\n * (counter, approvals, receipt) on `deps.provider`, but it never signs or executes\n * itself — the app's signer does that (sign + submit + confirm). This is what lets\n * a single adapter drive every wallet (injected/Cartridge/Privy) and the AVNU\n * paymaster without knowing they differ.\n */\nexport class StarknetVenue implements VenueAdapter<StarknetVenueSigner> {\n readonly chain = \"STARKNET\" as const;\n\n constructor(private readonly deps: StarknetVenueDeps) {}\n\n async incrementCounter(signer: StarknetVenueSigner): Promise<AdapterTxResult> {\n return signer.execute([\n { contractAddress: this.deps.config.marketplaceContract, entrypoint: \"increment_counter\", calldata: [] },\n ]);\n }\n\n getOrderDetails(orderRef: OrderRef): Promise<unknown> {\n return getOrderDetails(orderRef, this.deps.config);\n }\n\n async getCounter(address: string): Promise<bigint> {\n return this.readCounter(this.deps.config.marketplaceContract, address);\n }\n\n async fulfillOrder(\n signer: StarknetVenueSigner,\n orderRef: OrderRef,\n opts?: { quantity?: string } & Record<string, string | undefined>,\n ): Promise<AdapterTxResult> {\n const o = await this.deps.resolveOrder(orderRef);\n const quantity = opts?.quantity ?? \"1\";\n // Total paid = per-unit price × quantity (quantity is 1 for ERC-721).\n const totalPrice = (BigInt(o.unitPrice) * BigInt(quantity)).toString();\n const calls =\n o.standard === \"ERC1155\"\n ? buildFulfill1155Calls({ orderHash: orderRef, paymentToken: o.paymentToken, totalPrice, quantity }, this.deps.config)\n : buildFulfillCalls({ orderHash: orderRef, paymentToken: o.paymentToken, totalPrice }, this.deps.config);\n return signer.execute(calls);\n }\n\n async cancelOrder(signer: StarknetVenueSigner, orderRef: OrderRef): Promise<AdapterTxResult> {\n const o = await this.deps.resolveOrder(orderRef);\n const typedData =\n o.standard === \"ERC1155\"\n ? buildCancel1155TypedData(orderRef, signer.address, this.deps.config)\n : buildCancelTypedData(orderRef, signer.address, this.deps.config);\n const signature = await signer.signTypedData(typedData);\n const calls =\n o.standard === \"ERC1155\"\n ? buildCancel1155Calls({ orderHash: orderRef, offerer: signer.address, signature }, this.deps.config)\n : buildCancelCalls({ orderHash: orderRef, offerer: signer.address, signature }, this.deps.config);\n return signer.execute(calls);\n }\n\n async registerOrder(\n signer: StarknetVenueSigner,\n p: RegisterOrderParams,\n ): Promise<AdapterTxResult & { orderRef: OrderRef }> {\n const standard = await this.deps.resolveStandard(p.asset.contract);\n const paymentTokenAddress = resolveToken(p.paymentToken).address;\n const royaltyMaxBps = String(p.royaltyMaxBps);\n const startTime = Math.floor(Date.now() / 1000) + START_TIME_BUFFER_SECS;\n const endTime = p.endTime && p.endTime > 0 ? p.endTime : startTime + NO_EXPIRY_SECONDS;\n const quantity = p.quantity ?? \"1\";\n const marketplace =\n standard === \"ERC1155\" ? this.deps.config.marketplace1155Contract : this.deps.config.marketplaceContract;\n const counter = String(await this.readCounter(marketplace, signer.address));\n\n let typedData;\n let buildCalls: (sig: string[]) => Call[];\n\n if (standard === \"ERC1155\") {\n // Listing carries the per-unit price; a bid's `amount` is per-unit too and\n // the ERC-20 approval covers per-unit × quantity.\n const built = (p.side === \"listing\" ? buildListing1155Order : buildOffer1155Order)(\n {\n offerer: signer.address,\n nftContract: p.asset.contract,\n tokenId: p.asset.tokenId,\n quantity,\n priceWeiPerUnit: p.amount,\n paymentTokenAddress,\n royaltyMaxBps,\n startTime,\n endTime,\n salt: p.salt,\n counter,\n },\n this.deps.config,\n );\n typedData = built.typedData;\n const approval =\n p.side === \"listing\"\n ? await this.approval1155ForListing(signer.address, p.asset.contract)\n : this.approvalForErc20(paymentTokenAddress, (BigInt(p.amount) * BigInt(quantity)).toString(), marketplace);\n buildCalls = (sig) =>\n buildRegister1155Calls({ orderParams: built.orderParams, signature: sig, ...approval }, this.deps.config);\n } else {\n const built = (p.side === \"listing\" ? buildListingOrder : buildOfferOrder)(\n {\n offerer: signer.address,\n nftContract: p.asset.contract,\n tokenId: p.asset.tokenId,\n priceWei: p.amount,\n paymentTokenAddress,\n royaltyMaxBps,\n startTime,\n endTime,\n salt: p.salt,\n counter,\n },\n this.deps.config,\n );\n typedData = built.typedData;\n const approval =\n p.side === \"listing\"\n ? await this.approval721ForListing(signer.address, p.asset.contract, p.asset.tokenId)\n : this.approvalForErc20(paymentTokenAddress, p.amount, marketplace);\n buildCalls = (sig) =>\n buildRegisterCalls({ orderParams: built.orderParams, signature: sig, ...approval }, this.deps.config);\n }\n\n const signature = await signer.signTypedData(typedData);\n const { txHash } = await signer.execute(buildCalls(signature));\n const orderRef = await this.orderRefFromReceipt(txHash);\n return { txHash, orderRef };\n }\n\n // ─── reads (all on deps.provider) ─────────────────────────────────────────\n\n private async readCounter(marketplace: string, address: string): Promise<bigint> {\n const res = await this.deps.provider.callContract({\n contractAddress: marketplace,\n entrypoint: \"get_counter\",\n calldata: [address],\n });\n return BigInt(res[0] ?? \"0\");\n }\n\n /** 721 listing approval: `get_approved(tokenId) == marketplace` ⇒ no approve. */\n private async approval721ForListing(\n _owner: string,\n nftContract: string,\n tokenId: string,\n ): Promise<{ approvalNeeded: boolean; approve: Call }> {\n const id = cairo.uint256(tokenId);\n const approve: Call = {\n contractAddress: nftContract,\n entrypoint: \"approve\",\n calldata: [this.deps.config.marketplaceContract, id.low.toString(), id.high.toString()],\n };\n let approved = false;\n try {\n const res = await this.deps.provider.callContract({\n contractAddress: nftContract,\n entrypoint: \"get_approved\",\n calldata: [id.low.toString(), id.high.toString()],\n });\n approved = BigInt(res[0]).toString() === BigInt(this.deps.config.marketplaceContract).toString();\n } catch {\n // Cannot check — approve to be safe.\n }\n return { approvalNeeded: !approved, approve };\n }\n\n /** 1155 listing approval: `is_approved_for_all(owner, marketplace)`. */\n private async approval1155ForListing(\n owner: string,\n nftContract: string,\n ): Promise<{ approvalNeeded: boolean; approve: Call }> {\n const approve: Call = {\n contractAddress: nftContract,\n entrypoint: \"set_approval_for_all\",\n calldata: [this.deps.config.marketplace1155Contract, \"1\"],\n };\n let approved = false;\n try {\n const res = await this.deps.provider.callContract({\n contractAddress: nftContract,\n entrypoint: \"is_approved_for_all\",\n calldata: [owner, this.deps.config.marketplace1155Contract],\n });\n approved = BigInt(res[0]) === 1n;\n } catch {\n // Cannot check — approve to be safe.\n }\n return { approvalNeeded: !approved, approve };\n }\n\n /** Offers always approve the ERC-20 spend (no read). */\n private approvalForErc20(\n token: string,\n amountWei: string,\n marketplace: string,\n ): { approvalNeeded: boolean; approve: Call } {\n const u = cairo.uint256(amountWei);\n return {\n approvalNeeded: true,\n approve: {\n contractAddress: token,\n entrypoint: \"approve\",\n calldata: [marketplace, u.low.toString(), u.high.toString()],\n },\n };\n }\n\n /** The canonical Starknet order id = the contract-emitted `OrderCreated`\n * hash (`keys[1]`), which is exactly what the indexer stores. */\n private async orderRefFromReceipt(txHash: string): Promise<OrderRef> {\n const receipt = (await this.deps.provider.getTransactionReceipt(txHash)) as {\n events?: { from_address?: string; keys?: string[] }[];\n };\n const selector = hash.getSelectorFromName(\"OrderCreated\");\n for (const ev of receipt.events ?? []) {\n if (ev.keys?.[0] && BigInt(ev.keys[0]) === BigInt(selector)) {\n return num.toHex(ev.keys[1]);\n }\n }\n throw new Error(\"StarknetVenue.registerOrder: OrderCreated event not found in receipt\");\n }\n}\n","export const ADMIN_SCOPE = \"admin-api\";\n\n/** The wallet-signed authorization for a session key. */\nexport interface AdminGrant {\n wallet: string; // signer wallet address (the admin)\n chain: string; // \"STARKNET\"\n sessionPublicKey: string; // full uncompressed session pubkey hex (0x04…)\n sessionKeyHash: string; // felt: starknetKeccak(sessionPublicKey) — what the wallet signed\n scope: string; // ADMIN_SCOPE\n issuedAt: number; // unix seconds\n expiresAt: number; // unix seconds\n walletSig: string[]; // wallet's SNIP-12 signature over the grant\n}\n\nexport interface AdminSession {\n grant: AdminGrant;\n sessionPrivateKey: string; // stays client-side; never sent\n}\n\nexport interface AdminRequest {\n method: string; // upper-cased\n path: string; // backend path incl. query, e.g. \"/admin/tenants?x=1\"\n body: string; // raw request body or \"\"\n nonce: string; // \"0x\"-prefixed 128-bit hex, unique per request\n ts: number; // unix seconds\n}\n\n/** Compact session-key signature over adminRequestDigest. */\nexport type AdminRequestSig = string; // compact hex (r||s)\n","import { hash, num } from \"starknet\";\nimport type { AdminRequest } from \"./types.js\";\n\n/**\n * Canonical felt digest of a request — the SINGLE definition shared by signer\n * (portal/agent) and verifier (backend). Binds method+path+query+body+nonce+ts,\n * so a captured request cannot be retargeted or mutated without invalidating it.\n */\nexport function adminRequestDigest(req: AdminRequest): string {\n return hash.computePoseidonHashOnElements([\n hash.starknetKeccak(req.method.toUpperCase()),\n hash.starknetKeccak(req.path),\n hash.starknetKeccak(req.body ?? \"\"),\n num.toBigInt(req.nonce),\n BigInt(req.ts),\n ]);\n}\n","import { ec } from \"starknet\";\nimport { adminRequestDigest } from \"./digest.js\";\nimport type { AdminRequest, AdminRequestSig } from \"./types.js\";\n\n/** Sign a request with the session private key. */\nexport function signAdminRequest(sessionPrivateKey: string, req: AdminRequest): AdminRequestSig {\n const digest = adminRequestDigest(req);\n return ec.starkCurve.sign(digest, sessionPrivateKey).toCompactHex();\n}\n\n/** Verify a request signature against the full session public key. */\nexport function verifyAdminRequestSig(\n sessionPublicKey: string,\n req: AdminRequest,\n sig: AdminRequestSig,\n): boolean {\n try {\n return ec.starkCurve.verify(sig, adminRequestDigest(req), sessionPublicKey);\n } catch {\n return false;\n }\n}\n","import { ec, hash, num, encode } from \"starknet\";\nimport { ADMIN_SCOPE, type AdminGrant, type AdminSession } from \"./types.js\";\n\nexport interface AdminSessionTypedDataInput {\n sessionKeyHash: string;\n scope: string;\n issuedAt: number;\n expiresAt: number;\n chainId?: string;\n}\n\n/** The SNIP-12 typed data the wallet signs — rebuilt identically on the backend. */\nexport function buildAdminSessionTypedData(p: AdminSessionTypedDataInput) {\n return {\n types: {\n StarknetDomain: [\n { name: \"name\", type: \"shortstring\" },\n { name: \"version\", type: \"shortstring\" },\n { name: \"chainId\", type: \"shortstring\" },\n { name: \"revision\", type: \"shortstring\" },\n ],\n AdminSession: [\n { name: \"sessionKeyHash\", type: \"felt\" },\n { name: \"scope\", type: \"shortstring\" },\n { name: \"issuedAt\", type: \"felt\" },\n { name: \"expiresAt\", type: \"felt\" },\n ],\n },\n primaryType: \"AdminSession\",\n domain: { name: \"Medialane Admin\", version: \"1\", chainId: p.chainId ?? \"SN_MAIN\", revision: \"1\" },\n message: {\n sessionKeyHash: p.sessionKeyHash,\n scope: p.scope,\n issuedAt: String(p.issuedAt),\n expiresAt: String(p.expiresAt),\n },\n } as const;\n}\n\n/** felt commitment to a full session public key (fits in the signed message). */\nexport function sessionKeyHashOf(sessionPublicKey: string): string {\n return num.toHex(hash.starknetKeccak(sessionPublicKey));\n}\n\nexport interface CreateGrantOpts {\n wallet: string;\n chain?: string; // default \"STARKNET\"\n chainId?: string; // default \"SN_MAIN\"\n ttlSeconds?: number; // default 7200 (2h)\n now?: () => number; // injectable for tests\n}\n\n/**\n * Generate an ephemeral session keypair and have `signTypedData` (the connected\n * wallet's signMessage) sign the grant. The private key never leaves the caller.\n */\nexport async function createAdminSessionGrant(\n signTypedData: (data: ReturnType<typeof buildAdminSessionTypedData>) => Promise<string[]>,\n opts: CreateGrantOpts,\n): Promise<AdminSession> {\n const priv = ec.starkCurve.utils.randomPrivateKey();\n const sessionPrivateKey = \"0x\" + encode.buf2hex(priv);\n const sessionPublicKey = \"0x\" + encode.buf2hex(ec.starkCurve.getPublicKey(sessionPrivateKey, false));\n const sessionKeyHash = sessionKeyHashOf(sessionPublicKey);\n\n const nowSec = Math.floor((opts.now?.() ?? Date.now()) / 1000);\n const issuedAt = nowSec;\n const expiresAt = nowSec + (opts.ttlSeconds ?? 7200);\n\n const data = buildAdminSessionTypedData({ sessionKeyHash, scope: ADMIN_SCOPE, issuedAt, expiresAt, chainId: opts.chainId });\n const walletSig = await signTypedData(data);\n\n const grant: AdminGrant = {\n wallet: opts.wallet,\n chain: opts.chain ?? \"STARKNET\",\n sessionPublicKey,\n sessionKeyHash,\n scope: ADMIN_SCOPE,\n issuedAt,\n expiresAt,\n walletSig,\n };\n return { grant, sessionPrivateKey };\n}\n","import type { AdminGrant, AdminRequestSig, AdminSession } from \"./types.js\";\nimport { signAdminRequest } from \"./request.js\";\n\nexport const ADMIN_HEADERS = {\n grant: \"x-ml-admin-grant\",\n sig: \"x-ml-admin-sig\",\n nonce: \"x-ml-admin-nonce\",\n ts: \"x-ml-admin-ts\",\n} as const;\n\nfunction b64urlEncode(s: string): string {\n // browser + node/bun safe\n const bytes = new TextEncoder().encode(s);\n let bin = \"\"; for (const b of bytes) bin += String.fromCharCode(b);\n return btoa(bin).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=+$/, \"\");\n}\nfunction b64urlDecode(s: string): string {\n const pad = s.length % 4 ? \"=\".repeat(4 - (s.length % 4)) : \"\";\n const bin = atob(s.replace(/-/g, \"+\").replace(/_/g, \"/\") + pad);\n const bytes = Uint8Array.from(bin, (c) => c.charCodeAt(0));\n return new TextDecoder().decode(bytes);\n}\n\nexport function randomNonce(): string {\n const b = new Uint8Array(16); crypto.getRandomValues(b);\n let hex = \"\"; for (const x of b) hex += x.toString(16).padStart(2, \"0\");\n return \"0x\" + hex;\n}\n\n/** Build the four request headers from a session + (method, path, body). */\nexport function encodeAdminHeaders(\n session: AdminSession,\n reqInit: { method: string; path: string; body?: string; now?: () => number },\n): Record<string, string> {\n const nonce = randomNonce();\n const ts = Math.floor((reqInit.now?.() ?? Date.now()) / 1000);\n const req = { method: reqInit.method, path: reqInit.path, body: reqInit.body ?? \"\", nonce, ts };\n const sig: AdminRequestSig = signAdminRequest(session.sessionPrivateKey, req);\n return {\n [ADMIN_HEADERS.grant]: b64urlEncode(JSON.stringify(session.grant)),\n [ADMIN_HEADERS.sig]: sig,\n [ADMIN_HEADERS.nonce]: nonce,\n [ADMIN_HEADERS.ts]: String(ts),\n };\n}\n\nexport interface ParsedAdminHeaders {\n grant: AdminGrant;\n sig: string;\n nonce: string;\n ts: number;\n}\n\n/** Parse + shape-check the headers on the backend. Returns null if malformed. */\nexport function parseAdminHeaders(get: (name: string) => string | null | undefined): ParsedAdminHeaders | null {\n const rawGrant = get(ADMIN_HEADERS.grant);\n const sig = get(ADMIN_HEADERS.sig);\n const nonce = get(ADMIN_HEADERS.nonce);\n const tsRaw = get(ADMIN_HEADERS.ts);\n if (!rawGrant || !sig || !nonce || !tsRaw) return null;\n try {\n const grant = JSON.parse(b64urlDecode(rawGrant)) as AdminGrant;\n if (!grant.wallet || !grant.sessionPublicKey || !grant.sessionKeyHash ||\n !Array.isArray(grant.walletSig) || typeof grant.expiresAt !== \"number\") return null;\n const ts = Number(tsRaw);\n if (!Number.isFinite(ts)) return null;\n return { grant, sig, nonce, ts };\n } catch {\n return null;\n }\n}\n","import type { TypedData } from \"starknet\";\nimport type { RequestSiwsTokenArgs } from \"./types.js\";\n\nconst STORAGE_PREFIX = \"ml_siws_\";\n\nfunction decodeBase64url(str: string): string {\n const base64 = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padding = \"=\".repeat((4 - (base64.length % 4)) % 4);\n return atob(base64 + padding);\n}\n\nfunction readTokenExpiry(token: string): number | null {\n try {\n if (!token.startsWith(\"siws_\")) return null;\n const inner = token.slice(5);\n const dot = inner.lastIndexOf(\".\");\n if (dot === -1) return null;\n const data = JSON.parse(decodeBase64url(inner.slice(0, dot))) as { exp?: number };\n return typeof data.exp === \"number\" ? data.exp : null;\n } catch {\n return null;\n }\n}\n\nexport function getSiwsStorageKey(address: string): string {\n return `${STORAGE_PREFIX}${address.toLowerCase()}`;\n}\n\nexport function isSiwsTokenValid(token: string | null | undefined): token is string {\n if (!token?.startsWith(\"siws_\")) return false;\n const expiry = readTokenExpiry(token);\n return Boolean(expiry && expiry > Math.floor(Date.now() / 1000));\n}\n\n/** Browser-only (returns null server-side, same as a cache miss). */\nexport function getStoredSiwsToken(address: string): string | null {\n if (typeof window === \"undefined\") return null;\n const key = getSiwsStorageKey(address);\n const token = localStorage.getItem(key);\n if (isSiwsTokenValid(token)) return token;\n localStorage.removeItem(key);\n return null;\n}\n\n/** Browser-only (no-op server-side). */\nexport function storeSiwsToken(address: string, token: string): void {\n if (typeof window === \"undefined\") return;\n localStorage.setItem(getSiwsStorageKey(address), token);\n}\n\nexport function normalizeSiwsSignature(signature: unknown): string[] {\n if (Array.isArray(signature)) {\n return signature.map(String);\n }\n\n if (signature && typeof signature === \"object\") {\n const { r, s } = signature as { r?: unknown; s?: unknown };\n if (r !== undefined && s !== undefined) {\n return [String(r), String(s)];\n }\n }\n\n return [String(signature)];\n}\n\n/**\n * Request a nonce, sign it with `signer`, verify with the backend, and cache\n * the resulting token in localStorage (expiry-aware). Single source for the\n * SIWS client protocol — medialane-starknet and medialane-io both delegate\n * to this instead of keeping their own copies (see medialane-core/docs/specs/\n * 2026-06-30-remove-clerk-from-backend-design.md §IX).\n */\nexport async function requestSiwsToken({\n backendUrl,\n walletAddress,\n signer,\n}: RequestSiwsTokenArgs): Promise<string> {\n const base = backendUrl.replace(/\\/$/, \"\");\n\n const nonceRes = await fetch(`${base}/v1/auth/siws/nonce`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ walletAddress }),\n });\n\n if (!nonceRes.ok) {\n throw new Error(\"Failed to prepare wallet sign-in\");\n }\n\n const { nonce, typedData } = await nonceRes.json() as {\n nonce: string;\n typedData: TypedData;\n };\n\n const signature = normalizeSiwsSignature(await signer.signMessage(typedData));\n const verifyRes = await fetch(`${base}/v1/auth/siws/verify`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ walletAddress, nonce, signature }),\n });\n\n if (!verifyRes.ok) {\n // Backend distinguishes counterfactual-wallet errors with code\n // \"account_not_deployed\" + a user-facing `message` field so callers can\n // surface \"Check if your wallet is deployed on Starknet.\" instead of the\n // generic \"sign-in failed\" toast.\n let backendMessage: string | undefined;\n try {\n const body = await verifyRes.json() as { error?: string; message?: string };\n if (body?.message) backendMessage = body.message;\n } catch {\n // body wasn't JSON — fall through to generic message\n }\n throw new Error(backendMessage ?? \"Wallet sign-in failed\");\n }\n\n const { token } = await verifyRes.json() as { token?: string };\n if (!isSiwsTokenValid(token)) {\n throw new Error(\"Wallet sign-in returned an invalid token\");\n }\n\n storeSiwsToken(walletAddress, token);\n return token;\n}\n","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","import { extract, expand } from \"@noble/hashes/hkdf.js\";\nimport { sha256 } from \"@noble/hashes/sha2.js\";\nimport { ec, num } from \"starknet\";\n\nconst STARK_ORDER = 3618502788666131213697322783095070105526743751716087489154079457884512865583n;\n\n/**\n * Derive a MediaWallet owner key pair from a business-held secret and a\n * per-recipient identifier (typically their email) — deterministic, so the\n * business never has to store a per-recipient key: recompute it from the one\n * secret it already holds whenever it's needed (deploy time, handoff time),\n * then discard it. HKDF-SHA256(secret, recipientId), reduced mod the Stark\n * curve order to get a valid scalar (never zero).\n */\nexport function deriveOwnerKeyPair(\n secret: Uint8Array,\n recipientId: string,\n): { privateKey: string; publicKey: string } {\n const prk = extract(sha256, secret);\n const okm = expand(sha256, prk, new TextEncoder().encode(recipientId), 32);\n let scalar = BigInt(\"0x\" + Buffer.from(okm).toString(\"hex\")) % STARK_ORDER;\n if (scalar === 0n) scalar = 1n;\n const privateKey = num.toHex(scalar);\n const publicKey = ec.starkCurve.getStarkKey(privateKey);\n return { privateKey, publicKey };\n}\n","import { hash, num, type BigNumberish } from \"starknet\";\nimport { STARKNET_MEDIAWALLET_CLASS_HASH } from \"../../constants.js\";\n\n/**\n * Account constructor calldata for a Stark-curve owner and no guardian:\n * `serialize((Signer::Starknet(owner_pubkey), Option::None))` = `[0, owner_pubkey, 1]`.\n * Verified against `medialane-contracts/contracts/MediaWallet`'s factory\n * `build_constructor_calldata`.\n */\nexport function ownerConstructorCalldata(ownerPubkey: BigNumberish): string[] {\n return [\"0x0\", num.toHex(ownerPubkey), \"0x1\"];\n}\n\n/**\n * Counterfactual MediaWallet account address for `(ownerPubkey, salt)` —\n * standard Starknet derivation with `deploy_from_zero` (deployer address = 0).\n * With `salt = 0` the address is a pure function of the owner key, so it can\n * be computed before anything is deployed on-chain.\n */\nexport function computeAccountAddress(ownerPubkey: BigNumberish, salt: BigNumberish = 0): string {\n return hash.calculateContractAddressFromHash(\n num.toHex(salt),\n STARKNET_MEDIAWALLET_CLASS_HASH,\n ownerConstructorCalldata(ownerPubkey),\n 0,\n );\n}\n","import { hash, num, type BigNumberish, type Call } from \"starknet\";\n\nconst STARKNET_SIGNER_TYPE = \"0x537461726b6e6574205369676e6572\"; // \"Starknet Signer\" shortstring\n\n/**\n * GUID of a Stark-curve owner, matching MediaWallet's\n * `SignerTrait::into_guid` for `Signer::Starknet` — `poseidon_2(\"Starknet\n * Signer\", pubkey)`. `change_owners` removes owners by GUID, not by raw\n * pubkey.\n */\nexport function computeOwnerGuid(ownerPubkey: BigNumberish): string {\n return hash.computePoseidonHash(STARKNET_SIGNER_TYPE, num.toHex(ownerPubkey));\n}\n\n/**\n * The `change_owners` call that hands a provisioned account off to its real\n * owner: removes the business-derived interim owner (by GUID) and adds the\n * recipient's own new owner key (by pubkey) — one call, immediate, no\n * timelock. Must be signed by a *current* owner (the interim key) to\n * succeed on-chain.\n */\nexport function buildChangeOwnersCall(\n accountAddress: string,\n removeOwnerPubkey: BigNumberish,\n addOwnerPubkey: BigNumberish,\n): Call {\n const guidToRemove = computeOwnerGuid(removeOwnerPubkey);\n return {\n contractAddress: accountAddress,\n entrypoint: \"change_owners\",\n calldata: [\"0x1\", guidToRemove, \"0x1\", \"0x0\", num.toHex(addOwnerPubkey)],\n };\n}\n","import { num, type BigNumberish, type DeployAccountContractPayload } from \"starknet\";\nimport { STARKNET_MEDIAWALLET_CLASS_HASH } from \"../../constants.js\";\nimport { ownerConstructorCalldata, computeAccountAddress } from \"./account.js\";\n\n/**\n * The exact payload starknet.js's `Account.deployAccount()` expects — the\n * caller constructs a signing `Account` from the derived private key\n * (`deriveOwnerKeyPair`) against a **pre-funded** counterfactual address\n * (`computeAccountAddress`) and calls\n * `account.deployAccount(buildDeployAccountParams(ownerPubkey))` directly.\n * This function only builds the payload — it never signs or submits\n * anything itself.\n */\nexport function buildDeployAccountParams(\n ownerPubkey: BigNumberish,\n salt: BigNumberish = 0,\n): DeployAccountContractPayload {\n return {\n classHash: STARKNET_MEDIAWALLET_CLASS_HASH,\n constructorCalldata: ownerConstructorCalldata(ownerPubkey),\n addressSalt: num.toHex(salt),\n contractAddress: computeAccountAddress(ownerPubkey, salt),\n };\n}\n"]}
1
+ {"version":3,"sources":["../../src/chains.ts","../../src/fee/config.ts","../../src/config.ts","../../src/utils/address.ts","../../src/utils/retry.ts","../../src/api/client.ts","../../src/constants.ts","../../src/starknet/marketplace/errors.ts","../../src/utils/rpc.ts","../../src/starknet/marketplace/utils.ts","../../src/starknet/abis/ipMarketplace.ts","../../src/starknet/abis/popCollection.ts","../../src/starknet/abis/popFactory.ts","../../src/starknet/abis/dropCollection.ts","../../src/starknet/abis/dropFactory.ts","../../src/starknet/abis/medialane1155.ts","../../src/starknet/abis/ipCollection1155Factory.ts","../../src/starknet/abis/ipCollection1155.ts","../../src/starknet/abis/ipCollection.ts","../../src/starknet/abis/ipNft.ts","../../src/starknet/abis/creatorCoinFactory.ts","../../src/starknet/abis/ipTicketCollection.ts","../../src/starknet/abis/ipTicketCollectionFactory.ts","../../src/starknet/abis/ipClubFactory.ts","../../src/starknet/abis/ipClubCollection.ts","../../src/starknet/abis/ipSponsorship.ts","../../src/starknet/abis/ipGenesis.ts","../../src/starknet/services/pop.ts","../../src/starknet/fee/build-fee-call.ts","../../src/starknet/services/drop.ts","../../src/starknet/services/erc1155collection.ts","../../src/utils/token.ts","../../src/starknet/services/coinLaunchMath.ts","../../src/starknet/services/creatorCoin.ts","../../src/starknet/services/ticket.ts","../../src/starknet/services/club.ts","../../src/starknet/services/sponsorship.ts","../../src/starknet/client.ts","../../src/starknet/marketplace/orders.ts","../../src/starknet/marketplace1155/orders.ts","../../src/utils/bigint.ts","../../src/starknet/marketplace/signing.ts","../../src/starknet/marketplace/build.ts","../../src/starknet/marketplace1155/build.ts","../../src/starknet/venue.ts","../../src/starknet/admin-auth/types.ts","../../src/starknet/admin-auth/digest.ts","../../src/starknet/admin-auth/request.ts","../../src/starknet/admin-auth/grant.ts","../../src/starknet/admin-auth/headers.ts","../../src/starknet/siws/client.ts","../../src/starknet/bytearray.ts","../../src/starknet/business-provisioning/derive.ts","../../src/starknet/business-provisioning/account.ts","../../src/starknet/business-provisioning/handoff.ts","../../src/starknet/business-provisioning/deploy.ts"],"names":["z","hash","keccak_256","base58","base32","Contract","constants","RpcProvider","cairo","COIN_DECIMALS","uint256","CairoOption","CairoOptionVariant","_contractCache","TypedDataRevision","shortString","contractFor","registerPayload","num","ec","encode","extract","sha256","expand"],"mappings":"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","file":"index.cjs","sourcesContent":["// Single source of per-chain coordinates for Medialane's own services\n// (spec 2026-06-13 §3.1, Decision A). Keyed by CHAIN ALONE — Medialane is\n// mainnet-only, so there is no network axis (refines decisions.md D-9).\n\n/** Mirrors the backend Prisma `Chain` enum. */\nexport const CHAINS = [\"STARKNET\", \"ETHEREUM\", \"SOLANA\", \"BASE\", \"STELLAR\", \"BITCOIN\"] as const;\nexport type Chain = (typeof CHAINS)[number];\n\n/** Starknet coordinates of Medialane services + venues. All fields optional\n * because not every service exists on every chain. */\nexport interface StarknetCoordinates {\n rpcUrl: string;\n marketplace721?: `0x${string}`;\n marketplace721ClassHash?: `0x${string}`;\n marketplace721StartBlock?: number;\n marketplace1155?: `0x${string}`;\n marketplace1155ClassHash?: `0x${string}`;\n marketplace1155StartBlock?: number;\n collection721?: `0x${string}`;\n collection721StartBlock?: number;\n ipNftClassHash?: `0x${string}`;\n ipCollectionClassHash?: `0x${string}`;\n collection1155?: `0x${string}`;\n collection1155FactoryClassHash?: `0x${string}`;\n collection1155ClassHash?: `0x${string}`;\n collection1155StartBlock?: number;\n popFactory?: `0x${string}`;\n popCollectionClassHash?: `0x${string}`;\n dropFactory?: `0x${string}`;\n dropCollectionClassHash?: `0x${string}`;\n nftComments?: `0x${string}`;\n creatorCoinFactory?: `0x${string}`;\n creatorCoinEkuboLauncher?: `0x${string}`;\n creatorCoinClassHash?: `0x${string}`;\n creatorCoinFactoryClassHash?: `0x${string}`;\n creatorCoinStartBlock?: number;\n ekuboCore?: `0x${string}`;\n ipTicketsFactory?: `0x${string}`;\n ipTicketCollectionClassHash?: `0x${string}`;\n ipTicketsFactoryClassHash?: `0x${string}`;\n ipTicketsStartBlock?: number;\n ipClubFactory?: `0x${string}`;\n ipClubFactoryClassHash?: `0x${string}`;\n ipClubCollectionClassHash?: `0x${string}`;\n ipClubFactoryStartBlock?: number;\n ipSponsorship?: `0x${string}`;\n ipSponsorshipClassHash?: `0x${string}`;\n ipSponsorshipStartBlock?: number;\n mediaWalletClassHash?: `0x${string}`;\n}\n\n/** Coordinates per chain. Only STARKNET is populated today; adding a chain\n * means adding an entry here (litmus test, spec §7). */\n/** EVM coordinates — one shape for Ethereum and Base (same bytecode, two\n * chains). Populated at deploy time (federation Phase 4). */\nexport interface EvmCoordinates {\n rpcUrl: string;\n marketplace721?: `0x${string}`;\n marketplace721StartBlock?: number;\n marketplace1155?: `0x${string}`;\n marketplace1155StartBlock?: number;\n mipRegistry?: `0x${string}`;\n mipRegistryStartBlock?: number;\n mipEditionsRegistry?: `0x${string}`;\n mipEditionsRegistryStartBlock?: number;\n}\n\n/** Solana coordinates — base58 program ids. Populated at deploy time. */\nexport interface SolanaCoordinates {\n rpcUrl: string;\n mipCollectionsProgram?: string;\n marketplaceProgram?: string;\n startSlot?: number;\n}\n\n/** Stellar (Soroban) coordinates — strkey contract ids. Populated at deploy\n * time; the registry takes the collection WASM hash as a constructor arg. */\nexport interface StellarCoordinates {\n rpcUrl: string;\n mipRegistry?: string;\n marketplace?: string;\n collectionWasmHash?: string;\n startLedger?: number;\n}\n\n/** Per-chain coordinate shapes. Every chain is an equal entry — no chain is\n * privileged in core (chain-sovereignty I2/I4). */\nexport interface CoordinatesByChain {\n STARKNET?: StarknetCoordinates;\n ETHEREUM?: EvmCoordinates;\n BASE?: EvmCoordinates;\n SOLANA?: SolanaCoordinates;\n STELLAR?: StellarCoordinates;\n BITCOIN?: never;\n}\n\n/** @deprecated Renamed — use `StarknetCoordinates` (coordinates are per-chain-shaped). */\nexport type ChainCoordinates = StarknetCoordinates;\n\nconst COORDINATES: CoordinatesByChain = {\n STARKNET: {\n rpcUrl: \"https://rpc.starknet.lava.build\",\n marketplace721: \"0x03eda9a2b6ad90845a43591bac8083ebaf677d51fdf20f503b2c01889e3131fc\",\n marketplace721ClassHash: \"0x0700d9230d07e5203e27778c0dc70f9134d2b25bf319f7cf8348dc66a6923e90\",\n marketplace721StartBlock: 11198146,\n marketplace1155: \"0x07c4ce1c19ea48cc11135ed22b19ff745f5aec508c3828593002e4f76fdb1b38\",\n marketplace1155ClassHash: \"0x0242f5c388da7cee2d99e2a69453c8159bf927fbec4e797a3cfdcbbcb5b68328\",\n marketplace1155StartBlock: 11198267,\n collection721: \"0x0225c3ae09506b8d97adc39649ca740dad5aac195b7f5f0441cc1852947acaea\",\n collection721StartBlock: 11198496,\n ipNftClassHash: \"0x012d3ae40ba35c7e2be0946532dac60e48932447912fdf96b674da67c029b9cc\",\n ipCollectionClassHash: \"0x022155a1a130a40e57aac4b89c07fab3f616bc351b1270fc40f756b963afe8b4\",\n collection1155: \"0x015368976d46fae5bfa1c58600f641d5aa5dbbf53ebc6b78aa3922194aad3551\",\n collection1155FactoryClassHash: \"0x04eb6b419770f13bd191f120b9fc9ee624c0613ad4490062d293ca2016b3b1d2\",\n collection1155ClassHash: \"0x06cf3f5a2322dac35e07a6064a5b8802f19fda8aa3f4726f0cb7bc05dea1bd78\",\n collection1155StartBlock: 11199527,\n popFactory: \"0x00b32c34b427d8f346b5843ada6a37bd3368d879fc752cd52b68a87287f60111\",\n popCollectionClassHash: \"0x077c421686f10851872561953ea16898d933364b7f8937a5d7e2b1ba0a36263f\",\n dropFactory: \"0x03587f42e29daee1b193f6cf83bf8627908ed6632d0d83fcb26225c50547d800\",\n dropCollectionClassHash: \"0x00092e72cdb63067521e803aaf7d4101c3e3ce026ae6bc045ec4228027e58282\",\n nftComments: \"0x02cdac70c94447189af0389dfea63f4d5e4154ea8a563de288a5ab1c39e37843\",\n creatorCoinFactory: \"0x50fa807b5274079fb19374673d7bab6d2dc3af7e1032ea43eb6e44bcbde4c3c\",\n creatorCoinEkuboLauncher: \"0x4f7fceb5ac10f12f9544a09580592e5bdf1b7f04f48765eecf12286d8ccb7b4\",\n creatorCoinClassHash: \"0x743e4c8a5b96bb83bbf4af04edbbb482d5ece89eed9b729a79fb7df0cd0b6b6\",\n creatorCoinFactoryClassHash: \"0x51765926b1344c9a20b8cd4b5abe7b7d47375ae97cf6804db3ea5d4b05a9b55\",\n creatorCoinStartBlock: 10474544,\n ekuboCore: \"0x00000005dd3d2f4429af886cd1a3b08289dbcea99a294197e9eb43b0e0325b4b\",\n ipTicketsFactory: \"0x0767bf5b57e1f812463159b5ed683183e1b0c3f942b74871b5c6cd6a93c15e99\",\n ipTicketCollectionClassHash: \"0x0449e8eb7c117740d07cb8e0157d32c8ba3d19d1cfd2784ed5e139f5a1e04acc\",\n ipTicketsFactoryClassHash: \"0x04a739ac3a673ebd0db96bb24475600797c3ed34827e79517f9b2b1640276e6a\",\n ipTicketsStartBlock: 11933694,\n ipClubFactory: \"0x06a0b0be16d70c78f2e18119dbf90e5911cbfd5d8d484bc555dc61d96f56a2b9\",\n ipClubFactoryClassHash: \"0x05d9d431bd3532b1fa4d5bab572f49c5ad8034ee3cc83951aa41ae82c9cad266\",\n ipClubCollectionClassHash: \"0x05b8477c72e6bf0cf64967d71155021fd4d77d9a57e8805c6b40709121c002c5\",\n ipClubFactoryStartBlock: 11928775,\n // v3 redesign (deployed 2026-07-15): single contract is both the\n // offer/bid/proposal registry and the license collection (embeds\n // ERC721Component directly) — no separate receipt contract, no\n // set_minter bootstrap. Supersedes the 2026-07-02 v2 address, which had\n // zero offers/licenses ever issued (clean cutover, no reclassification).\n ipSponsorship: \"0x03729ebe0fedf29ec97fca34db09174772af7f870af26a26e024a61040143e5c\",\n ipSponsorshipClassHash: \"0x0626daac2ed7e2bf630ef5b10104b3202db1559216c0c1a504c0e99be2fbfec3\",\n ipSponsorshipStartBlock: 11896456,\n mediaWalletClassHash: \"0x014b210c7d47392691144bafecdca3c6c7791cc295ea305988da0a724c05ac31\",\n },\n};\n\nexport function getCoordinates(chain: \"STARKNET\"): StarknetCoordinates;\nexport function getCoordinates(chain: \"ETHEREUM\" | \"BASE\"): EvmCoordinates;\nexport function getCoordinates(chain: \"SOLANA\"): SolanaCoordinates;\nexport function getCoordinates(chain: \"STELLAR\"): StellarCoordinates;\nexport function getCoordinates(\n chain: Chain,\n): StarknetCoordinates | EvmCoordinates | SolanaCoordinates | StellarCoordinates;\nexport function getCoordinates(\n chain: Chain,\n): StarknetCoordinates | EvmCoordinates | SolanaCoordinates | StellarCoordinates {\n const c = COORDINATES[chain];\n if (!c) throw new Error(`No coordinates configured for chain \"${chain}\"`);\n return c;\n}\n\nexport const DEFAULT_CHAIN: Chain = \"STARKNET\";\n\n/** Typed Starknet coordinates for Starknet-only modules; throws when the\n * client is scoped to another chain. */\nexport function getStarknetCoordinates(chain: Chain): StarknetCoordinates {\n if (chain !== \"STARKNET\") {\n throw new Error(`This module is Starknet-only (client chain: \"${chain}\")`);\n }\n return getCoordinates(\"STARKNET\");\n}\n","import { z } from \"zod\";\n\nexport const FeeConfigSchema = z.object({\n enabled: z.boolean().default(true),\n fundAddress: z.string().min(1).optional(),\n marketplaceBps: z.number().int().min(0).max(10000).default(100),\n launchpadBps: z.number().int().min(0).max(10000).default(100),\n});\n\nexport type FeeConfig = z.input<typeof FeeConfigSchema>;\n\nexport interface ResolvedFeeConfig {\n enabled: boolean;\n fundAddress: string | undefined;\n marketplaceBps: number;\n launchpadBps: number;\n}\n\nexport function resolveFeeConfig(raw: FeeConfig | undefined): ResolvedFeeConfig {\n const p = FeeConfigSchema.parse(raw ?? {});\n return {\n enabled: p.enabled,\n fundAddress: p.fundAddress,\n marketplaceBps: p.marketplaceBps,\n launchpadBps: p.launchpadBps,\n };\n}\n","import { z } from \"zod\";\nimport { CHAINS, getCoordinates, DEFAULT_CHAIN, type Chain } from \"./chains.js\";\nimport type { RetryOptions } from \"./utils/retry.js\";\nimport { FeeConfigSchema, resolveFeeConfig, type ResolvedFeeConfig } from \"./fee/index.js\";\n\nexport const MedialaneConfigSchema = z.object({\n // Chain-scoped client (spec 2026-06-13 Decision B): one client per chain,\n // coordinates resolved from the registry. Replaces the removed `network` axis.\n chain: z.enum(CHAINS).default(DEFAULT_CHAIN),\n rpcUrl: z.string().url().optional(),\n backendUrl: z.string().url().optional(),\n apiKey: z.string().optional(),\n // Per-contract overrides remain for tests/forks; default from the registry.\n marketplace721Contract: z.string().optional(),\n marketplaceContract: z.string().optional(),\n marketplace1155Contract: z.string().optional(),\n collection721Contract: z.string().optional(),\n collectionContract: z.string().optional(),\n collection1155Contract: z.string().optional(),\n retryOptions: z.object({\n maxAttempts: z.number().int().min(1).max(10).optional(),\n baseDelayMs: z.number().int().min(0).optional(),\n maxDelayMs: z.number().int().min(0).optional(),\n }).optional(),\n feeConfig: FeeConfigSchema.optional(),\n});\n\nexport type MedialaneConfig = z.input<typeof MedialaneConfigSchema>;\n\nexport interface ResolvedConfig {\n chain: Chain;\n rpcUrl: string;\n backendUrl: string | undefined;\n apiKey: string | undefined;\n marketplace721Contract: string;\n marketplaceContract: string;\n marketplace1155Contract: string;\n collection721Contract: string;\n collectionContract: string;\n collection1155Contract: string;\n retryOptions?: RetryOptions;\n feeConfig: ResolvedFeeConfig;\n}\n\nexport function resolveConfig(raw: MedialaneConfig): ResolvedConfig {\n const parsed = MedialaneConfigSchema.parse(raw);\n const coords = getCoordinates(parsed.chain);\n // The resolved contract fields are the Starknet module surface; on other\n // chains they stay unset and the per-chain adapters resolve their own\n // coordinates.\n const sn = (parsed.chain === \"STARKNET\" ? coords : {}) as import(\"./chains.js\").StarknetCoordinates;\n\n const marketplace721Contract =\n parsed.marketplace721Contract ?? parsed.marketplaceContract ?? sn.marketplace721!;\n const collection721Contract =\n parsed.collection721Contract ?? parsed.collectionContract ?? sn.collection721!;\n\n return {\n chain: parsed.chain,\n rpcUrl: parsed.rpcUrl ?? coords.rpcUrl,\n backendUrl: parsed.backendUrl,\n apiKey: parsed.apiKey,\n marketplace721Contract,\n marketplaceContract: marketplace721Contract,\n marketplace1155Contract: parsed.marketplace1155Contract ?? sn.marketplace1155!,\n collection721Contract,\n collectionContract: collection721Contract,\n collection1155Contract: parsed.collection1155Contract ?? sn.collection1155!,\n retryOptions: parsed.retryOptions,\n feeConfig: resolveFeeConfig(parsed.feeConfig),\n };\n}\n","import { keccak_256 } from \"@noble/hashes/sha3.js\";\nimport { base32, base58 } from \"@scure/base\";\nimport type { Chain } from \"../chains.js\";\n\n/**\n * Normalize an address to its chain's canonical form. The single source of\n * address normalization across Medialane (07-identity §I; spec 2026-06-13 §3.2).\n * `medialane-backend` re-exports this; do not maintain a parallel copy.\n *\n * - STARKNET: 0x-prefixed 64-char lowercase hex (felt, zero-padded).\n * - ETHEREUM / BASE: EIP-55 mixed-case checksum.\n * - SOLANA: base58, validated as a 32-byte public key, returned verbatim.\n * - STELLAR: strkey (G… account / C… contract), CRC16-XModem-verified,\n * canonical uppercase.\n * - BITCOIN: not implemented — a non-foreclosed seam, gated on a future\n * Bitcoin fork (chain-sovereignty §2); never a built path today.\n */\nexport function normalizeAddress(chain: Chain, address: string): string {\n switch (chain) {\n case \"STARKNET\":\n return normalizeStarknet(address);\n case \"ETHEREUM\":\n case \"BASE\":\n return normalizeEvm(address);\n case \"SOLANA\":\n return normalizeSolana(address);\n case \"STELLAR\":\n return normalizeStellar(address);\n case \"BITCOIN\":\n throw new Error(\"BITCOIN address normalization not implemented\");\n }\n}\n\nfunction normalizeStarknet(address: string): string {\n try {\n const hex = BigInt(address).toString(16);\n return \"0x\" + hex.padStart(64, \"0\").toLowerCase();\n } catch {\n throw new Error(`Invalid STARKNET address: \"${address}\"`);\n }\n}\n\nfunction normalizeEvm(address: string): string {\n const m = /^0x([0-9a-fA-F]{40})$/.exec(address);\n if (!m) throw new Error(`Invalid ETHEREUM/BASE address: \"${address}\"`);\n const lower = m[1].toLowerCase();\n // EIP-55: keccak256 of the lowercase hex (ASCII, no 0x); uppercase the i-th\n // hex char when the i-th nibble of the hash is >= 8.\n const hash = keccak_256(new TextEncoder().encode(lower));\n let out = \"0x\";\n for (let i = 0; i < 40; i++) {\n const nibble = (hash[i >> 1]! >> (i % 2 === 0 ? 4 : 0)) & 0xf;\n out += nibble >= 8 ? lower[i]!.toUpperCase() : lower[i];\n }\n return out;\n}\n\nfunction normalizeSolana(address: string): string {\n try {\n const bytes = base58.decode(address);\n if (bytes.length !== 32) throw new Error(\"not a 32-byte key\");\n return address; // base58 is canonical and case-sensitive — return as-is\n } catch {\n throw new Error(`Invalid SOLANA address: \"${address}\"`);\n }\n}\n\n/** Stellar strkey version bytes: 'G' account (6<<3), 'C' contract (2<<3). */\nconst STELLAR_VERSION_BYTES = new Set([6 << 3, 2 << 3]);\n\nfunction normalizeStellar(address: string): string {\n const upper = address.toUpperCase();\n if (!/^[GC][A-Z2-7]{55}$/.test(upper)) {\n throw new Error(`Invalid STELLAR address: \"${address}\"`);\n }\n let decoded: Uint8Array;\n try {\n decoded = base32.decode(upper);\n } catch {\n throw new Error(`Invalid STELLAR address: \"${address}\"`);\n }\n if (decoded.length !== 35 || !STELLAR_VERSION_BYTES.has(decoded[0]!)) {\n throw new Error(`Invalid STELLAR address: \"${address}\"`);\n }\n const payload = decoded.subarray(0, 33);\n const checksum = decoded[33]! | (decoded[34]! << 8);\n if (crc16xmodem(payload) !== checksum) {\n throw new Error(`Invalid STELLAR address: \"${address}\"`);\n }\n return upper;\n}\n\n/** CRC16-XModem (poly 0x1021, init 0x0000) — the strkey checksum. */\nfunction crc16xmodem(bytes: Uint8Array): number {\n let crc = 0;\n for (const byte of bytes) {\n crc ^= byte << 8;\n for (let i = 0; i < 8; i++) {\n crc = crc & 0x8000 ? ((crc << 1) ^ 0x1021) & 0xffff : (crc << 1) & 0xffff;\n }\n }\n return crc;\n}\n\n/**\n * Normalize a felt/hash (tx hash, order hash) to 0x-prefixed 64-char lowercase\n * hex. Starknet-shaped; chain-scoped at call sites that handle other chains'\n * hashes.\n */\nexport function normalizeHash(hash: string): string {\n try {\n const hex = BigInt(hash).toString(16);\n return \"0x\" + hex.padStart(64, \"0\").toLowerCase();\n } catch {\n throw new Error(`Invalid hash: \"${hash}\"`);\n }\n}\n\n/** Shorten an address to \"0x1234...abcd\" form, normalized for its chain. */\nexport function shortenAddress(chain: Chain, address: string, chars = 4): string {\n const norm = normalizeAddress(chain, address);\n return `${norm.slice(0, chars + 2)}...${norm.slice(-chars)}`;\n}\n","import { MedialaneApiError } from \"../api/client.js\";\n\nexport interface RetryOptions {\n maxAttempts?: number;\n baseDelayMs?: number;\n maxDelayMs?: number;\n}\n\nconst DEFAULT_MAX_ATTEMPTS = 3;\nconst DEFAULT_BASE_DELAY_MS = 300;\nconst DEFAULT_MAX_DELAY_MS = 5000;\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport async function withRetry<T>(\n fn: () => Promise<T>,\n opts?: RetryOptions\n): Promise<T> {\n const maxAttempts = opts?.maxAttempts ?? DEFAULT_MAX_ATTEMPTS;\n const baseDelayMs = opts?.baseDelayMs ?? DEFAULT_BASE_DELAY_MS;\n const maxDelayMs = opts?.maxDelayMs ?? DEFAULT_MAX_DELAY_MS;\n\n let lastError: unknown;\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n try {\n return await fn();\n } catch (err) {\n lastError = err;\n\n // Don't retry 4xx client errors — EXCEPT 429 (rate limited), which is\n // transient and clears with a short wait.\n if (err instanceof MedialaneApiError && err.status < 500 && err.status !== 429) {\n throw err;\n }\n\n // Retry on 5xx, 429, or network errors (TypeError from fetch).\n const isRetryable =\n (err instanceof MedialaneApiError && (err.status >= 500 || err.status === 429)) ||\n err instanceof TypeError;\n\n if (!isRetryable || attempt === maxAttempts - 1) {\n throw err;\n }\n\n // Prefer the server's Retry-After when it gave one (429 rate limits),\n // otherwise exponential backoff with jitter. Either way capped at\n // maxDelayMs so a client never hangs on a long server-asked wait.\n const retryAfterMs = err instanceof MedialaneApiError ? err.retryAfterMs : undefined;\n const backoff = baseDelayMs * Math.pow(2, attempt) + Math.random() * baseDelayMs;\n const delay = Math.min(retryAfterMs ?? backoff, maxDelayMs);\n await sleep(delay);\n }\n }\n\n throw lastError;\n}\n","import { normalizeAddress } from \"../utils/address.js\";\nimport type { Chain } from \"../chains.js\";\nimport type { ChainFilter } from \"../types/api.js\";\nimport type { MedialaneErrorCode } from \"../types/errors.js\";\nimport { withRetry, type RetryOptions } from \"../utils/retry.js\";\nimport type {\n ApiOrder,\n ApiOrdersQuery,\n ApiCounterOffersQuery,\n ApiToken,\n ApiCollection,\n ApiCoin,\n ApiUserRewards,\n ApiRewardsLeaderboardEntry,\n ApiRewardsConfig,\n ApiRewardsBatchEntry,\n ApiPointEvent,\n ApiCoinsQuery,\n ApiCollectionProfile,\n ApiCreatorProfile,\n ApiCreatorListResult,\n ApiCollectionClaim,\n ApiCollectionSlugClaim,\n ApiBusinessProvisioning,\n ApiWalletActivity,\n ApiUserWallet,\n ApiAppSource,\n ApiChain,\n ApiActivity,\n ApiActivitiesQuery,\n ApiComment,\n ApiRemixOffer,\n ApiRemixOffersQuery,\n ApiPublicRemix,\n ApiSearchResult,\n ApiIntent,\n ApiIntentCreated,\n ApiMetadataSignedUrl,\n ApiMetadataUpload,\n ApiPortalMe,\n ApiPortalKey,\n ApiPortalKeyCreated,\n ApiUsageDay,\n ApiWebhookEndpoint,\n ApiWebhookCreated,\n CreateWebhookParams,\n CreateListingIntentParams,\n MakeOfferIntentParams,\n FulfillOrderIntentParams,\n CancelOrderIntentParams,\n CreateMintIntentParams,\n CreateCollectionIntentParams,\n CreateCounterOfferIntentParams,\n CreateRemixOfferParams,\n AutoRemixOfferParams,\n ConfirmSelfRemixParams,\n ConfirmRemixOfferParams,\n ApiResponse,\n CollectionSort,\n CollectionTokensSort,\n PopClaimStatus,\n PopBatchEligibilityItem,\n DropMintStatus,\n} from \"../types/api.js\";\n\nfunction deriveErrorCode(status: number): MedialaneErrorCode {\n if (status === 404) return \"TOKEN_NOT_FOUND\";\n if (status === 429) return \"RATE_LIMITED\";\n if (status === 410) return \"INTENT_EXPIRED\";\n if (status === 401 || status === 403) return \"UNAUTHORIZED\";\n if (status === 400) return \"INVALID_PARAMS\";\n return \"UNKNOWN\";\n}\n\nexport class MedialaneApiError extends Error {\n readonly code: MedialaneErrorCode;\n constructor(\n public readonly status: number,\n message: string,\n /** Parsed `Retry-After` (ms) when the server sent one — used by withRetry on 429. */\n public readonly retryAfterMs?: number,\n ) {\n super(message);\n this.name = \"MedialaneApiError\";\n this.code = deriveErrorCode(status);\n }\n}\n\n/** Parse an HTTP `Retry-After` header (delta-seconds or HTTP-date) to milliseconds. */\nexport function parseRetryAfter(value: string | null): number | undefined {\n if (!value) return undefined;\n const seconds = Number(value);\n if (Number.isFinite(seconds)) return Math.max(0, seconds * 1000);\n const date = Date.parse(value);\n if (!Number.isNaN(date)) return Math.max(0, date - Date.now());\n return undefined;\n}\n\nexport class ApiClient {\n private readonly baseHeaders: Record<string, string>;\n private readonly retryOptions: RetryOptions | undefined;\n\n constructor(\n private readonly baseUrl: string,\n apiKey?: string,\n retryOptions?: RetryOptions,\n private readonly chain: Chain = \"STARKNET\"\n ) {\n this.baseHeaders = apiKey ? { \"x-api-key\": apiKey } : {};\n this.retryOptions = retryOptions;\n }\n\n /** Normalize an address for this client's chain (chain-scoped — Decision B). */\n private addr(a: string): string {\n return normalizeAddress(this.chain, a);\n }\n\n /**\n * The one HTTP path for the whole client: base headers (incl. x-api-key),\n * JSON error unwrapping, and `withRetry` (5xx/network only — 4xx never\n * retried). `allow404`/`allow403` turn those statuses into a `null` result\n * instead of a throw, for \"profile may not exist\" / \"not a holder\" reads —\n * so no method needs to hand-roll `fetch` to get that behavior.\n */\n private async request<T>(\n path: string,\n init?: RequestInit,\n opts?: { allow404?: boolean; allow403?: boolean },\n ): Promise<T> {\n const url = `${this.baseUrl.replace(/\\/$/, \"\")}${path}`;\n const headers: Record<string, string> = { ...this.baseHeaders };\n if (!(init?.body instanceof FormData)) {\n headers[\"Content-Type\"] = \"application/json\";\n }\n const allowed = (status: number): boolean =>\n (opts?.allow404 === true && status === 404) || (opts?.allow403 === true && status === 403);\n\n const res = await withRetry(async () => {\n const response = await fetch(url, {\n ...init,\n headers: { ...headers, ...(init?.headers as Record<string, string> | undefined) },\n });\n if (!response.ok && !allowed(response.status)) {\n const text = await response.text().catch(() => response.statusText);\n let message = text;\n try {\n const body = JSON.parse(text) as { error?: string };\n if (body.error) message = body.error;\n } catch {\n // use raw text\n }\n throw new MedialaneApiError(response.status, message, parseRetryAfter(response.headers.get(\"retry-after\")));\n }\n return response;\n }, this.retryOptions);\n\n if (allowed(res.status)) return null as T;\n return res.json() as Promise<T>;\n }\n\n private get<T>(path: string): Promise<T> {\n return this.request<T>(path, { method: \"GET\" });\n }\n\n private post<T>(path: string, body: unknown): Promise<T> {\n return this.request<T>(path, { method: \"POST\", body: JSON.stringify(body) });\n }\n\n private patch<T>(path: string, body: unknown): Promise<T> {\n return this.request<T>(path, { method: \"PATCH\", body: JSON.stringify(body) });\n }\n\n private del<T>(path: string): Promise<T> {\n return this.request<T>(path, { method: \"DELETE\" });\n }\n\n /** Bearer header for Clerk-JWT-authenticated routes. */\n private bearer(clerkToken: string): Record<string, string> {\n return { Authorization: `Bearer ${clerkToken}` };\n }\n\n // ─── Orders ────────────────────────────────────────────────────────────────\n\n getOrders(query: ApiOrdersQuery = {}): Promise<ApiResponse<ApiOrder[]>> {\n const params = new URLSearchParams();\n if (query.status) params.set(\"status\", query.status);\n if (query.collection) params.set(\"collection\", query.collection);\n if (query.currency) params.set(\"currency\", query.currency);\n if (query.sort) params.set(\"sort\", query.sort);\n if (query.page !== undefined) params.set(\"page\", String(query.page));\n if (query.limit !== undefined) params.set(\"limit\", String(query.limit));\n if (query.offerer) params.set(\"offerer\", this.addr(query.offerer));\n if (query.minPrice) params.set(\"minPrice\", query.minPrice);\n if (query.maxPrice) params.set(\"maxPrice\", query.maxPrice);\n if (query.chain) params.set(\"chain\", query.chain);\n const qs = params.toString();\n return this.get<ApiResponse<ApiOrder[]>>(`/v1/orders${qs ? `?${qs}` : \"\"}`);\n }\n\n getOrder(orderHash: string): Promise<ApiResponse<ApiOrder>> {\n return this.get<ApiResponse<ApiOrder>>(`/v1/orders/${orderHash}`);\n }\n\n getActiveOrdersForToken(contract: string, tokenId: string): Promise<ApiResponse<ApiOrder[]>> {\n return this.get<ApiResponse<ApiOrder[]>>(`/v1/orders/token/${this.addr(contract)}/${tokenId}`);\n }\n\n getOrdersByUser(address: string, page = 1, limit = 20): Promise<ApiResponse<ApiOrder[]>> {\n return this.get<ApiResponse<ApiOrder[]>>(\n `/v1/orders/user/${this.addr(address)}?page=${page}&limit=${limit}`\n );\n }\n\n // ─── Tokens ────────────────────────────────────────────────────────────────\n\n getToken(contract: string, tokenId: string, wait = false): Promise<ApiResponse<ApiToken>> {\n return this.get<ApiResponse<ApiToken>>(\n `/v1/tokens/${contract}/${tokenId}${wait ? \"?wait=true\" : \"\"}`\n );\n }\n\n getTokensByOwner(address: string, page = 1, limit = 20): Promise<ApiResponse<ApiToken[]>> {\n return this.get<ApiResponse<ApiToken[]>>(\n `/v1/tokens/owned/${this.addr(address)}?page=${page}&limit=${limit}`\n );\n }\n\n getTokenHistory(\n contract: string,\n tokenId: string,\n page = 1,\n limit = 20\n ): Promise<ApiResponse<ApiActivity[]>> {\n return this.get<ApiResponse<ApiActivity[]>>(\n `/v1/tokens/${contract}/${tokenId}/history?page=${page}&limit=${limit}`\n );\n }\n\n // ─── Collections ───────────────────────────────────────────────────────────\n\n getCollections(\n page = 1,\n limit = 20,\n isKnown?: boolean,\n sort?: CollectionSort,\n service?: string,\n chain?: ChainFilter\n ): Promise<ApiResponse<ApiCollection[]>> {\n const params = new URLSearchParams({ page: String(page), limit: String(limit) });\n if (isKnown !== undefined) params.set(\"isKnown\", String(isKnown));\n if (sort) params.set(\"sort\", sort);\n if (service) params.set(\"service\", service);\n if (chain) params.set(\"chain\", chain);\n return this.get<ApiResponse<ApiCollection[]>>(`/v1/collections?${params}`);\n }\n\n getCollectionsByOwner(owner: string, page = 1, limit = 50): Promise<ApiResponse<ApiCollection[]>> {\n const params = new URLSearchParams({ owner: this.addr(owner), page: String(page), limit: String(limit) });\n return this.get<ApiResponse<ApiCollection[]>>(`/v1/collections?${params}`);\n }\n\n getCollection(contract: string): Promise<ApiResponse<ApiCollection>> {\n return this.get<ApiResponse<ApiCollection>>(`/v1/collections/${this.addr(contract)}`);\n }\n\n getCollectionTokens(\n contract: string,\n page = 1,\n limit = 20,\n sort: CollectionTokensSort = \"recent\"\n ): Promise<ApiResponse<ApiToken[]>> {\n return this.get<ApiResponse<ApiToken[]>>(\n `/v1/collections/${this.addr(contract)}/tokens?page=${page}&limit=${limit}&sort=${sort}`\n );\n }\n\n // ─── Activities ────────────────────────────────────────────────────────────\n\n getActivities(query: ApiActivitiesQuery = {}): Promise<ApiResponse<ApiActivity[]>> {\n const params = new URLSearchParams();\n if (query.type) params.set(\"type\", query.type);\n if (query.page !== undefined) params.set(\"page\", String(query.page));\n if (query.limit !== undefined) params.set(\"limit\", String(query.limit));\n if (query.chain) params.set(\"chain\", query.chain);\n const qs = params.toString();\n return this.get<ApiResponse<ApiActivity[]>>(`/v1/activities${qs ? `?${qs}` : \"\"}`);\n }\n\n getActivitiesByAddress(\n address: string,\n page = 1,\n limit = 20\n ): Promise<ApiResponse<ApiActivity[]>> {\n return this.get<ApiResponse<ApiActivity[]>>(\n `/v1/activities/${this.addr(address)}?page=${page}&limit=${limit}`\n );\n }\n\n // ─── Comments ──────────────────────────────────────────────────────────────\n\n getTokenComments(\n contract: string,\n tokenId: string,\n opts: { page?: number; limit?: number } = {}\n ): Promise<ApiResponse<ApiComment[]>> {\n const params = new URLSearchParams();\n if (opts.page !== undefined) params.set(\"page\", String(opts.page));\n if (opts.limit !== undefined) params.set(\"limit\", String(opts.limit));\n const qs = params.toString();\n return this.get<ApiResponse<ApiComment[]>>(\n `/v1/tokens/${this.addr(contract)}/${tokenId}/comments${qs ? `?${qs}` : \"\"}`\n );\n }\n\n // ─── Search ────────────────────────────────────────────────────────────────\n\n search(q: string, limit = 10, chain?: ChainFilter): Promise<ApiResponse<ApiSearchResult> & { query: string }> {\n const params = new URLSearchParams({ q, limit: String(limit) });\n if (chain) params.set(\"chain\", chain);\n return this.get<ApiResponse<ApiSearchResult> & { query: string }>(\n `/v1/search?${params.toString()}`\n );\n }\n\n // ─── Intents ───────────────────────────────────────────────────────────────\n\n createListingIntent(\n params: CreateListingIntentParams\n ): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/listing\", params);\n }\n\n createOfferIntent(\n params: MakeOfferIntentParams\n ): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/offer\", params);\n }\n\n createFulfillIntent(\n params: FulfillOrderIntentParams\n ): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/fulfill\", params);\n }\n\n createCancelIntent(\n params: CancelOrderIntentParams\n ): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/cancel\", params);\n }\n\n getIntent(id: string): Promise<ApiResponse<ApiIntent>> {\n return this.get<ApiResponse<ApiIntent>>(`/v1/intents/${id}`);\n }\n\n submitIntentSignature(id: string, signature: string[]): Promise<ApiResponse<ApiIntent>> {\n return this.patch<ApiResponse<ApiIntent>>(`/v1/intents/${id}/signature`, { signature });\n }\n\n confirmIntent(id: string, txHash: string): Promise<ApiResponse<ApiIntent>> {\n return this.patch<ApiResponse<ApiIntent>>(`/v1/intents/${id}/confirm`, { txHash });\n }\n\n createMintIntent(params: CreateMintIntentParams): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/mint\", params);\n }\n\n createCollectionIntent(params: CreateCollectionIntentParams): Promise<ApiResponse<ApiIntentCreated>> {\n return this.post<ApiResponse<ApiIntentCreated>>(\"/v1/intents/create-collection\", params);\n }\n\n /**\n * Create a counter-offer intent. The seller proposes a new price in response\n * to a buyer's active bid. clerkToken is optional — the endpoint authenticates\n * via the tenant API key; pass a Clerk JWT only if your backend requires it.\n */\n createCounterOfferIntent(\n params: CreateCounterOfferIntentParams,\n clerkToken?: string\n ): Promise<ApiResponse<ApiIntentCreated>> {\n const extraHeaders: Record<string, string> = clerkToken ? { \"Authorization\": `Bearer ${clerkToken}` } : {};\n return this.request<ApiResponse<ApiIntentCreated>>(\"/v1/intents/counter-offer\", {\n method: \"POST\",\n body: JSON.stringify(params),\n headers: extraHeaders,\n });\n }\n\n /**\n * Fetch counter-offers. Pass `originalOrderHash` (buyer view) or\n * `sellerAddress` (seller view) — at least one is required.\n */\n getCounterOffers(query: ApiCounterOffersQuery): Promise<ApiResponse<ApiOrder[]>> {\n const params = new URLSearchParams();\n if (query.originalOrderHash) params.set(\"originalOrderHash\", query.originalOrderHash);\n if (query.sellerAddress) params.set(\"sellerAddress\", query.sellerAddress);\n if (query.page !== undefined) params.set(\"page\", String(query.page));\n if (query.limit !== undefined) params.set(\"limit\", String(query.limit));\n return this.get<ApiResponse<ApiOrder[]>>(`/v1/orders/counter-offers?${params}`);\n }\n\n // ─── Metadata ──────────────────────────────────────────────────────────────\n\n getMetadataSignedUrl(): Promise<ApiResponse<ApiMetadataSignedUrl>> {\n return this.get<ApiResponse<ApiMetadataSignedUrl>>(\"/v1/metadata/signed-url\");\n }\n\n uploadMetadata(metadata: Record<string, unknown>): Promise<ApiResponse<ApiMetadataUpload>> {\n return this.post<ApiResponse<ApiMetadataUpload>>(\"/v1/metadata/upload\", metadata);\n }\n\n resolveMetadata(uri: string): Promise<ApiResponse<unknown>> {\n const params = new URLSearchParams({ uri });\n return this.get<ApiResponse<unknown>>(`/v1/metadata/resolve?${params.toString()}`);\n }\n\n uploadFile(file: File): Promise<ApiResponse<ApiMetadataUpload>> {\n const formData = new FormData();\n formData.append(\"file\", file);\n // Content-Type is intentionally omitted — request() detects FormData and\n // lets the runtime set multipart/form-data with the correct boundary.\n return this.request<ApiResponse<ApiMetadataUpload>>(\"/v1/metadata/upload-file\", {\n method: \"POST\",\n body: formData,\n });\n }\n\n // ─── Portal (tenant self-service) ──────────────────────────────────────────\n\n getMe(): Promise<ApiResponse<ApiPortalMe>> {\n return this.get<ApiResponse<ApiPortalMe>>(\"/v1/portal/me\");\n }\n\n getApiKeys(): Promise<ApiResponse<ApiPortalKey[]>> {\n return this.get<ApiResponse<ApiPortalKey[]>>(\"/v1/portal/keys\");\n }\n\n createApiKey(label?: string): Promise<ApiResponse<ApiPortalKeyCreated>> {\n return this.post<ApiResponse<ApiPortalKeyCreated>>(\"/v1/portal/keys\", label ? { label } : {});\n }\n\n deleteApiKey(id: string): Promise<ApiResponse<{ id: string; status: string }>> {\n return this.del<ApiResponse<{ id: string; status: string }>>(`/v1/portal/keys/${id}`);\n }\n\n getUsage(): Promise<ApiResponse<ApiUsageDay[]>> {\n return this.get<ApiResponse<ApiUsageDay[]>>(\"/v1/portal/usage\");\n }\n\n getWebhooks(): Promise<ApiResponse<ApiWebhookEndpoint[]>> {\n return this.get<ApiResponse<ApiWebhookEndpoint[]>>(\"/v1/portal/webhooks\");\n }\n\n createWebhook(params: CreateWebhookParams): Promise<ApiResponse<ApiWebhookCreated>> {\n return this.post<ApiResponse<ApiWebhookCreated>>(\"/v1/portal/webhooks\", params);\n }\n\n deleteWebhook(id: string): Promise<ApiResponse<{ id: string; status: string }>> {\n return this.del<ApiResponse<{ id: string; status: string }>>(\n `/v1/portal/webhooks/${id}`\n );\n }\n\n // ─── Collection Claims ──────────────────────────────────────────────────────\n\n /**\n * Path 1: On-chain auto claim. Sends both x-api-key (tenant auth) and\n * Authorization: Bearer (Clerk JWT) simultaneously.\n */\n async claimCollection(\n contractAddress: string,\n walletAddress: string,\n clerkToken: string\n ): Promise<{ verified: boolean; collection?: ApiCollection; reason?: string }> {\n return this.request(\"/v1/collections/claim\", {\n method: \"POST\",\n body: JSON.stringify({ contractAddress, walletAddress }),\n headers: this.bearer(clerkToken),\n });\n }\n\n /**\n * Path 3: Manual off-chain claim request (email-based).\n */\n requestCollectionClaim(params: {\n contractAddress: string;\n walletAddress?: string;\n email: string;\n notes?: string;\n }): Promise<{ claim: ApiCollectionClaim }> {\n return this.request(\"/v1/collections/claim/request\", {\n method: \"POST\",\n body: JSON.stringify(params),\n });\n }\n\n // ─── Business Provisioning ──────────────────────────────────────────────────\n\n registerBusinessProvisioning(params: {\n chain: \"STARKNET\";\n walletAddress: string;\n recipientScheme: string;\n recipientValue: string;\n interimOwnerPubkey: string;\n }): Promise<ApiResponse<ApiBusinessProvisioning & { claimUrl: string }>> {\n return this.post<ApiResponse<ApiBusinessProvisioning & { claimUrl: string }>>(\"/v1/business/provisioning\", params);\n }\n\n completeBusinessProvisioning(id: string): Promise<ApiResponse<ApiBusinessProvisioning>> {\n return this.post<ApiResponse<ApiBusinessProvisioning>>(`/v1/business/provisioning/${id}/complete`, {});\n }\n\n // ─── Collection Profiles ────────────────────────────────────────────────────\n\n getCollectionProfile(contractAddress: string): Promise<ApiCollectionProfile | null> {\n return this.request<ApiCollectionProfile | null>(\n `/v1/collections/${this.addr(contractAddress)}/profile`,\n { method: \"GET\" },\n { allow404: true },\n );\n }\n\n /**\n * Update collection profile. Requires Clerk JWT for ownership check.\n */\n updateCollectionProfile(\n contractAddress: string,\n data: Partial<Omit<ApiCollectionProfile, \"contractAddress\" | \"chain\" | \"updatedBy\" | \"updatedAt\">>,\n clerkToken: string\n ): Promise<ApiCollectionProfile> {\n return this.request<ApiCollectionProfile>(\n `/v1/collections/${this.addr(contractAddress)}/profile`,\n { method: \"PATCH\", body: JSON.stringify(data), headers: this.bearer(clerkToken) },\n );\n }\n\n getWalletActivity(\n address: string,\n siwsToken: string,\n chain: \"STARKNET\" = \"STARKNET\",\n ): Promise<ApiResponse<ApiWalletActivity[]>> {\n return this.request<ApiResponse<ApiWalletActivity[]>>(\n `/v1/wallet-activity?address=${this.addr(address)}&chain=${chain}`,\n { method: \"GET\", headers: this.bearer(siwsToken) },\n );\n }\n\n getGatedContent(\n contractAddress: string,\n clerkToken: string\n ): Promise<{ title: string; url: string; type: string } | null> {\n return this.request<{ title: string; url: string; type: string } | null>(\n `/v1/collections/${this.addr(contractAddress)}/gated-content`,\n { method: \"GET\", headers: this.bearer(clerkToken) },\n { allow404: true, allow403: true },\n );\n }\n\n // ─── Creator Profiles ───────────────────────────────────────────────────────\n\n /** List all creators with an approved username. */\n getCreators(opts: { search?: string; page?: number; limit?: number } = {}): Promise<ApiCreatorListResult> {\n const params = new URLSearchParams();\n if (opts.search) params.set(\"search\", opts.search);\n if (opts.page) params.set(\"page\", String(opts.page));\n if (opts.limit) params.set(\"limit\", String(opts.limit));\n const qs = params.toString();\n return this.get<ApiCreatorListResult>(`/v1/creators${qs ? `?${qs}` : \"\"}`);\n }\n\n getCreatorProfile(walletAddress: string): Promise<ApiCreatorProfile | null> {\n return this.request<ApiCreatorProfile | null>(\n `/v1/creators/${this.addr(walletAddress)}/profile`,\n { method: \"GET\" },\n { allow404: true },\n );\n }\n\n /** Resolve a username slug to a creator profile (public). */\n getCreatorByUsername(username: string): Promise<ApiCreatorProfile | null> {\n return this.request<ApiCreatorProfile | null>(\n `/v1/creators/by-username/${encodeURIComponent(username.toLowerCase().trim())}`,\n { method: \"GET\" },\n { allow404: true },\n );\n }\n\n /**\n * Update creator profile. Requires Clerk JWT; wallet must match authenticated user.\n */\n updateCreatorProfile(\n walletAddress: string,\n data: Partial<Omit<ApiCreatorProfile, \"walletAddress\" | \"chain\" | \"updatedAt\">>,\n clerkToken: string\n ): Promise<ApiCreatorProfile> {\n return this.request<ApiCreatorProfile>(\n `/v1/creators/${this.addr(walletAddress)}/profile`,\n { method: \"PATCH\", body: JSON.stringify(data), headers: this.bearer(clerkToken) },\n );\n }\n\n // ─── Collection Slug Claims ───────────────────────────────────────────────────\n\n /** Check if a collection slug is available (public, no auth). */\n checkCollectionSlugAvailability(slug: string): Promise<{ available: boolean; reason?: string }> {\n return this.get<{ available: boolean; reason?: string }>(\n `/v1/collection-slug-claims/check/${encodeURIComponent(slug.toLowerCase().trim())}`,\n );\n }\n\n /** Submit a slug claim for a collection. Requires Clerk JWT — caller must be the collection owner. */\n submitCollectionSlugClaim(\n contractAddress: string,\n slug: string,\n clerkToken: string,\n notifyEmail?: string\n ): Promise<{ claim: ApiCollectionSlugClaim }> {\n return this.request<{ claim: ApiCollectionSlugClaim }>(\"/v1/collection-slug-claims\", {\n method: \"POST\",\n body: JSON.stringify({ contractAddress, slug, notifyEmail }),\n headers: this.bearer(clerkToken),\n });\n }\n\n /** Returns all slug claims submitted by the authenticated wallet. Requires Clerk JWT. */\n getMyCollectionSlugClaims(clerkToken: string): Promise<{ claims: ApiCollectionSlugClaim[] }> {\n return this.request<{ claims: ApiCollectionSlugClaim[] }>(\"/v1/collection-slug-claims/me\", {\n method: \"GET\",\n headers: this.bearer(clerkToken),\n });\n }\n\n /** Resolve a collection slug to a full collection. Returns null if not found. */\n getCollectionBySlug(slug: string): Promise<ApiCollection | null> {\n return this.request<ApiCollection | null>(\n `/v1/collections/by-slug/${encodeURIComponent(slug.toLowerCase().trim())}`,\n { method: \"GET\" },\n { allow404: true },\n );\n }\n\n // ─── User Wallet ─────────────────────────────────────────────────────────────\n\n /**\n * Upsert the authenticated user's wallet address in the backend DB.\n * Call after onboarding when ChipiPay confirms the wallet address.\n * Requires Clerk JWT; no tenant API key needed.\n */\n /**\n * Frictionless wallet registration. Tenant API key only (no Clerk JWT required).\n * Idempotent — backend's ensureAccountForWallet upserts and upgrades existing\n * UNKNOWN walletType rows when a more specific value is supplied.\n */\n async registerUser(params: {\n walletAddress: string;\n // Free-form wallet-software label (\"braavos\" / \"ready\" / \"chipipay\" / …).\n // The backend lowercases it into Identity.provider and never gates on it\n // (07-identity §II) — so it's a plain string, not a closed enum.\n walletType?: string;\n appSource?: ApiAppSource;\n chain?: ApiChain;\n }): Promise<{\n accountId: string;\n publicId: string;\n walletAddress: string;\n chain: string;\n // The wallet identity's free-form provider label, echoed back from\n // Identity.provider (\"braavos\" / \"chipipay\" / \"unknown\" / …).\n provider: string;\n appSource: ApiAppSource;\n createdAt: string;\n }> {\n return this.post(\"/v1/users/register\", params);\n }\n\n async upsertMyWallet(\n clerkToken: string,\n options: {\n // Free-form provider label (see registerUser); lowercased into\n // Identity.provider by the backend, never gated on.\n walletType?: string;\n appSource?: ApiAppSource;\n // 07-identity §I: the Wallet identifier is (chain, address). v1\n // backend rejects anything other than STARKNET on this route (the\n // auth path can only prove Starknet ownership); the field exists\n // so the year-2 multichain shape is locked in.\n chain?: ApiChain;\n } = {},\n ): Promise<ApiUserWallet> {\n const body: Record<string, string> = {\n walletType: options.walletType ?? \"UNKNOWN\",\n appSource: options.appSource ?? \"MEDIALANE_SDK\",\n };\n if (options.chain) body.chain = options.chain;\n return this.request<ApiUserWallet>(\"/v1/users/me\", {\n method: \"POST\",\n body: JSON.stringify(body),\n headers: this.bearer(clerkToken),\n });\n }\n\n /**\n * Get the authenticated user's stored wallet address from the backend DB.\n * Returns null if the user has not completed onboarding yet.\n * Requires Clerk JWT; no tenant API key needed.\n */\n getMyWallet(clerkToken: string): Promise<ApiUserWallet | null> {\n return this.request<ApiUserWallet | null>(\n \"/v1/users/me\",\n { method: \"GET\", headers: this.bearer(clerkToken) },\n { allow404: true },\n );\n }\n\n // ─── Remix Licensing ─────────────────────────────────────────────────────────\n\n /**\n * Get public remixes of a token (open to everyone).\n */\n getTokenRemixes(\n contract: string,\n tokenId: string,\n opts: { page?: number; limit?: number } = {}\n ): Promise<ApiResponse<ApiPublicRemix[]>> {\n const params = new URLSearchParams();\n if (opts.page !== undefined) params.set(\"page\", String(opts.page));\n if (opts.limit !== undefined) params.set(\"limit\", String(opts.limit));\n const qs = params.toString();\n return this.get<ApiResponse<ApiPublicRemix[]>>(\n `/v1/tokens/${this.addr(contract)}/${tokenId}/remixes${qs ? `?${qs}` : \"\"}`\n );\n }\n\n /**\n * Submit a custom remix offer for a token. Requires Clerk JWT.\n */\n submitRemixOffer(\n params: CreateRemixOfferParams,\n clerkToken: string\n ): Promise<ApiResponse<ApiRemixOffer>> {\n return this.request<ApiResponse<ApiRemixOffer>>(\"/v1/remix-offers\", {\n method: \"POST\",\n body: JSON.stringify(params),\n headers: { \"Authorization\": `Bearer ${clerkToken}` },\n });\n }\n\n /**\n * Submit an auto remix offer for a token with an open license. Requires Clerk JWT.\n */\n submitAutoRemixOffer(\n params: AutoRemixOfferParams,\n clerkToken: string\n ): Promise<ApiResponse<ApiRemixOffer>> {\n return this.request<ApiResponse<ApiRemixOffer>>(\"/v1/remix-offers/auto\", {\n method: \"POST\",\n body: JSON.stringify(params),\n headers: { \"Authorization\": `Bearer ${clerkToken}` },\n });\n }\n\n /**\n * Record a self-remix (owner remixing their own token). Requires Clerk JWT.\n */\n confirmSelfRemix(\n params: ConfirmSelfRemixParams,\n clerkToken: string\n ): Promise<ApiResponse<ApiRemixOffer>> {\n return this.request<ApiResponse<ApiRemixOffer>>(\"/v1/remix-offers/self/confirm\", {\n method: \"POST\",\n body: JSON.stringify(params),\n headers: { \"Authorization\": `Bearer ${clerkToken}` },\n });\n }\n\n /**\n * List remix offers by role. Requires Clerk JWT.\n * role=\"creator\" — offers where you are the original creator.\n * role=\"requester\" — offers you made.\n */\n getRemixOffers(\n query: ApiRemixOffersQuery,\n clerkToken: string\n ): Promise<ApiResponse<ApiRemixOffer[]>> {\n const params = new URLSearchParams({ role: query.role });\n if (query.page !== undefined) params.set(\"page\", String(query.page));\n if (query.limit !== undefined) params.set(\"limit\", String(query.limit));\n return this.request<ApiResponse<ApiRemixOffer[]>>(`/v1/remix-offers?${params}`, {\n method: \"GET\",\n headers: this.bearer(clerkToken),\n });\n }\n\n /**\n * Get a single remix offer. Clerk JWT optional (price/currency hidden for non-participants).\n */\n getRemixOffer(id: string, clerkToken?: string): Promise<ApiResponse<ApiRemixOffer>> {\n return this.request<ApiResponse<ApiRemixOffer>>(`/v1/remix-offers/${id}`, {\n method: \"GET\",\n headers: clerkToken ? this.bearer(clerkToken) : undefined,\n });\n }\n\n /**\n * Creator approves a remix offer (authorises the requester to mint). Requires Clerk JWT.\n */\n confirmRemixOffer(\n id: string,\n params: ConfirmRemixOfferParams,\n clerkToken: string\n ): Promise<ApiResponse<ApiRemixOffer>> {\n return this.request<ApiResponse<ApiRemixOffer>>(`/v1/remix-offers/${id}/confirm`, {\n method: \"POST\",\n body: JSON.stringify(params),\n headers: { \"Authorization\": `Bearer ${clerkToken}` },\n });\n }\n\n /**\n * Creator rejects a remix offer. Requires Clerk JWT.\n */\n rejectRemixOffer(id: string, clerkToken: string): Promise<ApiResponse<ApiRemixOffer>> {\n return this.request<ApiResponse<ApiRemixOffer>>(`/v1/remix-offers/${id}/reject`, {\n method: \"POST\",\n body: JSON.stringify({}),\n headers: { \"Authorization\": `Bearer ${clerkToken}` },\n });\n }\n\n /**\n * Requester extends the expiry of a pending remix offer by 1–30 days.\n * Requires Clerk JWT.\n */\n extendRemixOffer(id: string, days: number, clerkToken: string): Promise<ApiResponse<ApiRemixOffer>> {\n return this.request<ApiResponse<ApiRemixOffer>>(`/v1/remix-offers/${id}/extend`, {\n method: \"POST\",\n body: JSON.stringify({ days }),\n headers: { \"Authorization\": `Bearer ${clerkToken}` },\n });\n }\n\n // ─── POP Protocol ──────────────────────────────────────────────────────────\n\n getPopCollections(opts: { page?: number; limit?: number; sort?: CollectionSort } = {}): Promise<ApiResponse<ApiCollection[]>> {\n return this.getCollections(opts.page ?? 1, opts.limit ?? 20, undefined, opts.sort, \"POP_PROTOCOL\");\n }\n\n async getPopEligibility(collection: string, wallet: string): Promise<PopClaimStatus> {\n const res = await this.get<{ data: PopClaimStatus }>(\n `/v1/pop/eligibility/${this.addr(collection)}/${this.addr(wallet)}`\n );\n return res.data;\n }\n\n async getPopEligibilityBatch(collection: string, wallets: string[]): Promise<PopBatchEligibilityItem[]> {\n const params = new URLSearchParams({ wallets: wallets.map((w) => this.addr(w)).join(\",\") });\n const res = await this.get<{ data: PopBatchEligibilityItem[] }>(\n `/v1/pop/eligibility/${this.addr(collection)}?${params}`\n );\n return res.data;\n }\n\n // ─── Coins (fungible — ERC-20 etc.) ───────────────────────────────────────────\n // Coins are a separate model from Collections (spec 2026-06-14). Price/liquidity\n // is read live from Ekubo (CreatorCoinService.getPrice), never from these.\n\n getCoins(opts: ApiCoinsQuery = {}): Promise<ApiResponse<ApiCoin[]>> {\n const params = new URLSearchParams();\n if (opts.page) params.set(\"page\", String(opts.page));\n if (opts.limit) params.set(\"limit\", String(opts.limit));\n if (opts.service) params.set(\"service\", opts.service);\n if (opts.chain) params.set(\"chain\", opts.chain);\n const qs = params.toString();\n return this.get<ApiResponse<ApiCoin[]>>(`/v1/coins${qs ? `?${qs}` : \"\"}`);\n }\n\n getCoin(contract: string): Promise<{ data: ApiCoin }> {\n return this.get<{ data: ApiCoin }>(`/v1/coins/${this.addr(contract)}`);\n }\n\n /**\n * Creator-authed coin profile edit (image/description). Backend authorizes\n * via `coin.creator` (trustless — from the factory event), not a body param;\n * `siwsToken` is the caller's SIWS/Clerk bearer token for `identityAuth`.\n */\n updateCoinProfile(\n contract: string,\n data: { image?: string; description?: string },\n siwsToken: string\n ): Promise<ApiResponse<ApiCoin>> {\n return this.request<ApiResponse<ApiCoin>>(`/v1/coins/${this.addr(contract)}`, {\n method: \"PATCH\",\n body: JSON.stringify(data),\n headers: this.bearer(siwsToken),\n });\n }\n\n // ─── Collection Drop ────────────────────────────────────────────────────────\n\n getDropCollections(opts: { page?: number; limit?: number; sort?: CollectionSort } = {}): Promise<ApiResponse<ApiCollection[]>> {\n return this.getCollections(opts.page ?? 1, opts.limit ?? 20, undefined, opts.sort, \"COLLECTION_DROP\");\n }\n\n async getDropMintStatus(collection: string, wallet: string): Promise<DropMintStatus> {\n const res = await this.get<{ data: DropMintStatus }>(\n `/v1/drop/mint-status/${this.addr(collection)}/${this.addr(wallet)}`\n );\n return res.data;\n }\n\n // ─── Rewards (v0.49.0) ─────────────────────────────────────────────────────\n // Scores are recomputed on a schedule by the backend (~15 min) — reads only.\n\n /** Score + level + progress + badges for one address (zeroed for unknown). */\n async getRewards(address: string): Promise<ApiUserRewards> {\n const res = await this.get<{ data: ApiUserRewards }>(`/v1/rewards/${this.addr(address)}`);\n return res.data;\n }\n\n /** Paginated XP leaderboard. */\n getRewardsLeaderboard(page = 1, limit = 50): Promise<ApiResponse<ApiRewardsLeaderboardEntry[]>> {\n return this.get<ApiResponse<ApiRewardsLeaderboardEntry[]>>(`/v1/rewards?page=${page}&limit=${limit}`);\n }\n\n /** Point-event history for an address. */\n getRewardsEvents(address: string, page = 1, limit = 20): Promise<ApiResponse<ApiPointEvent[]>> {\n return this.get<ApiResponse<ApiPointEvent[]>>(\n `/v1/rewards/${this.addr(address)}/events?page=${page}&limit=${limit}`\n );\n }\n\n /** Reward configuration: level ladder, enabled action XP values, badge catalog. */\n async getRewardsConfig(): Promise<ApiRewardsConfig> {\n const res = await this.get<{ data: ApiRewardsConfig }>(`/v1/rewards/config`);\n return res.data;\n }\n\n /** Minimal level info for up to 50 addresses — one call per list page. */\n async getRewardsBatch(addresses: string[]): Promise<ApiRewardsBatchEntry[]> {\n if (addresses.length === 0) return [];\n const params = new URLSearchParams({ addresses: addresses.map((a) => this.addr(a)).join(\",\") });\n const res = await this.get<{ data: ApiRewardsBatchEntry[] }>(`/v1/rewards/batch?${params}`);\n return res.data;\n }\n}\n","import { getCoordinates } from \"./chains.js\";\n\n// Flat per-chain contract constants. Chain-named (each contract is deployed on a\n// specific chain), derived from the chains.ts registry so there is one source.\nconst SN = getCoordinates(\"STARKNET\");\n\n// ── Marketplace ───────────────────────────────────────────────────────────────\nexport const STARKNET_MARKETPLACE_721_CONTRACT = SN.marketplace721!;\nexport const STARKNET_MARKETPLACE_721_CLASS_HASH = SN.marketplace721ClassHash!;\nexport const STARKNET_MARKETPLACE_721_START_BLOCK = SN.marketplace721StartBlock!;\nexport const STARKNET_MARKETPLACE_1155_CONTRACT = SN.marketplace1155!;\nexport const STARKNET_MARKETPLACE_1155_CLASS_HASH = SN.marketplace1155ClassHash!;\nexport const STARKNET_MARKETPLACE_1155_START_BLOCK = SN.marketplace1155StartBlock!;\n\n// ── Collections ───────────────────────────────────────────────────────────────\nexport const STARKNET_COLLECTION_721_CONTRACT = SN.collection721!;\nexport const STARKNET_COLLECTION_721_START_BLOCK = SN.collection721StartBlock!;\nexport const STARKNET_IPNFT_CLASS_HASH = SN.ipNftClassHash!;\nexport const STARKNET_IPCOLLECTION_CLASS_HASH = SN.ipCollectionClassHash!;\nexport const STARKNET_COLLECTION_1155_CONTRACT = SN.collection1155!;\nexport const STARKNET_COLLECTION_1155_FACTORY_CLASS_HASH = SN.collection1155FactoryClassHash!;\nexport const STARKNET_COLLECTION_1155_CLASS_HASH = SN.collection1155ClassHash!;\nexport const STARKNET_COLLECTION_1155_START_BLOCK = SN.collection1155StartBlock!;\n\n// ── POP / Drop / Comments ─────────────────────────────────────────────────────\nexport const STARKNET_POP_FACTORY_CONTRACT = SN.popFactory!;\nexport const STARKNET_POP_COLLECTION_CLASS_HASH = SN.popCollectionClassHash!;\nexport const STARKNET_DROP_FACTORY_CONTRACT = SN.dropFactory!;\nexport const STARKNET_DROP_COLLECTION_CLASS_HASH = SN.dropCollectionClassHash!;\nexport const STARKNET_NFTCOMMENTS_CONTRACT = SN.nftComments!;\n\n// ── IP Tickets / IP Club / IP Sponsorship ─────────────────────────────────────\n// Not yet deployed — these resolve to `undefined` at runtime until chains.ts's\n// STARKNET coordinates are populated (Phase 3/4 deploy). The `!` assertion\n// mirrors the existing convention above; falsy-guard callers (`if (X && ...)`)\n// still behave correctly regardless.\nexport const STARKNET_IP_TICKETS_FACTORY_CONTRACT = SN.ipTicketsFactory!;\nexport const STARKNET_IP_TICKET_COLLECTION_CLASS_HASH = SN.ipTicketCollectionClassHash!;\nexport const STARKNET_IP_CLUB_FACTORY_CONTRACT = SN.ipClubFactory!;\nexport const STARKNET_IP_CLUB_COLLECTION_CLASS_HASH = SN.ipClubCollectionClassHash!;\nexport const STARKNET_IP_SPONSORSHIP_CONTRACT = SN.ipSponsorship!;\nexport const STARKNET_IP_SPONSORSHIP_CLASS_HASH = SN.ipSponsorshipClassHash!;\n\n// ── MediaWallet (self-custody account) ─────────────────────────────────────────\nexport const STARKNET_MEDIAWALLET_CLASS_HASH = SN.mediaWalletClassHash!;\n\n// ── Creator Coin (Ekubo) ──────────────────────────────────────────────────────\nexport const STARKNET_CREATOR_COIN_FACTORY_CONTRACT = SN.creatorCoinFactory!;\nexport const STARKNET_CREATOR_COIN_EKUBO_LAUNCHER = SN.creatorCoinEkuboLauncher!;\nexport const STARKNET_CREATOR_COIN_CLASS_HASH = SN.creatorCoinClassHash!;\nexport const STARKNET_CREATOR_COIN_FACTORY_CLASS_HASH = SN.creatorCoinFactoryClassHash!;\nexport const STARKNET_CREATOR_COIN_START_BLOCK = SN.creatorCoinStartBlock!;\nexport const STARKNET_EKUBO_CORE = SN.ekuboCore!;\n\n// ── Tokens (chain-agnostic) ───────────────────────────────────────────────────\nexport const SUPPORTED_TOKENS = [\n {\n // Circle-native USDC on Starknet (canonical)\n symbol: \"USDC\",\n address:\n \"0x033068f6539f8e6e6b131e6b2b814e6c34a5224bc66947c47dab9dfee93b35fb\",\n decimals: 6,\n listable: true,\n },\n {\n symbol: \"USDT\",\n address:\n \"0x068f5c6a61780768455de69077e07e89787839bf8166decfbf92b645209c0fb8\",\n decimals: 6,\n listable: true,\n },\n {\n symbol: \"ETH\",\n address:\n \"0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7\",\n decimals: 18,\n listable: true,\n },\n {\n symbol: \"STRK\",\n address:\n \"0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d\",\n decimals: 18,\n listable: true,\n },\n {\n symbol: \"WBTC\",\n address:\n \"0x03fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac\",\n decimals: 8,\n listable: true,\n },\n] as const;\n\nexport type SupportedTokenSymbol = (typeof SUPPORTED_TOKENS)[number][\"symbol\"];\n\n/** Default currency for listings and offers — Circle-native USDC on Starknet. */\nexport const DEFAULT_CURRENCY: SupportedTokenSymbol = \"USDC\";\n","import type { 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 fallback after an app's configured primary (e.g. Alchemy) returns a\n * transient error. lava.build — RPC spec 0.8.1, permissive CORS — so it is\n * safe for browser `baseFetch` use as well as server-side rotation.\n *\n * blastapi.io and free-rpc.nethermind.io were removed (2026-07-04) — long\n * confirmed dead/unreliable in production; do not re-add them.\n */\nexport const PUBLIC_RPC_FALLBACKS: readonly string[] = [\n \"https://rpc.starknet.lava.build\",\n];\n\n/**\n * Matches transient failure signals in a raw response body or JSON-RPC error\n * message. Deterministic Starknet contract errors (revert / invalid params —\n * small positive JSON-RPC codes) MUST NOT match: they propagate verbatim so\n * callers see the real failure. Note `-32000` is intentionally absent — the io\n * `/api/rpc` proxy uses it for \"Unauthorized\", which must not trigger failover.\n */\nconst TRANSIENT_BODY_RE =\n /\"code\"\\s*:\\s*-32001|\"code\"\\s*:\\s*-32603|unable to complete|rate.?limit|too many|throttl|exceed.*quota|temporarily unavailable|service unavailable|overload|gateway.*time|upstream.*time|backend.*error/i;\n\n/**\n * Is this RPC response worth retrying against another endpoint?\n *\n * Accepts either an HTTP status + raw text body (client `baseFetch` path) or a\n * parsed JSON-RPC envelope (server proxy path). For parsed envelopes the\n * server-defined error-code range (`-32099..-32000`) is treated as transient;\n * for raw text only the explicit `-32001`/`-32603` codes + message hints match,\n * so a `-32000` \"Unauthorized\" text body is never mistaken for transient.\n */\nexport function isTransientRpcError(input: { status?: number; body?: unknown }): boolean {\n const { status, body } = input;\n if (typeof status === \"number\" && (status === 429 || status >= 500)) return true;\n if (body == null) return false;\n\n // Parsed JSON-RPC envelope: inspect error.code numerically.\n if (typeof body === \"object\") {\n const err = (body as { error?: { code?: unknown; message?: unknown } }).error;\n if (!err || typeof err !== \"object\") return false;\n const code = (err as { code?: unknown }).code;\n if (typeof code === \"number\") {\n if (code === 429) return true;\n if (code >= -32099 && code <= -32000) return true; // server-defined range (incl. -32001)\n if (code === -32603) return true; // generic internal error\n }\n const message = (err as { message?: unknown }).message;\n return typeof message === \"string\" ? TRANSIENT_BODY_RE.test(message) : false;\n }\n\n // Raw text body (client baseFetch path).\n return TRANSIENT_BODY_RE.test(String(body));\n}\n\nexport interface FailoverFetchOptions {\n /** Underlying fetch to wrap (e.g. one that adds a timeout). Defaults to the global `fetch`. */\n baseFetch?: typeof fetch;\n /** Invoked each time an endpoint is abandoned for the next one. */\n onFailover?: (info: { url: string; status?: number; error?: unknown }) => void;\n}\n\n/**\n * Build a `fetch` suitable for `RpcProvider.baseFetch` that tries each URL in\n * `urls` in order, advancing to the next only on a transient failure (network\n * error, 5xx/429, or a transient JSON-RPC envelope). The provider's own\n * `nodeUrl` argument is ignored — routing is controlled entirely by `urls` —\n * so callers should set `nodeUrl: urls[0]` (used only for spec negotiation).\n *\n * @example\n * const urls = [primaryAlchemyUrl, ...PUBLIC_RPC_FALLBACKS];\n * new RpcProvider({ nodeUrl: urls[0], baseFetch: createFailoverFetch(urls) });\n */\nexport function createFailoverFetch(\n urls: string[],\n options: FailoverFetchOptions = {},\n): typeof fetch {\n const endpoints = urls.filter((u): u is string => Boolean(u));\n if (endpoints.length === 0) {\n throw new Error(\"createFailoverFetch: at least one RPC URL is required\");\n }\n const doFetch = options.baseFetch ?? fetch;\n\n const failover = async (_input: unknown, init?: RequestInit): Promise<Response> => {\n let lastError: unknown;\n\n for (let i = 0; i < endpoints.length; i++) {\n const url = endpoints[i];\n const isLast = i === endpoints.length - 1;\n try {\n const res = await doFetch(url, init);\n const text = await res.text();\n const rebuilt = () =>\n new Response(text, { status: res.status, statusText: res.statusText, headers: res.headers });\n\n if (isLast || !isTransientRpcError({ status: res.status, body: text })) {\n return rebuilt();\n }\n options.onFailover?.({ url, status: res.status });\n } catch (err) {\n lastError = err;\n if (isLast) throw err;\n options.onFailover?.({ url, error: err });\n }\n }\n\n // Loop always returns/throws on the last endpoint; this satisfies the type checker.\n throw lastError ?? new Error(\"createFailoverFetch: all endpoints failed\");\n };\n\n return failover as unknown as typeof fetch;\n}\n","import { Contract, RpcProvider, cairo, constants, num, type Abi } from \"starknet\";\nimport type { ResolvedConfig } from \"../../config.js\";\nimport { SUPPORTED_TOKENS } from \"../../constants.js\";\nimport { MedialaneError } from \"./errors.js\";\nimport { createFailoverFetch, PUBLIC_RPC_FALLBACKS } from \"../../utils/rpc.js\";\n\n/** Seconds added to current unix time when setting order start_time.\n * Provides buffer for Starknet tx inclusion (~6s blocks). */\nexport const START_TIME_BUFFER_SECS = 30;\n\n/** Full-felt (248-bit) random salt. With the redesigned schema, salt is the\n * sole order-hash uniqueness source (nonce was removed), so it must be wide. */\nexport function generateSalt(): string {\n const bytes = new Uint8Array(31);\n crypto.getRandomValues(bytes);\n const hex = Array.from(bytes, (b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n return num.toHex(BigInt(\"0x\" + hex));\n}\n\n/** The signed EIP-2981 royalty cap (bps) for an order. Reads the NFT's live\n * 2981 rate via `royalty_info(tokenId, 10000)` — the returned amount equals the\n * bps when salePrice is 10000. Any non-2981 NFT or failure yields \"0\" (no\n * royalty — never over-pay). An explicit override short-circuits the read. */\nexport async function resolveRoyaltyMaxBps(\n provider: RpcProvider,\n nft: string,\n tokenId: string,\n override?: string,\n): Promise<string> {\n if (override !== undefined) return override;\n try {\n const id = cairo.uint256(tokenId);\n const res = await provider.callContract({\n contractAddress: nft,\n entrypoint: \"royalty_info\",\n calldata: [id.low.toString(), id.high.toString(), \"10000\", \"0\"],\n });\n // returns [receiver, amount.low, amount.high]; amount == bps at salePrice 10000\n return BigInt(res[1] ?? \"0\").toString();\n } catch {\n return \"0\";\n }\n}\n\nexport function toSignatureArray(sig: unknown): string[] {\n if (Array.isArray(sig)) return sig as string[];\n const s = sig as { r: bigint | string; s: bigint | string };\n return [s.r.toString(), s.s.toString()];\n}\n\n/**\n * Construct a `Contract` across starknet major versions. starknet v8 changed the\n * constructor to a single options object (`{ abi, address, providerOrAccount }`)\n * and REMOVED the v6/v7 positional form — passing `(abi, address, provider)` to\n * v8 lands the ABI in the options slot, so the parser reads `options.abi`\n * (undefined) and throws `abi.find is not a function`. The dapp runs starknet v8\n * while this SDK builds against v6, so every `new Contract(...)` must route\n * through here. Detected by constructor arity (v8 = 1, v6/v7 = 2+).\n */\nexport function newContract(abi: Abi, address: string, providerOrAccount?: unknown): Contract {\n const C = Contract as unknown as { length: number };\n return C.length === 1\n ? new (Contract as unknown as new (opts: unknown) => Contract)({ abi, address, providerOrAccount })\n : new (Contract as unknown as new (a: Abi, addr: string, p?: unknown) => Contract)(\n abi,\n address,\n providerOrAccount,\n );\n}\n\nexport function getChainId(config: ResolvedConfig): constants.StarknetChainId {\n // SNIP-12 signing is Starknet-only today; EVM/Solana signing arrives behind\n // the verify seam (spec 2026-06-13 §3.4), not here.\n if (config.chain !== \"STARKNET\") {\n throw new Error(`SNIP-12 signing is Starknet-only; got chain \"${config.chain}\"`);\n }\n return constants.StarknetChainId.SN_MAIN;\n}\n\nexport function resolveToken(currency: string) {\n const token = SUPPORTED_TOKENS.find(\n (t) => t.symbol === currency.toUpperCase() || t.address.toLowerCase() === currency.toLowerCase()\n );\n if (!token) throw new MedialaneError(`Unsupported currency: ${currency}`, \"INVALID_PARAMS\");\n return token;\n}\n\nconst _providerCache = new WeakMap<ResolvedConfig, RpcProvider>();\n\nexport function getProvider(config: ResolvedConfig): RpcProvider {\n let p = _providerCache.get(config);\n if (!p) {\n // Fail over to public endpoints when the configured RPC (often Alchemy)\n // returns a transient error — e.g. the intermittent 503 / -32001 that\n // stalls reads (get_counter, royalty_info) and waitForTransaction loops.\n const urls = Array.from(new Set([config.rpcUrl, ...PUBLIC_RPC_FALLBACKS]));\n p = new RpcProvider({ nodeUrl: urls[0], baseFetch: createFailoverFetch(urls) });\n _providerCache.set(config, p);\n }\n return p;\n}\n","// Auto-generated from Medialane721 class (redesigned venue). Do not hand-edit.\nexport const IPMarketplaceABI = [\n {\n \"type\": \"impl\",\n \"name\": \"Medialane721Impl\",\n \"interface_name\": \"medialane_marketplace_erc721::core::interface::IMedialane\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc721::core::types::OfferItem\",\n \"members\": [\n {\n \"name\": \"item_type\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"token\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"identifier_or_criteria\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"core::felt252\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc721::core::types::ConsiderationItem\",\n \"members\": [\n {\n \"name\": \"item_type\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"token\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"identifier_or_criteria\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc721::core::types::OrderParameters\",\n \"members\": [\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"offer\",\n \"type\": \"medialane_marketplace_erc721::core::types::OfferItem\"\n },\n {\n \"name\": \"consideration\",\n \"type\": \"medialane_marketplace_erc721::core::types::ConsiderationItem\"\n },\n {\n \"name\": \"royalty_max_bps\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"salt\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"counter\",\n \"type\": \"core::felt252\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc721::core::types::Order\",\n \"members\": [\n {\n \"name\": \"parameters\",\n \"type\": \"medialane_marketplace_erc721::core::types::OrderParameters\"\n },\n {\n \"name\": \"signature\",\n \"type\": \"core::array::Array::<core::felt252>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc721::core::types::OrderCancellation\",\n \"members\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc721::core::types::CancelRequest\",\n \"members\": [\n {\n \"name\": \"cancelation\",\n \"type\": \"medialane_marketplace_erc721::core::types::OrderCancellation\"\n },\n {\n \"name\": \"signature\",\n \"type\": \"core::array::Array::<core::felt252>\"\n }\n ]\n },\n {\n \"type\": \"enum\",\n \"name\": \"medialane_marketplace_erc721::core::types::OrderStatus\",\n \"variants\": [\n {\n \"name\": \"None\",\n \"type\": \"()\"\n },\n {\n \"name\": \"Created\",\n \"type\": \"()\"\n },\n {\n \"name\": \"Filled\",\n \"type\": \"()\"\n },\n {\n \"name\": \"Cancelled\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc721::core::types::OrderDetails\",\n \"members\": [\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"offer\",\n \"type\": \"medialane_marketplace_erc721::core::types::OfferItem\"\n },\n {\n \"name\": \"consideration\",\n \"type\": \"medialane_marketplace_erc721::core::types::ConsiderationItem\"\n },\n {\n \"name\": \"royalty_max_bps\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"order_status\",\n \"type\": \"medialane_marketplace_erc721::core::types::OrderStatus\"\n },\n {\n \"name\": \"counter\",\n \"type\": \"core::felt252\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"medialane_marketplace_erc721::core::interface::IMedialane\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"register_order\",\n \"inputs\": [\n {\n \"name\": \"order\",\n \"type\": \"medialane_marketplace_erc721::core::types::Order\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"fulfill_order\",\n \"inputs\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"cancel_order\",\n \"inputs\": [\n {\n \"name\": \"cancel_request\",\n \"type\": \"medialane_marketplace_erc721::core::types::CancelRequest\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"increment_counter\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_order_details\",\n \"inputs\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"medialane_marketplace_erc721::core::types::OrderDetails\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_order_hash\",\n \"inputs\": [\n {\n \"name\": \"parameters\",\n \"type\": \"medialane_marketplace_erc721::core::types::OrderParameters\"\n },\n {\n \"name\": \"signer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::felt252\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_cancellation_hash\",\n \"inputs\": [\n {\n \"name\": \"cancellation\",\n \"type\": \"medialane_marketplace_erc721::core::types::OrderCancellation\"\n },\n {\n \"name\": \"signer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::felt252\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_counter\",\n \"inputs\": [\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::felt252\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_native_token_address\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"constructor\",\n \"name\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"native_token_address\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"medialane_marketplace_erc721::core::events::OrderCreated\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::integer::u256\",\n \"members\": [\n {\n \"name\": \"low\",\n \"type\": \"core::integer::u128\"\n },\n {\n \"name\": \"high\",\n \"type\": \"core::integer::u128\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"medialane_marketplace_erc721::core::events::OrderFulfilled\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"fulfiller\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"sale_amount\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"royalty_receiver\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"royalty_amount\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"medialane_marketplace_erc721::core::events::OrderCancelled\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"medialane_marketplace_erc721::core::events::CounterIncremented\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"new_counter\",\n \"type\": \"core::felt252\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"medialane_marketplace_erc721::core::medialane::Medialane721::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"OrderCreated\",\n \"type\": \"medialane_marketplace_erc721::core::events::OrderCreated\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"OrderFulfilled\",\n \"type\": \"medialane_marketplace_erc721::core::events::OrderFulfilled\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"OrderCancelled\",\n \"type\": \"medialane_marketplace_erc721::core::events::OrderCancelled\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"CounterIncremented\",\n \"type\": \"medialane_marketplace_erc721::core::events::CounterIncremented\",\n \"kind\": \"nested\"\n }\n ]\n }\n] as const;\n","export const POPCollectionABI = [\n {\n type: \"struct\",\n name: \"core::byte_array::ByteArray\",\n members: [\n { name: \"data\", type: \"core::array::Array::<core::felt252>\" },\n { name: \"pending_word\", type: \"core::felt252\" },\n { name: \"pending_word_len\", type: \"core::integer::u32\" },\n ],\n },\n {\n type: \"function\",\n name: \"claim\",\n inputs: [],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"admin_mint\",\n inputs: [\n { name: \"recipient\", type: \"core::starknet::contract_address::ContractAddress\" },\n { name: \"custom_uri\", type: \"core::byte_array::ByteArray\" },\n ],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"add_to_allowlist\",\n inputs: [{ name: \"address\", type: \"core::starknet::contract_address::ContractAddress\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"batch_add_to_allowlist\",\n inputs: [{ name: \"addresses\", type: \"core::array::Array::<core::starknet::contract_address::ContractAddress>\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"remove_from_allowlist\",\n inputs: [{ name: \"address\", type: \"core::starknet::contract_address::ContractAddress\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"set_token_uri\",\n inputs: [\n { name: \"token_id\", type: \"core::integer::u256\" },\n { name: \"uri\", type: \"core::byte_array::ByteArray\" },\n ],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"set_paused\",\n inputs: [{ name: \"paused\", type: \"core::bool\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"is_eligible\",\n inputs: [{ name: \"address\", type: \"core::starknet::contract_address::ContractAddress\" }],\n outputs: [{ type: \"core::bool\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"has_claimed\",\n inputs: [{ name: \"address\", type: \"core::starknet::contract_address::ContractAddress\" }],\n outputs: [{ type: \"core::bool\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"total_minted\",\n inputs: [],\n outputs: [{ type: \"core::integer::u256\" }],\n state_mutability: \"view\",\n },\n] as const;\n\n","export const POPFactoryABI = [\n {\n type: \"struct\",\n name: \"core::byte_array::ByteArray\",\n members: [\n { name: \"data\", type: \"core::array::Array::<core::felt252>\" },\n { name: \"pending_word\", type: \"core::felt252\" },\n { name: \"pending_word_len\", type: \"core::integer::u32\" },\n ],\n },\n {\n type: \"enum\",\n name: \"pop_protocol::types::EventType\",\n variants: [\n { name: \"Conference\", type: \"()\" },\n { name: \"Bootcamp\", type: \"()\" },\n { name: \"Workshop\", type: \"()\" },\n { name: \"Hackathon\", type: \"()\" },\n { name: \"Meetup\", type: \"()\" },\n { name: \"Course\", type: \"()\" },\n { name: \"Other\", type: \"()\" },\n ],\n },\n {\n type: \"function\",\n name: \"create_collection\",\n inputs: [\n { name: \"name\", type: \"core::byte_array::ByteArray\" },\n { name: \"symbol\", type: \"core::byte_array::ByteArray\" },\n { name: \"base_uri\", type: \"core::byte_array::ByteArray\" },\n { name: \"claim_end_time\", type: \"core::integer::u64\" },\n { name: \"event_type\", type: \"pop_protocol::types::EventType\" },\n ],\n outputs: [{ type: \"core::starknet::contract_address::ContractAddress\" }],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"register_provider\",\n inputs: [\n { name: \"provider\", type: \"core::starknet::contract_address::ContractAddress\" },\n { name: \"name\", type: \"core::byte_array::ByteArray\" },\n { name: \"website_url\", type: \"core::byte_array::ByteArray\" },\n ],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"set_pop_collection_class_hash\",\n inputs: [{ name: \"new_class_hash\", type: \"core::starknet::class_hash::ClassHash\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n] as const;\n\n","export const DropCollectionABI = [\n {\n type: \"struct\",\n name: \"core::byte_array::ByteArray\",\n members: [\n { name: \"data\", type: \"core::array::Array::<core::felt252>\" },\n { name: \"pending_word\", type: \"core::felt252\" },\n { name: \"pending_word_len\", type: \"core::integer::u32\" },\n ],\n },\n {\n type: \"struct\",\n name: \"collection_drop::types::ClaimConditions\",\n members: [\n { name: \"start_time\", type: \"core::integer::u64\" },\n { name: \"end_time\", type: \"core::integer::u64\" },\n { name: \"price\", type: \"core::integer::u256\" },\n { name: \"payment_token\", type: \"core::starknet::contract_address::ContractAddress\" },\n { name: \"max_quantity_per_wallet\", type: \"core::integer::u256\" },\n ],\n },\n {\n type: \"function\",\n name: \"claim\",\n inputs: [{ name: \"quantity\", type: \"core::integer::u256\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"admin_mint\",\n inputs: [\n { name: \"recipient\", type: \"core::starknet::contract_address::ContractAddress\" },\n { name: \"quantity\", type: \"core::integer::u256\" },\n { name: \"custom_uri\", type: \"core::byte_array::ByteArray\" },\n ],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"set_claim_conditions\",\n inputs: [{ name: \"conditions\", type: \"collection_drop::types::ClaimConditions\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"get_claim_conditions\",\n inputs: [],\n outputs: [{ type: \"collection_drop::types::ClaimConditions\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"set_allowlist_enabled\",\n inputs: [{ name: \"enabled\", type: \"core::bool\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"is_allowlist_enabled\",\n inputs: [],\n outputs: [{ type: \"core::bool\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"add_to_allowlist\",\n inputs: [{ name: \"address\", type: \"core::starknet::contract_address::ContractAddress\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"batch_add_to_allowlist\",\n inputs: [{ name: \"addresses\", type: \"core::array::Array::<core::starknet::contract_address::ContractAddress>\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"remove_from_allowlist\",\n inputs: [{ name: \"address\", type: \"core::starknet::contract_address::ContractAddress\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"is_allowlisted\",\n inputs: [{ name: \"address\", type: \"core::starknet::contract_address::ContractAddress\" }],\n outputs: [{ type: \"core::bool\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"set_base_uri\",\n inputs: [{ name: \"new_uri\", type: \"core::byte_array::ByteArray\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"set_token_uri\",\n inputs: [\n { name: \"token_id\", type: \"core::integer::u256\" },\n { name: \"uri\", type: \"core::byte_array::ByteArray\" },\n ],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"set_paused\",\n inputs: [{ name: \"paused\", type: \"core::bool\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"withdraw_payments\",\n inputs: [],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"get_drop_id\",\n inputs: [],\n outputs: [{ type: \"core::integer::u256\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"get_max_supply\",\n inputs: [],\n outputs: [{ type: \"core::integer::u256\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"total_minted\",\n inputs: [],\n outputs: [{ type: \"core::integer::u256\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"remaining_supply\",\n inputs: [],\n outputs: [{ type: \"core::integer::u256\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"minted_by_wallet\",\n inputs: [{ name: \"wallet\", type: \"core::starknet::contract_address::ContractAddress\" }],\n outputs: [{ type: \"core::integer::u256\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"is_paused\",\n inputs: [],\n outputs: [{ type: \"core::bool\" }],\n state_mutability: \"view\",\n },\n] as const;\n\n","export const DropFactoryABI = [\n {\n type: \"struct\",\n name: \"core::byte_array::ByteArray\",\n members: [\n { name: \"data\", type: \"core::array::Array::<core::felt252>\" },\n { name: \"pending_word\", type: \"core::felt252\" },\n { name: \"pending_word_len\", type: \"core::integer::u32\" },\n ],\n },\n {\n type: \"struct\",\n name: \"collection_drop::types::ClaimConditions\",\n members: [\n { name: \"start_time\", type: \"core::integer::u64\" },\n { name: \"end_time\", type: \"core::integer::u64\" },\n { name: \"price\", type: \"core::integer::u256\" },\n { name: \"payment_token\", type: \"core::starknet::contract_address::ContractAddress\" },\n { name: \"max_quantity_per_wallet\", type: \"core::integer::u256\" },\n ],\n },\n {\n type: \"function\",\n name: \"register_organizer\",\n inputs: [\n { name: \"organizer\", type: \"core::starknet::contract_address::ContractAddress\" },\n { name: \"name\", type: \"core::byte_array::ByteArray\" },\n ],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"revoke_organizer\",\n inputs: [{ name: \"organizer\", type: \"core::starknet::contract_address::ContractAddress\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"is_active_organizer\",\n inputs: [{ name: \"organizer\", type: \"core::starknet::contract_address::ContractAddress\" }],\n outputs: [{ type: \"core::bool\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"create_drop\",\n inputs: [\n { name: \"name\", type: \"core::byte_array::ByteArray\" },\n { name: \"symbol\", type: \"core::byte_array::ByteArray\" },\n { name: \"base_uri\", type: \"core::byte_array::ByteArray\" },\n { name: \"max_supply\", type: \"core::integer::u256\" },\n { name: \"initial_conditions\", type: \"collection_drop::types::ClaimConditions\" },\n ],\n outputs: [{ type: \"core::starknet::contract_address::ContractAddress\" }],\n state_mutability: \"external\",\n },\n {\n type: \"function\",\n name: \"get_drop_address\",\n inputs: [{ name: \"drop_id\", type: \"core::integer::u256\" }],\n outputs: [{ type: \"core::starknet::contract_address::ContractAddress\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"get_last_drop_id\",\n inputs: [],\n outputs: [{ type: \"core::integer::u256\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"get_organizer_drop_count\",\n inputs: [{ name: \"organizer\", type: \"core::starknet::contract_address::ContractAddress\" }],\n outputs: [{ type: \"core::integer::u32\" }],\n state_mutability: \"view\",\n },\n {\n type: \"function\",\n name: \"set_drop_collection_class_hash\",\n inputs: [{ name: \"new_class_hash\", type: \"core::starknet::class_hash::ClassHash\" }],\n outputs: [],\n state_mutability: \"external\",\n },\n] as const;\n\n","// Auto-generated from Medialane1155 class (redesigned venue). Do not hand-edit.\nexport const Medialane1155ABI = [\n {\n \"type\": \"impl\",\n \"name\": \"Medialane1155Impl\",\n \"interface_name\": \"medialane_marketplace_erc1155::core::interface::IMedialane1155\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc1155::core::types::OfferItem\",\n \"members\": [\n {\n \"name\": \"item_type\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"token\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"identifier_or_criteria\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"core::felt252\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc1155::core::types::ConsiderationItem\",\n \"members\": [\n {\n \"name\": \"item_type\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"token\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"identifier_or_criteria\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc1155::core::types::OrderParameters\",\n \"members\": [\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"marketplace\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"offer\",\n \"type\": \"medialane_marketplace_erc1155::core::types::OfferItem\"\n },\n {\n \"name\": \"consideration\",\n \"type\": \"medialane_marketplace_erc1155::core::types::ConsiderationItem\"\n },\n {\n \"name\": \"royalty_max_bps\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"salt\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"counter\",\n \"type\": \"core::felt252\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc1155::core::types::Order\",\n \"members\": [\n {\n \"name\": \"parameters\",\n \"type\": \"medialane_marketplace_erc1155::core::types::OrderParameters\"\n },\n {\n \"name\": \"signature\",\n \"type\": \"core::array::Array::<core::felt252>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc1155::core::types::OrderCancellation\",\n \"members\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc1155::core::types::CancelRequest\",\n \"members\": [\n {\n \"name\": \"cancelation\",\n \"type\": \"medialane_marketplace_erc1155::core::types::OrderCancellation\"\n },\n {\n \"name\": \"signature\",\n \"type\": \"core::array::Array::<core::felt252>\"\n }\n ]\n },\n {\n \"type\": \"enum\",\n \"name\": \"medialane_marketplace_erc1155::core::types::OrderStatus\",\n \"variants\": [\n {\n \"name\": \"None\",\n \"type\": \"()\"\n },\n {\n \"name\": \"Created\",\n \"type\": \"()\"\n },\n {\n \"name\": \"Filled\",\n \"type\": \"()\"\n },\n {\n \"name\": \"Cancelled\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"medialane_marketplace_erc1155::core::types::OrderDetails\",\n \"members\": [\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"offer\",\n \"type\": \"medialane_marketplace_erc1155::core::types::OfferItem\"\n },\n {\n \"name\": \"consideration\",\n \"type\": \"medialane_marketplace_erc1155::core::types::ConsiderationItem\"\n },\n {\n \"name\": \"royalty_max_bps\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"order_status\",\n \"type\": \"medialane_marketplace_erc1155::core::types::OrderStatus\"\n },\n {\n \"name\": \"remaining_amount\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"counter\",\n \"type\": \"core::felt252\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"medialane_marketplace_erc1155::core::interface::IMedialane1155\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"register_order\",\n \"inputs\": [\n {\n \"name\": \"order\",\n \"type\": \"medialane_marketplace_erc1155::core::types::Order\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"fulfill_order\",\n \"inputs\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"quantity\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"cancel_order\",\n \"inputs\": [\n {\n \"name\": \"cancel_request\",\n \"type\": \"medialane_marketplace_erc1155::core::types::CancelRequest\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"increment_counter\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_order_details\",\n \"inputs\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"medialane_marketplace_erc1155::core::types::OrderDetails\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_order_hash\",\n \"inputs\": [\n {\n \"name\": \"parameters\",\n \"type\": \"medialane_marketplace_erc1155::core::types::OrderParameters\"\n },\n {\n \"name\": \"signer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::felt252\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_cancellation_hash\",\n \"inputs\": [\n {\n \"name\": \"cancellation\",\n \"type\": \"medialane_marketplace_erc1155::core::types::OrderCancellation\"\n },\n {\n \"name\": \"signer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::felt252\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_counter\",\n \"inputs\": [\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::felt252\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_native_token_address\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"constructor\",\n \"name\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"native_token_address\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"medialane_marketplace_erc1155::core::events::OrderCreated\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::integer::u256\",\n \"members\": [\n {\n \"name\": \"low\",\n \"type\": \"core::integer::u128\"\n },\n {\n \"name\": \"high\",\n \"type\": \"core::integer::u128\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"medialane_marketplace_erc1155::core::events::OrderFulfilled\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"fulfiller\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"quantity\",\n \"type\": \"core::felt252\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"remaining_amount\",\n \"type\": \"core::felt252\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"sale_amount\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"royalty_receiver\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"royalty_amount\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"medialane_marketplace_erc1155::core::events::OrderCancelled\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"order_hash\",\n \"type\": \"core::felt252\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"medialane_marketplace_erc1155::core::events::CounterIncremented\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"offerer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"new_counter\",\n \"type\": \"core::felt252\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"medialane_marketplace_erc1155::core::medialane::Medialane1155::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"OrderCreated\",\n \"type\": \"medialane_marketplace_erc1155::core::events::OrderCreated\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"OrderFulfilled\",\n \"type\": \"medialane_marketplace_erc1155::core::events::OrderFulfilled\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"OrderCancelled\",\n \"type\": \"medialane_marketplace_erc1155::core::events::OrderCancelled\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"CounterIncremented\",\n \"type\": \"medialane_marketplace_erc1155::core::events::CounterIncremented\",\n \"kind\": \"nested\"\n }\n ]\n }\n] as const;\n","export const IPCollection1155FactoryABI = [\n {\n \"type\": \"impl\",\n \"name\": \"IPCollectionFactoryImpl\",\n \"interface_name\": \"ip_programmable_erc1155_collections::interfaces::IIPCollectionFactory::IIPCollectionFactory\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::byte_array::ByteArray\",\n \"members\": [\n {\n \"name\": \"data\",\n \"type\": \"core::array::Array::<core::bytes_31::bytes31>\"\n },\n {\n \"name\": \"pending_word\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"pending_word_len\",\n \"type\": \"core::internal::bounded_int::BoundedInt::<0, 30>\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"ip_programmable_erc1155_collections::interfaces::IIPCollectionFactory::IIPCollectionFactory\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"collection_class_hash\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::class_hash::ClassHash\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"version\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"deploy_collection\",\n \"inputs\": [\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"base_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"constructor\",\n \"name\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"collection_class_hash\",\n \"type\": \"core::starknet::class_hash::ClassHash\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_programmable_erc1155_collections::IPCollectionFactory::IPCollectionFactory::CollectionDeployed\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"collection_address\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"base_uri\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_programmable_erc1155_collections::IPCollectionFactory::IPCollectionFactory::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"CollectionDeployed\",\n \"type\": \"ip_programmable_erc1155_collections::IPCollectionFactory::IPCollectionFactory::CollectionDeployed\",\n \"kind\": \"nested\"\n }\n ]\n }\n] as const;\n","export const IPCollection1155ABI = [\n {\n \"type\": \"impl\",\n \"name\": \"ERC1155MetadataURIImpl\",\n \"interface_name\": \"openzeppelin_token::erc1155::interface::IERC1155MetadataURI\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::integer::u256\",\n \"members\": [\n {\n \"name\": \"low\",\n \"type\": \"core::integer::u128\"\n },\n {\n \"name\": \"high\",\n \"type\": \"core::integer::u128\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::byte_array::ByteArray\",\n \"members\": [\n {\n \"name\": \"data\",\n \"type\": \"core::array::Array::<core::bytes_31::bytes31>\"\n },\n {\n \"name\": \"pending_word\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"pending_word_len\",\n \"type\": \"core::internal::bounded_int::BoundedInt::<0, 30>\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc1155::interface::IERC1155MetadataURI\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"uri\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"IPCollectionImpl\",\n \"interface_name\": \"ip_programmable_erc1155_collections::interfaces::IIPCollection::IIPCollection\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::integer::u256>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::integer::u256>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"ip_programmable_erc1155_collections::types::TokenData\",\n \"members\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"metadata_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"original_creator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"registered_at\",\n \"type\": \"core::integer::u64\"\n }\n ]\n },\n {\n \"type\": \"enum\",\n \"name\": \"core::bool\",\n \"variants\": [\n {\n \"name\": \"False\",\n \"type\": \"()\"\n },\n {\n \"name\": \"True\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"ip_programmable_erc1155_collections::interfaces::IIPCollection::IIPCollection\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"name\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"symbol\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"base_uri\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"version\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"mint_edition\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"token_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"batch_mint_edition\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"values\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"token_uris\",\n \"type\": \"core::array::Array::<core::byte_array::ByteArray>\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"add_supply\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_collection_creator\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_token_creator\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_token_registered_at\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u64\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_token_data\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"ip_programmable_erc1155_collections::types::TokenData\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"total_editions\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"token_exists\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"OwnableMixinImpl\",\n \"interface_name\": \"openzeppelin_access::ownable::interface::OwnableABI\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_access::ownable::interface::OwnableABI\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer_ownership\",\n \"inputs\": [\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounce_ownership\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"SRC5Impl\",\n \"interface_name\": \"openzeppelin_introspection::interface::ISRC5\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_introspection::interface::ISRC5\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"supports_interface\",\n \"inputs\": [\n {\n \"name\": \"interface_id\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC1155Impl\",\n \"interface_name\": \"openzeppelin_token::erc1155::interface::IERC1155\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::starknet::contract_address::ContractAddress>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::starknet::contract_address::ContractAddress>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::felt252>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::felt252>\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc1155::interface::IERC1155\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"balance_of\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balance_of_batch\",\n \"inputs\": [\n {\n \"name\": \"accounts\",\n \"type\": \"core::array::Span::<core::starknet::contract_address::ContractAddress>\"\n },\n {\n \"name\": \"token_ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safe_transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safe_batch_transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"values\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_approved_for_all\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_approval_for_all\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC1155CamelImpl\",\n \"interface_name\": \"openzeppelin_token::erc1155::interface::IERC1155Camel\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc1155::interface::IERC1155Camel\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balanceOfBatch\",\n \"inputs\": [\n {\n \"name\": \"accounts\",\n \"type\": \"core::array::Span::<core::starknet::contract_address::ContractAddress>\"\n },\n {\n \"name\": \"tokenIds\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safeTransferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safeBatchTransferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenIds\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"values\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isApprovedForAll\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setApprovalForAll\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC2981Impl\",\n \"interface_name\": \"openzeppelin_token::common::erc2981::interface::IERC2981\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::common::erc2981::interface::IERC2981\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"royalty_info\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"sale_price\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"(core::starknet::contract_address::ContractAddress, core::integer::u256)\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC2981InfoImpl\",\n \"interface_name\": \"openzeppelin_token::common::erc2981::interface::IERC2981Info\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::common::erc2981::interface::IERC2981Info\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"default_royalty\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"(core::starknet::contract_address::ContractAddress, core::integer::u128, core::integer::u128)\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"token_royalty\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"(core::starknet::contract_address::ContractAddress, core::integer::u128, core::integer::u128)\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC2981AdminOwnableImpl\",\n \"interface_name\": \"openzeppelin_token::common::erc2981::interface::IERC2981Admin\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::common::erc2981::interface::IERC2981Admin\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"set_default_royalty\",\n \"inputs\": [\n {\n \"name\": \"receiver\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"fee_numerator\",\n \"type\": \"core::integer::u128\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"delete_default_royalty\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_token_royalty\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"receiver\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"fee_numerator\",\n \"type\": \"core::integer::u128\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"reset_token_royalty\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"constructor\",\n \"name\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"base_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferred\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"previous_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferStarted\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"previous_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"OwnershipTransferred\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferred\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"OwnershipTransferStarted\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferStarted\",\n \"kind\": \"nested\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferSingle\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferBatch\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"values\",\n \"type\": \"core::array::Span::<core::integer::u256>\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::ApprovalForAll\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::URI\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"value\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"TransferSingle\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferSingle\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"TransferBatch\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferBatch\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"ApprovalForAll\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::ApprovalForAll\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"URI\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::URI\",\n \"kind\": \"nested\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::common::erc2981::erc2981::ERC2981Component::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_programmable_erc1155_collections::IPCollection::IPCollection::IPMinted\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"uri\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"registered_at\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_programmable_erc1155_collections::IPCollection::IPCollection::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"SRC5Event\",\n \"type\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"OwnableEvent\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"ERC1155Event\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"ERC2981Event\",\n \"type\": \"openzeppelin_token::common::erc2981::erc2981::ERC2981Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"IPMinted\",\n \"type\": \"ip_programmable_erc1155_collections::IPCollection::IPCollection::IPMinted\",\n \"kind\": \"nested\"\n }\n ]\n }\n] as const;\n","export const IPCollectionABI =\n[\n {\n \"type\": \"impl\",\n \"name\": \"IPCollectionImpl\",\n \"interface_name\": \"ip_collection_erc_721::interfaces::IIPCollection::IIPCollection\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::byte_array::ByteArray\",\n \"members\": [\n {\n \"name\": \"data\",\n \"type\": \"core::array::Array::<core::bytes_31::bytes31>\"\n },\n {\n \"name\": \"pending_word\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"pending_word_len\",\n \"type\": \"core::internal::bounded_int::BoundedInt::<0, 30>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::integer::u256\",\n \"members\": [\n {\n \"name\": \"low\",\n \"type\": \"core::integer::u128\"\n },\n {\n \"name\": \"high\",\n \"type\": \"core::integer::u128\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::integer::u256>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::integer::u256>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"ip_collection_erc_721::types::Collection\",\n \"members\": [\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"base_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"ip_nft\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ]\n },\n {\n \"type\": \"enum\",\n \"name\": \"core::bool\",\n \"variants\": [\n {\n \"name\": \"False\",\n \"type\": \"()\"\n },\n {\n \"name\": \"True\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"ip_collection_erc_721::types::CollectionStats\",\n \"members\": [\n {\n \"name\": \"total_minted\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"total_archived\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"protocol_routed_transfers\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"last_mint_time\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"last_archive_time\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"last_transfer_time\",\n \"type\": \"core::integer::u64\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"ip_collection_erc_721::types::TokenData\",\n \"members\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"metadata_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"original_creator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"registered_at\",\n \"type\": \"core::integer::u64\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"ip_collection_erc_721::interfaces::IIPCollection::IIPCollection\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"create_collection\",\n \"inputs\": [\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"base_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"mint\",\n \"inputs\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u128\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"batch_mint\",\n \"inputs\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"recipients\",\n \"type\": \"core::array::Array::<core::starknet::contract_address::ContractAddress>\"\n },\n {\n \"name\": \"token_uris\",\n \"type\": \"core::array::Array::<core::byte_array::ByteArray>\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::array::Array::<core::integer::u128>\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer_collection_ownership\",\n \"inputs\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"archive\",\n \"inputs\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"batch_archive\",\n \"inputs\": [\n {\n \"name\": \"collection_ids\",\n \"type\": \"core::array::Array::<core::integer::u256>\"\n },\n {\n \"name\": \"token_ids\",\n \"type\": \"core::array::Array::<core::integer::u256>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer_token\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"batch_transfer\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"collection_ids\",\n \"type\": \"core::array::Array::<core::integer::u256>\"\n },\n {\n \"name\": \"token_ids\",\n \"type\": \"core::array::Array::<core::integer::u256>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"list_user_tokens_per_collection\",\n \"inputs\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"user\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"list_user_collections\",\n \"inputs\": [\n {\n \"name\": \"user\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_collection\",\n \"inputs\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"ip_collection_erc_721::types::Collection\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_collection_count\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"version\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_valid_collection\",\n \"inputs\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_collection_stats\",\n \"inputs\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"ip_collection_erc_721::types::CollectionStats\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_collection_owner\",\n \"inputs\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_token\",\n \"inputs\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"ip_collection_erc_721::types::TokenData\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_valid_token\",\n \"inputs\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_transferable_token\",\n \"inputs\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"constructor\",\n \"name\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"ip_nft_class_hash\",\n \"type\": \"core::starknet::class_hash::ClassHash\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_collection_erc_721::IPCollection::IPCollection::CollectionCreated\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"base_uri\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_collection_erc_721::IPCollection::IPCollection::CollectionOwnershipTransferred\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"previous_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_collection_erc_721::IPCollection::IPCollection::TokenMinted\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"metadata_uri\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u128\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_collection_erc_721::IPCollection::IPCollection::TokenMintedBatch\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"token_ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"owners\",\n \"type\": \"core::array::Array::<core::starknet::contract_address::ContractAddress>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"metadata_uris\",\n \"type\": \"core::array::Array::<core::byte_array::ByteArray>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_collection_erc_721::IPCollection::IPCollection::TokenArchived\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_collection_erc_721::IPCollection::IPCollection::TokenArchivedBatch\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"collection_ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"token_ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_collection_erc_721::IPCollection::IPCollection::TokenTransferred\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_collection_erc_721::IPCollection::IPCollection::TokenTransferredBatch\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"collection_ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"token_ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_collection_erc_721::IPCollection::IPCollection::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"CollectionCreated\",\n \"type\": \"ip_collection_erc_721::IPCollection::IPCollection::CollectionCreated\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"CollectionOwnershipTransferred\",\n \"type\": \"ip_collection_erc_721::IPCollection::IPCollection::CollectionOwnershipTransferred\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"TokenMinted\",\n \"type\": \"ip_collection_erc_721::IPCollection::IPCollection::TokenMinted\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"TokenMintedBatch\",\n \"type\": \"ip_collection_erc_721::IPCollection::IPCollection::TokenMintedBatch\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"TokenArchived\",\n \"type\": \"ip_collection_erc_721::IPCollection::IPCollection::TokenArchived\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"TokenArchivedBatch\",\n \"type\": \"ip_collection_erc_721::IPCollection::IPCollection::TokenArchivedBatch\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"TokenTransferred\",\n \"type\": \"ip_collection_erc_721::IPCollection::IPCollection::TokenTransferred\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"TokenTransferredBatch\",\n \"type\": \"ip_collection_erc_721::IPCollection::IPCollection::TokenTransferredBatch\",\n \"kind\": \"nested\"\n }\n ]\n }\n] as const;\n","export const IPNftABI =\n[\n {\n \"type\": \"impl\",\n \"name\": \"ERC721Metadata\",\n \"interface_name\": \"openzeppelin_token::erc721::interface::IERC721Metadata\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::byte_array::ByteArray\",\n \"members\": [\n {\n \"name\": \"data\",\n \"type\": \"core::array::Array::<core::bytes_31::bytes31>\"\n },\n {\n \"name\": \"pending_word\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"pending_word_len\",\n \"type\": \"core::internal::bounded_int::BoundedInt::<0, 30>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::integer::u256\",\n \"members\": [\n {\n \"name\": \"low\",\n \"type\": \"core::integer::u128\"\n },\n {\n \"name\": \"high\",\n \"type\": \"core::integer::u128\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc721::interface::IERC721Metadata\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"name\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"symbol\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"token_uri\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC721MetadataCamelOnly\",\n \"interface_name\": \"openzeppelin_token::erc721::interface::IERC721MetadataCamelOnly\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc721::interface::IERC721MetadataCamelOnly\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"tokenURI\",\n \"inputs\": [\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"IPNftImpl\",\n \"interface_name\": \"ip_collection_erc_721::interfaces::IIPNFT::IIPNft\"\n },\n {\n \"type\": \"enum\",\n \"name\": \"core::bool\",\n \"variants\": [\n {\n \"name\": \"False\",\n \"type\": \"()\"\n },\n {\n \"name\": \"True\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::integer::u256>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::integer::u256>\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"ip_collection_erc_721::interfaces::IIPNFT::IIPNft\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"mint\",\n \"inputs\": [\n {\n \"name\": \"recipient\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"token_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u128\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"archive\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_archived\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_collection_id\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_registry\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"version\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"base_uri\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"all_tokens_of_owner\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"token_exists\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_full_token_data\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"(core::starknet::contract_address::ContractAddress, core::byte_array::ByteArray, core::starknet::contract_address::ContractAddress, core::integer::u64)\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_token_creator\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_token_registered_at\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u64\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC721Impl\",\n \"interface_name\": \"openzeppelin_token::erc721::interface::IERC721\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::felt252>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::felt252>\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc721::interface::IERC721\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"balance_of\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner_of\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safe_transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"approve\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_approval_for_all\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_approved\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_approved_for_all\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC721CamelOnly\",\n \"interface_name\": \"openzeppelin_token::erc721::interface::IERC721CamelOnly\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc721::interface::IERC721CamelOnly\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"ownerOf\",\n \"inputs\": [\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safeTransferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setApprovalForAll\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getApproved\",\n \"inputs\": [\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isApprovedForAll\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC721EnumerableImpl\",\n \"interface_name\": \"openzeppelin_token::erc721::extensions::erc721_enumerable::interface::IERC721Enumerable\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc721::extensions::erc721_enumerable::interface::IERC721Enumerable\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"total_supply\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"token_by_index\",\n \"inputs\": [\n {\n \"name\": \"index\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"token_of_owner_by_index\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"index\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"SRC5Impl\",\n \"interface_name\": \"openzeppelin_introspection::interface::ISRC5\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_introspection::interface::ISRC5\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"supports_interface\",\n \"inputs\": [\n {\n \"name\": \"interface_id\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC2981Impl\",\n \"interface_name\": \"openzeppelin_token::common::erc2981::interface::IERC2981\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::common::erc2981::interface::IERC2981\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"royalty_info\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"sale_price\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"(core::starknet::contract_address::ContractAddress, core::integer::u256)\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC2981InfoImpl\",\n \"interface_name\": \"openzeppelin_token::common::erc2981::interface::IERC2981Info\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::common::erc2981::interface::IERC2981Info\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"default_royalty\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"(core::starknet::contract_address::ContractAddress, core::integer::u128, core::integer::u128)\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"token_royalty\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"(core::starknet::contract_address::ContractAddress, core::integer::u128, core::integer::u128)\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"constructor\",\n \"name\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"base_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"collection_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"registry\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::erc721::ERC721Component::Transfer\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::erc721::ERC721Component::Approval\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::erc721::ERC721Component::ApprovalForAll\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::erc721::ERC721Component::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Transfer\",\n \"type\": \"openzeppelin_token::erc721::erc721::ERC721Component::Transfer\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"Approval\",\n \"type\": \"openzeppelin_token::erc721::erc721::ERC721Component::Approval\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"ApprovalForAll\",\n \"type\": \"openzeppelin_token::erc721::erc721::ERC721Component::ApprovalForAll\",\n \"kind\": \"nested\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::extensions::erc721_enumerable::erc721_enumerable::ERC721EnumerableComponent::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::common::erc2981::erc2981::ERC2981Component::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_collection_erc_721::IPNft::IPNft::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"ERC721Event\",\n \"type\": \"openzeppelin_token::erc721::erc721::ERC721Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"SRC5Event\",\n \"type\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"ERC721EnumerableEvent\",\n \"type\": \"openzeppelin_token::erc721::extensions::erc721_enumerable::erc721_enumerable::ERC721EnumerableComponent::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"ERC2981Event\",\n \"type\": \"openzeppelin_token::common::erc2981::erc2981::ERC2981Component::Event\",\n \"kind\": \"flat\"\n }\n ]\n }\n] as const;\n","// Auto-extracted from the deployed Creator Coin Factory class (scarb 2.4.3 build).\n// Covers create_creator_coin / launch_on_ekubo / views. Do not edit by hand.\nexport const CreatorCoinFactoryABI = [{\"type\":\"impl\",\"name\":\"FactoryImpl\",\"interface_name\":\"creator_coin::factory::interface::IFactory\"},{\"type\":\"struct\",\"name\":\"core::integer::u256\",\"members\":[{\"name\":\"low\",\"type\":\"core::integer::u128\"},{\"name\":\"high\",\"type\":\"core::integer::u128\"}]},{\"type\":\"struct\",\"name\":\"core::array::Span::<core::starknet::contract_address::ContractAddress>\",\"members\":[{\"name\":\"snapshot\",\"type\":\"@core::array::Array::<core::starknet::contract_address::ContractAddress>\"}]},{\"type\":\"struct\",\"name\":\"core::array::Span::<core::integer::u256>\",\"members\":[{\"name\":\"snapshot\",\"type\":\"@core::array::Array::<core::integer::u256>\"}]},{\"type\":\"struct\",\"name\":\"creator_coin::factory::LaunchParameters\",\"members\":[{\"name\":\"creator_coin_address\",\"type\":\"core::starknet::contract_address::ContractAddress\"},{\"name\":\"transfer_restriction_delay\",\"type\":\"core::integer::u64\"},{\"name\":\"max_percentage_buy_launch\",\"type\":\"core::integer::u16\"},{\"name\":\"quote_address\",\"type\":\"core::starknet::contract_address::ContractAddress\"},{\"name\":\"initial_holders\",\"type\":\"core::array::Span::<core::starknet::contract_address::ContractAddress>\"},{\"name\":\"initial_holders_amounts\",\"type\":\"core::array::Span::<core::integer::u256>\"}]},{\"type\":\"enum\",\"name\":\"core::bool\",\"variants\":[{\"name\":\"False\",\"type\":\"()\"},{\"name\":\"True\",\"type\":\"()\"}]},{\"type\":\"struct\",\"name\":\"ekubo::types::i129::i129\",\"members\":[{\"name\":\"mag\",\"type\":\"core::integer::u128\"},{\"name\":\"sign\",\"type\":\"core::bool\"}]},{\"type\":\"struct\",\"name\":\"creator_coin::exchanges::ekubo::ekubo_adapter::EkuboPoolParameters\",\"members\":[{\"name\":\"fee\",\"type\":\"core::integer::u128\"},{\"name\":\"tick_spacing\",\"type\":\"core::integer::u128\"},{\"name\":\"starting_price\",\"type\":\"ekubo::types::i129::i129\"},{\"name\":\"bound\",\"type\":\"core::integer::u128\"}]},{\"type\":\"struct\",\"name\":\"ekubo::types::keys::PoolKey\",\"members\":[{\"name\":\"token0\",\"type\":\"core::starknet::contract_address::ContractAddress\"},{\"name\":\"token1\",\"type\":\"core::starknet::contract_address::ContractAddress\"},{\"name\":\"fee\",\"type\":\"core::integer::u128\"},{\"name\":\"tick_spacing\",\"type\":\"core::integer::u128\"},{\"name\":\"extension\",\"type\":\"core::starknet::contract_address::ContractAddress\"}]},{\"type\":\"struct\",\"name\":\"ekubo::types::bounds::Bounds\",\"members\":[{\"name\":\"lower\",\"type\":\"ekubo::types::i129::i129\"},{\"name\":\"upper\",\"type\":\"ekubo::types::i129::i129\"}]},{\"type\":\"struct\",\"name\":\"creator_coin::exchanges::ekubo::launcher::EkuboLP\",\"members\":[{\"name\":\"owner\",\"type\":\"core::starknet::contract_address::ContractAddress\"},{\"name\":\"quote_address\",\"type\":\"core::starknet::contract_address::ContractAddress\"},{\"name\":\"pool_key\",\"type\":\"ekubo::types::keys::PoolKey\"},{\"name\":\"bounds\",\"type\":\"ekubo::types::bounds::Bounds\"}]},{\"type\":\"enum\",\"name\":\"creator_coin::exchanges::SupportedExchanges\",\"variants\":[{\"name\":\"Jediswap\",\"type\":\"()\"},{\"name\":\"Ekubo\",\"type\":\"()\"},{\"name\":\"Starkdefi\",\"type\":\"()\"}]},{\"type\":\"enum\",\"name\":\"creator_coin::token::creator_coin::LiquidityType\",\"variants\":[{\"name\":\"JediERC20\",\"type\":\"core::starknet::contract_address::ContractAddress\"},{\"name\":\"StarkDeFiERC20\",\"type\":\"core::starknet::contract_address::ContractAddress\"},{\"name\":\"EkuboNFT\",\"type\":\"core::integer::u64\"}]},{\"type\":\"enum\",\"name\":\"core::option::Option::<(core::starknet::contract_address::ContractAddress, creator_coin::token::creator_coin::LiquidityType)>\",\"variants\":[{\"name\":\"Some\",\"type\":\"(core::starknet::contract_address::ContractAddress, creator_coin::token::creator_coin::LiquidityType)\"},{\"name\":\"None\",\"type\":\"()\"}]},{\"type\":\"interface\",\"name\":\"creator_coin::factory::interface::IFactory\",\"items\":[{\"type\":\"function\",\"name\":\"create_creator_coin\",\"inputs\":[{\"name\":\"owner\",\"type\":\"core::starknet::contract_address::ContractAddress\"},{\"name\":\"name\",\"type\":\"core::felt252\"},{\"name\":\"symbol\",\"type\":\"core::felt252\"},{\"name\":\"initial_supply\",\"type\":\"core::integer::u256\"},{\"name\":\"contract_address_salt\",\"type\":\"core::felt252\"}],\"outputs\":[{\"type\":\"core::starknet::contract_address::ContractAddress\"}],\"state_mutability\":\"external\"},{\"type\":\"function\",\"name\":\"launch_on_jediswap\",\"inputs\":[{\"name\":\"launch_parameters\",\"type\":\"creator_coin::factory::LaunchParameters\"},{\"name\":\"quote_amount\",\"type\":\"core::integer::u256\"},{\"name\":\"unlock_time\",\"type\":\"core::integer::u64\"}],\"outputs\":[{\"type\":\"core::starknet::contract_address::ContractAddress\"}],\"state_mutability\":\"external\"},{\"type\":\"function\",\"name\":\"launch_on_ekubo\",\"inputs\":[{\"name\":\"launch_parameters\",\"type\":\"creator_coin::factory::LaunchParameters\"},{\"name\":\"ekubo_parameters\",\"type\":\"creator_coin::exchanges::ekubo::ekubo_adapter::EkuboPoolParameters\"}],\"outputs\":[{\"type\":\"(core::integer::u64, creator_coin::exchanges::ekubo::launcher::EkuboLP)\"}],\"state_mutability\":\"external\"},{\"type\":\"function\",\"name\":\"launch_on_starkdefi\",\"inputs\":[{\"name\":\"launch_parameters\",\"type\":\"creator_coin::factory::LaunchParameters\"},{\"name\":\"quote_amount\",\"type\":\"core::integer::u256\"},{\"name\":\"unlock_time\",\"type\":\"core::integer::u64\"}],\"outputs\":[{\"type\":\"core::starknet::contract_address::ContractAddress\"}],\"state_mutability\":\"external\"},{\"type\":\"function\",\"name\":\"exchange_address\",\"inputs\":[{\"name\":\"exchange\",\"type\":\"creator_coin::exchanges::SupportedExchanges\"}],\"outputs\":[{\"type\":\"core::starknet::contract_address::ContractAddress\"}],\"state_mutability\":\"view\"},{\"type\":\"function\",\"name\":\"lock_manager_address\",\"inputs\":[],\"outputs\":[{\"type\":\"core::starknet::contract_address::ContractAddress\"}],\"state_mutability\":\"view\"},{\"type\":\"function\",\"name\":\"locked_liquidity\",\"inputs\":[{\"name\":\"token\",\"type\":\"core::starknet::contract_address::ContractAddress\"}],\"outputs\":[{\"type\":\"core::option::Option::<(core::starknet::contract_address::ContractAddress, creator_coin::token::creator_coin::LiquidityType)>\"}],\"state_mutability\":\"view\"},{\"type\":\"function\",\"name\":\"is_creator_coin\",\"inputs\":[{\"name\":\"address\",\"type\":\"core::starknet::contract_address::ContractAddress\"}],\"outputs\":[{\"type\":\"core::bool\"}],\"state_mutability\":\"view\"},{\"type\":\"function\",\"name\":\"ekubo_core_address\",\"inputs\":[],\"outputs\":[{\"type\":\"core::starknet::contract_address::ContractAddress\"}],\"state_mutability\":\"view\"}]},{\"type\":\"struct\",\"name\":\"core::array::Span::<(creator_coin::exchanges::SupportedExchanges, core::starknet::contract_address::ContractAddress)>\",\"members\":[{\"name\":\"snapshot\",\"type\":\"@core::array::Array::<(creator_coin::exchanges::SupportedExchanges, core::starknet::contract_address::ContractAddress)>\"}]},{\"type\":\"struct\",\"name\":\"core::array::Span::<(core::starknet::contract_address::ContractAddress, core::starknet::contract_address::ContractAddress)>\",\"members\":[{\"name\":\"snapshot\",\"type\":\"@core::array::Array::<(core::starknet::contract_address::ContractAddress, core::starknet::contract_address::ContractAddress)>\"}]},{\"type\":\"constructor\",\"name\":\"constructor\",\"inputs\":[{\"name\":\"creator_coin_class_hash\",\"type\":\"core::starknet::class_hash::ClassHash\"},{\"name\":\"lock_manager_address\",\"type\":\"core::starknet::contract_address::ContractAddress\"},{\"name\":\"exchanges\",\"type\":\"core::array::Span::<(creator_coin::exchanges::SupportedExchanges, core::starknet::contract_address::ContractAddress)>\"},{\"name\":\"migrated_tokens\",\"type\":\"core::array::Span::<(core::starknet::contract_address::ContractAddress, core::starknet::contract_address::ContractAddress)>\"}]},{\"type\":\"event\",\"name\":\"creator_coin::factory::factory::Factory::CreatorCoinCreated\",\"kind\":\"struct\",\"members\":[{\"name\":\"owner\",\"type\":\"core::starknet::contract_address::ContractAddress\",\"kind\":\"data\"},{\"name\":\"name\",\"type\":\"core::felt252\",\"kind\":\"data\"},{\"name\":\"symbol\",\"type\":\"core::felt252\",\"kind\":\"data\"},{\"name\":\"initial_supply\",\"type\":\"core::integer::u256\",\"kind\":\"data\"},{\"name\":\"creator_coin_address\",\"type\":\"core::starknet::contract_address::ContractAddress\",\"kind\":\"data\"}]},{\"type\":\"event\",\"name\":\"creator_coin::factory::factory::Factory::CreatorCoinLaunched\",\"kind\":\"struct\",\"members\":[{\"name\":\"creator_coin_address\",\"type\":\"core::starknet::contract_address::ContractAddress\",\"kind\":\"data\"},{\"name\":\"quote_token\",\"type\":\"core::starknet::contract_address::ContractAddress\",\"kind\":\"data\"},{\"name\":\"exchange_name\",\"type\":\"core::felt252\",\"kind\":\"data\"}]},{\"type\":\"event\",\"name\":\"creator_coin::factory::factory::Factory::Event\",\"kind\":\"enum\",\"variants\":[{\"name\":\"CreatorCoinCreated\",\"type\":\"creator_coin::factory::factory::Factory::CreatorCoinCreated\",\"kind\":\"nested\"},{\"name\":\"CreatorCoinLaunched\",\"type\":\"creator_coin::factory::factory::Factory::CreatorCoinLaunched\",\"kind\":\"nested\"}]}] as const;\n","export const IPTicketCollectionABI = [\n {\n \"type\": \"impl\",\n \"name\": \"ERC1155MetadataURIImpl\",\n \"interface_name\": \"openzeppelin_token::erc1155::interface::IERC1155MetadataURI\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::integer::u256\",\n \"members\": [\n {\n \"name\": \"low\",\n \"type\": \"core::integer::u128\"\n },\n {\n \"name\": \"high\",\n \"type\": \"core::integer::u128\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::byte_array::ByteArray\",\n \"members\": [\n {\n \"name\": \"data\",\n \"type\": \"core::array::Array::<core::bytes_31::bytes31>\"\n },\n {\n \"name\": \"pending_word\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"pending_word_len\",\n \"type\": \"core::internal::bounded_int::BoundedInt::<0, 30>\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc1155::interface::IERC1155MetadataURI\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"uri\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"IPTicketCollectionImpl\",\n \"interface_name\": \"ip_ticket::interface::IIPTicketCollection\"\n },\n {\n \"type\": \"enum\",\n \"name\": \"core::option::Option::<core::integer::u64>\",\n \"variants\": [\n {\n \"name\": \"Some\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"None\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"enum\",\n \"name\": \"core::bool\",\n \"variants\": [\n {\n \"name\": \"False\",\n \"type\": \"()\"\n },\n {\n \"name\": \"True\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"ip_ticket::types::Ticket\",\n \"members\": [\n {\n \"name\": \"max_supply\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"minted\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"core::option::Option::<core::integer::u64>\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"core::option::Option::<core::integer::u64>\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u16\"\n },\n {\n \"name\": \"metadata_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"ip_ticket::interface::IIPTicketCollection\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"create_ticket\",\n \"inputs\": [\n {\n \"name\": \"max_supply\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"core::option::Option::<core::integer::u64>\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"core::option::Option::<core::integer::u64>\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u16\"\n },\n {\n \"name\": \"metadata_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"mint\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_valid\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"holder\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_ticket\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"ip_ticket::types::Ticket\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"ticket_count\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"name\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"symbol\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"base_uri\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"royalty_info\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"sale_price\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"(core::starknet::contract_address::ContractAddress, core::integer::u256)\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"royaltyInfo\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"sale_price\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"(core::starknet::contract_address::ContractAddress, core::integer::u256)\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"version\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC1155Impl\",\n \"interface_name\": \"openzeppelin_token::erc1155::interface::IERC1155\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::starknet::contract_address::ContractAddress>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::starknet::contract_address::ContractAddress>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::integer::u256>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::integer::u256>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::felt252>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::felt252>\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc1155::interface::IERC1155\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"balance_of\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balance_of_batch\",\n \"inputs\": [\n {\n \"name\": \"accounts\",\n \"type\": \"core::array::Span::<core::starknet::contract_address::ContractAddress>\"\n },\n {\n \"name\": \"token_ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safe_transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safe_batch_transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"values\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_approved_for_all\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_approval_for_all\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC1155CamelImpl\",\n \"interface_name\": \"openzeppelin_token::erc1155::interface::IERC1155Camel\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc1155::interface::IERC1155Camel\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balanceOfBatch\",\n \"inputs\": [\n {\n \"name\": \"accounts\",\n \"type\": \"core::array::Span::<core::starknet::contract_address::ContractAddress>\"\n },\n {\n \"name\": \"tokenIds\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safeTransferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safeBatchTransferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenIds\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"values\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isApprovedForAll\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setApprovalForAll\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"SRC5Impl\",\n \"interface_name\": \"openzeppelin_introspection::interface::ISRC5\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_introspection::interface::ISRC5\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"supports_interface\",\n \"inputs\": [\n {\n \"name\": \"interface_id\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"OwnableMixinImpl\",\n \"interface_name\": \"openzeppelin_access::ownable::interface::OwnableABI\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_access::ownable::interface::OwnableABI\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer_ownership\",\n \"inputs\": [\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounce_ownership\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"constructor\",\n \"name\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"base_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferSingle\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferBatch\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"values\",\n \"type\": \"core::array::Span::<core::integer::u256>\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::ApprovalForAll\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::URI\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"value\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"TransferSingle\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferSingle\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"TransferBatch\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferBatch\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"ApprovalForAll\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::ApprovalForAll\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"URI\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::URI\",\n \"kind\": \"nested\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferred\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"previous_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferStarted\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"previous_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"OwnershipTransferred\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferred\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"OwnershipTransferStarted\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferStarted\",\n \"kind\": \"nested\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_ticket::IPTicketCollection::IPTicketCollection::TicketCreated\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"max_supply\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"core::option::Option::<core::integer::u64>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"core::option::Option::<core::integer::u64>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"metadata_uri\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_ticket::IPTicketCollection::IPTicketCollection::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"ERC1155Event\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"SRC5Event\",\n \"type\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"OwnableEvent\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"TicketCreated\",\n \"type\": \"ip_ticket::IPTicketCollection::IPTicketCollection::TicketCreated\",\n \"kind\": \"nested\"\n }\n ]\n }\n] as const;\n","export const IPTicketCollectionFactoryABI = [\n {\n \"type\": \"impl\",\n \"name\": \"IPTicketCollectionFactoryImpl\",\n \"interface_name\": \"ip_ticket::interface::IIPTicketCollectionFactory\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::byte_array::ByteArray\",\n \"members\": [\n {\n \"name\": \"data\",\n \"type\": \"core::array::Array::<core::bytes_31::bytes31>\"\n },\n {\n \"name\": \"pending_word\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"pending_word_len\",\n \"type\": \"core::internal::bounded_int::BoundedInt::<0, 30>\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"ip_ticket::interface::IIPTicketCollectionFactory\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"collection_class_hash\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::class_hash::ClassHash\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"version\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"deploy_collection\",\n \"inputs\": [\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"base_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"SRC5Impl\",\n \"interface_name\": \"openzeppelin_introspection::interface::ISRC5\"\n },\n {\n \"type\": \"enum\",\n \"name\": \"core::bool\",\n \"variants\": [\n {\n \"name\": \"False\",\n \"type\": \"()\"\n },\n {\n \"name\": \"True\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_introspection::interface::ISRC5\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"supports_interface\",\n \"inputs\": [\n {\n \"name\": \"interface_id\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"constructor\",\n \"name\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"collection_class_hash\",\n \"type\": \"core::starknet::class_hash::ClassHash\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_ticket::IPTicketCollectionFactory::IPTicketCollectionFactory::CollectionDeployed\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"collection_address\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_ticket::IPTicketCollectionFactory::IPTicketCollectionFactory::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"SRC5Event\",\n \"type\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"CollectionDeployed\",\n \"type\": \"ip_ticket::IPTicketCollectionFactory::IPTicketCollectionFactory::CollectionDeployed\",\n \"kind\": \"nested\"\n }\n ]\n }\n] as const;\n","export const IPClubFactoryABI = [\n {\n \"type\": \"impl\",\n \"name\": \"IPClubCollectionFactoryImpl\",\n \"interface_name\": \"ip_club::interface::IIPClubCollectionFactory\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::byte_array::ByteArray\",\n \"members\": [\n {\n \"name\": \"data\",\n \"type\": \"core::array::Array::<core::bytes_31::bytes31>\"\n },\n {\n \"name\": \"pending_word\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"pending_word_len\",\n \"type\": \"core::internal::bounded_int::BoundedInt::<0, 30>\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"ip_club::interface::IIPClubCollectionFactory\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"collection_class_hash\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::class_hash::ClassHash\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"version\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"deploy_collection\",\n \"inputs\": [\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"base_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"SRC5Impl\",\n \"interface_name\": \"openzeppelin_introspection::interface::ISRC5\"\n },\n {\n \"type\": \"enum\",\n \"name\": \"core::bool\",\n \"variants\": [\n {\n \"name\": \"False\",\n \"type\": \"()\"\n },\n {\n \"name\": \"True\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_introspection::interface::ISRC5\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"supports_interface\",\n \"inputs\": [\n {\n \"name\": \"interface_id\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"constructor\",\n \"name\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"collection_class_hash\",\n \"type\": \"core::starknet::class_hash::ClassHash\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_club::IPClubCollectionFactory::IPClubCollectionFactory::ClubDeployed\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"collection_address\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_club::IPClubCollectionFactory::IPClubCollectionFactory::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"SRC5Event\",\n \"type\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"ClubDeployed\",\n \"type\": \"ip_club::IPClubCollectionFactory::IPClubCollectionFactory::ClubDeployed\",\n \"kind\": \"nested\"\n }\n ]\n }\n] as const;\n","export const IPClubCollectionABI = [\n {\n \"type\": \"impl\",\n \"name\": \"ERC1155MetadataURIImpl\",\n \"interface_name\": \"openzeppelin_token::erc1155::interface::IERC1155MetadataURI\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::integer::u256\",\n \"members\": [\n {\n \"name\": \"low\",\n \"type\": \"core::integer::u128\"\n },\n {\n \"name\": \"high\",\n \"type\": \"core::integer::u128\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::byte_array::ByteArray\",\n \"members\": [\n {\n \"name\": \"data\",\n \"type\": \"core::array::Array::<core::bytes_31::bytes31>\"\n },\n {\n \"name\": \"pending_word\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"pending_word_len\",\n \"type\": \"core::internal::bounded_int::BoundedInt::<0, 30>\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc1155::interface::IERC1155MetadataURI\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"uri\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"IPClubCollectionImpl\",\n \"interface_name\": \"ip_club::interface::IIPClubCollection\"\n },\n {\n \"type\": \"enum\",\n \"name\": \"core::option::Option::<core::integer::u64>\",\n \"variants\": [\n {\n \"name\": \"Some\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"None\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"enum\",\n \"name\": \"core::bool\",\n \"variants\": [\n {\n \"name\": \"False\",\n \"type\": \"()\"\n },\n {\n \"name\": \"True\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"ip_club::types::Membership\",\n \"members\": [\n {\n \"name\": \"max_supply\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"minted\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"core::option::Option::<core::integer::u64>\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"core::option::Option::<core::integer::u64>\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u16\"\n },\n {\n \"name\": \"metadata_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"ip_club::interface::IIPClubCollection\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"create_membership\",\n \"inputs\": [\n {\n \"name\": \"max_supply\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"core::option::Option::<core::integer::u64>\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"core::option::Option::<core::integer::u64>\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u16\"\n },\n {\n \"name\": \"metadata_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"mint\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_member\",\n \"inputs\": [\n {\n \"name\": \"holder\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_member_of\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"holder\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_membership\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"ip_club::types::Membership\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"name\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"symbol\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"base_uri\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"royalty_info\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"sale_price\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"(core::starknet::contract_address::ContractAddress, core::integer::u256)\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"royaltyInfo\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"sale_price\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"(core::starknet::contract_address::ContractAddress, core::integer::u256)\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"version\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC1155Impl\",\n \"interface_name\": \"openzeppelin_token::erc1155::interface::IERC1155\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::starknet::contract_address::ContractAddress>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::starknet::contract_address::ContractAddress>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::integer::u256>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::integer::u256>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::felt252>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::felt252>\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc1155::interface::IERC1155\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"balance_of\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balance_of_batch\",\n \"inputs\": [\n {\n \"name\": \"accounts\",\n \"type\": \"core::array::Span::<core::starknet::contract_address::ContractAddress>\"\n },\n {\n \"name\": \"token_ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safe_transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safe_batch_transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"values\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_approved_for_all\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_approval_for_all\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC1155CamelImpl\",\n \"interface_name\": \"openzeppelin_token::erc1155::interface::IERC1155Camel\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc1155::interface::IERC1155Camel\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balanceOfBatch\",\n \"inputs\": [\n {\n \"name\": \"accounts\",\n \"type\": \"core::array::Span::<core::starknet::contract_address::ContractAddress>\"\n },\n {\n \"name\": \"tokenIds\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::array::Span::<core::integer::u256>\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safeTransferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safeBatchTransferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenIds\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"values\",\n \"type\": \"core::array::Span::<core::integer::u256>\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isApprovedForAll\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setApprovalForAll\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"SRC5Impl\",\n \"interface_name\": \"openzeppelin_introspection::interface::ISRC5\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_introspection::interface::ISRC5\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"supports_interface\",\n \"inputs\": [\n {\n \"name\": \"interface_id\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"OwnableMixinImpl\",\n \"interface_name\": \"openzeppelin_access::ownable::interface::OwnableABI\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_access::ownable::interface::OwnableABI\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer_ownership\",\n \"inputs\": [\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounce_ownership\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"constructor\",\n \"name\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"base_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferSingle\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferBatch\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"ids\",\n \"type\": \"core::array::Span::<core::integer::u256>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"values\",\n \"type\": \"core::array::Span::<core::integer::u256>\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::ApprovalForAll\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::URI\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"value\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"TransferSingle\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferSingle\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"TransferBatch\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferBatch\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"ApprovalForAll\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::ApprovalForAll\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"URI\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::URI\",\n \"kind\": \"nested\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferred\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"previous_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferStarted\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"previous_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"OwnershipTransferred\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferred\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"OwnershipTransferStarted\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferStarted\",\n \"kind\": \"nested\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_club::IPClubCollection::IPClubCollection::MembershipCreated\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"max_supply\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"core::option::Option::<core::integer::u64>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"core::option::Option::<core::integer::u64>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"metadata_uri\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_club::IPClubCollection::IPClubCollection::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"ERC1155Event\",\n \"type\": \"openzeppelin_token::erc1155::erc1155::ERC1155Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"SRC5Event\",\n \"type\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"OwnableEvent\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"MembershipCreated\",\n \"type\": \"ip_club::IPClubCollection::IPClubCollection::MembershipCreated\",\n \"kind\": \"nested\"\n }\n ]\n }\n] as const;\n","export const IPSponsorshipABI = [\n {\n \"type\": \"impl\",\n \"name\": \"ERC721MetadataImpl\",\n \"interface_name\": \"openzeppelin_token::erc721::interface::IERC721Metadata\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::byte_array::ByteArray\",\n \"members\": [\n {\n \"name\": \"data\",\n \"type\": \"core::array::Array::<core::bytes_31::bytes31>\"\n },\n {\n \"name\": \"pending_word\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"pending_word_len\",\n \"type\": \"core::internal::bounded_int::BoundedInt::<0, 30>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::integer::u256\",\n \"members\": [\n {\n \"name\": \"low\",\n \"type\": \"core::integer::u128\"\n },\n {\n \"name\": \"high\",\n \"type\": \"core::integer::u128\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc721::interface::IERC721Metadata\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"name\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"symbol\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"token_uri\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC721MetadataCamelOnlyImpl\",\n \"interface_name\": \"openzeppelin_token::erc721::interface::IERC721MetadataCamelOnly\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc721::interface::IERC721MetadataCamelOnly\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"tokenURI\",\n \"inputs\": [\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"IPSponsorshipImpl\",\n \"interface_name\": \"ip_sponsorship::interface::IIPSponsorship\"\n },\n {\n \"type\": \"enum\",\n \"name\": \"core::bool\",\n \"variants\": [\n {\n \"name\": \"False\",\n \"type\": \"()\"\n },\n {\n \"name\": \"True\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"enum\",\n \"name\": \"core::option::Option::<core::starknet::contract_address::ContractAddress>\",\n \"variants\": [\n {\n \"name\": \"Some\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"None\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"ip_sponsorship::types::SponsorshipOffer\",\n \"members\": [\n {\n \"name\": \"author\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"nft_contract\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"min_amount\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"duration\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"payment_token\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"license_terms_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"transferable\",\n \"type\": \"core::bool\"\n },\n {\n \"name\": \"specific_sponsor\",\n \"type\": \"core::option::Option::<core::starknet::contract_address::ContractAddress>\"\n },\n {\n \"name\": \"open\",\n \"type\": \"core::bool\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u256\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"ip_sponsorship::types::SponsorshipProposal\",\n \"members\": [\n {\n \"name\": \"proposer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"nft_contract\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"duration\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"valid_until\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"payment_token\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"license_terms_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"transferable\",\n \"type\": \"core::bool\"\n },\n {\n \"name\": \"open\",\n \"type\": \"core::bool\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u256\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"ip_sponsorship::interface::IIPSponsorship\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"create_offer\",\n \"inputs\": [\n {\n \"name\": \"nft_contract\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"min_amount\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"duration\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"payment_token\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"license_terms_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"transferable\",\n \"type\": \"core::bool\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"specific_sponsor\",\n \"type\": \"core::option::Option::<core::starknet::contract_address::ContractAddress>\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_offer_open\",\n \"inputs\": [\n {\n \"name\": \"offer_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"open\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"place_bid\",\n \"inputs\": [\n {\n \"name\": \"offer_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"retract_bid\",\n \"inputs\": [\n {\n \"name\": \"offer_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"accept_bid\",\n \"inputs\": [\n {\n \"name\": \"offer_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"sponsor\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_offer\",\n \"inputs\": [\n {\n \"name\": \"offer_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"ip_sponsorship::types::SponsorshipOffer\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_bid\",\n \"inputs\": [\n {\n \"name\": \"offer_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"sponsor\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_last_offer_id\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_last_license_id\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"propose_sponsorship\",\n \"inputs\": [\n {\n \"name\": \"nft_contract\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"duration\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"valid_until\",\n \"type\": \"core::integer::u64\"\n },\n {\n \"name\": \"payment_token\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"license_terms_uri\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"transferable\",\n \"type\": \"core::bool\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"withdraw_proposal\",\n \"inputs\": [\n {\n \"name\": \"proposal_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"accept_proposal\",\n \"inputs\": [\n {\n \"name\": \"proposal_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"reject_proposal\",\n \"inputs\": [\n {\n \"name\": \"proposal_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_proposal\",\n \"inputs\": [\n {\n \"name\": \"proposal_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"ip_sponsorship::types::SponsorshipProposal\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_last_proposal_id\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"royalty_info\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"sale_price\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"(core::starknet::contract_address::ContractAddress, core::integer::u256)\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"royaltyInfo\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"sale_price\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"(core::starknet::contract_address::ContractAddress, core::integer::u256)\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"version\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC721Impl\",\n \"interface_name\": \"openzeppelin_token::erc721::interface::IERC721\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::felt252>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::felt252>\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc721::interface::IERC721\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"balance_of\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner_of\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safe_transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"approve\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_approval_for_all\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_approved\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_approved_for_all\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC721CamelOnly\",\n \"interface_name\": \"openzeppelin_token::erc721::interface::IERC721CamelOnly\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc721::interface::IERC721CamelOnly\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"ownerOf\",\n \"inputs\": [\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safeTransferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setApprovalForAll\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getApproved\",\n \"inputs\": [\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isApprovedForAll\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"SRC5Impl\",\n \"interface_name\": \"openzeppelin_introspection::interface::ISRC5\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_introspection::interface::ISRC5\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"supports_interface\",\n \"inputs\": [\n {\n \"name\": \"interface_id\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"constructor\",\n \"name\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"name\",\n \"type\": \"core::byte_array::ByteArray\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"core::byte_array::ByteArray\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::erc721::ERC721Component::Transfer\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::erc721::ERC721Component::Approval\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::erc721::ERC721Component::ApprovalForAll\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::erc721::ERC721Component::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Transfer\",\n \"type\": \"openzeppelin_token::erc721::erc721::ERC721Component::Transfer\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"Approval\",\n \"type\": \"openzeppelin_token::erc721::erc721::ERC721Component::Approval\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"ApprovalForAll\",\n \"type\": \"openzeppelin_token::erc721::erc721::ERC721Component::ApprovalForAll\",\n \"kind\": \"nested\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_sponsorship::IPSponsorship::IPSponsorship::OfferCreated\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"offer_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"author\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"nft_contract\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"min_amount\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"duration\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"payment_token\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"license_terms_uri\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"transferable\",\n \"type\": \"core::bool\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"specific_sponsor\",\n \"type\": \"core::option::Option::<core::starknet::contract_address::ContractAddress>\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_sponsorship::IPSponsorship::IPSponsorship::OfferStatusUpdated\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"offer_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"open\",\n \"type\": \"core::bool\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"updated_at\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_sponsorship::IPSponsorship::IPSponsorship::BidPlaced\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"offer_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"sponsor\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"bid_at\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_sponsorship::IPSponsorship::IPSponsorship::BidRetracted\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"offer_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"sponsor\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"retracted_at\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_sponsorship::IPSponsorship::IPSponsorship::SponsorshipAccepted\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"offer_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"license_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"sponsor\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"author\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"expires_at\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_sponsorship::IPSponsorship::IPSponsorship::ProposalCreated\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"proposal_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"proposer\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"nft_contract\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"duration\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"valid_until\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"payment_token\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"license_terms_uri\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"transferable\",\n \"type\": \"core::bool\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_sponsorship::IPSponsorship::IPSponsorship::ProposalClosed\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"proposal_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"accepted\",\n \"type\": \"core::bool\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"closed_at\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_sponsorship::IPSponsorship::IPSponsorship::ProposalAccepted\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"proposal_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"license_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"sponsor\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"author\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"expires_at\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_sponsorship::IPSponsorship::IPSponsorship::LicenseMinted\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"author\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"asset_contract\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"asset_token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"expires_at\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"transferable\",\n \"type\": \"core::bool\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"royalty_bps\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"license_terms_uri\",\n \"type\": \"core::byte_array::ByteArray\",\n \"kind\": \"data\"\n },\n {\n \"name\": \"minted_at\",\n \"type\": \"core::integer::u64\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"ip_sponsorship::IPSponsorship::IPSponsorship::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"ERC721Event\",\n \"type\": \"openzeppelin_token::erc721::erc721::ERC721Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"SRC5Event\",\n \"type\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"OfferCreated\",\n \"type\": \"ip_sponsorship::IPSponsorship::IPSponsorship::OfferCreated\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"OfferStatusUpdated\",\n \"type\": \"ip_sponsorship::IPSponsorship::IPSponsorship::OfferStatusUpdated\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"BidPlaced\",\n \"type\": \"ip_sponsorship::IPSponsorship::IPSponsorship::BidPlaced\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"BidRetracted\",\n \"type\": \"ip_sponsorship::IPSponsorship::IPSponsorship::BidRetracted\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"SponsorshipAccepted\",\n \"type\": \"ip_sponsorship::IPSponsorship::IPSponsorship::SponsorshipAccepted\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"ProposalCreated\",\n \"type\": \"ip_sponsorship::IPSponsorship::IPSponsorship::ProposalCreated\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"ProposalClosed\",\n \"type\": \"ip_sponsorship::IPSponsorship::IPSponsorship::ProposalClosed\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"ProposalAccepted\",\n \"type\": \"ip_sponsorship::IPSponsorship::IPSponsorship::ProposalAccepted\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"LicenseMinted\",\n \"type\": \"ip_sponsorship::IPSponsorship::IPSponsorship::LicenseMinted\",\n \"kind\": \"nested\"\n }\n ]\n }\n] as const;\n","export const IPGenesisABI = [\n {\n \"type\": \"impl\",\n \"name\": \"MIPImpl\",\n \"interface_name\": \"mip::interfaces::IMIP\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::byte_array::ByteArray\",\n \"members\": [\n {\n \"name\": \"data\",\n \"type\": \"core::array::Array::<core::bytes_31::bytes31>\"\n },\n {\n \"name\": \"pending_word\",\n \"type\": \"core::felt252\"\n },\n {\n \"name\": \"pending_word_len\",\n \"type\": \"core::internal::bounded_int::BoundedInt::<0, 30>\"\n }\n ]\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::integer::u256\",\n \"members\": [\n {\n \"name\": \"low\",\n \"type\": \"core::integer::u128\"\n },\n {\n \"name\": \"high\",\n \"type\": \"core::integer::u128\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"mip::interfaces::IMIP\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"mint_item\",\n \"inputs\": [\n {\n \"name\": \"recipient\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"uri\",\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"CounterImpl\",\n \"interface_name\": \"mip::interfaces::ICounter\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"mip::interfaces::ICounter\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"current\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"increment\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"decrement\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC721MixinImpl\",\n \"interface_name\": \"openzeppelin_token::erc721::interface::ERC721ABI\"\n },\n {\n \"type\": \"struct\",\n \"name\": \"core::array::Span::<core::felt252>\",\n \"members\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"@core::array::Array::<core::felt252>\"\n }\n ]\n },\n {\n \"type\": \"enum\",\n \"name\": \"core::bool\",\n \"variants\": [\n {\n \"name\": \"False\",\n \"type\": \"()\"\n },\n {\n \"name\": \"True\",\n \"type\": \"()\"\n }\n ]\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc721::interface::ERC721ABI\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"balance_of\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner_of\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safe_transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer_from\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"approve\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"set_approval_for_all\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"get_approved\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"is_approved_for_all\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"supports_interface\",\n \"inputs\": [\n {\n \"name\": \"interface_id\",\n \"type\": \"core::felt252\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"name\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"symbol\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"token_uri\",\n \"inputs\": [\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"ownerOf\",\n \"inputs\": [\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safeTransferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"core::array::Span::<core::felt252>\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setApprovalForAll\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getApproved\",\n \"inputs\": [\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isApprovedForAll\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::bool\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"tokenURI\",\n \"inputs\": [\n {\n \"name\": \"tokenId\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::byte_array::ByteArray\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"OwnableMixinImpl\",\n \"interface_name\": \"openzeppelin_access::ownable::interface::OwnableABI\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_access::ownable::interface::OwnableABI\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer_ownership\",\n \"inputs\": [\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounce_ownership\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"state_mutability\": \"external\"\n }\n ]\n },\n {\n \"type\": \"impl\",\n \"name\": \"ERC721EnumerableImpl\",\n \"interface_name\": \"openzeppelin_token::erc721::extensions::erc721_enumerable::interface::IERC721Enumerable\"\n },\n {\n \"type\": \"interface\",\n \"name\": \"openzeppelin_token::erc721::extensions::erc721_enumerable::interface::IERC721Enumerable\",\n \"items\": [\n {\n \"type\": \"function\",\n \"name\": \"total_supply\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"token_by_index\",\n \"inputs\": [\n {\n \"name\": \"index\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"token_of_owner_by_index\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n },\n {\n \"name\": \"index\",\n \"type\": \"core::integer::u256\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"core::integer::u256\"\n }\n ],\n \"state_mutability\": \"view\"\n }\n ]\n },\n {\n \"type\": \"constructor\",\n \"name\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::erc721::ERC721Component::Transfer\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"from\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"to\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::erc721::ERC721Component::Approval\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::erc721::ERC721Component::ApprovalForAll\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"core::bool\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::erc721::ERC721Component::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Transfer\",\n \"type\": \"openzeppelin_token::erc721::erc721::ERC721Component::Transfer\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"Approval\",\n \"type\": \"openzeppelin_token::erc721::erc721::ERC721Component::Approval\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"ApprovalForAll\",\n \"type\": \"openzeppelin_token::erc721::erc721::ERC721Component::ApprovalForAll\",\n \"kind\": \"nested\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferred\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"previous_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferStarted\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"previous_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"core::starknet::contract_address::ContractAddress\",\n \"kind\": \"key\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_access::ownable::ownable::OwnableComponent::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"OwnershipTransferred\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferred\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"OwnershipTransferStarted\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferStarted\",\n \"kind\": \"nested\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"openzeppelin_token::erc721::extensions::erc721_enumerable::erc721_enumerable::ERC721EnumerableComponent::Event\",\n \"kind\": \"enum\",\n \"variants\": []\n },\n {\n \"type\": \"event\",\n \"name\": \"mip::mip::MIP::CounterComponent::CounterIncremented\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"mip::mip::MIP::CounterComponent::CounterDecremented\",\n \"kind\": \"struct\",\n \"members\": [\n {\n \"name\": \"value\",\n \"type\": \"core::integer::u256\",\n \"kind\": \"data\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"mip::mip::MIP::CounterComponent::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"CounterIncremented\",\n \"type\": \"mip::mip::MIP::CounterComponent::CounterIncremented\",\n \"kind\": \"nested\"\n },\n {\n \"name\": \"CounterDecremented\",\n \"type\": \"mip::mip::MIP::CounterComponent::CounterDecremented\",\n \"kind\": \"nested\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"name\": \"mip::mip::MIP::Event\",\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"ERC721Event\",\n \"type\": \"openzeppelin_token::erc721::erc721::ERC721Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"OwnableEvent\",\n \"type\": \"openzeppelin_access::ownable::ownable::OwnableComponent::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"SRC5Event\",\n \"type\": \"openzeppelin_introspection::src5::SRC5Component::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"ERC721EnumerableEvent\",\n \"type\": \"openzeppelin_token::erc721::extensions::erc721_enumerable::erc721_enumerable::ERC721EnumerableComponent::Event\",\n \"kind\": \"flat\"\n },\n {\n \"name\": \"CounterEvent\",\n \"type\": \"mip::mip::MIP::CounterComponent::Event\",\n \"kind\": \"flat\"\n }\n ]\n }\n] as const;\n","import { newContract } from \"../marketplace/utils.js\";\nimport { type AccountInterface } from \"starknet\";\nimport type { ResolvedConfig } from \"../../config.js\";\nimport { normalizeAddress } from \"../../utils/address.js\";\nimport { POPCollectionABI, POPFactoryABI } from \"../abis/index.js\";\nimport { getStarknetCoordinates } from \"../../chains.js\";\nimport type { CreatePopCollectionParams } from \"../../types/services.js\";\nimport type { TxResult } from \"../../types/marketplace.js\";\n\nexport type { CreatePopCollectionParams };\n\nexport class PopService {\n private readonly factoryAddress: string;\n\n constructor(config: ResolvedConfig) {\n this.factoryAddress = getStarknetCoordinates(config.chain).popFactory!;\n }\n\n private _collection(address: string, account: AccountInterface) {\n return newContract(POPCollectionABI as any, normalizeAddress(\"STARKNET\",address), account as any);\n }\n\n async claim(account: AccountInterface, collectionAddress: string): Promise<TxResult> {\n const call = this._collection(collectionAddress, account).populate(\"claim\", []);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n async adminMint(\n account: AccountInterface,\n params: { collection: string; recipient: string; customUri?: string }\n ): Promise<TxResult> {\n const call = this._collection(params.collection, account).populate(\"admin_mint\", [\n params.recipient,\n params.customUri ?? \"\",\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n async addToAllowlist(\n account: AccountInterface,\n params: { collection: string; address: string }\n ): Promise<TxResult> {\n const call = this._collection(params.collection, account).populate(\"add_to_allowlist\", [params.address]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n async batchAddToAllowlist(\n account: AccountInterface,\n params: { collection: string; addresses: string[] }\n ): Promise<TxResult> {\n const collection = this._collection(params.collection, account);\n const CHUNK = 200;\n const calls = [];\n for (let i = 0; i < params.addresses.length; i += CHUNK) {\n calls.push(collection.populate(\"batch_add_to_allowlist\", [params.addresses.slice(i, i + CHUNK)]));\n }\n const res = await account.execute(calls);\n return { txHash: res.transaction_hash };\n }\n\n async removeFromAllowlist(\n account: AccountInterface,\n params: { collection: string; address: string }\n ): Promise<TxResult> {\n const call = this._collection(params.collection, account).populate(\"remove_from_allowlist\", [params.address]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n async setTokenUri(\n account: AccountInterface,\n params: { collection: string; tokenId: string | bigint; uri: string }\n ): Promise<TxResult> {\n const call = this._collection(params.collection, account).populate(\"set_token_uri\", [\n BigInt(params.tokenId),\n params.uri,\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n async setPaused(\n account: AccountInterface,\n params: { collection: string; paused: boolean }\n ): Promise<TxResult> {\n const call = this._collection(params.collection, account).populate(\"set_paused\", [params.paused]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n async createCollection(\n account: AccountInterface,\n params: CreatePopCollectionParams\n ): Promise<TxResult> {\n const factory = newContract(POPFactoryABI as any, this.factoryAddress, account as any);\n const call = factory.populate(\"create_collection\", [\n params.name,\n params.symbol,\n params.baseUri,\n params.claimEndTime,\n { [params.eventType]: {} },\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n}\n","import { cairo, type Call } from \"starknet\";\nimport type { ResolvedFeeConfig } from \"../../fee/config.js\";\n\nexport type FeeSurface = \"marketplace\" | \"launchpad\";\n\nexport interface BuildFeeCallParams {\n surface: FeeSurface;\n /** ERC-20 address the gross amount is denominated in. */\n token: string;\n /** Gross amount in raw token units (e.g. price in wei, or price * quantity). */\n grossAmount: bigint;\n}\n\n/**\n * The single source of truth for the platform fee. Returns one ERC-20\n * `transfer(fundAddress, feeAmount)` Call to bundle into the settlement\n * multicall, or `null` when no fee should be charged.\n *\n * Fail-safe: returns null if disabled, no fund address, or the fee floors to 0.\n */\nexport function buildFeeCall(\n p: BuildFeeCallParams,\n cfg: ResolvedFeeConfig\n): Call | null {\n if (!cfg.enabled || !cfg.fundAddress) return null;\n const bps = p.surface === \"marketplace\" ? cfg.marketplaceBps : cfg.launchpadBps;\n if (bps <= 0) return null;\n const fee = (p.grossAmount * BigInt(bps)) / 10000n;\n if (fee <= 0n) return null;\n const u = cairo.uint256(fee.toString());\n return {\n contractAddress: p.token,\n entrypoint: \"transfer\",\n calldata: [cfg.fundAddress, u.low.toString(), u.high.toString()],\n };\n}\n","import { newContract } from \"../marketplace/utils.js\";\nimport { type AccountInterface } from \"starknet\";\nimport type { ResolvedConfig } from \"../../config.js\";\nimport { normalizeAddress } from \"../../utils/address.js\";\nimport { DropCollectionABI, DropFactoryABI } from \"../abis/index.js\";\nimport { getStarknetCoordinates } from \"../../chains.js\";\nimport type { ClaimConditions, CreateDropParams } from \"../../types/services.js\";\nimport type { TxResult } from \"../../types/marketplace.js\";\nimport { buildFeeCall } from \"../fee/index.js\";\n\nexport type { ClaimConditions, CreateDropParams };\n\nfunction toContractConditions(c: ClaimConditions) {\n return {\n start_time: c.startTime,\n end_time: c.endTime,\n price: BigInt(c.price),\n payment_token: c.paymentToken,\n max_quantity_per_wallet: BigInt(c.maxQuantityPerWallet),\n };\n}\n\nexport class DropService {\n private readonly factoryAddress: string;\n private readonly config: ResolvedConfig;\n\n constructor(config: ResolvedConfig) {\n this.factoryAddress = getStarknetCoordinates(config.chain).dropFactory!;\n this.config = config;\n }\n\n private _collection(address: string, account: AccountInterface) {\n return newContract(DropCollectionABI as any, normalizeAddress(\"STARKNET\",address), account as any);\n }\n\n async claim(\n account: AccountInterface,\n collectionAddress: string,\n quantity: bigint | string | number = 1\n ): Promise<TxResult> {\n const collection = this._collection(collectionAddress, account);\n const qty = BigInt(quantity);\n const claimCall = collection.populate(\"claim\", [qty]);\n\n // get_claim_conditions() → { price (u256), payment_token, ... }\n const conditions = (await collection.get_claim_conditions()) as {\n price: bigint;\n payment_token: bigint | string;\n };\n const price = BigInt(conditions.price);\n const paymentToken =\n typeof conditions.payment_token === \"bigint\"\n ? \"0x\" + conditions.payment_token.toString(16)\n : conditions.payment_token;\n\n const feeCall =\n price > 0n\n ? buildFeeCall(\n { surface: \"launchpad\", token: paymentToken, grossAmount: price * qty },\n this.config.feeConfig\n )\n : null;\n\n const calls = feeCall ? [claimCall, feeCall] : [claimCall];\n const res = await account.execute(calls);\n return { txHash: res.transaction_hash };\n }\n\n async adminMint(\n account: AccountInterface,\n params: { collection: string; recipient: string; quantity?: bigint | string | number; customUri?: string }\n ): Promise<TxResult> {\n const call = this._collection(params.collection, account).populate(\"admin_mint\", [\n params.recipient,\n BigInt(params.quantity ?? 1),\n params.customUri ?? \"\",\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n async setClaimConditions(\n account: AccountInterface,\n params: { collection: string; conditions: ClaimConditions }\n ): Promise<TxResult> {\n const call = this._collection(params.collection, account).populate(\"set_claim_conditions\", [\n toContractConditions(params.conditions),\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n async setAllowlistEnabled(\n account: AccountInterface,\n params: { collection: string; enabled: boolean }\n ): Promise<TxResult> {\n const call = this._collection(params.collection, account).populate(\"set_allowlist_enabled\", [params.enabled]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n async addToAllowlist(\n account: AccountInterface,\n params: { collection: string; address: string }\n ): Promise<TxResult> {\n const call = this._collection(params.collection, account).populate(\"add_to_allowlist\", [params.address]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n async batchAddToAllowlist(\n account: AccountInterface,\n params: { collection: string; addresses: string[] }\n ): Promise<TxResult> {\n const collection = this._collection(params.collection, account);\n const CHUNK = 200;\n const calls = [];\n for (let i = 0; i < params.addresses.length; i += CHUNK) {\n calls.push(collection.populate(\"batch_add_to_allowlist\", [params.addresses.slice(i, i + CHUNK)]));\n }\n const res = await account.execute(calls);\n return { txHash: res.transaction_hash };\n }\n\n async setPaused(\n account: AccountInterface,\n params: { collection: string; paused: boolean }\n ): Promise<TxResult> {\n const call = this._collection(params.collection, account).populate(\"set_paused\", [params.paused]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n async withdrawPayments(\n account: AccountInterface,\n params: { collection: string }\n ): Promise<TxResult> {\n const call = this._collection(params.collection, account).populate(\"withdraw_payments\", []);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n async createDrop(account: AccountInterface, params: CreateDropParams): Promise<TxResult> {\n const factory = newContract(DropFactoryABI as any, this.factoryAddress, account as any);\n const call = factory.populate(\"create_drop\", [\n params.name,\n params.symbol,\n params.baseUri,\n BigInt(params.maxSupply),\n toContractConditions(params.initialConditions),\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n}\n","import { newContract } from \"../marketplace/utils.js\";\nimport { type AccountInterface } from \"starknet\";\nimport type { ResolvedConfig } from \"../../config.js\";\nimport { normalizeAddress } from \"../../utils/address.js\";\nimport { IPCollection1155FactoryABI, IPCollection1155ABI } from \"../abis/index.js\";\nimport { getStarknetCoordinates } from \"../../chains.js\";\nimport type { TxResult } from \"../../types/marketplace.js\";\n\nexport interface DeployCollectionParams {\n /** Human-readable collection name (e.g. \"My IP Collection\") */\n name: string;\n /** Short ticker symbol (e.g. \"MIP\") */\n symbol: string;\n /**\n * Collection-level metadata URI (e.g. \"ipfs://Qm…/collection.json\").\n * Should point to a JSON containing `name`, `description`, `image`, and `external_link`.\n * Stored on-chain at deploy time. Pass an empty string if not available.\n */\n baseUri: string;\n}\n\nexport interface MintEditionParams {\n /** ERC-1155 collection contract address */\n collection: string;\n /** Recipient wallet address */\n to: string;\n /** Number of copies of this new edition to mint */\n value: bigint | string;\n /**\n * Metadata URI — must start with `ipfs://` or `ar://`.\n * Immutable: validated and stored at mint. The token id is assigned on-chain\n * (sequential from 1); read it from the `IPMinted` event of the returned tx.\n */\n tokenUri: string;\n}\n\nexport interface BatchMintEditionParams {\n /** ERC-1155 collection contract address */\n collection: string;\n /** Recipient wallet address */\n to: string;\n /** New editions to create; ids are assigned sequentially on-chain. */\n items: Array<{\n value: bigint | string;\n tokenUri: string;\n }>;\n}\n\nexport interface AddSupplyParams {\n /** ERC-1155 collection contract address */\n collection: string;\n /** Recipient wallet address */\n to: string;\n /** Existing edition id to mint more copies of (reverts if it doesn't exist) */\n tokenId: bigint | string;\n /** Number of additional copies */\n value: bigint | string;\n}\n\nexport class ERC1155CollectionService {\n private readonly factoryAddress: string;\n\n constructor(config: ResolvedConfig) {\n this.factoryAddress = config.collection1155Contract ?? getStarknetCoordinates(config.chain).collection1155!;\n }\n\n private _factory(account: AccountInterface) {\n return newContract(\n IPCollection1155FactoryABI as any,\n normalizeAddress(\"STARKNET\",this.factoryAddress),\n account as any\n );\n }\n\n private _collection(address: string, account: AccountInterface) {\n return newContract(\n IPCollection1155ABI as any,\n normalizeAddress(\"STARKNET\",address),\n account as any\n );\n }\n\n /**\n * Deploy a new ERC-1155 IP collection.\n * Caller becomes the collection owner and can mint items.\n * Returns the transaction hash; the deployed collection address is emitted\n * in the `CollectionDeployed` event of the factory.\n */\n async deployCollection(\n account: AccountInterface,\n params: DeployCollectionParams\n ): Promise<TxResult> {\n const factory = this._factory(account);\n const call = factory.populate(\"deploy_collection\", [params.name, params.symbol, params.baseUri]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /**\n * Mint a new edition into an existing ERC-1155 collection.\n * Caller must be the collection owner. The token id is assigned on-chain\n * (sequential from 1) — read it from the `IPMinted` event of the returned tx.\n * The `tokenUri` is immutable.\n */\n async mintEdition(\n account: AccountInterface,\n params: MintEditionParams\n ): Promise<TxResult> {\n const collection = this._collection(params.collection, account);\n const call = collection.populate(\"mint_edition\", [\n params.to,\n BigInt(params.value),\n params.tokenUri,\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /**\n * Batch-mint multiple new editions into an existing ERC-1155 collection.\n * All editions go to the same `to` address; ids are assigned sequentially\n * on-chain. Caller must be the collection owner.\n */\n async batchMintEdition(\n account: AccountInterface,\n params: BatchMintEditionParams\n ): Promise<TxResult> {\n const collection = this._collection(params.collection, account);\n const values = params.items.map((i) => BigInt(i.value));\n const tokenUris = params.items.map((i) => i.tokenUri);\n const call = collection.populate(\"batch_mint_edition\", [\n params.to,\n values,\n tokenUris,\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /**\n * Mint additional copies of an EXISTING edition into an ERC-1155 collection.\n * Reverts on-chain if `tokenId` has never been minted. Provenance/URI unchanged.\n * Caller must be the collection owner.\n */\n async addSupply(\n account: AccountInterface,\n params: AddSupplyParams\n ): Promise<TxResult> {\n const collection = this._collection(params.collection, account);\n const call = collection.populate(\"add_supply\", [\n params.to,\n BigInt(params.tokenId),\n BigInt(params.value),\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /**\n * Set the default ERC-2981 royalty for the entire collection.\n * `feeNumerator` is out of 10 000 (e.g. 500 = 5%).\n * Caller must be the collection owner.\n */\n async setDefaultRoyalty(\n account: AccountInterface,\n params: { collection: string; receiver: string; feeNumerator: number }\n ): Promise<TxResult> {\n const collection = this._collection(params.collection, account);\n const call = collection.populate(\"set_default_royalty\", [\n params.receiver,\n BigInt(params.feeNumerator),\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /**\n * Set a per-token ERC-2981 royalty override.\n * `feeNumerator` is out of 10 000. Caller must be the collection owner.\n */\n async setTokenRoyalty(\n account: AccountInterface,\n params: { collection: string; tokenId: bigint | string; receiver: string; feeNumerator: number }\n ): Promise<TxResult> {\n const collection = this._collection(params.collection, account);\n const call = collection.populate(\"set_token_royalty\", [\n BigInt(params.tokenId),\n params.receiver,\n BigInt(params.feeNumerator),\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /**\n * Approve the Medialane1155 marketplace (or any operator) to transfer\n * all tokens on behalf of `account`. Required before listing.\n */\n async setApprovalForAll(\n account: AccountInterface,\n params: { collection: string; operator: string; approved: boolean }\n ): Promise<TxResult> {\n const collection = this._collection(params.collection, account);\n const call = collection.populate(\"set_approval_for_all\", [\n params.operator,\n params.approved,\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n}\n","import { SUPPORTED_TOKENS } from \"../constants.js\";\n\nexport type SupportedToken = (typeof SUPPORTED_TOKENS)[number];\n\n/**\n * Parse a human-readable amount (e.g. \"1.5\") to its raw integer string\n * representation given the token's decimal places.\n * Uses pure BigInt arithmetic to avoid floating point precision loss.\n */\nexport function parseAmount(human: string, decimals: number): string {\n const [whole, frac = \"\"] = human.split(\".\");\n const fracPadded = frac.padEnd(decimals, \"0\").slice(0, decimals);\n return (BigInt(whole) * BigInt(10) ** BigInt(decimals) + BigInt(fracPadded)).toString();\n}\n\n/**\n * Format a raw integer string (e.g. \"1500000\") to a human-readable decimal\n * string given the token's decimal places.\n */\nexport function formatAmount(raw: string, decimals: number): string {\n const value = BigInt(raw);\n const factor = 10n ** BigInt(decimals);\n const whole = value / factor;\n const remainder = value % factor;\n const fractional = remainder.toString().padStart(decimals, \"0\");\n return `${whole}.${fractional}`;\n}\n\n/**\n * Find a supported token by its contract address.\n *\n * Compares by numeric felt value so a caller-supplied address that isn't\n * zero-padded to 64 hex chars (`0x33068f6…`) still matches the stored padded\n * form (`0x033068f6…`) — a bare `.toLowerCase()` string compare would miss it,\n * the exact padding trap the address invariant warns against. Non-hex inputs\n * fall back to a case-insensitive string compare.\n */\nexport function getTokenByAddress(address: string): SupportedToken | undefined {\n let target: bigint | null = null;\n try {\n target = BigInt(address);\n } catch {\n target = null;\n }\n return SUPPORTED_TOKENS.find((t) => {\n if (target !== null) {\n try {\n return BigInt(t.address) === target;\n } catch {\n /* stored address not hex — fall through to string compare */\n }\n }\n return t.address.toLowerCase() === address.toLowerCase();\n });\n}\n\n/**\n * Find a supported token by its symbol (case-insensitive).\n */\nexport function getTokenBySymbol(symbol: string): SupportedToken | undefined {\n const upper = symbol.toUpperCase();\n return SUPPORTED_TOKENS.find((t) => t.symbol === upper);\n}\n\n/**\n * Return all tokens available for use in listing and offer dialogs.\n * Tokens with listable: false appear only as marketplace filter chips.\n */\nexport function getListableTokens(): ReadonlyArray<SupportedToken> {\n return SUPPORTED_TOKENS.filter((t) => t.listable);\n}\n","/** App-layer guards + math for the Creator Coin launch flow.\n * Price is the fixed, smoke-validated 0.01 quote/coin (VALIDATED_EKUBO_PARAMS);\n * supply is the lever. Coins are always 18-decimal. v1 quote tokens are 18-dec. */\n\nexport const COIN_DECIMALS = 18;\nexport const LAUNCH_PRICE_QUOTE_PER_COIN = 0.01; // fixed; matches VALIDATED_EKUBO_PARAMS\nexport const MIN_SUPPLY = 1_000n;\nexport const MAX_SUPPLY = 1_000_000_000_000n; // 1e12 (audit M-3 ceiling)\nexport const MAX_FELT_BYTES = 31; // felt252 short string\n\nfunction byteLen(s: string): number {\n return new TextEncoder().encode(s).length;\n}\n\nexport function validateName(s: string): string | null {\n if (!s.trim()) return \"Name is required\";\n if (byteLen(s) > MAX_FELT_BYTES) return `Name must be at most ${MAX_FELT_BYTES} bytes`;\n return null;\n}\n\nexport function validateSymbol(s: string): string | null {\n if (!s.trim()) return \"Symbol is required\";\n if (byteLen(s) > MAX_FELT_BYTES) return `Symbol must be at most ${MAX_FELT_BYTES} bytes`;\n return null;\n}\n\nexport function validateSupply(human: string): string | null {\n if (!/^\\d+$/.test(human.trim())) return \"Supply must be a whole number\";\n const v = BigInt(human.trim());\n if (v < MIN_SUPPLY) return `Supply must be at least ${MIN_SUPPLY.toString()}`;\n if (v > MAX_SUPPLY) return `Supply must be at most ${MAX_SUPPLY.toString()}`;\n return null;\n}\n\n/** Human integer → raw base units (default 18-dec coin). */\nexport function toRaw(human: bigint, decimals = COIN_DECIMALS): bigint {\n return human * 10n ** BigInt(decimals);\n}\n\n/** Team allocation in raw coin units. `pct` is whole-percent 0–10. */\nexport function teamCoinsRaw(supplyRaw: bigint, pct: number): bigint {\n const bps = BigInt(Math.round(pct * 100)); // 5% -> 500 bps\n return (supplyRaw * bps) / 10_000n;\n}\n\n/** Quote (raw) needed to buy the team allocation back out of the pool:\n * teamCoins(human) × 0.01, in the quote token's raw units.\n * = teamCoinsRaw × 10^quoteDecimals / (100 × 10^18). For 18-dec quote → /100. */\nexport function buybackQuoteRaw(teamCoinsRawValue: bigint, quoteDecimals: number): bigint {\n return (teamCoinsRawValue * 10n ** BigInt(quoteDecimals)) / (100n * 10n ** BigInt(COIN_DECIMALS));\n}\n\n/** Fully-diluted value (human, in quote) for the live preview. */\nexport function fdvHuman(supplyHuman: number): number {\n return supplyHuman * LAUNCH_PRICE_QUOTE_PER_COIN;\n}\n","import { newContract } from \"../marketplace/utils.js\";\nimport { RpcProvider, hash, uint256, type AccountInterface, type Call, type Contract, type ProviderInterface } from \"starknet\";\nimport type { ResolvedConfig } from \"../../config.js\";\nimport { CreatorCoinFactoryABI } from \"../abis/index.js\";\nimport { getStarknetCoordinates } from \"../../chains.js\";\nimport { getTokenByAddress } from \"../../utils/token.js\";\nimport { normalizeAddress } from \"../../utils/address.js\";\nimport type { TxResult } from \"../../types/marketplace.js\";\nimport { LAUNCH_PRICE_QUOTE_PER_COIN } from \"./coinLaunchMath.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\nconst TICK_BASE = 1.000001; // Ekubo's tick base (NOT Uniswap's 1.0001) — docs.ekubo.org/integration-guides/reference/math-1-pager\n\n/**\n * Compute the Ekubo `EkuboPoolParams` for launching a coin at `price`\n * (default: the fixed 0.01 quote/coin every launch already uses) against a\n * quote token of any decimals — not just the 18-decimal case\n * `VALIDATED_EKUBO_PARAMS` was smoke-tested for.\n *\n * No address/ordering parameters: the contract itself determines\n * `is_token1_quote` on-chain (`launcher.cairo`) and flips the tick's SIGN\n * accordingly — magnitude never changes with ordering. This function\n * always computes the tick as if quote were token1; the contract\n * compensates sign itself if that assumption doesn't hold for the real\n * deployed addresses (this is exactly what \"sign: true yields 0.01\n * quote/coin regardless of token0/1 ordering\" already meant).\n *\n * `fee`/`tickSpacing`/`bound` are decimal-independent (bound is a pure\n * tick-count offset, not a price) and reused from `VALIDATED_EKUBO_PARAMS`\n * as-is. Only `startingPrice` is computed:\n * decAdj = 10^(coinDecimals − quoteDecimals)\n * rawRatio = price / decAdj\n * tick = trunc(log(rawRatio) / log(1.000001) / tickSpacing) × tickSpacing\n * (rounds toward zero, not nearest — confirmed against the\n * known-good on-chain constant, which is 769×tickSpacing,\n * not the nearer 770×tickSpacing)\n * sign = tick < 0\n *\n * Cross-verified against the real on-chain constant: for an 18-decimal\n * quote this reproduces `VALIDATED_EKUBO_PARAMS.startingPrice` exactly\n * (mag 4600158 = 769 × tickSpacing 5982).\n */\nexport function priceToEkuboParams(\n quoteDecimals: number,\n price: number = LAUNCH_PRICE_QUOTE_PER_COIN,\n): EkuboPoolParams {\n const decAdj = 10 ** (COIN_DECIMALS - quoteDecimals);\n const rawRatio = price / decAdj;\n\n const tickSpacing = Number(VALIDATED_EKUBO_PARAMS.tickSpacing);\n const rawTick = Math.log(rawRatio) / Math.log(TICK_BASE);\n const roundedTick = Math.trunc(rawTick / tickSpacing) * tickSpacing;\n\n return {\n fee: VALIDATED_EKUBO_PARAMS.fee,\n tickSpacing: VALIDATED_EKUBO_PARAMS.tickSpacing,\n startingPrice: { mag: BigInt(Math.abs(roundedTick)), sign: roundedTick < 0 },\n bound: VALIDATED_EKUBO_PARAMS.bound,\n };\n}\n\n/** A Creator Coin's live spot price, read from its Ekubo pool. */\nexport interface CreatorCoinPrice {\n /** Quote tokens per 1 coin, human units (e.g. 0.0101 = 0.0101 STRK/coin). */\n quotePerCoin: number;\n /** The quote token the coin is paired against on Ekubo. */\n quoteToken: string;\n quoteSymbol: string | null;\n quoteDecimals: number;\n}\n\nconst COIN_DECIMALS = 18; // CreatorCoin is always 18 decimals\n\n/**\n * Read a Creator Coin's live spot price directly from its Ekubo pool (read-only).\n *\n * Self-contained: discovers the pool params (quote token, fee, tick spacing) from the\n * coin's own `launched_with_liquidity_parameters`, reads `Core.get_pool_price`, and\n * converts the `sqrt_ratio` to quote-per-coin (handling token0/1 ordering + decimals).\n * Returns `null` if the coin isn't launched on Ekubo. No backend, no swap-quote\n * dependency — works for day-one coins that AVNU doesn't index yet.\n */\nexport async function getCreatorCoinPrice(\n coinAddress: string,\n provider: ProviderInterface,\n): Promise<CreatorCoinPrice | null> {\n // Option<LiquidityParameters::Ekubo({ ekubo_pool_parameters:{fee,tick_spacing,\n // starting_price(mag,sign),bound}, quote_address })>\n // felts: [opt(0=Some), variant(0=Ekubo), fee, tick_spacing, sp_mag, sp_sign, bound, quote]\n const r = await provider.callContract({\n contractAddress: coinAddress,\n entrypoint: \"launched_with_liquidity_parameters\",\n calldata: [],\n });\n if (BigInt(r[0]) !== 0n || BigInt(r[1]) !== 0n) return null; // not launched, or not Ekubo\n const fee = r[2];\n const tickSpacing = r[3];\n // Zero-pad to 64 hex so it matches SUPPORTED_TOKENS (the RPC returns it unpadded).\n const quoteToken = normalizeAddress(\"STARKNET\",\"0x\" + BigInt(r[7]).toString(16));\n const token = getTokenByAddress(quoteToken);\n const quoteDecimals = token?.decimals ?? 18;\n\n const ci = BigInt(coinAddress);\n const qi = BigInt(quoteToken);\n const [t0, t1] = ci < qi ? [coinAddress, quoteToken] : [quoteToken, coinAddress];\n const quoteIsToken0 = qi === BigInt(t0);\n\n // Core.get_pool_price(PoolKey{token0,token1,fee,tick_spacing,extension}) -> PoolPrice{sqrt_ratio:u256, tick:i129}\n const pp = await provider.callContract({\n contractAddress: getStarknetCoordinates(\"STARKNET\").ekuboCore!,\n entrypoint: \"get_pool_price\",\n calldata: [t0, t1, fee, tickSpacing, \"0x0\"],\n });\n const sqrt = BigInt(pp[0]) + (BigInt(pp[1] ?? \"0x0\") << 128n);\n // price(token1/token0) = (sqrt_ratio / 2^128)^2, raw units; coin is 18 decimals.\n const priceT1perT0 = (Number(sqrt) / 2 ** 128) ** 2;\n const decAdj = 10 ** (COIN_DECIMALS - quoteDecimals);\n const quotePerCoin = (quoteIsToken0 ? 1 / priceT1perT0 : priceT1perT0) * decAdj;\n\n return { quotePerCoin, quoteToken, quoteSymbol: token?.symbol ?? null, quoteDecimals };\n}\n\n// ── Account-free call builders ───────────────────────────────────────────────\n// Apps that execute through their own pipeline (io's ChipiPay atomic chokepoint,\n// paymaster flows) need the calls, not an executor. The service methods below\n// build on these — one calldata source for every app.\n\n// Lazy — constructing at module scope breaks the \"no side effects at import\n// time\" convention and crashes CJS-interop consumers whose ABI barrel hasn't\n// evaluated yet (dapp webpack build, 2026-06-10).\nlet _factoryContract: Contract | null = null;\nfunction factoryContract(): Contract {\n if (!_factoryContract) {\n _factoryContract = newContract(\n CreatorCoinFactoryABI as any,\n getStarknetCoordinates(\"STARKNET\").creatorCoinFactory!,\n );\n }\n return _factoryContract;\n}\n\n/** Build the `create_creator_coin` call (full supply minted to the Factory). */\nexport function buildCreateCreatorCoinCall(params: CreateCreatorCoinParams): Call {\n const salt = params.salt ?? BigInt(\"0x\" + Date.now().toString(16));\n return factoryContract().populate(\"create_creator_coin\", [\n params.owner,\n params.name,\n params.symbol,\n BigInt(params.initialSupply),\n BigInt(salt),\n ]);\n}\n\n/**\n * Build the Ekubo launch multicall: optional quote `transfer` (pre-funds the\n * Factory for the team-allocation buyback) + `launch_on_ekubo`.\n */\nexport function buildLaunchOnEkuboCalls(params: EkuboLaunchParams): Call[] {\n const ek = params.ekubo ?? VALIDATED_EKUBO_PARAMS;\n\n const launchParameters = {\n creator_coin_address: params.creatorCoin,\n transfer_restriction_delay: params.transferRestrictionDelay ?? 0,\n max_percentage_buy_launch: params.maxPercentageBuyLaunch ?? 200,\n quote_address: params.quoteToken,\n initial_holders: params.initialHolders,\n initial_holders_amounts: params.initialHoldersAmounts.map((a) => BigInt(a)),\n };\n const ekuboParameters = {\n fee: BigInt(ek.fee),\n tick_spacing: BigInt(ek.tickSpacing),\n starting_price: { mag: BigInt(ek.startingPrice.mag), sign: ek.startingPrice.sign },\n bound: BigInt(ek.bound),\n };\n\n const calls: Call[] = [];\n if (params.quoteFundAmount !== undefined) {\n const amt = uint256.bnToUint256(BigInt(params.quoteFundAmount));\n calls.push({\n contractAddress: params.quoteToken,\n entrypoint: \"transfer\",\n calldata: [getStarknetCoordinates(\"STARKNET\").creatorCoinFactory!, amt.low, amt.high],\n });\n }\n calls.push(factoryContract().populate(\"launch_on_ekubo\", [launchParameters, ekuboParameters]));\n return calls;\n}\n\n/** Minimal receipt shape — works with any starknet.js receipt version. */\nexport interface CreatorCoinReceiptLike {\n events?: Array<{ from_address?: string; keys?: string[]; data?: string[] }>;\n}\n\nconst CREATOR_COIN_CREATED_SELECTOR = hash.getSelectorFromName(\"CreatorCoinCreated\");\n\n/**\n * Pull the deployed coin address from a `create_creator_coin` tx receipt.\n * Event data = [owner, name, symbol, supply_low, supply_high, coin_address].\n * Throws when the receipt carries no matching Factory event.\n */\nexport function parseCreatorCoinCreated(receipt: CreatorCoinReceiptLike): string {\n const factory = normalizeAddress(\"STARKNET\",getStarknetCoordinates(\"STARKNET\").creatorCoinFactory!);\n for (const ev of receipt?.events ?? []) {\n let from: string;\n try {\n from = normalizeAddress(\"STARKNET\",ev.from_address ?? \"\");\n } catch {\n continue;\n }\n if (from !== factory) continue;\n const k0 = ev.keys?.[0];\n if (!k0 || normalizeAddress(\"STARKNET\",k0) !== normalizeAddress(\"STARKNET\",CREATOR_COIN_CREATED_SELECTOR)) continue;\n const data = ev.data ?? [];\n if (data.length < 1) continue;\n return normalizeAddress(\"STARKNET\",data[data.length - 1]); // coin_address is last\n }\n throw new Error(\"Coin deployed but the coin address could not be read from the receipt\");\n}\n\n/**\n * On-chain Creator Coin interactions (Ekubo-only launchpad).\n * Faithful fork of unruggable.meme — permanent LP lock + team-allocation buyback.\n */\nexport class CreatorCoinService {\n private readonly factoryAddress: string;\n private readonly config: ResolvedConfig;\n\n constructor(config: ResolvedConfig) {\n this.factoryAddress = getStarknetCoordinates(config.chain).creatorCoinFactory!;\n this.config = config;\n }\n\n private _factory(account: AccountInterface) {\n return newContract(CreatorCoinFactoryABI as any, this.factoryAddress, account as any);\n }\n\n /** Deploy a fixed-supply CreatorCoin (full supply minted to the Factory). */\n async createCreatorCoin(\n account: AccountInterface,\n params: CreateCreatorCoinParams\n ): Promise<TxResult> {\n const res = await account.execute([buildCreateCreatorCoinCall(params)]);\n return { txHash: res.transaction_hash };\n }\n\n /**\n * Launch a coin on Ekubo (owner-only). Optionally pre-funds the Factory with\n * quote (for the buyback) in the same multicall. Liquidity is permanently\n * locked in the EkuboLauncher.\n */\n async launchOnEkubo(account: AccountInterface, params: EkuboLaunchParams): Promise<TxResult> {\n const res = await account.execute(buildLaunchOnEkuboCalls(params));\n return { txHash: res.transaction_hash };\n }\n\n /** View: is this address a Factory-deployed Creator Coin? */\n async isCreatorCoin(address: string, account: AccountInterface): Promise<boolean> {\n const r = await this._factory(account).is_creator_coin(address);\n return BigInt(r as any) === 1n;\n }\n\n /** Read a coin's live Ekubo spot price (quote-per-coin) via the configured RPC.\n * Read-only; returns null if the coin isn't launched on Ekubo. */\n async getPrice(coinAddress: string): Promise<CreatorCoinPrice | null> {\n return getCreatorCoinPrice(coinAddress, new RpcProvider({ nodeUrl: this.config.rpcUrl }));\n }\n}\n","import { newContract } from \"../marketplace/utils.js\";\nimport { CairoOption, CairoOptionVariant, RpcProvider, cairo, type AccountInterface } from \"starknet\";\nimport type { ResolvedConfig } from \"../../config.js\";\nimport { normalizeAddress } from \"../../utils/address.js\";\nimport { IPTicketCollectionABI, IPTicketCollectionFactoryABI } from \"../abis/index.js\";\nimport { getStarknetCoordinates } from \"../../chains.js\";\nimport type { CreateTicketParams, MintTicketsParams } from \"../../types/services.js\";\nimport type { TxResult } from \"../../types/marketplace.js\";\n\nexport type { CreateTicketParams, MintTicketsParams };\n\nexport interface TicketRecord {\n maxSupply: bigint;\n minted: bigint;\n startTime: number | null;\n endTime: number | null;\n royaltyBps: number;\n metadataUri: string;\n}\n\nexport class TicketService {\n private readonly factoryAddress?: string;\n private readonly config: ResolvedConfig;\n\n constructor(config: ResolvedConfig) {\n this.config = config;\n this.factoryAddress = getStarknetCoordinates(config.chain).ipTicketsFactory;\n }\n\n private _factory(account: AccountInterface, factoryAddress?: string) {\n const address = factoryAddress ?? this.factoryAddress;\n if (!address) throw new Error(\"IP-Tickets factory address not configured for this chain\");\n return newContract(IPTicketCollectionFactoryABI as any, normalizeAddress(\"STARKNET\", address), account as any);\n }\n\n private _collection(address: string, account: AccountInterface) {\n return newContract(IPTicketCollectionABI as any, normalizeAddress(\"STARKNET\", address), account as any);\n }\n\n private _collectionRead(address: string) {\n const provider = new RpcProvider({ nodeUrl: this.config.rpcUrl });\n return newContract(IPTicketCollectionABI as any, normalizeAddress(\"STARKNET\", address), provider);\n }\n\n /**\n * Deploys a new IPTicketCollection via the factory. Caller becomes owner.\n * `baseUri` is the collection-level metadata URI, embedded on-chain in the\n * deploy transaction.\n */\n async deployCollection(\n account: AccountInterface,\n params: { name: string; symbol: string; baseUri: string; factoryAddress?: string }\n ): Promise<TxResult> {\n const call = this._factory(account, params.factoryAddress).populate(\"deploy_collection\", [\n params.name,\n params.symbol,\n params.baseUri,\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /** Owner-only. Creates a new ticket inside the caller's deployed collection. */\n async createTicket(account: AccountInterface, params: CreateTicketParams): Promise<TxResult> {\n const startTime = params.startTime != null\n ? new CairoOption(CairoOptionVariant.Some, params.startTime)\n : new CairoOption(CairoOptionVariant.None);\n const endTime = params.endTime != null\n ? new CairoOption(CairoOptionVariant.Some, params.endTime)\n : new CairoOption(CairoOptionVariant.None);\n const call = this._collection(params.collection, account).populate(\"create_ticket\", [\n cairo.uint256(params.maxSupply),\n startTime,\n endTime,\n params.royaltyBps,\n params.metadataUri,\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /** Owner-only. Mints `amount` of `tokenId` to `to`. */\n async mint(account: AccountInterface, params: MintTicketsParams): Promise<TxResult> {\n const call = this._collection(params.collection, account).populate(\"mint\", [\n params.to,\n cairo.uint256(params.tokenId),\n cairo.uint256(params.amount),\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /** Read — true if holder has balance > 0 and current time is within the ticket window. */\n async isValid(params: { collection: string; tokenId: bigint | string; holder: string }): Promise<boolean> {\n const result = await this._collectionRead(params.collection).call(\"is_valid\", [\n cairo.uint256(params.tokenId),\n params.holder,\n ]);\n return Boolean(result);\n }\n\n /** Read — number of tickets created so far (ids are sequential from 1). */\n async getTicketCount(params: { collection: string }): Promise<bigint> {\n const result = await this._collectionRead(params.collection).call(\"ticket_count\", []);\n return BigInt(result as any);\n }\n\n /** Read — returns the Ticket record for a token ID. */\n async getTicket(params: {\n collection: string;\n tokenId: bigint | string;\n }): Promise<TicketRecord> {\n const t = await this._collectionRead(params.collection).call(\"get_ticket\", [\n cairo.uint256(params.tokenId),\n ]) as any;\n return {\n maxSupply: BigInt(t.max_supply),\n minted: BigInt(t.minted),\n startTime: t.start_time?.variant === \"Some\" ? Number(t.start_time.values[0] ?? t.start_time.value) : null,\n endTime: t.end_time?.variant === \"Some\" ? Number(t.end_time.values[0] ?? t.end_time.value) : null,\n royaltyBps: Number(t.royalty_bps),\n metadataUri: t.metadata_uri as string,\n };\n }\n}\n","import { newContract } from \"../marketplace/utils.js\";\nimport { CairoOption, CairoOptionVariant, RpcProvider, cairo, type AccountInterface } from \"starknet\";\nimport type { ResolvedConfig } from \"../../config.js\";\nimport { normalizeAddress } from \"../../utils/address.js\";\nimport { IPClubCollectionABI, IPClubFactoryABI } from \"../abis/index.js\";\nimport { getStarknetCoordinates } from \"../../chains.js\";\nimport type { CreateMembershipParams, MintMembershipsParams } from \"../../types/services.js\";\nimport type { TxResult } from \"../../types/marketplace.js\";\n\nexport type { CreateMembershipParams, MintMembershipsParams };\n\nexport interface MembershipRecord {\n maxSupply: bigint;\n minted: bigint;\n startTime: number | null;\n endTime: number | null;\n royaltyBps: number;\n metadataUri: string;\n}\n\nexport class ClubService {\n private readonly factoryAddress?: string;\n private readonly config: ResolvedConfig;\n\n constructor(config: ResolvedConfig) {\n this.config = config;\n this.factoryAddress = getStarknetCoordinates(config.chain).ipClubFactory;\n }\n\n private _factory(account: AccountInterface, factoryAddress?: string) {\n const address = factoryAddress ?? this.factoryAddress;\n if (!address) throw new Error(\"IP-Club factory address not configured for this chain\");\n return newContract(IPClubFactoryABI as any, normalizeAddress(\"STARKNET\", address), account as any);\n }\n\n private _collection(address: string, account: AccountInterface) {\n return newContract(IPClubCollectionABI as any, normalizeAddress(\"STARKNET\", address), account as any);\n }\n\n private _collectionRead(address: string) {\n const provider = new RpcProvider({ nodeUrl: this.config.rpcUrl });\n return newContract(IPClubCollectionABI as any, normalizeAddress(\"STARKNET\", address), provider);\n }\n\n /**\n * Deploys a new IPClubCollection via the factory. Caller becomes owner.\n * `baseUri` is the collection-level metadata URI, embedded on-chain in the\n * deploy transaction.\n */\n async deployCollection(\n account: AccountInterface,\n params: { name: string; symbol: string; baseUri: string; factoryAddress?: string }\n ): Promise<TxResult> {\n const call = this._factory(account, params.factoryAddress).populate(\"deploy_collection\", [\n params.name,\n params.symbol,\n params.baseUri,\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /** Owner-only. Creates a new membership tier inside the caller's deployed collection. */\n async createMembership(account: AccountInterface, params: CreateMembershipParams): Promise<TxResult> {\n const startTime = params.startTime != null\n ? new CairoOption(CairoOptionVariant.Some, params.startTime)\n : new CairoOption(CairoOptionVariant.None);\n const endTime = params.endTime != null\n ? new CairoOption(CairoOptionVariant.Some, params.endTime)\n : new CairoOption(CairoOptionVariant.None);\n const call = this._collection(params.collection, account).populate(\"create_membership\", [\n cairo.uint256(params.maxSupply),\n startTime,\n endTime,\n params.royaltyBps,\n params.metadataUri,\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /**\n * Owner-only. Mints `amount` of `tokenId` to `to`. The validity window\n * gates membership, never minting — future-window tiers mint fine.\n */\n async mint(account: AccountInterface, params: MintMembershipsParams): Promise<TxResult> {\n const call = this._collection(params.collection, account).populate(\"mint\", [\n params.to,\n cairo.uint256(params.tokenId),\n cairo.uint256(params.amount),\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /** Read — true if holder holds any tier currently inside its validity window. */\n async isMember(params: { collection: string; holder: string }): Promise<boolean> {\n const result = await this._collectionRead(params.collection).call(\"is_member\", [\n params.holder,\n ]);\n return Boolean(result);\n }\n\n /** Read — true if holder holds `tokenId` and the current time is inside its window. */\n async isMemberOf(params: { collection: string; tokenId: bigint | string; holder: string }): Promise<boolean> {\n const result = await this._collectionRead(params.collection).call(\"is_member_of\", [\n cairo.uint256(params.tokenId),\n params.holder,\n ]);\n return Boolean(result);\n }\n\n /** Read — returns the Membership record for a token ID. */\n async getMembership(params: {\n collection: string;\n tokenId: bigint | string;\n }): Promise<MembershipRecord> {\n const m = await this._collectionRead(params.collection).call(\"get_membership\", [\n cairo.uint256(params.tokenId),\n ]) as any;\n return {\n maxSupply: BigInt(m.max_supply),\n minted: BigInt(m.minted),\n startTime: m.start_time?.variant === \"Some\" ? Number(m.start_time.values[0] ?? m.start_time.value) : null,\n endTime: m.end_time?.variant === \"Some\" ? Number(m.end_time.values[0] ?? m.end_time.value) : null,\n royaltyBps: Number(m.royalty_bps),\n metadataUri: m.metadata_uri as string,\n };\n }\n}\n","import { newContract } from \"../marketplace/utils.js\";\nimport { CairoOption, CairoOptionVariant, RpcProvider, cairo, type AccountInterface } from \"starknet\";\nimport type { ResolvedConfig } from \"../../config.js\";\nimport { normalizeAddress } from \"../../utils/address.js\";\nimport { IPSponsorshipABI } from \"../abis/index.js\";\nimport { getStarknetCoordinates } from \"../../chains.js\";\nimport type { CreateSponsorshipOfferParams, ProposeSponsorshipParams } from \"../../types/services.js\";\nimport type { TxResult } from \"../../types/marketplace.js\";\n\nexport type { CreateSponsorshipOfferParams, ProposeSponsorshipParams };\n\nexport interface SponsorshipOfferRecord {\n author: string;\n nftContract: string;\n tokenId: bigint;\n minAmount: bigint;\n duration: number;\n paymentToken: string;\n licenseTermsUri: string;\n transferable: boolean;\n specificSponsor: string | null;\n open: boolean;\n royaltyBps: bigint;\n}\n\nexport interface SponsorshipProposalRecord {\n proposer: string;\n nftContract: string;\n tokenId: bigint;\n amount: bigint;\n duration: number;\n /** Unix seconds; 0 = no deadline. */\n validUntil: number;\n paymentToken: string;\n licenseTermsUri: string;\n transferable: boolean;\n open: boolean;\n royaltyBps: bigint;\n}\n\n/**\n * IP Sponsorship v3 — one contract is both the offer/bid/proposal registry\n * AND the issued license collection (a standard ERC-721; embeds\n * ERC721Component directly, no separate receipt contract, no `set_minter`\n * bootstrap). `transferable`/expiry are declarative terms only — never\n * contract-enforced against a transfer — carried in `license_terms_uri`\n * metadata and the `LicenseMinted` event; the indexer, not this contract,\n * derives validity. A license moves through the standard ERC-721\n * `transfer_from`/`safe_transfer_from` on this same contract address, so\n * there is no bespoke transfer wrapper here.\n */\nexport class SponsorshipService {\n private readonly sponsorshipAddress?: string;\n private readonly config: ResolvedConfig;\n\n constructor(config: ResolvedConfig) {\n this.config = config;\n this.sponsorshipAddress = getStarknetCoordinates(config.chain).ipSponsorship;\n }\n\n private _contract(account: AccountInterface, address?: string) {\n const resolved = address ?? this.sponsorshipAddress;\n if (!resolved) {\n throw new Error(\"IP-Sponsorship address not configured for this chain\");\n }\n return newContract(IPSponsorshipABI as any, normalizeAddress(\"STARKNET\", resolved), account as any);\n }\n\n private _contractRead(address?: string) {\n const resolved = address ?? this.sponsorshipAddress;\n if (!resolved) {\n throw new Error(\"IP-Sponsorship address not configured for this chain\");\n }\n const provider = new RpcProvider({ nodeUrl: this.config.rpcUrl });\n return newContract(IPSponsorshipABI as any, normalizeAddress(\"STARKNET\", resolved), provider);\n }\n\n // ── Offers (owner-initiated) ───────────────────────────────────────────────\n\n /** The offer author must currently own (nftContract, tokenId) — enforced on-chain at create and accept. */\n async createOffer(\n account: AccountInterface,\n params: CreateSponsorshipOfferParams & { sponsorshipAddress?: string }\n ): Promise<TxResult> {\n const specificSponsor = params.specificSponsor\n ? new CairoOption(CairoOptionVariant.Some, params.specificSponsor)\n : new CairoOption(CairoOptionVariant.None);\n\n const call = this._contract(account, params.sponsorshipAddress).populate(\"create_offer\", [\n params.nftContract,\n cairo.uint256(params.tokenId),\n cairo.uint256(params.minAmount),\n params.duration,\n params.paymentToken,\n params.licenseTermsUri,\n params.transferable,\n cairo.uint256(params.royaltyBps),\n specificSponsor,\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /** Reversible — gates new bids/acceptance only. */\n async setOfferOpen(\n account: AccountInterface,\n params: { offerId: bigint | string; open: boolean; sponsorshipAddress?: string }\n ): Promise<TxResult> {\n const call = this._contract(account, params.sponsorshipAddress).populate(\"set_offer_open\", [\n cairo.uint256(params.offerId),\n params.open,\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /** A bid is a signal plus an open ERC-20 allowance — no tokens move until accepted. Prepends the approve. */\n async placeBid(\n account: AccountInterface,\n params: { offerId: bigint | string; amount: bigint | string; paymentToken: string; sponsorshipAddress?: string }\n ): Promise<TxResult> {\n const sponsorshipAddress = params.sponsorshipAddress ?? this.sponsorshipAddress;\n if (!sponsorshipAddress) {\n throw new Error(\"IP-Sponsorship address not configured for this chain\");\n }\n const amount = cairo.uint256(params.amount);\n const approveCall = {\n contractAddress: params.paymentToken,\n entrypoint: \"approve\",\n calldata: [normalizeAddress(\"STARKNET\", sponsorshipAddress), amount.low.toString(), amount.high.toString()],\n };\n const bidCall = this._contract(account, sponsorshipAddress).populate(\"place_bid\", [\n cairo.uint256(params.offerId),\n amount,\n ]);\n const res = await account.execute([approveCall, bidCall]);\n return { txHash: res.transaction_hash };\n }\n\n async retractBid(\n account: AccountInterface,\n params: { offerId: bigint | string; sponsorshipAddress?: string }\n ): Promise<TxResult> {\n const call = this._contract(account, params.sponsorshipAddress).populate(\"retract_bid\", [\n cairo.uint256(params.offerId),\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /**\n * Author-only. Re-verifies IP ownership, settles the sponsor's payment\n * (allowance pull, no escrow), and mints the license — a real ERC-721 on\n * this same contract — to the sponsor, all atomically in one call.\n */\n async acceptBid(\n account: AccountInterface,\n params: { offerId: bigint | string; sponsor: string; sponsorshipAddress?: string }\n ): Promise<TxResult> {\n const call = this._contract(account, params.sponsorshipAddress).populate(\"accept_bid\", [\n cairo.uint256(params.offerId),\n params.sponsor,\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n // ── Proposals (sponsor-initiated) ──────────────────────────────────────────\n // The symmetric counterpart to offers/bids: a sponsor proposes fixed terms\n // on an asset with no open offer yet; only the asset's current owner may\n // accept or reject. Unlike an offer, the SPONSOR chooses `paymentToken` here\n // — an accepting owner's UI should surface only recognized tokens, since a\n // bad-faith ERC-20 could return `true` on `transfer_from` without moving funds.\n\n async proposeSponsorship(\n account: AccountInterface,\n params: ProposeSponsorshipParams & { sponsorshipAddress?: string }\n ): Promise<TxResult> {\n const call = this._contract(account, params.sponsorshipAddress).populate(\"propose_sponsorship\", [\n params.nftContract,\n cairo.uint256(params.tokenId),\n cairo.uint256(params.amount),\n params.duration,\n params.validUntil ?? 0,\n params.paymentToken,\n params.licenseTermsUri,\n params.transferable,\n cairo.uint256(params.royaltyBps),\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /** Proposer-only. Advisory against an acceptance in flight in the same block. */\n async withdrawProposal(\n account: AccountInterface,\n params: { proposalId: bigint | string; sponsorshipAddress?: string }\n ): Promise<TxResult> {\n const call = this._contract(account, params.sponsorshipAddress).populate(\"withdraw_proposal\", [\n cairo.uint256(params.proposalId),\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /**\n * Asset-owner-only (re-verified on-chain — a proposal binds to the asset,\n * not a person: whoever owns it at acceptance time is paid and issues the\n * license). Settles payment and mints the license atomically, same as\n * `acceptBid`.\n */\n async acceptProposal(\n account: AccountInterface,\n params: { proposalId: bigint | string; sponsorshipAddress?: string }\n ): Promise<TxResult> {\n const call = this._contract(account, params.sponsorshipAddress).populate(\"accept_proposal\", [\n cairo.uint256(params.proposalId),\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n /** Asset-owner-only. */\n async rejectProposal(\n account: AccountInterface,\n params: { proposalId: bigint | string; sponsorshipAddress?: string }\n ): Promise<TxResult> {\n const call = this._contract(account, params.sponsorshipAddress).populate(\"reject_proposal\", [\n cairo.uint256(params.proposalId),\n ]);\n const res = await account.execute([call]);\n return { txHash: res.transaction_hash };\n }\n\n // ── Reads ───────────────────────────────────────────────────────────────────\n\n async getOffer(params: { offerId: bigint | string; sponsorshipAddress?: string }): Promise<SponsorshipOfferRecord> {\n const o = await this._contractRead(params.sponsorshipAddress).call(\"get_offer\", [\n cairo.uint256(params.offerId),\n ]) as any;\n return {\n author: o.author as string,\n nftContract: o.nft_contract as string,\n tokenId: BigInt(o.token_id),\n minAmount: BigInt(o.min_amount),\n duration: Number(o.duration),\n paymentToken: o.payment_token as string,\n licenseTermsUri: o.license_terms_uri as string,\n transferable: Boolean(o.transferable),\n specificSponsor: o.specific_sponsor?.variant === \"Some\"\n ? (o.specific_sponsor.values?.[0] ?? o.specific_sponsor.value)\n : null,\n open: Boolean(o.open),\n royaltyBps: BigInt(o.royalty_bps),\n };\n }\n\n async getBid(params: { offerId: bigint | string; sponsor: string; sponsorshipAddress?: string }): Promise<bigint> {\n const result = await this._contractRead(params.sponsorshipAddress).call(\"get_bid\", [\n cairo.uint256(params.offerId),\n params.sponsor,\n ]);\n return BigInt(result as any);\n }\n\n async getProposal(params: { proposalId: bigint | string; sponsorshipAddress?: string }): Promise<SponsorshipProposalRecord> {\n const p = await this._contractRead(params.sponsorshipAddress).call(\"get_proposal\", [\n cairo.uint256(params.proposalId),\n ]) as any;\n return {\n proposer: p.proposer as string,\n nftContract: p.nft_contract as string,\n tokenId: BigInt(p.token_id),\n amount: BigInt(p.amount),\n duration: Number(p.duration),\n validUntil: Number(p.valid_until),\n paymentToken: p.payment_token as string,\n licenseTermsUri: p.license_terms_uri as string,\n transferable: Boolean(p.transferable),\n open: Boolean(p.open),\n royaltyBps: BigInt(p.royalty_bps),\n };\n }\n\n async getLastOfferId(params?: { sponsorshipAddress?: string }): Promise<bigint> {\n const result = await this._contractRead(params?.sponsorshipAddress).call(\"get_last_offer_id\", []);\n return BigInt(result as any);\n }\n\n async getLastProposalId(params?: { sponsorshipAddress?: string }): Promise<bigint> {\n const result = await this._contractRead(params?.sponsorshipAddress).call(\"get_last_proposal_id\", []);\n return BigInt(result as any);\n }\n\n async getLastLicenseId(params?: { sponsorshipAddress?: string }): Promise<bigint> {\n const result = await this._contractRead(params?.sponsorshipAddress).call(\"get_last_license_id\", []);\n return BigInt(result as any);\n }\n\n /** EIP-2981 — royalty recipient (the license's issuing author) and amount owed on a resale at `salePrice`. */\n async royaltyInfo(params: {\n licenseId: bigint | string;\n salePrice: bigint | string;\n sponsorshipAddress?: string;\n }): Promise<{ recipient: string; amount: bigint }> {\n const [recipient, amount] = await this._contractRead(params.sponsorshipAddress).call(\"royalty_info\", [\n cairo.uint256(params.licenseId),\n cairo.uint256(params.salePrice),\n ]) as any;\n return { recipient: recipient as string, amount: BigInt(amount) };\n }\n}\n","import { type MedialaneConfig, resolveConfig, type ResolvedConfig } from \"../config.js\";\nimport { ApiClient } from \"../api/client.js\";\nimport { PopService } from \"./services/pop.js\";\nimport { DropService } from \"./services/drop.js\";\nimport { ERC1155CollectionService } from \"./services/erc1155collection.js\";\nimport { CreatorCoinService } from \"./services/creatorCoin.js\";\nimport { TicketService } from \"./services/ticket.js\";\nimport { ClubService } from \"./services/club.js\";\nimport { SponsorshipService } from \"./services/sponsorship.js\";\n\n// Marketplace order execution is NOT on the client (0.64.0): it goes through\n// StarknetVenue over the VenueSigner capability port (./venue.ts) — the app's\n// wallet layer signs and submits; the venue builds and reads.\nexport class MedialaneClient {\n /**\n * Off-chain API client — covers all /v1/* backend endpoints.\n * Requires `backendUrl` in config; pass `apiKey` for authenticated routes.\n */\n readonly api: ApiClient;\n\n readonly services: {\n readonly pop: PopService;\n readonly drop: DropService;\n readonly erc1155Collection: ERC1155CollectionService;\n readonly creatorCoin: CreatorCoinService;\n readonly ticket: TicketService;\n readonly club: ClubService;\n readonly sponsorship: SponsorshipService;\n };\n\n private readonly config: ResolvedConfig;\n\n constructor(rawConfig: MedialaneConfig = {}) {\n this.config = resolveConfig(rawConfig);\n\n this.services = {\n pop: new PopService(this.config),\n drop: new DropService(this.config),\n erc1155Collection: new ERC1155CollectionService(this.config),\n creatorCoin: new CreatorCoinService(this.config),\n ticket: new TicketService(this.config),\n club: new ClubService(this.config),\n sponsorship: new SponsorshipService(this.config),\n };\n\n if (!this.config.backendUrl) {\n // When backendUrl is not configured, `client.api.*()` must fail with a\n // helpful message. Wrap a real ApiClient (built with a sentinel URL so\n // it never silently dispatches) in a Proxy that intercepts ONLY actual\n // ApiClient methods — Symbol access, .then (Promise unwrapping),\n // .toString, .inspect (Node/Bun debug) and other host introspection\n // are returned unchanged so they don't fabricate throwing functions.\n const sentinel = new ApiClient(\"https://medialane-sdk-no-backend.invalid\", this.config.apiKey);\n const apiMethodNames = new Set<string | symbol>(\n Object.getOwnPropertyNames(ApiClient.prototype).filter(\n (k) => k !== \"constructor\" && typeof (sentinel as unknown as Record<string, unknown>)[k] === \"function\",\n ),\n );\n this.api = new Proxy(sentinel, {\n get(target, prop, receiver) {\n if (typeof prop === \"symbol\" || !apiMethodNames.has(prop)) {\n return Reflect.get(target, prop, receiver);\n }\n return () => {\n throw new Error(\n `backendUrl not configured. Pass backendUrl to MedialaneClient to use .api.${String(prop)}()`,\n );\n };\n },\n });\n } else {\n this.api = new ApiClient(this.config.backendUrl, this.config.apiKey, this.config.retryOptions, this.config.chain);\n }\n }\n\n get chain() {\n return this.config.chain;\n }\n\n get rpcUrl() {\n return this.config.rpcUrl;\n }\n\n get marketplaceContract() {\n return this.config.marketplaceContract;\n }\n}\n","// Pure view reads on the ERC-721 venue. The self-executing order writes that\n// used to live here (createListing/makeOffer/fulfillOrder/cancelOrder/\n// checkoutCart/mint/createCollection/incrementCounter) were removed in 0.64.0:\n// order execution goes through StarknetVenue over the VenueSigner capability\n// port (../venue.ts) — one source for order construction; the app's wallet\n// layer signs and submits. Calldata/typed-data construction lives in the pure\n// builders (./build.ts, ./signing.ts).\nimport { type Abi, Contract } from \"starknet\";\nimport { IPMarketplaceABI } from \"../abis/index.js\";\nimport type { ResolvedConfig } from \"../../config.js\";\nimport type { OrderDetails } from \"../../types/marketplace.js\";\nimport { getProvider, newContract } from \"./utils.js\";\n\nconst _contractCache = new WeakMap<ResolvedConfig, { contract: Contract }>();\n\nfunction makeContract(config: ResolvedConfig): { contract: Contract } {\n const cached = _contractCache.get(config);\n if (cached) return cached;\n const contract = newContract(\n IPMarketplaceABI as unknown as Abi,\n config.marketplaceContract,\n getProvider(config)\n );\n const entry = { contract };\n _contractCache.set(config, entry);\n return entry;\n}\n\nexport async function getOrderDetails(\n orderHash: string,\n config: ResolvedConfig\n): Promise<OrderDetails> {\n const { contract } = makeContract(config);\n return contract.get_order_details(orderHash) as Promise<OrderDetails>;\n}\n\nexport async function getCounter(\n address: string,\n config: ResolvedConfig\n): Promise<bigint> {\n const { contract } = makeContract(config);\n return BigInt((await contract.get_counter(address)).toString());\n}\n","// Pure view reads on the ERC-1155 venue. The self-executing order writes that\n// used to live here (createListing1155/makeOffer1155/fulfillOrder1155/\n// cancelOrder1155/checkoutCart1155/incrementCounter1155) were removed in\n// 0.64.0 — order execution goes through StarknetVenue over the VenueSigner\n// capability port (../venue.ts). Calldata/typed-data construction lives in\n// the pure builders (./build.ts, ../marketplace/signing.ts).\nimport { type Abi, Contract } from \"starknet\";\nimport { Medialane1155ABI } from \"../abis/index.js\";\nimport type { ResolvedConfig } from \"../../config.js\";\nimport type { OrderDetails } from \"../../types/marketplace.js\";\nimport { getProvider, newContract } from \"../marketplace/utils.js\";\n\nconst _contractCache = new WeakMap<ResolvedConfig, Contract>();\n\nfunction getContract(config: ResolvedConfig): Contract {\n let c = _contractCache.get(config);\n if (!c) {\n c = newContract(Medialane1155ABI as unknown as Abi, config.marketplace1155Contract, getProvider(config));\n _contractCache.set(config, c);\n }\n return c;\n}\n\nexport async function getOrderDetails1155(\n orderHash: string,\n config: ResolvedConfig\n): Promise<OrderDetails> {\n const contract = getContract(config);\n return contract.get_order_details(orderHash) as Promise<OrderDetails>;\n}\n\nexport async function getCounter1155(\n address: string,\n config: ResolvedConfig\n): Promise<bigint> {\n const contract = getContract(config);\n return BigInt((await contract.get_counter(address)).toString());\n}\n","/**\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 { type TypedData, TypedDataRevision, constants } from \"starknet\";\n\n// ── Shared SNIP-12 building blocks ─────────────────────────────────────────────\n\nconst STARKNET_DOMAIN = [\n { name: \"name\", type: \"shortstring\" },\n { name: \"version\", type: \"shortstring\" },\n { name: \"chainId\", type: \"shortstring\" },\n { name: \"revision\", type: \"shortstring\" },\n];\n\nconst OFFER_ITEM = [\n { name: \"item_type\", type: \"shortstring\" },\n { name: \"token\", type: \"ContractAddress\" },\n { name: \"identifier_or_criteria\", type: \"felt\" },\n { name: \"amount\", type: \"felt\" },\n];\n\nconst CONSIDERATION_ITEM = [\n { name: \"item_type\", type: \"shortstring\" },\n { name: \"token\", type: \"ContractAddress\" },\n { name: \"identifier_or_criteria\", type: \"felt\" },\n { name: \"amount\", type: \"felt\" },\n { name: \"recipient\", type: \"ContractAddress\" },\n];\n\nconst ORDER_PARAMETERS = [\n { name: \"offerer\", type: \"ContractAddress\" },\n { name: \"marketplace\", type: \"ContractAddress\" },\n { name: \"offer\", type: \"OfferItem\" },\n { name: \"consideration\", type: \"ConsiderationItem\" },\n { name: \"royalty_max_bps\", type: \"felt\" },\n { name: \"start_time\", type: \"felt\" },\n { name: \"end_time\", type: \"felt\" },\n { name: \"salt\", type: \"felt\" },\n { name: \"counter\", type: \"felt\" },\n];\n\nconst ORDER_CANCELLATION = [\n { name: \"order_hash\", type: \"felt\" },\n { name: \"offerer\", type: \"ContractAddress\" },\n];\n\n/**\n * SNIP-12 domain version per marketplace contract:\n * ERC-721 marketplace → \"1\"\n * ERC-1155 marketplace V2 → \"2\"\n *\n * If the Cairo contracts are ever redeployed with different SNIP-12 domains,\n * update only this lookup — every builder reads through it.\n */\nconst DOMAIN_VERSION: Record<\"erc721\" | \"erc1155\", string> = {\n erc721: \"5\",\n erc1155: \"4\",\n};\n\nfunction buildDomain(standard: \"erc721\" | \"erc1155\", chainId: constants.StarknetChainId | string) {\n return {\n name: \"Medialane\",\n version: DOMAIN_VERSION[standard],\n chainId,\n revision: TypedDataRevision.ACTIVE,\n };\n}\n\n// ── Public builders ────────────────────────────────────────────────────────────\n\n/**\n * Build SNIP-12 typed data for signing an OrderParameters struct.\n * The shape is identical across ERC-721 and ERC-1155 (nested OfferItem +\n * ConsiderationItem) — only the domain version differs.\n */\nexport function buildOrderTypedData(\n message: Record<string, unknown>,\n chainId: constants.StarknetChainId | string,\n): TypedData {\n return {\n domain: buildDomain(\"erc721\", chainId),\n primaryType: \"OrderParameters\",\n types: {\n StarknetDomain: STARKNET_DOMAIN,\n OrderParameters: ORDER_PARAMETERS,\n OfferItem: OFFER_ITEM,\n ConsiderationItem: CONSIDERATION_ITEM,\n },\n message,\n };\n}\n\nexport function build1155OrderTypedData(\n message: Record<string, unknown>,\n chainId: constants.StarknetChainId | string,\n): TypedData {\n return {\n domain: buildDomain(\"erc1155\", chainId),\n primaryType: \"OrderParameters\",\n types: {\n StarknetDomain: STARKNET_DOMAIN,\n OrderParameters: ORDER_PARAMETERS,\n OfferItem: OFFER_ITEM,\n ConsiderationItem: CONSIDERATION_ITEM,\n },\n message,\n };\n}\n\n/** OrderCancellation typed data — identical shape across both standards. */\nexport function buildCancellationTypedData(\n message: Record<string, unknown>,\n chainId: constants.StarknetChainId | string,\n): TypedData {\n return {\n domain: buildDomain(\"erc721\", chainId),\n primaryType: \"OrderCancellation\",\n types: {\n StarknetDomain: STARKNET_DOMAIN,\n OrderCancellation: ORDER_CANCELLATION,\n },\n message,\n };\n}\n\nexport function build1155CancellationTypedData(\n message: Record<string, unknown>,\n chainId: constants.StarknetChainId | string,\n): TypedData {\n return {\n domain: buildDomain(\"erc1155\", chainId),\n primaryType: \"OrderCancellation\",\n types: {\n StarknetDomain: STARKNET_DOMAIN,\n OrderCancellation: ORDER_CANCELLATION,\n },\n message,\n };\n}\n","import { type Abi, type Call, type TypedData, Contract, cairo, shortString } from \"starknet\";\nimport { IPMarketplaceABI } from \"../abis/index.js\";\nimport type { ResolvedConfig } from \"../../config.js\";\nimport { stringifyBigInts } from \"../../utils/bigint.js\";\nimport { buildOrderTypedData, buildCancellationTypedData } from \"./signing.js\";\nimport { buildFeeCall } from \"../fee/index.js\";\nimport { getChainId, getProvider, newContract } from \"./utils.js\";\n\n/**\n * Pure calldata builders for the 721 marketplace — no signing, no execution, no\n * provider *writes*. Salt, counter, and times are injected by the caller so the\n * output is deterministic and testable. Both the legacy `MarketplaceModule`\n * execute-methods and the chain-neutral `StarknetVenue` build calls through here,\n * so their calldata is identical by construction.\n */\n\nexport interface OrderLeg {\n item_type: string;\n token: string;\n identifier_or_criteria: string;\n amount: string;\n recipient?: string;\n}\n\nexport interface OrderParams {\n offerer: string;\n marketplace: string;\n offer: OrderLeg;\n consideration: OrderLeg;\n royalty_max_bps: string;\n start_time: string;\n end_time: string;\n salt: string;\n counter: string;\n}\n\nexport interface BuildListingInput {\n offerer: string;\n nftContract: string;\n tokenId: string;\n /** ERC-20 consideration amount, base units. */\n priceWei: string;\n paymentTokenAddress: string;\n royaltyMaxBps: string;\n startTime: number;\n endTime: number;\n salt: string;\n counter: string;\n}\n\nexport type BuildOfferInput = BuildListingInput;\n\nfunction contractFor(cfg: ResolvedConfig): Contract {\n return newContract(IPMarketplaceABI as unknown as Abi, cfg.marketplaceContract, getProvider(cfg));\n}\n\nexport function buildListingOrder(\n i: BuildListingInput,\n cfg: ResolvedConfig,\n): { orderParams: OrderParams; typedData: TypedData } {\n const orderParams: OrderParams = {\n offerer: i.offerer,\n marketplace: cfg.marketplaceContract,\n offer: { item_type: \"ERC721\", token: i.nftContract, identifier_or_criteria: i.tokenId, amount: \"1\" },\n consideration: {\n item_type: \"ERC20\",\n token: i.paymentTokenAddress,\n identifier_or_criteria: \"0\",\n amount: i.priceWei,\n recipient: i.offerer,\n },\n royalty_max_bps: i.royaltyMaxBps,\n start_time: String(i.startTime),\n end_time: String(i.endTime),\n salt: i.salt,\n counter: i.counter,\n };\n const typedData = stringifyBigInts(buildOrderTypedData(orderParams as unknown as Record<string, unknown>, getChainId(cfg))) as TypedData;\n return { orderParams, typedData };\n}\n\nexport function buildOfferOrder(\n i: BuildOfferInput,\n cfg: ResolvedConfig,\n): { orderParams: OrderParams; typedData: TypedData } {\n const orderParams: OrderParams = {\n offerer: i.offerer,\n marketplace: cfg.marketplaceContract,\n offer: { item_type: \"ERC20\", token: i.paymentTokenAddress, identifier_or_criteria: \"0\", amount: i.priceWei },\n consideration: {\n item_type: \"ERC721\",\n token: i.nftContract,\n identifier_or_criteria: i.tokenId,\n amount: \"1\",\n recipient: i.offerer,\n },\n royalty_max_bps: i.royaltyMaxBps,\n start_time: String(i.startTime),\n end_time: String(i.endTime),\n salt: i.salt,\n counter: i.counter,\n };\n const typedData = stringifyBigInts(buildOrderTypedData(orderParams as unknown as Record<string, unknown>, getChainId(cfg))) as TypedData;\n return { orderParams, typedData };\n}\n\nfunction registerPayload(orderParams: OrderParams, signature: string[]) {\n return stringifyBigInts({\n parameters: {\n ...orderParams,\n offer: { ...orderParams.offer, item_type: shortString.encodeShortString(orderParams.offer.item_type) },\n consideration: {\n ...orderParams.consideration,\n item_type: shortString.encodeShortString(orderParams.consideration.item_type),\n },\n },\n signature,\n }) as Record<string, unknown>;\n}\n\nexport function buildRegisterCalls(\n a: { orderParams: OrderParams; signature: string[]; approvalNeeded: boolean; approve: Call },\n cfg: ResolvedConfig,\n): Call[] {\n const registerCall = contractFor(cfg).populate(\"register_order\", [registerPayload(a.orderParams, a.signature)]);\n return a.approvalNeeded ? [a.approve, registerCall] : [registerCall];\n}\n\nexport function buildFulfillCalls(\n a: { orderHash: string; paymentToken: string; totalPrice: string },\n cfg: ResolvedConfig,\n): Call[] {\n const u = cairo.uint256(a.totalPrice);\n const approve: Call = {\n contractAddress: a.paymentToken,\n entrypoint: \"approve\",\n calldata: [cfg.marketplaceContract, u.low.toString(), u.high.toString()],\n };\n const fulfill = contractFor(cfg).populate(\"fulfill_order\", [a.orderHash]);\n const fee = buildFeeCall(\n { surface: \"marketplace\", token: a.paymentToken, grossAmount: BigInt(a.totalPrice) },\n cfg.feeConfig,\n );\n return fee ? [approve, fulfill, fee] : [approve, fulfill];\n}\n\nexport function buildCancelCalls(\n a: { orderHash: string; offerer: string; signature: string[] },\n cfg: ResolvedConfig,\n): Call[] {\n const cancelRequest = stringifyBigInts({\n cancelation: { order_hash: a.orderHash, offerer: a.offerer },\n signature: a.signature,\n }) as Record<string, unknown>;\n return [contractFor(cfg).populate(\"cancel_order\", [cancelRequest])];\n}\n\n/** SNIP-12 typed data for a cancellation (offerer signs `{ order_hash, offerer }`). */\nexport function buildCancelTypedData(orderHash: string, offerer: string, cfg: ResolvedConfig): TypedData {\n return stringifyBigInts(buildCancellationTypedData({ order_hash: orderHash, offerer }, getChainId(cfg))) as TypedData;\n}\n","import { type Abi, type Call, type TypedData, Contract, cairo, shortString } from \"starknet\";\nimport { Medialane1155ABI } from \"../abis/index.js\";\nimport type { ResolvedConfig } from \"../../config.js\";\nimport { stringifyBigInts } from \"../../utils/bigint.js\";\nimport { build1155OrderTypedData, build1155CancellationTypedData } from \"../marketplace/signing.js\";\nimport { buildFeeCall } from \"../fee/index.js\";\nimport { getChainId, getProvider, newContract } from \"../marketplace/utils.js\";\nimport type { OrderParams } from \"../marketplace/build.js\";\n\n/**\n * Pure calldata builders for the ERC-1155 marketplace — the 1155 mirror of\n * `marketplace/build.ts`. Salt/counter/times are injected so output is\n * deterministic. Both the legacy `Medialane1155Module` and `StarknetVenue` build\n * through here, so their calldata is identical by construction — except that\n * `buildFulfill1155Calls` now composes the platform fee (the legacy\n * `fulfillOrder1155` did not; this closes the 1155 fee-parity gap so 721 and 1155\n * buys charge the creators-fund fee uniformly).\n */\n\nexport interface Build1155ListingInput {\n offerer: string;\n nftContract: string;\n tokenId: string;\n /** ERC-1155 unit quantity offered. */\n quantity: string;\n /** ERC-20 consideration amount PER UNIT, base units. */\n priceWeiPerUnit: string;\n paymentTokenAddress: string;\n royaltyMaxBps: string;\n startTime: number;\n endTime: number;\n salt: string;\n counter: string;\n}\n\nexport type Build1155OfferInput = Build1155ListingInput;\n\nfunction contractFor(cfg: ResolvedConfig): Contract {\n return newContract(Medialane1155ABI as unknown as Abi, cfg.marketplace1155Contract, getProvider(cfg));\n}\n\nexport function buildListing1155Order(\n i: Build1155ListingInput,\n cfg: ResolvedConfig,\n): { orderParams: OrderParams; typedData: TypedData } {\n const orderParams: OrderParams = {\n offerer: i.offerer,\n marketplace: cfg.marketplace1155Contract,\n offer: { item_type: \"ERC1155\", token: i.nftContract, identifier_or_criteria: i.tokenId, amount: i.quantity },\n consideration: {\n item_type: \"ERC20\",\n token: i.paymentTokenAddress,\n identifier_or_criteria: \"0\",\n amount: i.priceWeiPerUnit,\n recipient: i.offerer,\n },\n royalty_max_bps: i.royaltyMaxBps,\n start_time: String(i.startTime),\n end_time: String(i.endTime),\n salt: i.salt,\n counter: i.counter,\n };\n const typedData = stringifyBigInts(\n build1155OrderTypedData(orderParams as unknown as Record<string, unknown>, getChainId(cfg)),\n ) as TypedData;\n return { orderParams, typedData };\n}\n\nexport function buildOffer1155Order(\n i: Build1155OfferInput,\n cfg: ResolvedConfig,\n): { orderParams: OrderParams; typedData: TypedData } {\n const orderParams: OrderParams = {\n offerer: i.offerer,\n marketplace: cfg.marketplace1155Contract,\n offer: { item_type: \"ERC20\", token: i.paymentTokenAddress, identifier_or_criteria: \"0\", amount: i.priceWeiPerUnit },\n consideration: {\n item_type: \"ERC1155\",\n token: i.nftContract,\n identifier_or_criteria: i.tokenId,\n amount: i.quantity,\n recipient: i.offerer,\n },\n royalty_max_bps: i.royaltyMaxBps,\n start_time: String(i.startTime),\n end_time: String(i.endTime),\n salt: i.salt,\n counter: i.counter,\n };\n const typedData = stringifyBigInts(\n build1155OrderTypedData(orderParams as unknown as Record<string, unknown>, getChainId(cfg)),\n ) as TypedData;\n return { orderParams, typedData };\n}\n\nfunction registerPayload(orderParams: OrderParams, signature: string[]) {\n return stringifyBigInts({\n parameters: {\n ...orderParams,\n offer: { ...orderParams.offer, item_type: shortString.encodeShortString(orderParams.offer.item_type) },\n consideration: {\n ...orderParams.consideration,\n item_type: shortString.encodeShortString(orderParams.consideration.item_type),\n },\n },\n signature,\n }) as Record<string, unknown>;\n}\n\nexport function buildRegister1155Calls(\n a: { orderParams: OrderParams; signature: string[]; approvalNeeded: boolean; approve: Call },\n cfg: ResolvedConfig,\n): Call[] {\n const registerCall = contractFor(cfg).populate(\"register_order\", [registerPayload(a.orderParams, a.signature)]);\n return a.approvalNeeded ? [a.approve, registerCall] : [registerCall];\n}\n\nexport function buildFulfill1155Calls(\n a: { orderHash: string; paymentToken: string; totalPrice: string; quantity: string },\n cfg: ResolvedConfig,\n): Call[] {\n const u = cairo.uint256(a.totalPrice);\n const approve: Call = {\n contractAddress: a.paymentToken,\n entrypoint: \"approve\",\n calldata: [cfg.marketplace1155Contract, u.low.toString(), u.high.toString()],\n };\n const fulfill = contractFor(cfg).populate(\"fulfill_order\", [a.orderHash, a.quantity]);\n const fee = buildFeeCall(\n { surface: \"marketplace\", token: a.paymentToken, grossAmount: BigInt(a.totalPrice) },\n cfg.feeConfig,\n );\n return fee ? [approve, fulfill, fee] : [approve, fulfill];\n}\n\nexport function buildCancel1155Calls(\n a: { orderHash: string; offerer: string; signature: string[] },\n cfg: ResolvedConfig,\n): Call[] {\n const cancelPayload = stringifyBigInts({\n cancelation: { order_hash: a.orderHash, offerer: a.offerer },\n signature: a.signature,\n }) as Record<string, unknown>;\n return [contractFor(cfg).populate(\"cancel_order\", [cancelPayload])];\n}\n\n/** SNIP-12 typed data for a 1155 cancellation (offerer signs `{ order_hash, offerer }`). */\nexport function buildCancel1155TypedData(orderHash: string, offerer: string, cfg: ResolvedConfig): TypedData {\n return stringifyBigInts(\n build1155CancellationTypedData({ order_hash: orderHash, offerer }, getChainId(cfg)),\n ) as TypedData;\n}\n","import { type Call, cairo, hash, num, type ProviderInterface } from \"starknet\";\nimport type {\n VenueAdapter,\n RegisterOrderParams,\n OrderRef,\n AdapterTxResult,\n} from \"../adapters/types.js\";\nimport type { StarknetVenueSigner } from \"./index.js\";\nimport type { ResolvedConfig } from \"../config.js\";\nimport { getOrderDetails } from \"./marketplace/orders.js\";\nimport { resolveToken, START_TIME_BUFFER_SECS } from \"./marketplace/utils.js\";\nimport {\n buildListingOrder,\n buildOfferOrder,\n buildRegisterCalls,\n buildFulfillCalls,\n buildCancelCalls,\n buildCancelTypedData,\n} from \"./marketplace/build.js\";\nimport {\n buildListing1155Order,\n buildOffer1155Order,\n buildRegister1155Calls,\n buildFulfill1155Calls,\n buildCancel1155Calls,\n buildCancel1155TypedData,\n} from \"./marketplace1155/build.js\";\n\n/** Default listing duration when the caller specifies no expiry (endTime 0). */\nconst NO_EXPIRY_SECONDS = 100 * 365 * 24 * 3600;\n\n/** What a stored/registered order resolves to for fulfilment/cancellation. */\nexport interface ResolvedOrder {\n /** ERC-20 consideration token address. */\n paymentToken: string;\n /** Per-unit price in raw token units, as a decimal string. The total paid is\n * `unitPrice × quantity` (quantity is 1 for ERC-721). */\n unitPrice: string;\n /** Which venue the order lives on. */\n standard: \"ERC721\" | \"ERC1155\";\n}\n\n/**\n * Dependencies for {@link StarknetVenue}. The token standard is resolved through\n * injected reads (the backend already tracks it per collection) rather than an\n * on-chain interface probe — Starknet has no single canonical ERC-1155 interface\n * id and the app already carries the standard from the indexer.\n */\nexport interface StarknetVenueDeps {\n config: ResolvedConfig;\n /** Read provider for building (counter/approval reads) and the post-tx receipt. */\n provider: ProviderInterface;\n /** Resolve a registered order (payment token, per-unit price, venue) from its digest. */\n resolveOrder: (orderRef: OrderRef) => Promise<ResolvedOrder>;\n /** Resolve a collection's token standard (from the indexer). */\n resolveStandard: (contract: string) => Promise<\"ERC721\" | \"ERC1155\">;\n}\n\n/**\n * First-class Starknet venue adapter. It orchestrates the marketplace protocol\n * over the chain-neutral {@link StarknetVenueSigner} capability port: it *builds*\n * typed data + calldata via the pure marketplace builders and *reads* chain state\n * (counter, approvals, receipt) on `deps.provider`, but it never signs or executes\n * itself — the app's signer does that (sign + submit + confirm). This is what lets\n * a single adapter drive every wallet (injected/Cartridge/Privy) and the AVNU\n * paymaster without knowing they differ.\n */\nexport class StarknetVenue implements VenueAdapter<StarknetVenueSigner> {\n readonly chain = \"STARKNET\" as const;\n\n constructor(private readonly deps: StarknetVenueDeps) {}\n\n async incrementCounter(signer: StarknetVenueSigner): Promise<AdapterTxResult> {\n return signer.execute([\n { contractAddress: this.deps.config.marketplaceContract, entrypoint: \"increment_counter\", calldata: [] },\n ]);\n }\n\n getOrderDetails(orderRef: OrderRef): Promise<unknown> {\n return getOrderDetails(orderRef, this.deps.config);\n }\n\n async getCounter(address: string): Promise<bigint> {\n return this.readCounter(this.deps.config.marketplaceContract, address);\n }\n\n async fulfillOrder(\n signer: StarknetVenueSigner,\n orderRef: OrderRef,\n opts?: { quantity?: string } & Record<string, string | undefined>,\n ): Promise<AdapterTxResult> {\n const o = await this.deps.resolveOrder(orderRef);\n const quantity = opts?.quantity ?? \"1\";\n // Total paid = per-unit price × quantity (quantity is 1 for ERC-721).\n const totalPrice = (BigInt(o.unitPrice) * BigInt(quantity)).toString();\n const calls =\n o.standard === \"ERC1155\"\n ? buildFulfill1155Calls({ orderHash: orderRef, paymentToken: o.paymentToken, totalPrice, quantity }, this.deps.config)\n : buildFulfillCalls({ orderHash: orderRef, paymentToken: o.paymentToken, totalPrice }, this.deps.config);\n return signer.execute(calls);\n }\n\n async cancelOrder(signer: StarknetVenueSigner, orderRef: OrderRef): Promise<AdapterTxResult> {\n const o = await this.deps.resolveOrder(orderRef);\n const typedData =\n o.standard === \"ERC1155\"\n ? buildCancel1155TypedData(orderRef, signer.address, this.deps.config)\n : buildCancelTypedData(orderRef, signer.address, this.deps.config);\n const signature = await signer.signTypedData(typedData);\n const calls =\n o.standard === \"ERC1155\"\n ? buildCancel1155Calls({ orderHash: orderRef, offerer: signer.address, signature }, this.deps.config)\n : buildCancelCalls({ orderHash: orderRef, offerer: signer.address, signature }, this.deps.config);\n return signer.execute(calls);\n }\n\n async registerOrder(\n signer: StarknetVenueSigner,\n p: RegisterOrderParams,\n ): Promise<AdapterTxResult & { orderRef: OrderRef }> {\n const standard = await this.deps.resolveStandard(p.asset.contract);\n const paymentTokenAddress = resolveToken(p.paymentToken).address;\n const royaltyMaxBps = String(p.royaltyMaxBps);\n const startTime = Math.floor(Date.now() / 1000) + START_TIME_BUFFER_SECS;\n const endTime = p.endTime && p.endTime > 0 ? p.endTime : startTime + NO_EXPIRY_SECONDS;\n const quantity = p.quantity ?? \"1\";\n const marketplace =\n standard === \"ERC1155\" ? this.deps.config.marketplace1155Contract : this.deps.config.marketplaceContract;\n const counter = String(await this.readCounter(marketplace, signer.address));\n\n let typedData;\n let buildCalls: (sig: string[]) => Call[];\n\n if (standard === \"ERC1155\") {\n // Listing carries the per-unit price; a bid's `amount` is per-unit too and\n // the ERC-20 approval covers per-unit × quantity.\n const built = (p.side === \"listing\" ? buildListing1155Order : buildOffer1155Order)(\n {\n offerer: signer.address,\n nftContract: p.asset.contract,\n tokenId: p.asset.tokenId,\n quantity,\n priceWeiPerUnit: p.amount,\n paymentTokenAddress,\n royaltyMaxBps,\n startTime,\n endTime,\n salt: p.salt,\n counter,\n },\n this.deps.config,\n );\n typedData = built.typedData;\n const approval =\n p.side === \"listing\"\n ? await this.approval1155ForListing(signer.address, p.asset.contract)\n : this.approvalForErc20(paymentTokenAddress, (BigInt(p.amount) * BigInt(quantity)).toString(), marketplace);\n buildCalls = (sig) =>\n buildRegister1155Calls({ orderParams: built.orderParams, signature: sig, ...approval }, this.deps.config);\n } else {\n const built = (p.side === \"listing\" ? buildListingOrder : buildOfferOrder)(\n {\n offerer: signer.address,\n nftContract: p.asset.contract,\n tokenId: p.asset.tokenId,\n priceWei: p.amount,\n paymentTokenAddress,\n royaltyMaxBps,\n startTime,\n endTime,\n salt: p.salt,\n counter,\n },\n this.deps.config,\n );\n typedData = built.typedData;\n const approval =\n p.side === \"listing\"\n ? await this.approval721ForListing(signer.address, p.asset.contract, p.asset.tokenId)\n : this.approvalForErc20(paymentTokenAddress, p.amount, marketplace);\n buildCalls = (sig) =>\n buildRegisterCalls({ orderParams: built.orderParams, signature: sig, ...approval }, this.deps.config);\n }\n\n const signature = await signer.signTypedData(typedData);\n const { txHash } = await signer.execute(buildCalls(signature));\n const orderRef = await this.orderRefFromReceipt(txHash);\n return { txHash, orderRef };\n }\n\n // ─── reads (all on deps.provider) ─────────────────────────────────────────\n\n private async readCounter(marketplace: string, address: string): Promise<bigint> {\n const res = await this.deps.provider.callContract({\n contractAddress: marketplace,\n entrypoint: \"get_counter\",\n calldata: [address],\n });\n return BigInt(res[0] ?? \"0\");\n }\n\n /** 721 listing approval: `get_approved(tokenId) == marketplace` ⇒ no approve. */\n private async approval721ForListing(\n _owner: string,\n nftContract: string,\n tokenId: string,\n ): Promise<{ approvalNeeded: boolean; approve: Call }> {\n const id = cairo.uint256(tokenId);\n const approve: Call = {\n contractAddress: nftContract,\n entrypoint: \"approve\",\n calldata: [this.deps.config.marketplaceContract, id.low.toString(), id.high.toString()],\n };\n let approved = false;\n try {\n const res = await this.deps.provider.callContract({\n contractAddress: nftContract,\n entrypoint: \"get_approved\",\n calldata: [id.low.toString(), id.high.toString()],\n });\n approved = BigInt(res[0]).toString() === BigInt(this.deps.config.marketplaceContract).toString();\n } catch {\n // Cannot check — approve to be safe.\n }\n return { approvalNeeded: !approved, approve };\n }\n\n /** 1155 listing approval: `is_approved_for_all(owner, marketplace)`. */\n private async approval1155ForListing(\n owner: string,\n nftContract: string,\n ): Promise<{ approvalNeeded: boolean; approve: Call }> {\n const approve: Call = {\n contractAddress: nftContract,\n entrypoint: \"set_approval_for_all\",\n calldata: [this.deps.config.marketplace1155Contract, \"1\"],\n };\n let approved = false;\n try {\n const res = await this.deps.provider.callContract({\n contractAddress: nftContract,\n entrypoint: \"is_approved_for_all\",\n calldata: [owner, this.deps.config.marketplace1155Contract],\n });\n approved = BigInt(res[0]) === 1n;\n } catch {\n // Cannot check — approve to be safe.\n }\n return { approvalNeeded: !approved, approve };\n }\n\n /** Offers always approve the ERC-20 spend (no read). */\n private approvalForErc20(\n token: string,\n amountWei: string,\n marketplace: string,\n ): { approvalNeeded: boolean; approve: Call } {\n const u = cairo.uint256(amountWei);\n return {\n approvalNeeded: true,\n approve: {\n contractAddress: token,\n entrypoint: \"approve\",\n calldata: [marketplace, u.low.toString(), u.high.toString()],\n },\n };\n }\n\n /** The canonical Starknet order id = the contract-emitted `OrderCreated`\n * hash (`keys[1]`), which is exactly what the indexer stores. */\n private async orderRefFromReceipt(txHash: string): Promise<OrderRef> {\n const receipt = (await this.deps.provider.getTransactionReceipt(txHash)) as {\n events?: { from_address?: string; keys?: string[] }[];\n };\n const selector = hash.getSelectorFromName(\"OrderCreated\");\n for (const ev of receipt.events ?? []) {\n if (ev.keys?.[0] && BigInt(ev.keys[0]) === BigInt(selector)) {\n return num.toHex(ev.keys[1]);\n }\n }\n throw new Error(\"StarknetVenue.registerOrder: OrderCreated event not found in receipt\");\n }\n}\n","export const ADMIN_SCOPE = \"admin-api\";\n\n/** The wallet-signed authorization for a session key. */\nexport interface AdminGrant {\n wallet: string; // signer wallet address (the admin)\n chain: string; // \"STARKNET\"\n sessionPublicKey: string; // full uncompressed session pubkey hex (0x04…)\n sessionKeyHash: string; // felt: starknetKeccak(sessionPublicKey) — what the wallet signed\n scope: string; // ADMIN_SCOPE\n issuedAt: number; // unix seconds\n expiresAt: number; // unix seconds\n walletSig: string[]; // wallet's SNIP-12 signature over the grant\n}\n\nexport interface AdminSession {\n grant: AdminGrant;\n sessionPrivateKey: string; // stays client-side; never sent\n}\n\nexport interface AdminRequest {\n method: string; // upper-cased\n path: string; // backend path incl. query, e.g. \"/admin/tenants?x=1\"\n body: string; // raw request body or \"\"\n nonce: string; // \"0x\"-prefixed 128-bit hex, unique per request\n ts: number; // unix seconds\n}\n\n/** Compact session-key signature over adminRequestDigest. */\nexport type AdminRequestSig = string; // compact hex (r||s)\n","import { hash, num } from \"starknet\";\nimport type { AdminRequest } from \"./types.js\";\n\n/**\n * Canonical felt digest of a request — the SINGLE definition shared by signer\n * (portal/agent) and verifier (backend). Binds method+path+query+body+nonce+ts,\n * so a captured request cannot be retargeted or mutated without invalidating it.\n */\nexport function adminRequestDigest(req: AdminRequest): string {\n return hash.computePoseidonHashOnElements([\n hash.starknetKeccak(req.method.toUpperCase()),\n hash.starknetKeccak(req.path),\n hash.starknetKeccak(req.body ?? \"\"),\n num.toBigInt(req.nonce),\n BigInt(req.ts),\n ]);\n}\n","import { ec } from \"starknet\";\nimport { adminRequestDigest } from \"./digest.js\";\nimport type { AdminRequest, AdminRequestSig } from \"./types.js\";\n\n/** Sign a request with the session private key. */\nexport function signAdminRequest(sessionPrivateKey: string, req: AdminRequest): AdminRequestSig {\n const digest = adminRequestDigest(req);\n return ec.starkCurve.sign(digest, sessionPrivateKey).toCompactHex();\n}\n\n/** Verify a request signature against the full session public key. */\nexport function verifyAdminRequestSig(\n sessionPublicKey: string,\n req: AdminRequest,\n sig: AdminRequestSig,\n): boolean {\n try {\n return ec.starkCurve.verify(sig, adminRequestDigest(req), sessionPublicKey);\n } catch {\n return false;\n }\n}\n","import { ec, hash, num, encode } from \"starknet\";\nimport { ADMIN_SCOPE, type AdminGrant, type AdminSession } from \"./types.js\";\n\nexport interface AdminSessionTypedDataInput {\n sessionKeyHash: string;\n scope: string;\n issuedAt: number;\n expiresAt: number;\n chainId?: string;\n}\n\n/** The SNIP-12 typed data the wallet signs — rebuilt identically on the backend. */\nexport function buildAdminSessionTypedData(p: AdminSessionTypedDataInput) {\n return {\n types: {\n StarknetDomain: [\n { name: \"name\", type: \"shortstring\" },\n { name: \"version\", type: \"shortstring\" },\n { name: \"chainId\", type: \"shortstring\" },\n { name: \"revision\", type: \"shortstring\" },\n ],\n AdminSession: [\n { name: \"sessionKeyHash\", type: \"felt\" },\n { name: \"scope\", type: \"shortstring\" },\n { name: \"issuedAt\", type: \"felt\" },\n { name: \"expiresAt\", type: \"felt\" },\n ],\n },\n primaryType: \"AdminSession\",\n domain: { name: \"Medialane Admin\", version: \"1\", chainId: p.chainId ?? \"SN_MAIN\", revision: \"1\" },\n message: {\n sessionKeyHash: p.sessionKeyHash,\n scope: p.scope,\n issuedAt: String(p.issuedAt),\n expiresAt: String(p.expiresAt),\n },\n } as const;\n}\n\n/** felt commitment to a full session public key (fits in the signed message). */\nexport function sessionKeyHashOf(sessionPublicKey: string): string {\n return num.toHex(hash.starknetKeccak(sessionPublicKey));\n}\n\nexport interface CreateGrantOpts {\n wallet: string;\n chain?: string; // default \"STARKNET\"\n chainId?: string; // default \"SN_MAIN\"\n ttlSeconds?: number; // default 7200 (2h)\n now?: () => number; // injectable for tests\n}\n\n/**\n * Generate an ephemeral session keypair and have `signTypedData` (the connected\n * wallet's signMessage) sign the grant. The private key never leaves the caller.\n */\nexport async function createAdminSessionGrant(\n signTypedData: (data: ReturnType<typeof buildAdminSessionTypedData>) => Promise<string[]>,\n opts: CreateGrantOpts,\n): Promise<AdminSession> {\n const priv = ec.starkCurve.utils.randomPrivateKey();\n const sessionPrivateKey = \"0x\" + encode.buf2hex(priv);\n const sessionPublicKey = \"0x\" + encode.buf2hex(ec.starkCurve.getPublicKey(sessionPrivateKey, false));\n const sessionKeyHash = sessionKeyHashOf(sessionPublicKey);\n\n const nowSec = Math.floor((opts.now?.() ?? Date.now()) / 1000);\n const issuedAt = nowSec;\n const expiresAt = nowSec + (opts.ttlSeconds ?? 7200);\n\n const data = buildAdminSessionTypedData({ sessionKeyHash, scope: ADMIN_SCOPE, issuedAt, expiresAt, chainId: opts.chainId });\n const walletSig = await signTypedData(data);\n\n const grant: AdminGrant = {\n wallet: opts.wallet,\n chain: opts.chain ?? \"STARKNET\",\n sessionPublicKey,\n sessionKeyHash,\n scope: ADMIN_SCOPE,\n issuedAt,\n expiresAt,\n walletSig,\n };\n return { grant, sessionPrivateKey };\n}\n","import type { AdminGrant, AdminRequestSig, AdminSession } from \"./types.js\";\nimport { signAdminRequest } from \"./request.js\";\n\nexport const ADMIN_HEADERS = {\n grant: \"x-ml-admin-grant\",\n sig: \"x-ml-admin-sig\",\n nonce: \"x-ml-admin-nonce\",\n ts: \"x-ml-admin-ts\",\n} as const;\n\nfunction b64urlEncode(s: string): string {\n // browser + node/bun safe\n const bytes = new TextEncoder().encode(s);\n let bin = \"\"; for (const b of bytes) bin += String.fromCharCode(b);\n return btoa(bin).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=+$/, \"\");\n}\nfunction b64urlDecode(s: string): string {\n const pad = s.length % 4 ? \"=\".repeat(4 - (s.length % 4)) : \"\";\n const bin = atob(s.replace(/-/g, \"+\").replace(/_/g, \"/\") + pad);\n const bytes = Uint8Array.from(bin, (c) => c.charCodeAt(0));\n return new TextDecoder().decode(bytes);\n}\n\nexport function randomNonce(): string {\n const b = new Uint8Array(16); crypto.getRandomValues(b);\n let hex = \"\"; for (const x of b) hex += x.toString(16).padStart(2, \"0\");\n return \"0x\" + hex;\n}\n\n/** Build the four request headers from a session + (method, path, body). */\nexport function encodeAdminHeaders(\n session: AdminSession,\n reqInit: { method: string; path: string; body?: string; now?: () => number },\n): Record<string, string> {\n const nonce = randomNonce();\n const ts = Math.floor((reqInit.now?.() ?? Date.now()) / 1000);\n const req = { method: reqInit.method, path: reqInit.path, body: reqInit.body ?? \"\", nonce, ts };\n const sig: AdminRequestSig = signAdminRequest(session.sessionPrivateKey, req);\n return {\n [ADMIN_HEADERS.grant]: b64urlEncode(JSON.stringify(session.grant)),\n [ADMIN_HEADERS.sig]: sig,\n [ADMIN_HEADERS.nonce]: nonce,\n [ADMIN_HEADERS.ts]: String(ts),\n };\n}\n\nexport interface ParsedAdminHeaders {\n grant: AdminGrant;\n sig: string;\n nonce: string;\n ts: number;\n}\n\n/** Parse + shape-check the headers on the backend. Returns null if malformed. */\nexport function parseAdminHeaders(get: (name: string) => string | null | undefined): ParsedAdminHeaders | null {\n const rawGrant = get(ADMIN_HEADERS.grant);\n const sig = get(ADMIN_HEADERS.sig);\n const nonce = get(ADMIN_HEADERS.nonce);\n const tsRaw = get(ADMIN_HEADERS.ts);\n if (!rawGrant || !sig || !nonce || !tsRaw) return null;\n try {\n const grant = JSON.parse(b64urlDecode(rawGrant)) as AdminGrant;\n if (!grant.wallet || !grant.sessionPublicKey || !grant.sessionKeyHash ||\n !Array.isArray(grant.walletSig) || typeof grant.expiresAt !== \"number\") return null;\n const ts = Number(tsRaw);\n if (!Number.isFinite(ts)) return null;\n return { grant, sig, nonce, ts };\n } catch {\n return null;\n }\n}\n","import type { TypedData } from \"starknet\";\nimport type { RequestSiwsTokenArgs } from \"./types.js\";\n\nconst STORAGE_PREFIX = \"ml_siws_\";\n\nfunction decodeBase64url(str: string): string {\n const base64 = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padding = \"=\".repeat((4 - (base64.length % 4)) % 4);\n return atob(base64 + padding);\n}\n\nfunction readTokenExpiry(token: string): number | null {\n try {\n if (!token.startsWith(\"siws_\")) return null;\n const inner = token.slice(5);\n const dot = inner.lastIndexOf(\".\");\n if (dot === -1) return null;\n const data = JSON.parse(decodeBase64url(inner.slice(0, dot))) as { exp?: number };\n return typeof data.exp === \"number\" ? data.exp : null;\n } catch {\n return null;\n }\n}\n\nexport function getSiwsStorageKey(address: string): string {\n return `${STORAGE_PREFIX}${address.toLowerCase()}`;\n}\n\nexport function isSiwsTokenValid(token: string | null | undefined): token is string {\n if (!token?.startsWith(\"siws_\")) return false;\n const expiry = readTokenExpiry(token);\n return Boolean(expiry && expiry > Math.floor(Date.now() / 1000));\n}\n\n/** Browser-only (returns null server-side, same as a cache miss). */\nexport function getStoredSiwsToken(address: string): string | null {\n if (typeof window === \"undefined\") return null;\n const key = getSiwsStorageKey(address);\n const token = localStorage.getItem(key);\n if (isSiwsTokenValid(token)) return token;\n localStorage.removeItem(key);\n return null;\n}\n\n/** Browser-only (no-op server-side). */\nexport function storeSiwsToken(address: string, token: string): void {\n if (typeof window === \"undefined\") return;\n localStorage.setItem(getSiwsStorageKey(address), token);\n}\n\nexport function normalizeSiwsSignature(signature: unknown): string[] {\n if (Array.isArray(signature)) {\n return signature.map(String);\n }\n\n if (signature && typeof signature === \"object\") {\n const { r, s } = signature as { r?: unknown; s?: unknown };\n if (r !== undefined && s !== undefined) {\n return [String(r), String(s)];\n }\n }\n\n return [String(signature)];\n}\n\n/**\n * Request a nonce, sign it with `signer`, verify with the backend, and cache\n * the resulting token in localStorage (expiry-aware). Single source for the\n * SIWS client protocol — medialane-starknet and medialane-io both delegate\n * to this instead of keeping their own copies (see medialane-core/docs/specs/\n * 2026-06-30-remove-clerk-from-backend-design.md §IX).\n */\nexport async function requestSiwsToken({\n backendUrl,\n walletAddress,\n signer,\n}: RequestSiwsTokenArgs): Promise<string> {\n const base = backendUrl.replace(/\\/$/, \"\");\n\n const nonceRes = await fetch(`${base}/v1/auth/siws/nonce`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ walletAddress }),\n });\n\n if (!nonceRes.ok) {\n throw new Error(\"Failed to prepare wallet sign-in\");\n }\n\n const { nonce, typedData } = await nonceRes.json() as {\n nonce: string;\n typedData: TypedData;\n };\n\n const signature = normalizeSiwsSignature(await signer.signMessage(typedData));\n const verifyRes = await fetch(`${base}/v1/auth/siws/verify`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ walletAddress, nonce, signature }),\n });\n\n if (!verifyRes.ok) {\n // Backend distinguishes counterfactual-wallet errors with code\n // \"account_not_deployed\" + a user-facing `message` field so callers can\n // surface \"Check if your wallet is deployed on Starknet.\" instead of the\n // generic \"sign-in failed\" toast.\n let backendMessage: string | undefined;\n try {\n const body = await verifyRes.json() as { error?: string; message?: string };\n if (body?.message) backendMessage = body.message;\n } catch {\n // body wasn't JSON — fall through to generic message\n }\n throw new Error(backendMessage ?? \"Wallet sign-in failed\");\n }\n\n const { token } = await verifyRes.json() as { token?: string };\n if (!isSiwsTokenValid(token)) {\n throw new Error(\"Wallet sign-in returned an invalid token\");\n }\n\n storeSiwsToken(walletAddress, token);\n return token;\n}\n","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","import { extract, expand } from \"@noble/hashes/hkdf.js\";\nimport { sha256 } from \"@noble/hashes/sha2.js\";\nimport { ec, num } from \"starknet\";\n\nconst STARK_ORDER = 3618502788666131213697322783095070105526743751716087489154079457884512865583n;\n\n/**\n * Derive a MediaWallet owner key pair from a business-held secret and a\n * per-recipient identifier (typically their email) — deterministic, so the\n * business never has to store a per-recipient key: recompute it from the one\n * secret it already holds whenever it's needed (deploy time, handoff time),\n * then discard it. HKDF-SHA256(secret, recipientId), reduced mod the Stark\n * curve order to get a valid scalar (never zero).\n */\nexport function deriveOwnerKeyPair(\n secret: Uint8Array,\n recipientId: string,\n): { privateKey: string; publicKey: string } {\n const prk = extract(sha256, secret);\n const okm = expand(sha256, prk, new TextEncoder().encode(recipientId), 32);\n let scalar = BigInt(\"0x\" + Buffer.from(okm).toString(\"hex\")) % STARK_ORDER;\n if (scalar === 0n) scalar = 1n;\n const privateKey = num.toHex(scalar);\n const publicKey = ec.starkCurve.getStarkKey(privateKey);\n return { privateKey, publicKey };\n}\n","import { hash, num, type BigNumberish } from \"starknet\";\nimport { STARKNET_MEDIAWALLET_CLASS_HASH } from \"../../constants.js\";\n\n/**\n * Account constructor calldata for a Stark-curve owner and no guardian:\n * `serialize((Signer::Starknet(owner_pubkey), Option::None))` = `[0, owner_pubkey, 1]`.\n * Verified against `medialane-contracts/contracts/MediaWallet`'s factory\n * `build_constructor_calldata`.\n */\nexport function ownerConstructorCalldata(ownerPubkey: BigNumberish): string[] {\n return [\"0x0\", num.toHex(ownerPubkey), \"0x1\"];\n}\n\n/**\n * Counterfactual MediaWallet account address for `(ownerPubkey, salt)` —\n * standard Starknet derivation with `deploy_from_zero` (deployer address = 0).\n * With `salt = 0` the address is a pure function of the owner key, so it can\n * be computed before anything is deployed on-chain.\n */\nexport function computeAccountAddress(ownerPubkey: BigNumberish, salt: BigNumberish = 0): string {\n return hash.calculateContractAddressFromHash(\n num.toHex(salt),\n STARKNET_MEDIAWALLET_CLASS_HASH,\n ownerConstructorCalldata(ownerPubkey),\n 0,\n );\n}\n","import { hash, num, type BigNumberish, type Call } from \"starknet\";\n\nconst STARKNET_SIGNER_TYPE = \"0x537461726b6e6574205369676e6572\"; // \"Starknet Signer\" shortstring\n\n/**\n * GUID of a Stark-curve owner, matching MediaWallet's\n * `SignerTrait::into_guid` for `Signer::Starknet` — `poseidon_2(\"Starknet\n * Signer\", pubkey)`. `change_owners` removes owners by GUID, not by raw\n * pubkey.\n */\nexport function computeOwnerGuid(ownerPubkey: BigNumberish): string {\n return hash.computePoseidonHash(STARKNET_SIGNER_TYPE, num.toHex(ownerPubkey));\n}\n\n/**\n * The `change_owners` call that hands a provisioned account off to its real\n * owner: removes the business-derived interim owner (by GUID) and adds the\n * recipient's own new owner key (by pubkey) — one call, immediate, no\n * timelock. Must be signed by a *current* owner (the interim key) to\n * succeed on-chain.\n */\nexport function buildChangeOwnersCall(\n accountAddress: string,\n removeOwnerPubkey: BigNumberish,\n addOwnerPubkey: BigNumberish,\n): Call {\n const guidToRemove = computeOwnerGuid(removeOwnerPubkey);\n return {\n contractAddress: accountAddress,\n entrypoint: \"change_owners\",\n calldata: [\"0x1\", guidToRemove, \"0x1\", \"0x0\", num.toHex(addOwnerPubkey)],\n };\n}\n","import { num, type BigNumberish, type DeployAccountContractPayload } from \"starknet\";\nimport { STARKNET_MEDIAWALLET_CLASS_HASH } from \"../../constants.js\";\nimport { ownerConstructorCalldata, computeAccountAddress } from \"./account.js\";\n\n/**\n * The exact payload starknet.js's `Account.deployAccount()` expects — the\n * caller constructs a signing `Account` from the derived private key\n * (`deriveOwnerKeyPair`) against a **pre-funded** counterfactual address\n * (`computeAccountAddress`) and calls\n * `account.deployAccount(buildDeployAccountParams(ownerPubkey))` directly.\n * This function only builds the payload — it never signs or submits\n * anything itself.\n */\nexport function buildDeployAccountParams(\n ownerPubkey: BigNumberish,\n salt: BigNumberish = 0,\n): DeployAccountContractPayload {\n return {\n classHash: STARKNET_MEDIAWALLET_CLASS_HASH,\n constructorCalldata: ownerConstructorCalldata(ownerPubkey),\n addressSalt: num.toHex(salt),\n contractAddress: computeAccountAddress(ownerPubkey, salt),\n };\n}\n"]}