@medialane/sdk 0.151.0 → 0.153.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -510,6 +510,7 @@ without reaching a reader.
510
510
  | `rpcUrl` | `string` | the chain's registry `rpcUrl` | JSON-RPC URL override |
511
511
  | `backendUrl` | `string` | (none) | Medialane API base URL (required for `.api.*`) |
512
512
  | `apiKey` | `string` | (none) | API key from [Medialane Portal](https://portal.medialane.io) |
513
+ | `appSource` | `string` | (none) | The registered name of your app (upper case, for example `MEDIALANE_IO`). Sent as `x-app-source` on every request, so sign-ups and sign-ins are recorded under your app |
513
514
  | `marketplace721Contract` | `string` | Mainnet default | ERC-721 marketplace protocol override |
514
515
  | `marketplaceContract` | `string` | Mainnet default | Legacy alias for `marketplace721Contract` |
515
516
  | `marketplace1155Contract` | `string` | Mainnet default | ERC-1155 marketplace protocol override |
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- import { C as Chain } from './types-CuSlc_YE.cjs';
2
+ import { C as Chain } from './types-CO6YYHVA.cjs';
3
3
  import { Call, TypedData } from 'starknet';
4
4
 
5
5
  interface RetryOptions {
@@ -42,6 +42,7 @@ declare const MedialaneConfigSchema: z.ZodObject<{
42
42
  rpcUrl: z.ZodOptional<z.ZodString>;
43
43
  backendUrl: z.ZodOptional<z.ZodString>;
44
44
  apiKey: z.ZodOptional<z.ZodString>;
45
+ appSource: z.ZodOptional<z.ZodString>;
45
46
  marketplace721Contract: z.ZodOptional<z.ZodString>;
46
47
  marketplaceContract: z.ZodOptional<z.ZodString>;
47
48
  marketplace1155Contract: z.ZodOptional<z.ZodString>;
@@ -85,6 +86,7 @@ declare const MedialaneConfigSchema: z.ZodObject<{
85
86
  rpcUrl?: string | undefined;
86
87
  backendUrl?: string | undefined;
87
88
  apiKey?: string | undefined;
89
+ appSource?: string | undefined;
88
90
  marketplace721Contract?: string | undefined;
89
91
  marketplaceContract?: string | undefined;
90
92
  marketplace1155Contract?: string | undefined;
@@ -108,6 +110,7 @@ declare const MedialaneConfigSchema: z.ZodObject<{
108
110
  chain?: "STARKNET" | "ETHEREUM" | "SOLANA" | "BASE" | "STELLAR" | "BITCOIN" | undefined;
109
111
  backendUrl?: string | undefined;
110
112
  apiKey?: string | undefined;
113
+ appSource?: string | undefined;
111
114
  marketplace721Contract?: string | undefined;
112
115
  marketplaceContract?: string | undefined;
113
116
  marketplace1155Contract?: string | undefined;
@@ -133,6 +136,7 @@ interface ResolvedConfig {
133
136
  rpcUrl: string;
134
137
  backendUrl: string | undefined;
135
138
  apiKey: string | undefined;
139
+ appSource: string | undefined;
136
140
  marketplace721Contract: string;
137
141
  marketplaceContract: string;
138
142
  marketplace1155Contract: string;
@@ -1267,7 +1271,7 @@ declare class ApiClient {
1267
1271
  private readonly chain;
1268
1272
  private readonly baseHeaders;
1269
1273
  private readonly retryOptions;
1270
- constructor(baseUrl: string, apiKey?: string, retryOptions?: RetryOptions, chain?: Chain);
1274
+ constructor(baseUrl: string, apiKey?: string, retryOptions?: RetryOptions, chain?: Chain, appSource?: string);
1271
1275
  private addr;
1272
1276
  private request;
1273
1277
  private get;
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- import { C as Chain } from './types-CuSlc_YE.js';
2
+ import { C as Chain } from './types-CO6YYHVA.js';
3
3
  import { Call, TypedData } from 'starknet';
4
4
 
5
5
  interface RetryOptions {
@@ -42,6 +42,7 @@ declare const MedialaneConfigSchema: z.ZodObject<{
42
42
  rpcUrl: z.ZodOptional<z.ZodString>;
43
43
  backendUrl: z.ZodOptional<z.ZodString>;
44
44
  apiKey: z.ZodOptional<z.ZodString>;
45
+ appSource: z.ZodOptional<z.ZodString>;
45
46
  marketplace721Contract: z.ZodOptional<z.ZodString>;
46
47
  marketplaceContract: z.ZodOptional<z.ZodString>;
47
48
  marketplace1155Contract: z.ZodOptional<z.ZodString>;
@@ -85,6 +86,7 @@ declare const MedialaneConfigSchema: z.ZodObject<{
85
86
  rpcUrl?: string | undefined;
86
87
  backendUrl?: string | undefined;
87
88
  apiKey?: string | undefined;
89
+ appSource?: string | undefined;
88
90
  marketplace721Contract?: string | undefined;
89
91
  marketplaceContract?: string | undefined;
90
92
  marketplace1155Contract?: string | undefined;
@@ -108,6 +110,7 @@ declare const MedialaneConfigSchema: z.ZodObject<{
108
110
  chain?: "STARKNET" | "ETHEREUM" | "SOLANA" | "BASE" | "STELLAR" | "BITCOIN" | undefined;
109
111
  backendUrl?: string | undefined;
110
112
  apiKey?: string | undefined;
113
+ appSource?: string | undefined;
111
114
  marketplace721Contract?: string | undefined;
112
115
  marketplaceContract?: string | undefined;
113
116
  marketplace1155Contract?: string | undefined;
@@ -133,6 +136,7 @@ interface ResolvedConfig {
133
136
  rpcUrl: string;
134
137
  backendUrl: string | undefined;
135
138
  apiKey: string | undefined;
139
+ appSource: string | undefined;
136
140
  marketplace721Contract: string;
137
141
  marketplaceContract: string;
138
142
  marketplace1155Contract: string;
@@ -1267,7 +1271,7 @@ declare class ApiClient {
1267
1271
  private readonly chain;
1268
1272
  private readonly baseHeaders;
1269
1273
  private readonly retryOptions;
1270
- constructor(baseUrl: string, apiKey?: string, retryOptions?: RetryOptions, chain?: Chain);
1274
+ constructor(baseUrl: string, apiKey?: string, retryOptions?: RetryOptions, chain?: Chain, appSource?: string);
1271
1275
  private addr;
1272
1276
  private request;
1273
1277
  private get;
@@ -83,9 +83,7 @@ var COORDINATES = {
83
83
  ipSponsorshipClassHash: "0x0626daac2ed7e2bf630ef5b10104b3202db1559216c0c1a504c0e99be2fbfec3",
84
84
  ipSponsorshipStartBlock: 11896456,
85
85
  mediaWalletClassHash: "0x014b210c7d47392691144bafecdca3c6c7791cc295ea305988da0a724c05ac31",
86
- genesisMintLaunch: "0x06ed61abba98a44d45bed2c4b1a456df15053c3321cfd6e007afb33b7226c9f0",
87
- genesisMintBR: "0x01f8b92e3b9e963b8eacb075207e2cc89d4614ff2ac6c2702c7ae10ad19a9db8",
88
- genesisMintGlobal: "0x06ad4d55ed2d12ad5d6d55587d800874ef807b051bfefe13497e60ec5b019369"
86
+ genesisMint: "0x06ed61abba98a44d45bed2c4b1a456df15053c3321cfd6e007afb33b7226c9f0"
89
87
  }
90
88
  };
91
89
  function getCoordinates(chain) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/evm/typedData.ts","../../src/chains.ts","../../src/evm/abis.ts","../../src/evm/venue.ts","../../src/evm/issuance.ts"],"names":["hashTypedData","parseAbi","maybeCoords","parseEventLogs"],"mappings":"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","file":"index.cjs","sourcesContent":["import { hashTypedData, type TypedDataDomain } from \"viem\";\n\nexport const EVM_ORDER_TYPES = {\n OfferItem: [\n { name: \"itemType\", type: \"uint8\" },\n { name: \"token\", type: \"address\" },\n { name: \"identifier\", type: \"uint256\" },\n { name: \"amount\", type: \"uint256\" },\n ],\n ConsiderationItem: [\n { name: \"itemType\", type: \"uint8\" },\n { name: \"token\", type: \"address\" },\n { name: \"identifier\", type: \"uint256\" },\n { name: \"amount\", type: \"uint256\" },\n { name: \"recipient\", type: \"address\" },\n ],\n OrderParameters: [\n { name: \"offerer\", type: \"address\" },\n { name: \"offer\", type: \"OfferItem\" },\n { name: \"consideration\", type: \"ConsiderationItem\" },\n { name: \"royaltyMaxBps\", type: \"uint256\" },\n { name: \"startTime\", type: \"uint256\" },\n { name: \"endTime\", type: \"uint256\" },\n { name: \"salt\", type: \"uint256\" },\n { name: \"counter\", type: \"uint256\" },\n ],\n} as const;\n\nexport type EvmItemType = 0 | 1 | 2;\n\nexport interface EvmOfferItem {\n itemType: EvmItemType;\n token: `0x${string}`;\n identifier: bigint;\n amount: bigint;\n}\n\nexport interface EvmConsiderationItem extends EvmOfferItem {\n recipient: `0x${string}`;\n}\n\nexport interface EvmOrderParameters {\n offerer: `0x${string}`;\n offer: EvmOfferItem;\n consideration: EvmConsiderationItem;\n royaltyMaxBps: bigint;\n startTime: bigint;\n endTime: bigint;\n salt: bigint;\n counter: bigint;\n}\n\nexport function evmOrderDomain(chainId: number, verifyingContract: `0x${string}`): TypedDataDomain {\n return { name: \"Medialane\", version: \"1\", chainId, verifyingContract };\n}\n\nexport function evmOrderDigest(\n chainId: number,\n verifyingContract: `0x${string}`,\n parameters: EvmOrderParameters,\n): `0x${string}` {\n return hashTypedData({\n domain: evmOrderDomain(chainId, verifyingContract),\n types: EVM_ORDER_TYPES,\n primaryType: \"OrderParameters\",\n message: parameters,\n });\n}\n","\n\nexport const CHAINS = [\"STARKNET\", \"ETHEREUM\", \"SOLANA\", \"BASE\", \"STELLAR\", \"BITCOIN\"] as const;\nexport type Chain = (typeof CHAINS)[number];\n\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 dataTokenization721?: `0x${string}`;\n dataTokenization721StartBlock?: 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 genesisMintLaunch?: `0x${string}`;\n genesisMintBR?: `0x${string}`;\n genesisMintGlobal?: `0x${string}`;\n}\n\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\nexport interface SolanaCoordinates {\n rpcUrl: string;\n mipCollectionsProgram?: string;\n marketplaceProgram?: string;\n startSlot?: number;\n}\n\nexport interface StellarCoordinates {\n rpcUrl: string;\n mipRegistry?: string;\n marketplace?: string;\n collectionWasmHash?: string;\n startLedger?: number;\n}\n\nexport interface CoordinatesByChain {\n STARKNET?: StarknetCoordinates;\n ETHEREUM?: EvmCoordinates;\n BASE?: EvmCoordinates;\n SOLANA?: SolanaCoordinates;\n STELLAR?: StellarCoordinates;\n BITCOIN?: never;\n}\n\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 dataTokenization721: \"0x07421b4442f7f2052c65408fb3561484154cf8175a0bbb41e3cd38d9087af6d2\",\n dataTokenization721StartBlock: 14670294,\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\n ipSponsorship: \"0x03729ebe0fedf29ec97fca34db09174772af7f870af26a26e024a61040143e5c\",\n ipSponsorshipClassHash: \"0x0626daac2ed7e2bf630ef5b10104b3202db1559216c0c1a504c0e99be2fbfec3\",\n ipSponsorshipStartBlock: 11896456,\n mediaWalletClassHash: \"0x014b210c7d47392691144bafecdca3c6c7791cc295ea305988da0a724c05ac31\",\n genesisMintLaunch: \"0x06ed61abba98a44d45bed2c4b1a456df15053c3321cfd6e007afb33b7226c9f0\",\n genesisMintBR: \"0x01f8b92e3b9e963b8eacb075207e2cc89d4614ff2ac6c2702c7ae10ad19a9db8\",\n genesisMintGlobal: \"0x06ad4d55ed2d12ad5d6d55587d800874ef807b051bfefe13497e60ec5b019369\",\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\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 { parseAbi } from \"viem\";\n\nexport const EvmVenueABI = parseAbi([\n \"struct OfferItem { uint8 itemType; address token; uint256 identifier; uint256 amount; }\",\n \"struct ConsiderationItem { uint8 itemType; address token; uint256 identifier; uint256 amount; address recipient; }\",\n \"struct OrderParameters { address offerer; OfferItem offer; ConsiderationItem consideration; uint256 royaltyMaxBps; uint256 startTime; uint256 endTime; uint256 salt; uint256 counter; }\",\n \"function registerOrder(OrderParameters parameters, bytes signature)\",\n \"function fulfillOrder(bytes32 orderHash) payable\",\n \"function cancelOrder(bytes32 orderHash)\",\n \"function incrementCounter()\",\n \"function getOrderHash(OrderParameters parameters) view returns (bytes32)\",\n \"function getCounter(address offerer) view returns (uint256)\",\n \"function version() pure returns (string)\",\n \"event OrderCreated(bytes32 indexed orderHash, address indexed offerer)\",\n \"event OrderFulfilled(bytes32 indexed orderHash, address indexed offerer, address indexed fulfiller, uint256 saleAmount, address royaltyReceiver, uint256 royaltyAmount)\",\n \"event OrderCancelled(bytes32 indexed orderHash, address indexed offerer)\",\n \"event CounterIncremented(address indexed offerer, uint256 newCounter)\",\n]);\n\nexport const EvmVenue1155ABI = parseAbi([\n \"function fulfillOrder(bytes32 orderHash, uint256 quantity) payable\",\n \"event OrderFulfilled(bytes32 indexed orderHash, address indexed offerer, address indexed fulfiller, uint256 quantity, uint256 remainingAmount, uint256 saleAmount, address royaltyReceiver, uint256 royaltyAmount)\",\n]);\n\nexport const EvmMipRegistryABI = parseAbi([\n \"function createCollection(string name, string symbol, string baseUri, uint96 royaltyBps) returns (uint256 collectionId, address collection)\",\n \"function getCollection(uint256 collectionId) view returns (address collection, address creator)\",\n \"function collectionCount() view returns (uint256)\",\n \"event CollectionCreated(uint256 indexed collectionId, address indexed collection, address indexed creator, string name, string symbol, string baseUri)\",\n]);\n\nexport const EvmMipCollectionABI = parseAbi([\n \"function mint(address to, string metadataUri) returns (uint256 tokenId)\",\n \"function batchMint(address[] to, string[] metadataUris) returns (uint256[] tokenIds)\",\n \"function tokenURI(uint256 tokenId) view returns (string)\",\n \"function ownerOf(uint256 tokenId) view returns (address)\",\n \"function balanceOf(address owner) view returns (uint256)\",\n \"function owner() view returns (address)\",\n \"event TokenMinted(uint256 indexed tokenId, address indexed owner, string metadataUri)\",\n \"event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)\",\n]);\n","import type { PublicClient, WalletClient } from \"viem\";\nimport type { Chain } from \"../chains.js\";\nimport { getCoordinates, type EvmCoordinates } from \"../chains.js\";\nimport type {\n AdapterTxResult,\n OrderRef,\n RegisterOrderParams,\n VenueAdapter,\n} from \"../adapters/types.js\";\nimport { EvmVenueABI, EvmVenue1155ABI } from \"./abis.js\";\nimport {\n EVM_ORDER_TYPES,\n evmOrderDigest,\n evmOrderDomain,\n type EvmOrderParameters,\n} from \"./typedData.js\";\n\nexport type EvmChain = \"ETHEREUM\" | \"BASE\";\n\nexport interface EvmVenueOptions {\n chain: EvmChain;\n chainId: number;\n publicClient: PublicClient;\n\n variant: \"721\" | \"1155\";\n\n contract?: `0x${string}`;\n}\n\nexport class EvmVenue implements VenueAdapter<WalletClient> {\n readonly chain: Chain;\n private readonly chainId: number;\n private readonly contract: `0x${string}`;\n private readonly publicClient: PublicClient;\n private readonly variant: \"721\" | \"1155\";\n\n constructor(opts: EvmVenueOptions) {\n this.chain = opts.chain;\n this.chainId = opts.chainId;\n this.publicClient = opts.publicClient;\n this.variant = opts.variant;\n const coords = maybeCoords(opts.chain);\n const contract =\n opts.contract ?? (opts.variant === \"721\" ? coords?.marketplace721 : coords?.marketplace1155);\n if (!contract) throw new Error(`No ${opts.variant} venue configured for ${opts.chain}`);\n this.contract = contract;\n }\n\n async registerOrder(\n signer: WalletClient,\n params: RegisterOrderParams,\n ): Promise<AdapterTxResult & { orderRef: OrderRef }> {\n const account = signer.account;\n if (!account) throw new Error(\"WalletClient has no account\");\n const counter = await this.getCounter(account.address);\n const nft = {\n itemType: 2 as const,\n token: params.asset.contract as `0x${string}`,\n identifier: BigInt(params.asset.tokenId),\n amount: 1n,\n };\n const payment = {\n itemType: (params.paymentToken === NATIVE_SENTINEL ? 0 : 1) as 0 | 1,\n token: (params.paymentToken === NATIVE_SENTINEL\n ? \"0x0000000000000000000000000000000000000000\"\n : params.paymentToken) as `0x${string}`,\n identifier: 0n,\n amount: BigInt(params.amount),\n };\n const order: EvmOrderParameters =\n params.side === \"listing\"\n ? {\n offerer: account.address,\n offer: nft,\n consideration: { ...payment, recipient: account.address },\n ...commonFields(params),\n }\n : {\n offerer: account.address,\n offer: payment,\n consideration: { ...nft, recipient: account.address },\n ...commonFields(params),\n };\n order.counter = counter;\n\n const signature = await signer.signTypedData({\n account,\n domain: evmOrderDomain(this.chainId, this.contract),\n types: EVM_ORDER_TYPES,\n primaryType: \"OrderParameters\",\n message: order,\n });\n const txHash = await signer.writeContract({\n account,\n chain: signer.chain,\n address: this.contract,\n abi: EvmVenueABI,\n functionName: \"registerOrder\",\n args: [order, signature],\n });\n return { txHash, orderRef: evmOrderDigest(this.chainId, this.contract, order) };\n }\n\n async fulfillOrder(\n signer: WalletClient,\n orderRef: OrderRef,\n opts?: { quantity?: string; value?: string },\n ): Promise<AdapterTxResult> {\n const account = signer.account;\n if (!account) throw new Error(\"WalletClient has no account\");\n const value = opts?.value ? BigInt(opts.value) : undefined;\n const txHash =\n this.variant === \"1155\"\n ? await signer.writeContract({\n account,\n chain: signer.chain,\n address: this.contract,\n abi: EvmVenue1155ABI,\n functionName: \"fulfillOrder\",\n args: [orderRef as `0x${string}`, BigInt(opts?.quantity ?? \"1\")],\n value,\n })\n : await signer.writeContract({\n account,\n chain: signer.chain,\n address: this.contract,\n abi: EvmVenueABI,\n functionName: \"fulfillOrder\",\n args: [orderRef as `0x${string}`],\n value,\n });\n return { txHash };\n }\n\n async cancelOrder(signer: WalletClient, orderRef: OrderRef): Promise<AdapterTxResult> {\n const account = signer.account;\n if (!account) throw new Error(\"WalletClient has no account\");\n const txHash = await signer.writeContract({\n account,\n chain: signer.chain,\n address: this.contract,\n abi: EvmVenueABI,\n functionName: \"cancelOrder\",\n args: [orderRef as `0x${string}`],\n });\n return { txHash };\n }\n\n async incrementCounter(signer: WalletClient): Promise<AdapterTxResult> {\n const account = signer.account;\n if (!account) throw new Error(\"WalletClient has no account\");\n const txHash = await signer.writeContract({\n account,\n chain: signer.chain,\n address: this.contract,\n abi: EvmVenueABI,\n functionName: \"incrementCounter\",\n args: [],\n });\n return { txHash };\n }\n\n async getOrderDetails(orderRef: OrderRef): Promise<unknown> {\n return this.publicClient.readContract({\n address: this.contract,\n abi: [\n {\n type: \"function\",\n name: \"getOrderDetails\",\n stateMutability: \"view\",\n inputs: [{ name: \"orderHash\", type: \"bytes32\" }],\n outputs: [{ name: \"\", type: \"bytes\" }],\n },\n ] as const,\n functionName: \"getOrderDetails\",\n args: [orderRef as `0x${string}`],\n });\n }\n\n async getCounter(address: string): Promise<bigint> {\n return this.publicClient.readContract({\n address: this.contract,\n abi: EvmVenueABI,\n functionName: \"getCounter\",\n args: [address as `0x${string}`],\n });\n }\n}\n\nexport const NATIVE_SENTINEL = \"native\";\n\nfunction commonFields(params: RegisterOrderParams) {\n return {\n royaltyMaxBps: BigInt(params.royaltyMaxBps),\n startTime: BigInt(params.startTime),\n endTime: BigInt(params.endTime),\n salt: BigInt(params.salt),\n counter: 0n,\n };\n}\n\nfunction maybeCoords(chain: EvmChain): EvmCoordinates | undefined {\n try {\n return getCoordinates(chain);\n } catch {\n return undefined;\n }\n}\n","import type { PublicClient, WalletClient } from \"viem\";\nimport { parseEventLogs } from \"viem\";\nimport type { Chain } from \"../chains.js\";\nimport { getCoordinates, type EvmCoordinates } from \"../chains.js\";\nimport type { AdapterTxResult, CreateCollectionInput, IssuanceAdapter, MintInput } from \"../adapters/types.js\";\nimport { EvmMipCollectionABI, EvmMipRegistryABI } from \"./abis.js\";\nimport type { EvmChain } from \"./venue.js\";\n\nexport interface EvmIssuanceOptions {\n chain: EvmChain;\n publicClient: PublicClient;\n\n registry?: `0x${string}`;\n}\n\nexport class EvmIssuance implements IssuanceAdapter<WalletClient> {\n readonly chain: Chain;\n private readonly registry: `0x${string}`;\n private readonly publicClient: PublicClient;\n\n constructor(opts: EvmIssuanceOptions) {\n this.chain = opts.chain;\n this.publicClient = opts.publicClient;\n const registry = opts.registry ?? maybeCoords(opts.chain)?.mipRegistry;\n if (!registry) throw new Error(`No MIP registry configured for ${opts.chain}`);\n this.registry = registry;\n }\n\n async createCollection(\n signer: WalletClient,\n params: CreateCollectionInput,\n ): Promise<AdapterTxResult & { collection: string }> {\n const account = signer.account;\n if (!account) throw new Error(\"WalletClient has no account\");\n const txHash = await signer.writeContract({\n account,\n chain: signer.chain,\n address: this.registry,\n abi: EvmMipRegistryABI,\n functionName: \"createCollection\",\n args: [params.name, params.symbol, params.baseUri, BigInt(params.royaltyBps)],\n });\n const receipt = await this.publicClient.waitForTransactionReceipt({ hash: txHash });\n const [created] = parseEventLogs({\n abi: EvmMipRegistryABI,\n eventName: \"CollectionCreated\",\n logs: receipt.logs,\n });\n return { txHash, collection: created?.args.collection ?? \"\" };\n }\n\n async mint(signer: WalletClient, params: MintInput): Promise<AdapterTxResult & { tokenId: string }> {\n const account = signer.account;\n if (!account) throw new Error(\"WalletClient has no account\");\n const txHash = await signer.writeContract({\n account,\n chain: signer.chain,\n address: params.collection as `0x${string}`,\n abi: EvmMipCollectionABI,\n functionName: \"mint\",\n args: [params.recipient as `0x${string}`, params.tokenUri],\n });\n const receipt = await this.publicClient.waitForTransactionReceipt({ hash: txHash });\n const [minted] = parseEventLogs({\n abi: EvmMipCollectionABI,\n eventName: \"TokenMinted\",\n logs: receipt.logs,\n });\n return { txHash, tokenId: (minted?.args.tokenId ?? 0n).toString() };\n }\n\n async batchMint(\n signer: WalletClient,\n params: { collection: string; recipients: string[]; tokenUris: string[] },\n ): Promise<AdapterTxResult> {\n const account = signer.account;\n if (!account) throw new Error(\"WalletClient has no account\");\n const txHash = await signer.writeContract({\n account,\n chain: signer.chain,\n address: params.collection as `0x${string}`,\n abi: EvmMipCollectionABI,\n functionName: \"batchMint\",\n args: [params.recipients as `0x${string}`[], params.tokenUris],\n });\n return { txHash };\n }\n}\n\nfunction maybeCoords(chain: EvmChain): EvmCoordinates | undefined {\n try {\n return getCoordinates(chain);\n } catch {\n return undefined;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/evm/typedData.ts","../../src/chains.ts","../../src/evm/abis.ts","../../src/evm/venue.ts","../../src/evm/issuance.ts"],"names":["hashTypedData","parseAbi","maybeCoords","parseEventLogs"],"mappings":"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","file":"index.cjs","sourcesContent":["import { hashTypedData, type TypedDataDomain } from \"viem\";\n\nexport const EVM_ORDER_TYPES = {\n OfferItem: [\n { name: \"itemType\", type: \"uint8\" },\n { name: \"token\", type: \"address\" },\n { name: \"identifier\", type: \"uint256\" },\n { name: \"amount\", type: \"uint256\" },\n ],\n ConsiderationItem: [\n { name: \"itemType\", type: \"uint8\" },\n { name: \"token\", type: \"address\" },\n { name: \"identifier\", type: \"uint256\" },\n { name: \"amount\", type: \"uint256\" },\n { name: \"recipient\", type: \"address\" },\n ],\n OrderParameters: [\n { name: \"offerer\", type: \"address\" },\n { name: \"offer\", type: \"OfferItem\" },\n { name: \"consideration\", type: \"ConsiderationItem\" },\n { name: \"royaltyMaxBps\", type: \"uint256\" },\n { name: \"startTime\", type: \"uint256\" },\n { name: \"endTime\", type: \"uint256\" },\n { name: \"salt\", type: \"uint256\" },\n { name: \"counter\", type: \"uint256\" },\n ],\n} as const;\n\nexport type EvmItemType = 0 | 1 | 2;\n\nexport interface EvmOfferItem {\n itemType: EvmItemType;\n token: `0x${string}`;\n identifier: bigint;\n amount: bigint;\n}\n\nexport interface EvmConsiderationItem extends EvmOfferItem {\n recipient: `0x${string}`;\n}\n\nexport interface EvmOrderParameters {\n offerer: `0x${string}`;\n offer: EvmOfferItem;\n consideration: EvmConsiderationItem;\n royaltyMaxBps: bigint;\n startTime: bigint;\n endTime: bigint;\n salt: bigint;\n counter: bigint;\n}\n\nexport function evmOrderDomain(chainId: number, verifyingContract: `0x${string}`): TypedDataDomain {\n return { name: \"Medialane\", version: \"1\", chainId, verifyingContract };\n}\n\nexport function evmOrderDigest(\n chainId: number,\n verifyingContract: `0x${string}`,\n parameters: EvmOrderParameters,\n): `0x${string}` {\n return hashTypedData({\n domain: evmOrderDomain(chainId, verifyingContract),\n types: EVM_ORDER_TYPES,\n primaryType: \"OrderParameters\",\n message: parameters,\n });\n}\n","\n\nexport const CHAINS = [\"STARKNET\", \"ETHEREUM\", \"SOLANA\", \"BASE\", \"STELLAR\", \"BITCOIN\"] as const;\nexport type Chain = (typeof CHAINS)[number];\n\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 dataTokenization721?: `0x${string}`;\n dataTokenization721StartBlock?: 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 genesisMint?: `0x${string}`;\n}\n\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\nexport interface SolanaCoordinates {\n rpcUrl: string;\n mipCollectionsProgram?: string;\n marketplaceProgram?: string;\n startSlot?: number;\n}\n\nexport interface StellarCoordinates {\n rpcUrl: string;\n mipRegistry?: string;\n marketplace?: string;\n collectionWasmHash?: string;\n startLedger?: number;\n}\n\nexport interface CoordinatesByChain {\n STARKNET?: StarknetCoordinates;\n ETHEREUM?: EvmCoordinates;\n BASE?: EvmCoordinates;\n SOLANA?: SolanaCoordinates;\n STELLAR?: StellarCoordinates;\n BITCOIN?: never;\n}\n\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 dataTokenization721: \"0x07421b4442f7f2052c65408fb3561484154cf8175a0bbb41e3cd38d9087af6d2\",\n dataTokenization721StartBlock: 14670294,\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\n ipSponsorship: \"0x03729ebe0fedf29ec97fca34db09174772af7f870af26a26e024a61040143e5c\",\n ipSponsorshipClassHash: \"0x0626daac2ed7e2bf630ef5b10104b3202db1559216c0c1a504c0e99be2fbfec3\",\n ipSponsorshipStartBlock: 11896456,\n mediaWalletClassHash: \"0x014b210c7d47392691144bafecdca3c6c7791cc295ea305988da0a724c05ac31\",\n genesisMint: \"0x06ed61abba98a44d45bed2c4b1a456df15053c3321cfd6e007afb33b7226c9f0\",\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\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 { parseAbi } from \"viem\";\n\nexport const EvmVenueABI = parseAbi([\n \"struct OfferItem { uint8 itemType; address token; uint256 identifier; uint256 amount; }\",\n \"struct ConsiderationItem { uint8 itemType; address token; uint256 identifier; uint256 amount; address recipient; }\",\n \"struct OrderParameters { address offerer; OfferItem offer; ConsiderationItem consideration; uint256 royaltyMaxBps; uint256 startTime; uint256 endTime; uint256 salt; uint256 counter; }\",\n \"function registerOrder(OrderParameters parameters, bytes signature)\",\n \"function fulfillOrder(bytes32 orderHash) payable\",\n \"function cancelOrder(bytes32 orderHash)\",\n \"function incrementCounter()\",\n \"function getOrderHash(OrderParameters parameters) view returns (bytes32)\",\n \"function getCounter(address offerer) view returns (uint256)\",\n \"function version() pure returns (string)\",\n \"event OrderCreated(bytes32 indexed orderHash, address indexed offerer)\",\n \"event OrderFulfilled(bytes32 indexed orderHash, address indexed offerer, address indexed fulfiller, uint256 saleAmount, address royaltyReceiver, uint256 royaltyAmount)\",\n \"event OrderCancelled(bytes32 indexed orderHash, address indexed offerer)\",\n \"event CounterIncremented(address indexed offerer, uint256 newCounter)\",\n]);\n\nexport const EvmVenue1155ABI = parseAbi([\n \"function fulfillOrder(bytes32 orderHash, uint256 quantity) payable\",\n \"event OrderFulfilled(bytes32 indexed orderHash, address indexed offerer, address indexed fulfiller, uint256 quantity, uint256 remainingAmount, uint256 saleAmount, address royaltyReceiver, uint256 royaltyAmount)\",\n]);\n\nexport const EvmMipRegistryABI = parseAbi([\n \"function createCollection(string name, string symbol, string baseUri, uint96 royaltyBps) returns (uint256 collectionId, address collection)\",\n \"function getCollection(uint256 collectionId) view returns (address collection, address creator)\",\n \"function collectionCount() view returns (uint256)\",\n \"event CollectionCreated(uint256 indexed collectionId, address indexed collection, address indexed creator, string name, string symbol, string baseUri)\",\n]);\n\nexport const EvmMipCollectionABI = parseAbi([\n \"function mint(address to, string metadataUri) returns (uint256 tokenId)\",\n \"function batchMint(address[] to, string[] metadataUris) returns (uint256[] tokenIds)\",\n \"function tokenURI(uint256 tokenId) view returns (string)\",\n \"function ownerOf(uint256 tokenId) view returns (address)\",\n \"function balanceOf(address owner) view returns (uint256)\",\n \"function owner() view returns (address)\",\n \"event TokenMinted(uint256 indexed tokenId, address indexed owner, string metadataUri)\",\n \"event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)\",\n]);\n","import type { PublicClient, WalletClient } from \"viem\";\nimport type { Chain } from \"../chains.js\";\nimport { getCoordinates, type EvmCoordinates } from \"../chains.js\";\nimport type {\n AdapterTxResult,\n OrderRef,\n RegisterOrderParams,\n VenueAdapter,\n} from \"../adapters/types.js\";\nimport { EvmVenueABI, EvmVenue1155ABI } from \"./abis.js\";\nimport {\n EVM_ORDER_TYPES,\n evmOrderDigest,\n evmOrderDomain,\n type EvmOrderParameters,\n} from \"./typedData.js\";\n\nexport type EvmChain = \"ETHEREUM\" | \"BASE\";\n\nexport interface EvmVenueOptions {\n chain: EvmChain;\n chainId: number;\n publicClient: PublicClient;\n\n variant: \"721\" | \"1155\";\n\n contract?: `0x${string}`;\n}\n\nexport class EvmVenue implements VenueAdapter<WalletClient> {\n readonly chain: Chain;\n private readonly chainId: number;\n private readonly contract: `0x${string}`;\n private readonly publicClient: PublicClient;\n private readonly variant: \"721\" | \"1155\";\n\n constructor(opts: EvmVenueOptions) {\n this.chain = opts.chain;\n this.chainId = opts.chainId;\n this.publicClient = opts.publicClient;\n this.variant = opts.variant;\n const coords = maybeCoords(opts.chain);\n const contract =\n opts.contract ?? (opts.variant === \"721\" ? coords?.marketplace721 : coords?.marketplace1155);\n if (!contract) throw new Error(`No ${opts.variant} venue configured for ${opts.chain}`);\n this.contract = contract;\n }\n\n async registerOrder(\n signer: WalletClient,\n params: RegisterOrderParams,\n ): Promise<AdapterTxResult & { orderRef: OrderRef }> {\n const account = signer.account;\n if (!account) throw new Error(\"WalletClient has no account\");\n const counter = await this.getCounter(account.address);\n const nft = {\n itemType: 2 as const,\n token: params.asset.contract as `0x${string}`,\n identifier: BigInt(params.asset.tokenId),\n amount: 1n,\n };\n const payment = {\n itemType: (params.paymentToken === NATIVE_SENTINEL ? 0 : 1) as 0 | 1,\n token: (params.paymentToken === NATIVE_SENTINEL\n ? \"0x0000000000000000000000000000000000000000\"\n : params.paymentToken) as `0x${string}`,\n identifier: 0n,\n amount: BigInt(params.amount),\n };\n const order: EvmOrderParameters =\n params.side === \"listing\"\n ? {\n offerer: account.address,\n offer: nft,\n consideration: { ...payment, recipient: account.address },\n ...commonFields(params),\n }\n : {\n offerer: account.address,\n offer: payment,\n consideration: { ...nft, recipient: account.address },\n ...commonFields(params),\n };\n order.counter = counter;\n\n const signature = await signer.signTypedData({\n account,\n domain: evmOrderDomain(this.chainId, this.contract),\n types: EVM_ORDER_TYPES,\n primaryType: \"OrderParameters\",\n message: order,\n });\n const txHash = await signer.writeContract({\n account,\n chain: signer.chain,\n address: this.contract,\n abi: EvmVenueABI,\n functionName: \"registerOrder\",\n args: [order, signature],\n });\n return { txHash, orderRef: evmOrderDigest(this.chainId, this.contract, order) };\n }\n\n async fulfillOrder(\n signer: WalletClient,\n orderRef: OrderRef,\n opts?: { quantity?: string; value?: string },\n ): Promise<AdapterTxResult> {\n const account = signer.account;\n if (!account) throw new Error(\"WalletClient has no account\");\n const value = opts?.value ? BigInt(opts.value) : undefined;\n const txHash =\n this.variant === \"1155\"\n ? await signer.writeContract({\n account,\n chain: signer.chain,\n address: this.contract,\n abi: EvmVenue1155ABI,\n functionName: \"fulfillOrder\",\n args: [orderRef as `0x${string}`, BigInt(opts?.quantity ?? \"1\")],\n value,\n })\n : await signer.writeContract({\n account,\n chain: signer.chain,\n address: this.contract,\n abi: EvmVenueABI,\n functionName: \"fulfillOrder\",\n args: [orderRef as `0x${string}`],\n value,\n });\n return { txHash };\n }\n\n async cancelOrder(signer: WalletClient, orderRef: OrderRef): Promise<AdapterTxResult> {\n const account = signer.account;\n if (!account) throw new Error(\"WalletClient has no account\");\n const txHash = await signer.writeContract({\n account,\n chain: signer.chain,\n address: this.contract,\n abi: EvmVenueABI,\n functionName: \"cancelOrder\",\n args: [orderRef as `0x${string}`],\n });\n return { txHash };\n }\n\n async incrementCounter(signer: WalletClient): Promise<AdapterTxResult> {\n const account = signer.account;\n if (!account) throw new Error(\"WalletClient has no account\");\n const txHash = await signer.writeContract({\n account,\n chain: signer.chain,\n address: this.contract,\n abi: EvmVenueABI,\n functionName: \"incrementCounter\",\n args: [],\n });\n return { txHash };\n }\n\n async getOrderDetails(orderRef: OrderRef): Promise<unknown> {\n return this.publicClient.readContract({\n address: this.contract,\n abi: [\n {\n type: \"function\",\n name: \"getOrderDetails\",\n stateMutability: \"view\",\n inputs: [{ name: \"orderHash\", type: \"bytes32\" }],\n outputs: [{ name: \"\", type: \"bytes\" }],\n },\n ] as const,\n functionName: \"getOrderDetails\",\n args: [orderRef as `0x${string}`],\n });\n }\n\n async getCounter(address: string): Promise<bigint> {\n return this.publicClient.readContract({\n address: this.contract,\n abi: EvmVenueABI,\n functionName: \"getCounter\",\n args: [address as `0x${string}`],\n });\n }\n}\n\nexport const NATIVE_SENTINEL = \"native\";\n\nfunction commonFields(params: RegisterOrderParams) {\n return {\n royaltyMaxBps: BigInt(params.royaltyMaxBps),\n startTime: BigInt(params.startTime),\n endTime: BigInt(params.endTime),\n salt: BigInt(params.salt),\n counter: 0n,\n };\n}\n\nfunction maybeCoords(chain: EvmChain): EvmCoordinates | undefined {\n try {\n return getCoordinates(chain);\n } catch {\n return undefined;\n }\n}\n","import type { PublicClient, WalletClient } from \"viem\";\nimport { parseEventLogs } from \"viem\";\nimport type { Chain } from \"../chains.js\";\nimport { getCoordinates, type EvmCoordinates } from \"../chains.js\";\nimport type { AdapterTxResult, CreateCollectionInput, IssuanceAdapter, MintInput } from \"../adapters/types.js\";\nimport { EvmMipCollectionABI, EvmMipRegistryABI } from \"./abis.js\";\nimport type { EvmChain } from \"./venue.js\";\n\nexport interface EvmIssuanceOptions {\n chain: EvmChain;\n publicClient: PublicClient;\n\n registry?: `0x${string}`;\n}\n\nexport class EvmIssuance implements IssuanceAdapter<WalletClient> {\n readonly chain: Chain;\n private readonly registry: `0x${string}`;\n private readonly publicClient: PublicClient;\n\n constructor(opts: EvmIssuanceOptions) {\n this.chain = opts.chain;\n this.publicClient = opts.publicClient;\n const registry = opts.registry ?? maybeCoords(opts.chain)?.mipRegistry;\n if (!registry) throw new Error(`No MIP registry configured for ${opts.chain}`);\n this.registry = registry;\n }\n\n async createCollection(\n signer: WalletClient,\n params: CreateCollectionInput,\n ): Promise<AdapterTxResult & { collection: string }> {\n const account = signer.account;\n if (!account) throw new Error(\"WalletClient has no account\");\n const txHash = await signer.writeContract({\n account,\n chain: signer.chain,\n address: this.registry,\n abi: EvmMipRegistryABI,\n functionName: \"createCollection\",\n args: [params.name, params.symbol, params.baseUri, BigInt(params.royaltyBps)],\n });\n const receipt = await this.publicClient.waitForTransactionReceipt({ hash: txHash });\n const [created] = parseEventLogs({\n abi: EvmMipRegistryABI,\n eventName: \"CollectionCreated\",\n logs: receipt.logs,\n });\n return { txHash, collection: created?.args.collection ?? \"\" };\n }\n\n async mint(signer: WalletClient, params: MintInput): Promise<AdapterTxResult & { tokenId: string }> {\n const account = signer.account;\n if (!account) throw new Error(\"WalletClient has no account\");\n const txHash = await signer.writeContract({\n account,\n chain: signer.chain,\n address: params.collection as `0x${string}`,\n abi: EvmMipCollectionABI,\n functionName: \"mint\",\n args: [params.recipient as `0x${string}`, params.tokenUri],\n });\n const receipt = await this.publicClient.waitForTransactionReceipt({ hash: txHash });\n const [minted] = parseEventLogs({\n abi: EvmMipCollectionABI,\n eventName: \"TokenMinted\",\n logs: receipt.logs,\n });\n return { txHash, tokenId: (minted?.args.tokenId ?? 0n).toString() };\n }\n\n async batchMint(\n signer: WalletClient,\n params: { collection: string; recipients: string[]; tokenUris: string[] },\n ): Promise<AdapterTxResult> {\n const account = signer.account;\n if (!account) throw new Error(\"WalletClient has no account\");\n const txHash = await signer.writeContract({\n account,\n chain: signer.chain,\n address: params.collection as `0x${string}`,\n abi: EvmMipCollectionABI,\n functionName: \"batchMint\",\n args: [params.recipients as `0x${string}`[], params.tokenUris],\n });\n return { txHash };\n }\n}\n\nfunction maybeCoords(chain: EvmChain): EvmCoordinates | undefined {\n try {\n return getCoordinates(chain);\n } catch {\n return undefined;\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { TypedDataDomain, WalletClient, PublicClient } from 'viem';
2
- import { V as VenueAdapter, C as Chain, R as RegisterOrderParams, A as AdapterTxResult, O as OrderRef, I as IssuanceAdapter, e as CreateCollectionInput, M as MintInput } from '../types-CuSlc_YE.cjs';
2
+ import { V as VenueAdapter, C as Chain, R as RegisterOrderParams, A as AdapterTxResult, O as OrderRef, I as IssuanceAdapter, e as CreateCollectionInput, M as MintInput } from '../types-CO6YYHVA.cjs';
3
3
 
4
4
  declare const EVM_ORDER_TYPES: {
5
5
  readonly OfferItem: readonly [{
@@ -1,5 +1,5 @@
1
1
  import { TypedDataDomain, WalletClient, PublicClient } from 'viem';
2
- import { V as VenueAdapter, C as Chain, R as RegisterOrderParams, A as AdapterTxResult, O as OrderRef, I as IssuanceAdapter, e as CreateCollectionInput, M as MintInput } from '../types-CuSlc_YE.js';
2
+ import { V as VenueAdapter, C as Chain, R as RegisterOrderParams, A as AdapterTxResult, O as OrderRef, I as IssuanceAdapter, e as CreateCollectionInput, M as MintInput } from '../types-CO6YYHVA.js';
3
3
 
4
4
  declare const EVM_ORDER_TYPES: {
5
5
  readonly OfferItem: readonly [{
package/dist/evm/index.js CHANGED
@@ -81,9 +81,7 @@ var COORDINATES = {
81
81
  ipSponsorshipClassHash: "0x0626daac2ed7e2bf630ef5b10104b3202db1559216c0c1a504c0e99be2fbfec3",
82
82
  ipSponsorshipStartBlock: 11896456,
83
83
  mediaWalletClassHash: "0x014b210c7d47392691144bafecdca3c6c7791cc295ea305988da0a724c05ac31",
84
- genesisMintLaunch: "0x06ed61abba98a44d45bed2c4b1a456df15053c3321cfd6e007afb33b7226c9f0",
85
- genesisMintBR: "0x01f8b92e3b9e963b8eacb075207e2cc89d4614ff2ac6c2702c7ae10ad19a9db8",
86
- genesisMintGlobal: "0x06ad4d55ed2d12ad5d6d55587d800874ef807b051bfefe13497e60ec5b019369"
84
+ genesisMint: "0x06ed61abba98a44d45bed2c4b1a456df15053c3321cfd6e007afb33b7226c9f0"
87
85
  }
88
86
  };
89
87
  function getCoordinates(chain) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/evm/typedData.ts","../../src/chains.ts","../../src/evm/abis.ts","../../src/evm/venue.ts","../../src/evm/issuance.ts"],"names":["maybeCoords"],"mappings":"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","file":"index.js","sourcesContent":["import { hashTypedData, type TypedDataDomain } from \"viem\";\n\nexport const EVM_ORDER_TYPES = {\n OfferItem: [\n { name: \"itemType\", type: \"uint8\" },\n { name: \"token\", type: \"address\" },\n { name: \"identifier\", type: \"uint256\" },\n { name: \"amount\", type: \"uint256\" },\n ],\n ConsiderationItem: [\n { name: \"itemType\", type: \"uint8\" },\n { name: \"token\", type: \"address\" },\n { name: \"identifier\", type: \"uint256\" },\n { name: \"amount\", type: \"uint256\" },\n { name: \"recipient\", type: \"address\" },\n ],\n OrderParameters: [\n { name: \"offerer\", type: \"address\" },\n { name: \"offer\", type: \"OfferItem\" },\n { name: \"consideration\", type: \"ConsiderationItem\" },\n { name: \"royaltyMaxBps\", type: \"uint256\" },\n { name: \"startTime\", type: \"uint256\" },\n { name: \"endTime\", type: \"uint256\" },\n { name: \"salt\", type: \"uint256\" },\n { name: \"counter\", type: \"uint256\" },\n ],\n} as const;\n\nexport type EvmItemType = 0 | 1 | 2;\n\nexport interface EvmOfferItem {\n itemType: EvmItemType;\n token: `0x${string}`;\n identifier: bigint;\n amount: bigint;\n}\n\nexport interface EvmConsiderationItem extends EvmOfferItem {\n recipient: `0x${string}`;\n}\n\nexport interface EvmOrderParameters {\n offerer: `0x${string}`;\n offer: EvmOfferItem;\n consideration: EvmConsiderationItem;\n royaltyMaxBps: bigint;\n startTime: bigint;\n endTime: bigint;\n salt: bigint;\n counter: bigint;\n}\n\nexport function evmOrderDomain(chainId: number, verifyingContract: `0x${string}`): TypedDataDomain {\n return { name: \"Medialane\", version: \"1\", chainId, verifyingContract };\n}\n\nexport function evmOrderDigest(\n chainId: number,\n verifyingContract: `0x${string}`,\n parameters: EvmOrderParameters,\n): `0x${string}` {\n return hashTypedData({\n domain: evmOrderDomain(chainId, verifyingContract),\n types: EVM_ORDER_TYPES,\n primaryType: \"OrderParameters\",\n message: parameters,\n });\n}\n","\n\nexport const CHAINS = [\"STARKNET\", \"ETHEREUM\", \"SOLANA\", \"BASE\", \"STELLAR\", \"BITCOIN\"] as const;\nexport type Chain = (typeof CHAINS)[number];\n\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 dataTokenization721?: `0x${string}`;\n dataTokenization721StartBlock?: 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 genesisMintLaunch?: `0x${string}`;\n genesisMintBR?: `0x${string}`;\n genesisMintGlobal?: `0x${string}`;\n}\n\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\nexport interface SolanaCoordinates {\n rpcUrl: string;\n mipCollectionsProgram?: string;\n marketplaceProgram?: string;\n startSlot?: number;\n}\n\nexport interface StellarCoordinates {\n rpcUrl: string;\n mipRegistry?: string;\n marketplace?: string;\n collectionWasmHash?: string;\n startLedger?: number;\n}\n\nexport interface CoordinatesByChain {\n STARKNET?: StarknetCoordinates;\n ETHEREUM?: EvmCoordinates;\n BASE?: EvmCoordinates;\n SOLANA?: SolanaCoordinates;\n STELLAR?: StellarCoordinates;\n BITCOIN?: never;\n}\n\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 dataTokenization721: \"0x07421b4442f7f2052c65408fb3561484154cf8175a0bbb41e3cd38d9087af6d2\",\n dataTokenization721StartBlock: 14670294,\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\n ipSponsorship: \"0x03729ebe0fedf29ec97fca34db09174772af7f870af26a26e024a61040143e5c\",\n ipSponsorshipClassHash: \"0x0626daac2ed7e2bf630ef5b10104b3202db1559216c0c1a504c0e99be2fbfec3\",\n ipSponsorshipStartBlock: 11896456,\n mediaWalletClassHash: \"0x014b210c7d47392691144bafecdca3c6c7791cc295ea305988da0a724c05ac31\",\n genesisMintLaunch: \"0x06ed61abba98a44d45bed2c4b1a456df15053c3321cfd6e007afb33b7226c9f0\",\n genesisMintBR: \"0x01f8b92e3b9e963b8eacb075207e2cc89d4614ff2ac6c2702c7ae10ad19a9db8\",\n genesisMintGlobal: \"0x06ad4d55ed2d12ad5d6d55587d800874ef807b051bfefe13497e60ec5b019369\",\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\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 { parseAbi } from \"viem\";\n\nexport const EvmVenueABI = parseAbi([\n \"struct OfferItem { uint8 itemType; address token; uint256 identifier; uint256 amount; }\",\n \"struct ConsiderationItem { uint8 itemType; address token; uint256 identifier; uint256 amount; address recipient; }\",\n \"struct OrderParameters { address offerer; OfferItem offer; ConsiderationItem consideration; uint256 royaltyMaxBps; uint256 startTime; uint256 endTime; uint256 salt; uint256 counter; }\",\n \"function registerOrder(OrderParameters parameters, bytes signature)\",\n \"function fulfillOrder(bytes32 orderHash) payable\",\n \"function cancelOrder(bytes32 orderHash)\",\n \"function incrementCounter()\",\n \"function getOrderHash(OrderParameters parameters) view returns (bytes32)\",\n \"function getCounter(address offerer) view returns (uint256)\",\n \"function version() pure returns (string)\",\n \"event OrderCreated(bytes32 indexed orderHash, address indexed offerer)\",\n \"event OrderFulfilled(bytes32 indexed orderHash, address indexed offerer, address indexed fulfiller, uint256 saleAmount, address royaltyReceiver, uint256 royaltyAmount)\",\n \"event OrderCancelled(bytes32 indexed orderHash, address indexed offerer)\",\n \"event CounterIncremented(address indexed offerer, uint256 newCounter)\",\n]);\n\nexport const EvmVenue1155ABI = parseAbi([\n \"function fulfillOrder(bytes32 orderHash, uint256 quantity) payable\",\n \"event OrderFulfilled(bytes32 indexed orderHash, address indexed offerer, address indexed fulfiller, uint256 quantity, uint256 remainingAmount, uint256 saleAmount, address royaltyReceiver, uint256 royaltyAmount)\",\n]);\n\nexport const EvmMipRegistryABI = parseAbi([\n \"function createCollection(string name, string symbol, string baseUri, uint96 royaltyBps) returns (uint256 collectionId, address collection)\",\n \"function getCollection(uint256 collectionId) view returns (address collection, address creator)\",\n \"function collectionCount() view returns (uint256)\",\n \"event CollectionCreated(uint256 indexed collectionId, address indexed collection, address indexed creator, string name, string symbol, string baseUri)\",\n]);\n\nexport const EvmMipCollectionABI = parseAbi([\n \"function mint(address to, string metadataUri) returns (uint256 tokenId)\",\n \"function batchMint(address[] to, string[] metadataUris) returns (uint256[] tokenIds)\",\n \"function tokenURI(uint256 tokenId) view returns (string)\",\n \"function ownerOf(uint256 tokenId) view returns (address)\",\n \"function balanceOf(address owner) view returns (uint256)\",\n \"function owner() view returns (address)\",\n \"event TokenMinted(uint256 indexed tokenId, address indexed owner, string metadataUri)\",\n \"event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)\",\n]);\n","import type { PublicClient, WalletClient } from \"viem\";\nimport type { Chain } from \"../chains.js\";\nimport { getCoordinates, type EvmCoordinates } from \"../chains.js\";\nimport type {\n AdapterTxResult,\n OrderRef,\n RegisterOrderParams,\n VenueAdapter,\n} from \"../adapters/types.js\";\nimport { EvmVenueABI, EvmVenue1155ABI } from \"./abis.js\";\nimport {\n EVM_ORDER_TYPES,\n evmOrderDigest,\n evmOrderDomain,\n type EvmOrderParameters,\n} from \"./typedData.js\";\n\nexport type EvmChain = \"ETHEREUM\" | \"BASE\";\n\nexport interface EvmVenueOptions {\n chain: EvmChain;\n chainId: number;\n publicClient: PublicClient;\n\n variant: \"721\" | \"1155\";\n\n contract?: `0x${string}`;\n}\n\nexport class EvmVenue implements VenueAdapter<WalletClient> {\n readonly chain: Chain;\n private readonly chainId: number;\n private readonly contract: `0x${string}`;\n private readonly publicClient: PublicClient;\n private readonly variant: \"721\" | \"1155\";\n\n constructor(opts: EvmVenueOptions) {\n this.chain = opts.chain;\n this.chainId = opts.chainId;\n this.publicClient = opts.publicClient;\n this.variant = opts.variant;\n const coords = maybeCoords(opts.chain);\n const contract =\n opts.contract ?? (opts.variant === \"721\" ? coords?.marketplace721 : coords?.marketplace1155);\n if (!contract) throw new Error(`No ${opts.variant} venue configured for ${opts.chain}`);\n this.contract = contract;\n }\n\n async registerOrder(\n signer: WalletClient,\n params: RegisterOrderParams,\n ): Promise<AdapterTxResult & { orderRef: OrderRef }> {\n const account = signer.account;\n if (!account) throw new Error(\"WalletClient has no account\");\n const counter = await this.getCounter(account.address);\n const nft = {\n itemType: 2 as const,\n token: params.asset.contract as `0x${string}`,\n identifier: BigInt(params.asset.tokenId),\n amount: 1n,\n };\n const payment = {\n itemType: (params.paymentToken === NATIVE_SENTINEL ? 0 : 1) as 0 | 1,\n token: (params.paymentToken === NATIVE_SENTINEL\n ? \"0x0000000000000000000000000000000000000000\"\n : params.paymentToken) as `0x${string}`,\n identifier: 0n,\n amount: BigInt(params.amount),\n };\n const order: EvmOrderParameters =\n params.side === \"listing\"\n ? {\n offerer: account.address,\n offer: nft,\n consideration: { ...payment, recipient: account.address },\n ...commonFields(params),\n }\n : {\n offerer: account.address,\n offer: payment,\n consideration: { ...nft, recipient: account.address },\n ...commonFields(params),\n };\n order.counter = counter;\n\n const signature = await signer.signTypedData({\n account,\n domain: evmOrderDomain(this.chainId, this.contract),\n types: EVM_ORDER_TYPES,\n primaryType: \"OrderParameters\",\n message: order,\n });\n const txHash = await signer.writeContract({\n account,\n chain: signer.chain,\n address: this.contract,\n abi: EvmVenueABI,\n functionName: \"registerOrder\",\n args: [order, signature],\n });\n return { txHash, orderRef: evmOrderDigest(this.chainId, this.contract, order) };\n }\n\n async fulfillOrder(\n signer: WalletClient,\n orderRef: OrderRef,\n opts?: { quantity?: string; value?: string },\n ): Promise<AdapterTxResult> {\n const account = signer.account;\n if (!account) throw new Error(\"WalletClient has no account\");\n const value = opts?.value ? BigInt(opts.value) : undefined;\n const txHash =\n this.variant === \"1155\"\n ? await signer.writeContract({\n account,\n chain: signer.chain,\n address: this.contract,\n abi: EvmVenue1155ABI,\n functionName: \"fulfillOrder\",\n args: [orderRef as `0x${string}`, BigInt(opts?.quantity ?? \"1\")],\n value,\n })\n : await signer.writeContract({\n account,\n chain: signer.chain,\n address: this.contract,\n abi: EvmVenueABI,\n functionName: \"fulfillOrder\",\n args: [orderRef as `0x${string}`],\n value,\n });\n return { txHash };\n }\n\n async cancelOrder(signer: WalletClient, orderRef: OrderRef): Promise<AdapterTxResult> {\n const account = signer.account;\n if (!account) throw new Error(\"WalletClient has no account\");\n const txHash = await signer.writeContract({\n account,\n chain: signer.chain,\n address: this.contract,\n abi: EvmVenueABI,\n functionName: \"cancelOrder\",\n args: [orderRef as `0x${string}`],\n });\n return { txHash };\n }\n\n async incrementCounter(signer: WalletClient): Promise<AdapterTxResult> {\n const account = signer.account;\n if (!account) throw new Error(\"WalletClient has no account\");\n const txHash = await signer.writeContract({\n account,\n chain: signer.chain,\n address: this.contract,\n abi: EvmVenueABI,\n functionName: \"incrementCounter\",\n args: [],\n });\n return { txHash };\n }\n\n async getOrderDetails(orderRef: OrderRef): Promise<unknown> {\n return this.publicClient.readContract({\n address: this.contract,\n abi: [\n {\n type: \"function\",\n name: \"getOrderDetails\",\n stateMutability: \"view\",\n inputs: [{ name: \"orderHash\", type: \"bytes32\" }],\n outputs: [{ name: \"\", type: \"bytes\" }],\n },\n ] as const,\n functionName: \"getOrderDetails\",\n args: [orderRef as `0x${string}`],\n });\n }\n\n async getCounter(address: string): Promise<bigint> {\n return this.publicClient.readContract({\n address: this.contract,\n abi: EvmVenueABI,\n functionName: \"getCounter\",\n args: [address as `0x${string}`],\n });\n }\n}\n\nexport const NATIVE_SENTINEL = \"native\";\n\nfunction commonFields(params: RegisterOrderParams) {\n return {\n royaltyMaxBps: BigInt(params.royaltyMaxBps),\n startTime: BigInt(params.startTime),\n endTime: BigInt(params.endTime),\n salt: BigInt(params.salt),\n counter: 0n,\n };\n}\n\nfunction maybeCoords(chain: EvmChain): EvmCoordinates | undefined {\n try {\n return getCoordinates(chain);\n } catch {\n return undefined;\n }\n}\n","import type { PublicClient, WalletClient } from \"viem\";\nimport { parseEventLogs } from \"viem\";\nimport type { Chain } from \"../chains.js\";\nimport { getCoordinates, type EvmCoordinates } from \"../chains.js\";\nimport type { AdapterTxResult, CreateCollectionInput, IssuanceAdapter, MintInput } from \"../adapters/types.js\";\nimport { EvmMipCollectionABI, EvmMipRegistryABI } from \"./abis.js\";\nimport type { EvmChain } from \"./venue.js\";\n\nexport interface EvmIssuanceOptions {\n chain: EvmChain;\n publicClient: PublicClient;\n\n registry?: `0x${string}`;\n}\n\nexport class EvmIssuance implements IssuanceAdapter<WalletClient> {\n readonly chain: Chain;\n private readonly registry: `0x${string}`;\n private readonly publicClient: PublicClient;\n\n constructor(opts: EvmIssuanceOptions) {\n this.chain = opts.chain;\n this.publicClient = opts.publicClient;\n const registry = opts.registry ?? maybeCoords(opts.chain)?.mipRegistry;\n if (!registry) throw new Error(`No MIP registry configured for ${opts.chain}`);\n this.registry = registry;\n }\n\n async createCollection(\n signer: WalletClient,\n params: CreateCollectionInput,\n ): Promise<AdapterTxResult & { collection: string }> {\n const account = signer.account;\n if (!account) throw new Error(\"WalletClient has no account\");\n const txHash = await signer.writeContract({\n account,\n chain: signer.chain,\n address: this.registry,\n abi: EvmMipRegistryABI,\n functionName: \"createCollection\",\n args: [params.name, params.symbol, params.baseUri, BigInt(params.royaltyBps)],\n });\n const receipt = await this.publicClient.waitForTransactionReceipt({ hash: txHash });\n const [created] = parseEventLogs({\n abi: EvmMipRegistryABI,\n eventName: \"CollectionCreated\",\n logs: receipt.logs,\n });\n return { txHash, collection: created?.args.collection ?? \"\" };\n }\n\n async mint(signer: WalletClient, params: MintInput): Promise<AdapterTxResult & { tokenId: string }> {\n const account = signer.account;\n if (!account) throw new Error(\"WalletClient has no account\");\n const txHash = await signer.writeContract({\n account,\n chain: signer.chain,\n address: params.collection as `0x${string}`,\n abi: EvmMipCollectionABI,\n functionName: \"mint\",\n args: [params.recipient as `0x${string}`, params.tokenUri],\n });\n const receipt = await this.publicClient.waitForTransactionReceipt({ hash: txHash });\n const [minted] = parseEventLogs({\n abi: EvmMipCollectionABI,\n eventName: \"TokenMinted\",\n logs: receipt.logs,\n });\n return { txHash, tokenId: (minted?.args.tokenId ?? 0n).toString() };\n }\n\n async batchMint(\n signer: WalletClient,\n params: { collection: string; recipients: string[]; tokenUris: string[] },\n ): Promise<AdapterTxResult> {\n const account = signer.account;\n if (!account) throw new Error(\"WalletClient has no account\");\n const txHash = await signer.writeContract({\n account,\n chain: signer.chain,\n address: params.collection as `0x${string}`,\n abi: EvmMipCollectionABI,\n functionName: \"batchMint\",\n args: [params.recipients as `0x${string}`[], params.tokenUris],\n });\n return { txHash };\n }\n}\n\nfunction maybeCoords(chain: EvmChain): EvmCoordinates | undefined {\n try {\n return getCoordinates(chain);\n } catch {\n return undefined;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/evm/typedData.ts","../../src/chains.ts","../../src/evm/abis.ts","../../src/evm/venue.ts","../../src/evm/issuance.ts"],"names":["maybeCoords"],"mappings":"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","file":"index.js","sourcesContent":["import { hashTypedData, type TypedDataDomain } from \"viem\";\n\nexport const EVM_ORDER_TYPES = {\n OfferItem: [\n { name: \"itemType\", type: \"uint8\" },\n { name: \"token\", type: \"address\" },\n { name: \"identifier\", type: \"uint256\" },\n { name: \"amount\", type: \"uint256\" },\n ],\n ConsiderationItem: [\n { name: \"itemType\", type: \"uint8\" },\n { name: \"token\", type: \"address\" },\n { name: \"identifier\", type: \"uint256\" },\n { name: \"amount\", type: \"uint256\" },\n { name: \"recipient\", type: \"address\" },\n ],\n OrderParameters: [\n { name: \"offerer\", type: \"address\" },\n { name: \"offer\", type: \"OfferItem\" },\n { name: \"consideration\", type: \"ConsiderationItem\" },\n { name: \"royaltyMaxBps\", type: \"uint256\" },\n { name: \"startTime\", type: \"uint256\" },\n { name: \"endTime\", type: \"uint256\" },\n { name: \"salt\", type: \"uint256\" },\n { name: \"counter\", type: \"uint256\" },\n ],\n} as const;\n\nexport type EvmItemType = 0 | 1 | 2;\n\nexport interface EvmOfferItem {\n itemType: EvmItemType;\n token: `0x${string}`;\n identifier: bigint;\n amount: bigint;\n}\n\nexport interface EvmConsiderationItem extends EvmOfferItem {\n recipient: `0x${string}`;\n}\n\nexport interface EvmOrderParameters {\n offerer: `0x${string}`;\n offer: EvmOfferItem;\n consideration: EvmConsiderationItem;\n royaltyMaxBps: bigint;\n startTime: bigint;\n endTime: bigint;\n salt: bigint;\n counter: bigint;\n}\n\nexport function evmOrderDomain(chainId: number, verifyingContract: `0x${string}`): TypedDataDomain {\n return { name: \"Medialane\", version: \"1\", chainId, verifyingContract };\n}\n\nexport function evmOrderDigest(\n chainId: number,\n verifyingContract: `0x${string}`,\n parameters: EvmOrderParameters,\n): `0x${string}` {\n return hashTypedData({\n domain: evmOrderDomain(chainId, verifyingContract),\n types: EVM_ORDER_TYPES,\n primaryType: \"OrderParameters\",\n message: parameters,\n });\n}\n","\n\nexport const CHAINS = [\"STARKNET\", \"ETHEREUM\", \"SOLANA\", \"BASE\", \"STELLAR\", \"BITCOIN\"] as const;\nexport type Chain = (typeof CHAINS)[number];\n\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 dataTokenization721?: `0x${string}`;\n dataTokenization721StartBlock?: 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 genesisMint?: `0x${string}`;\n}\n\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\nexport interface SolanaCoordinates {\n rpcUrl: string;\n mipCollectionsProgram?: string;\n marketplaceProgram?: string;\n startSlot?: number;\n}\n\nexport interface StellarCoordinates {\n rpcUrl: string;\n mipRegistry?: string;\n marketplace?: string;\n collectionWasmHash?: string;\n startLedger?: number;\n}\n\nexport interface CoordinatesByChain {\n STARKNET?: StarknetCoordinates;\n ETHEREUM?: EvmCoordinates;\n BASE?: EvmCoordinates;\n SOLANA?: SolanaCoordinates;\n STELLAR?: StellarCoordinates;\n BITCOIN?: never;\n}\n\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 dataTokenization721: \"0x07421b4442f7f2052c65408fb3561484154cf8175a0bbb41e3cd38d9087af6d2\",\n dataTokenization721StartBlock: 14670294,\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\n ipSponsorship: \"0x03729ebe0fedf29ec97fca34db09174772af7f870af26a26e024a61040143e5c\",\n ipSponsorshipClassHash: \"0x0626daac2ed7e2bf630ef5b10104b3202db1559216c0c1a504c0e99be2fbfec3\",\n ipSponsorshipStartBlock: 11896456,\n mediaWalletClassHash: \"0x014b210c7d47392691144bafecdca3c6c7791cc295ea305988da0a724c05ac31\",\n genesisMint: \"0x06ed61abba98a44d45bed2c4b1a456df15053c3321cfd6e007afb33b7226c9f0\",\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\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 { parseAbi } from \"viem\";\n\nexport const EvmVenueABI = parseAbi([\n \"struct OfferItem { uint8 itemType; address token; uint256 identifier; uint256 amount; }\",\n \"struct ConsiderationItem { uint8 itemType; address token; uint256 identifier; uint256 amount; address recipient; }\",\n \"struct OrderParameters { address offerer; OfferItem offer; ConsiderationItem consideration; uint256 royaltyMaxBps; uint256 startTime; uint256 endTime; uint256 salt; uint256 counter; }\",\n \"function registerOrder(OrderParameters parameters, bytes signature)\",\n \"function fulfillOrder(bytes32 orderHash) payable\",\n \"function cancelOrder(bytes32 orderHash)\",\n \"function incrementCounter()\",\n \"function getOrderHash(OrderParameters parameters) view returns (bytes32)\",\n \"function getCounter(address offerer) view returns (uint256)\",\n \"function version() pure returns (string)\",\n \"event OrderCreated(bytes32 indexed orderHash, address indexed offerer)\",\n \"event OrderFulfilled(bytes32 indexed orderHash, address indexed offerer, address indexed fulfiller, uint256 saleAmount, address royaltyReceiver, uint256 royaltyAmount)\",\n \"event OrderCancelled(bytes32 indexed orderHash, address indexed offerer)\",\n \"event CounterIncremented(address indexed offerer, uint256 newCounter)\",\n]);\n\nexport const EvmVenue1155ABI = parseAbi([\n \"function fulfillOrder(bytes32 orderHash, uint256 quantity) payable\",\n \"event OrderFulfilled(bytes32 indexed orderHash, address indexed offerer, address indexed fulfiller, uint256 quantity, uint256 remainingAmount, uint256 saleAmount, address royaltyReceiver, uint256 royaltyAmount)\",\n]);\n\nexport const EvmMipRegistryABI = parseAbi([\n \"function createCollection(string name, string symbol, string baseUri, uint96 royaltyBps) returns (uint256 collectionId, address collection)\",\n \"function getCollection(uint256 collectionId) view returns (address collection, address creator)\",\n \"function collectionCount() view returns (uint256)\",\n \"event CollectionCreated(uint256 indexed collectionId, address indexed collection, address indexed creator, string name, string symbol, string baseUri)\",\n]);\n\nexport const EvmMipCollectionABI = parseAbi([\n \"function mint(address to, string metadataUri) returns (uint256 tokenId)\",\n \"function batchMint(address[] to, string[] metadataUris) returns (uint256[] tokenIds)\",\n \"function tokenURI(uint256 tokenId) view returns (string)\",\n \"function ownerOf(uint256 tokenId) view returns (address)\",\n \"function balanceOf(address owner) view returns (uint256)\",\n \"function owner() view returns (address)\",\n \"event TokenMinted(uint256 indexed tokenId, address indexed owner, string metadataUri)\",\n \"event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)\",\n]);\n","import type { PublicClient, WalletClient } from \"viem\";\nimport type { Chain } from \"../chains.js\";\nimport { getCoordinates, type EvmCoordinates } from \"../chains.js\";\nimport type {\n AdapterTxResult,\n OrderRef,\n RegisterOrderParams,\n VenueAdapter,\n} from \"../adapters/types.js\";\nimport { EvmVenueABI, EvmVenue1155ABI } from \"./abis.js\";\nimport {\n EVM_ORDER_TYPES,\n evmOrderDigest,\n evmOrderDomain,\n type EvmOrderParameters,\n} from \"./typedData.js\";\n\nexport type EvmChain = \"ETHEREUM\" | \"BASE\";\n\nexport interface EvmVenueOptions {\n chain: EvmChain;\n chainId: number;\n publicClient: PublicClient;\n\n variant: \"721\" | \"1155\";\n\n contract?: `0x${string}`;\n}\n\nexport class EvmVenue implements VenueAdapter<WalletClient> {\n readonly chain: Chain;\n private readonly chainId: number;\n private readonly contract: `0x${string}`;\n private readonly publicClient: PublicClient;\n private readonly variant: \"721\" | \"1155\";\n\n constructor(opts: EvmVenueOptions) {\n this.chain = opts.chain;\n this.chainId = opts.chainId;\n this.publicClient = opts.publicClient;\n this.variant = opts.variant;\n const coords = maybeCoords(opts.chain);\n const contract =\n opts.contract ?? (opts.variant === \"721\" ? coords?.marketplace721 : coords?.marketplace1155);\n if (!contract) throw new Error(`No ${opts.variant} venue configured for ${opts.chain}`);\n this.contract = contract;\n }\n\n async registerOrder(\n signer: WalletClient,\n params: RegisterOrderParams,\n ): Promise<AdapterTxResult & { orderRef: OrderRef }> {\n const account = signer.account;\n if (!account) throw new Error(\"WalletClient has no account\");\n const counter = await this.getCounter(account.address);\n const nft = {\n itemType: 2 as const,\n token: params.asset.contract as `0x${string}`,\n identifier: BigInt(params.asset.tokenId),\n amount: 1n,\n };\n const payment = {\n itemType: (params.paymentToken === NATIVE_SENTINEL ? 0 : 1) as 0 | 1,\n token: (params.paymentToken === NATIVE_SENTINEL\n ? \"0x0000000000000000000000000000000000000000\"\n : params.paymentToken) as `0x${string}`,\n identifier: 0n,\n amount: BigInt(params.amount),\n };\n const order: EvmOrderParameters =\n params.side === \"listing\"\n ? {\n offerer: account.address,\n offer: nft,\n consideration: { ...payment, recipient: account.address },\n ...commonFields(params),\n }\n : {\n offerer: account.address,\n offer: payment,\n consideration: { ...nft, recipient: account.address },\n ...commonFields(params),\n };\n order.counter = counter;\n\n const signature = await signer.signTypedData({\n account,\n domain: evmOrderDomain(this.chainId, this.contract),\n types: EVM_ORDER_TYPES,\n primaryType: \"OrderParameters\",\n message: order,\n });\n const txHash = await signer.writeContract({\n account,\n chain: signer.chain,\n address: this.contract,\n abi: EvmVenueABI,\n functionName: \"registerOrder\",\n args: [order, signature],\n });\n return { txHash, orderRef: evmOrderDigest(this.chainId, this.contract, order) };\n }\n\n async fulfillOrder(\n signer: WalletClient,\n orderRef: OrderRef,\n opts?: { quantity?: string; value?: string },\n ): Promise<AdapterTxResult> {\n const account = signer.account;\n if (!account) throw new Error(\"WalletClient has no account\");\n const value = opts?.value ? BigInt(opts.value) : undefined;\n const txHash =\n this.variant === \"1155\"\n ? await signer.writeContract({\n account,\n chain: signer.chain,\n address: this.contract,\n abi: EvmVenue1155ABI,\n functionName: \"fulfillOrder\",\n args: [orderRef as `0x${string}`, BigInt(opts?.quantity ?? \"1\")],\n value,\n })\n : await signer.writeContract({\n account,\n chain: signer.chain,\n address: this.contract,\n abi: EvmVenueABI,\n functionName: \"fulfillOrder\",\n args: [orderRef as `0x${string}`],\n value,\n });\n return { txHash };\n }\n\n async cancelOrder(signer: WalletClient, orderRef: OrderRef): Promise<AdapterTxResult> {\n const account = signer.account;\n if (!account) throw new Error(\"WalletClient has no account\");\n const txHash = await signer.writeContract({\n account,\n chain: signer.chain,\n address: this.contract,\n abi: EvmVenueABI,\n functionName: \"cancelOrder\",\n args: [orderRef as `0x${string}`],\n });\n return { txHash };\n }\n\n async incrementCounter(signer: WalletClient): Promise<AdapterTxResult> {\n const account = signer.account;\n if (!account) throw new Error(\"WalletClient has no account\");\n const txHash = await signer.writeContract({\n account,\n chain: signer.chain,\n address: this.contract,\n abi: EvmVenueABI,\n functionName: \"incrementCounter\",\n args: [],\n });\n return { txHash };\n }\n\n async getOrderDetails(orderRef: OrderRef): Promise<unknown> {\n return this.publicClient.readContract({\n address: this.contract,\n abi: [\n {\n type: \"function\",\n name: \"getOrderDetails\",\n stateMutability: \"view\",\n inputs: [{ name: \"orderHash\", type: \"bytes32\" }],\n outputs: [{ name: \"\", type: \"bytes\" }],\n },\n ] as const,\n functionName: \"getOrderDetails\",\n args: [orderRef as `0x${string}`],\n });\n }\n\n async getCounter(address: string): Promise<bigint> {\n return this.publicClient.readContract({\n address: this.contract,\n abi: EvmVenueABI,\n functionName: \"getCounter\",\n args: [address as `0x${string}`],\n });\n }\n}\n\nexport const NATIVE_SENTINEL = \"native\";\n\nfunction commonFields(params: RegisterOrderParams) {\n return {\n royaltyMaxBps: BigInt(params.royaltyMaxBps),\n startTime: BigInt(params.startTime),\n endTime: BigInt(params.endTime),\n salt: BigInt(params.salt),\n counter: 0n,\n };\n}\n\nfunction maybeCoords(chain: EvmChain): EvmCoordinates | undefined {\n try {\n return getCoordinates(chain);\n } catch {\n return undefined;\n }\n}\n","import type { PublicClient, WalletClient } from \"viem\";\nimport { parseEventLogs } from \"viem\";\nimport type { Chain } from \"../chains.js\";\nimport { getCoordinates, type EvmCoordinates } from \"../chains.js\";\nimport type { AdapterTxResult, CreateCollectionInput, IssuanceAdapter, MintInput } from \"../adapters/types.js\";\nimport { EvmMipCollectionABI, EvmMipRegistryABI } from \"./abis.js\";\nimport type { EvmChain } from \"./venue.js\";\n\nexport interface EvmIssuanceOptions {\n chain: EvmChain;\n publicClient: PublicClient;\n\n registry?: `0x${string}`;\n}\n\nexport class EvmIssuance implements IssuanceAdapter<WalletClient> {\n readonly chain: Chain;\n private readonly registry: `0x${string}`;\n private readonly publicClient: PublicClient;\n\n constructor(opts: EvmIssuanceOptions) {\n this.chain = opts.chain;\n this.publicClient = opts.publicClient;\n const registry = opts.registry ?? maybeCoords(opts.chain)?.mipRegistry;\n if (!registry) throw new Error(`No MIP registry configured for ${opts.chain}`);\n this.registry = registry;\n }\n\n async createCollection(\n signer: WalletClient,\n params: CreateCollectionInput,\n ): Promise<AdapterTxResult & { collection: string }> {\n const account = signer.account;\n if (!account) throw new Error(\"WalletClient has no account\");\n const txHash = await signer.writeContract({\n account,\n chain: signer.chain,\n address: this.registry,\n abi: EvmMipRegistryABI,\n functionName: \"createCollection\",\n args: [params.name, params.symbol, params.baseUri, BigInt(params.royaltyBps)],\n });\n const receipt = await this.publicClient.waitForTransactionReceipt({ hash: txHash });\n const [created] = parseEventLogs({\n abi: EvmMipRegistryABI,\n eventName: \"CollectionCreated\",\n logs: receipt.logs,\n });\n return { txHash, collection: created?.args.collection ?? \"\" };\n }\n\n async mint(signer: WalletClient, params: MintInput): Promise<AdapterTxResult & { tokenId: string }> {\n const account = signer.account;\n if (!account) throw new Error(\"WalletClient has no account\");\n const txHash = await signer.writeContract({\n account,\n chain: signer.chain,\n address: params.collection as `0x${string}`,\n abi: EvmMipCollectionABI,\n functionName: \"mint\",\n args: [params.recipient as `0x${string}`, params.tokenUri],\n });\n const receipt = await this.publicClient.waitForTransactionReceipt({ hash: txHash });\n const [minted] = parseEventLogs({\n abi: EvmMipCollectionABI,\n eventName: \"TokenMinted\",\n logs: receipt.logs,\n });\n return { txHash, tokenId: (minted?.args.tokenId ?? 0n).toString() };\n }\n\n async batchMint(\n signer: WalletClient,\n params: { collection: string; recipients: string[]; tokenUris: string[] },\n ): Promise<AdapterTxResult> {\n const account = signer.account;\n if (!account) throw new Error(\"WalletClient has no account\");\n const txHash = await signer.writeContract({\n account,\n chain: signer.chain,\n address: params.collection as `0x${string}`,\n abi: EvmMipCollectionABI,\n functionName: \"batchMint\",\n args: [params.recipients as `0x${string}`[], params.tokenUris],\n });\n return { txHash };\n }\n}\n\nfunction maybeCoords(chain: EvmChain): EvmCoordinates | undefined {\n try {\n return getCoordinates(chain);\n } catch {\n return undefined;\n }\n}\n"]}
package/dist/index.cjs CHANGED
@@ -52,9 +52,7 @@ var COORDINATES = {
52
52
  ipSponsorshipClassHash: "0x0626daac2ed7e2bf630ef5b10104b3202db1559216c0c1a504c0e99be2fbfec3",
53
53
  ipSponsorshipStartBlock: 11896456,
54
54
  mediaWalletClassHash: "0x014b210c7d47392691144bafecdca3c6c7791cc295ea305988da0a724c05ac31",
55
- genesisMintLaunch: "0x06ed61abba98a44d45bed2c4b1a456df15053c3321cfd6e007afb33b7226c9f0",
56
- genesisMintBR: "0x01f8b92e3b9e963b8eacb075207e2cc89d4614ff2ac6c2702c7ae10ad19a9db8",
57
- genesisMintGlobal: "0x06ad4d55ed2d12ad5d6d55587d800874ef807b051bfefe13497e60ec5b019369"
55
+ genesisMint: "0x06ed61abba98a44d45bed2c4b1a456df15053c3321cfd6e007afb33b7226c9f0"
58
56
  }
59
57
  };
60
58
  function getCoordinates(chain) {
@@ -109,6 +107,7 @@ var MedialaneConfigSchema = zod.z.object({
109
107
  rpcUrl: zod.z.string().url().optional(),
110
108
  backendUrl: zod.z.string().url().optional(),
111
109
  apiKey: zod.z.string().optional(),
110
+ appSource: zod.z.string().regex(/^[A-Z][A-Z0-9_]*$/).optional(),
112
111
  marketplace721Contract: zod.z.string().optional(),
113
112
  marketplaceContract: zod.z.string().optional(),
114
113
  marketplace1155Contract: zod.z.string().optional(),
@@ -133,6 +132,7 @@ function resolveConfig(raw) {
133
132
  rpcUrl: parsed.rpcUrl ?? coords.rpcUrl,
134
133
  backendUrl: parsed.backendUrl,
135
134
  apiKey: parsed.apiKey,
135
+ appSource: parsed.appSource,
136
136
  marketplace721Contract,
137
137
  marketplaceContract: marketplace721Contract,
138
138
  marketplace1155Contract: parsed.marketplace1155Contract ?? sn.marketplace1155,
@@ -295,10 +295,13 @@ function parseRetryAfter(value) {
295
295
  return void 0;
296
296
  }
297
297
  var ApiClient = class {
298
- constructor(baseUrl, apiKey, retryOptions, chain = "STARKNET") {
298
+ constructor(baseUrl, apiKey, retryOptions, chain = "STARKNET", appSource) {
299
299
  this.baseUrl = baseUrl;
300
300
  this.chain = chain;
301
- this.baseHeaders = apiKey ? { "x-api-key": apiKey } : {};
301
+ this.baseHeaders = {
302
+ ...apiKey ? { "x-api-key": apiKey } : {},
303
+ ...appSource ? { "x-app-source": appSource } : {}
304
+ };
302
305
  this.retryOptions = retryOptions;
303
306
  }
304
307
  addr(a) {
@@ -1242,10 +1245,7 @@ var STARKNET_CREATOR_COIN_EKUBO_LAUNCHER = SN.creatorCoinEkuboLauncher;
1242
1245
  var STARKNET_CREATOR_COIN_CLASS_HASH = SN.creatorCoinClassHash;
1243
1246
  var STARKNET_CREATOR_COIN_FACTORY_CLASS_HASH = SN.creatorCoinFactoryClassHash;
1244
1247
  var STARKNET_CREATOR_COIN_START_BLOCK = SN.creatorCoinStartBlock;
1245
- var STARKNET_GENESIS_MINT_LAUNCH_CONTRACT = SN.genesisMintLaunch;
1246
- var STARKNET_GENESIS_MINT_BR_CONTRACT = SN.genesisMintBR;
1247
- var STARKNET_GENESIS_MINT_GLOBAL_CONTRACT = SN.genesisMintGlobal;
1248
- var STARKNET_GENESIS_MINT_CONTRACT = SN.genesisMintLaunch;
1248
+ var STARKNET_GENESIS_MINT_CONTRACT = SN.genesisMint;
1249
1249
  var STARKNET_GENESIS_NFT_URI = "ipfs://bafkreiag6wzov7migmxwx3wrtudvbx4ajrlbjopqw7uni7nn2nsxv4eykm";
1250
1250
  var STARKNET_EKUBO_CORE = SN.ekuboCore;
1251
1251
  var SUPPORTED_TOKENS = [
@@ -1932,6 +1932,13 @@ function isPrivateIpv6(bytes) {
1932
1932
  if (bytes.slice(0, 10).every((b) => b === 0) && bytes[10] === 255 && bytes[11] === 255) {
1933
1933
  return isPrivateIpv4(bytes.slice(12));
1934
1934
  }
1935
+ if (bytes.slice(0, 12).every((b) => b === 0)) return isPrivateIpv4(bytes.slice(12));
1936
+ if (bytes[0] === 0 && bytes[1] === 100 && bytes[2] === 255 && bytes[3] === 155 && bytes.slice(4, 12).every((b) => b === 0)) {
1937
+ return isPrivateIpv4(bytes.slice(12));
1938
+ }
1939
+ if (bytes[0] === 32 && bytes[1] === 2) return isPrivateIpv4(bytes.slice(2, 6));
1940
+ if (bytes[0] === 254 && (bytes[1] & 192) === 192) return true;
1941
+ if (bytes[0] === 255) return true;
1935
1942
  return false;
1936
1943
  }
1937
1944
  function parseNumber(part) {
@@ -1966,7 +1973,7 @@ var BLOCKED_HOSTNAMES = /* @__PURE__ */ new Set([
1966
1973
  function isPrivateHost(hostname) {
1967
1974
  const host = hostname.toLowerCase().replace(/^\[|\]$/g, "");
1968
1975
  if (BLOCKED_HOSTNAMES.has(host)) return true;
1969
- if (host.endsWith(".local") || host.endsWith(".internal")) return true;
1976
+ if (host.endsWith(".local") || host.endsWith(".internal") || host.endsWith(".localhost")) return true;
1970
1977
  const candidate = normalizeNumericHostname(host) ?? host;
1971
1978
  const v4 = parseIpv4(candidate);
1972
1979
  if (v4) return isPrivateIpv4(v4);
@@ -2356,10 +2363,7 @@ exports.STARKNET_DATA_TOKENIZATION_721_CONTRACT = STARKNET_DATA_TOKENIZATION_721
2356
2363
  exports.STARKNET_DROP_COLLECTION_CLASS_HASH = STARKNET_DROP_COLLECTION_CLASS_HASH;
2357
2364
  exports.STARKNET_DROP_FACTORY_CONTRACT = STARKNET_DROP_FACTORY_CONTRACT;
2358
2365
  exports.STARKNET_EKUBO_CORE = STARKNET_EKUBO_CORE;
2359
- exports.STARKNET_GENESIS_MINT_BR_CONTRACT = STARKNET_GENESIS_MINT_BR_CONTRACT;
2360
2366
  exports.STARKNET_GENESIS_MINT_CONTRACT = STARKNET_GENESIS_MINT_CONTRACT;
2361
- exports.STARKNET_GENESIS_MINT_GLOBAL_CONTRACT = STARKNET_GENESIS_MINT_GLOBAL_CONTRACT;
2362
- exports.STARKNET_GENESIS_MINT_LAUNCH_CONTRACT = STARKNET_GENESIS_MINT_LAUNCH_CONTRACT;
2363
2367
  exports.STARKNET_GENESIS_NFT_URI = STARKNET_GENESIS_NFT_URI;
2364
2368
  exports.STARKNET_IPCOLLECTION_CLASS_HASH = STARKNET_IPCOLLECTION_CLASS_HASH;
2365
2369
  exports.STARKNET_IPNFT_CLASS_HASH = STARKNET_IPNFT_CLASS_HASH;