{"version":3,"sources":["../../src/solana/encoding.ts","../../src/chains.ts","../../src/solana/venue.ts"],"names":["sha256","PublicKey","TransactionInstruction","SystemProgram","Transaction"],"mappings":"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","file":"index.cjs","sourcesContent":["import { sha256 } from \"@noble/hashes/sha2.js\";\nimport { PublicKey } from \"@solana/web3.js\";\n\nexport function instructionDiscriminator(name: string): Uint8Array {\n  return sha256(new TextEncoder().encode(`global:${name}`)).slice(0, 8);\n}\n\nexport function eventDiscriminator(name: string): Uint8Array {\n  return sha256(new TextEncoder().encode(`event:${name}`)).slice(0, 8);\n}\n\nexport class BorshWriter {\n  private chunks: Uint8Array[] = [];\n\n  u8(v: number): this {\n    this.chunks.push(Uint8Array.of(v));\n    return this;\n  }\n  u16(v: number): this {\n    const b = new Uint8Array(2);\n    new DataView(b.buffer).setUint16(0, v, true);\n    this.chunks.push(b);\n    return this;\n  }\n  u64(v: bigint): this {\n    const b = new Uint8Array(8);\n    new DataView(b.buffer).setBigUint64(0, v, true);\n    this.chunks.push(b);\n    return this;\n  }\n  i64(v: bigint): this {\n    const b = new Uint8Array(8);\n    new DataView(b.buffer).setBigInt64(0, v, true);\n    this.chunks.push(b);\n    return this;\n  }\n  string(v: string): this {\n    const bytes = new TextEncoder().encode(v);\n    const len = new Uint8Array(4);\n    new DataView(len.buffer).setUint32(0, bytes.length, true);\n    this.chunks.push(len, bytes);\n    return this;\n  }\n  pubkey(v: PublicKey): this {\n    this.chunks.push(v.toBytes());\n    return this;\n  }\n  option<T>(v: T | null | undefined, write: (value: T) => void): this {\n    if (v === null || v === undefined) {\n      this.u8(0);\n    } else {\n      this.u8(1);\n      write(v);\n    }\n    return this;\n  }\n  build(discriminator: Uint8Array): Uint8Array {\n    const total = this.chunks.reduce((n, c) => n + c.length, discriminator.length);\n    const out = new Uint8Array(total);\n    out.set(discriminator, 0);\n    let offset = discriminator.length;\n    for (const chunk of this.chunks) {\n      out.set(chunk, offset);\n      offset += chunk.length;\n    }\n    return out;\n  }\n}\n\nexport function u64le(v: bigint): Uint8Array {\n  const b = new Uint8Array(8);\n  new DataView(b.buffer).setBigUint64(0, v, true);\n  return b;\n}\n\nexport function orderPda(program: PublicKey, offerer: PublicKey, salt: bigint): PublicKey {\n  return PublicKey.findProgramAddressSync(\n    [new TextEncoder().encode(\"order\"), offerer.toBytes(), u64le(salt)],\n    program,\n  )[0];\n}\n\nexport function counterPda(program: PublicKey, offerer: PublicKey): PublicKey {\n  return PublicKey.findProgramAddressSync(\n    [new TextEncoder().encode(\"counter\"), offerer.toBytes()],\n    program,\n  )[0];\n}\n\nexport function settlementPda(program: PublicKey): PublicKey {\n  return PublicKey.findProgramAddressSync([new TextEncoder().encode(\"authority\")], program)[0];\n}\n\nexport function registryCounterPda(program: PublicKey): PublicKey {\n  return PublicKey.findProgramAddressSync([new TextEncoder().encode(\"counter\")], program)[0];\n}\n\nexport function collectionRecordPda(program: PublicKey, coreCollection: PublicKey): PublicKey {\n  return PublicKey.findProgramAddressSync(\n    [new TextEncoder().encode(\"collection\"), coreCollection.toBytes()],\n    program,\n  )[0];\n}\n\nexport const MPL_CORE_PROGRAM_ID = new PublicKey(\"CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d\");\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 {\n  PublicKey,\n  SystemProgram,\n  Transaction,\n  TransactionInstruction,\n  type Connection,\n} from \"@solana/web3.js\";\nimport type { Chain } from \"../chains.js\";\nimport { getCoordinates, type SolanaCoordinates } from \"../chains.js\";\nimport type {\n  AdapterTxResult,\n  OrderRef,\n  RegisterOrderParams,\n  VenueAdapter,\n} from \"../adapters/types.js\";\nimport {\n  BorshWriter,\n  MPL_CORE_PROGRAM_ID,\n  counterPda,\n  instructionDiscriminator,\n  orderPda,\n  settlementPda,\n} from \"./encoding.js\";\n\nexport interface SolanaSigner {\n  publicKey: PublicKey;\n  signTransaction(tx: Transaction): Promise<Transaction>;\n}\n\nexport interface SolanaVenueOptions {\n  connection: Connection;\n\n  programId?: string;\n}\n\nexport class SolanaVenue implements VenueAdapter<SolanaSigner> {\n  readonly chain: Chain = \"SOLANA\";\n  private readonly connection: Connection;\n  private readonly program: PublicKey;\n\n  constructor(opts: SolanaVenueOptions) {\n    this.connection = opts.connection;\n    const program = opts.programId ?? maybeCoords()?.marketplaceProgram;\n    if (!program) throw new Error(\"No Solana marketplace program configured\");\n    this.program = new PublicKey(program);\n  }\n\n  async registerOrder(\n    signer: SolanaSigner,\n    params: RegisterOrderParams,\n  ): Promise<AdapterTxResult & { orderRef: OrderRef }> {\n    const offerer = signer.publicKey;\n    const salt = BigInt(params.salt);\n    const isNative = params.paymentToken === \"native\";\n    const counter = await this.getCounter(offerer.toBase58());\n    const writer = new BorshWriter()\n      .u64(salt)\n      .u8(params.side === \"listing\" ? 0 : 1)\n      .option(isNative ? null : new PublicKey(params.paymentToken), (mint) => writer.pubkey(mint))\n      .u64(BigInt(params.amount))\n      .u16(params.royaltyMaxBps)\n      .i64(BigInt(params.startTime))\n      .i64(BigInt(params.endTime))\n      .u64(counter);\n    const order = orderPda(this.program, offerer, salt);\n    const asset = new PublicKey(params.asset.contract);\n    const instruction = new TransactionInstruction({\n      programId: this.program,\n      keys: [\n        { pubkey: offerer, isSigner: true, isWritable: true },\n        { pubkey: order, isSigner: false, isWritable: true },\n        { pubkey: counterPda(this.program, offerer), isSigner: false, isWritable: true },\n        { pubkey: settlementPda(this.program), isSigner: false, isWritable: false },\n        { pubkey: asset, isSigner: false, isWritable: true },\n        { pubkey: new PublicKey(params.asset.tokenId), isSigner: false, isWritable: true },\n        { pubkey: MPL_CORE_PROGRAM_ID, isSigner: false, isWritable: false },\n        { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },\n      ],\n      data: Buffer.from(writer.build(instructionDiscriminator(\"register_order\"))),\n    });\n    const txHash = await this.send(signer, instruction);\n    return { txHash, orderRef: order.toBase58() };\n  }\n\n  async fulfillOrder(): Promise<AdapterTxResult> {\n    throw new Error(\n      \"Solana fulfillment requires the order's creator remaining-accounts; use buildFulfillInstruction with explicit accounts\",\n    );\n  }\n\n  async cancelOrder(signer: SolanaSigner, orderRef: OrderRef): Promise<AdapterTxResult> {\n    const instruction = new TransactionInstruction({\n      programId: this.program,\n      keys: [\n        { pubkey: signer.publicKey, isSigner: true, isWritable: false },\n        { pubkey: new PublicKey(orderRef), isSigner: false, isWritable: true },\n      ],\n      data: Buffer.from(new BorshWriter().build(instructionDiscriminator(\"cancel_order\"))),\n    });\n    const txHash = await this.send(signer, instruction);\n    return { txHash };\n  }\n\n  async incrementCounter(signer: SolanaSigner): Promise<AdapterTxResult> {\n    const instruction = new TransactionInstruction({\n      programId: this.program,\n      keys: [\n        { pubkey: signer.publicKey, isSigner: true, isWritable: true },\n        { pubkey: counterPda(this.program, signer.publicKey), isSigner: false, isWritable: true },\n        { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },\n      ],\n      data: Buffer.from(new BorshWriter().build(instructionDiscriminator(\"increment_counter\"))),\n    });\n    const txHash = await this.send(signer, instruction);\n    return { txHash };\n  }\n\n  async getOrderDetails(orderRef: OrderRef): Promise<unknown> {\n    const info = await this.connection.getAccountInfo(new PublicKey(orderRef));\n    return info?.data ?? null;\n  }\n\n  async getCounter(address: string): Promise<bigint> {\n    const pda = counterPda(this.program, new PublicKey(address));\n    const info = await this.connection.getAccountInfo(pda);\n    if (!info || info.data.length < 16) return 0n;\n\n    return new DataView(info.data.buffer, info.data.byteOffset + 8, 8).getBigUint64(0, true);\n  }\n\n  private async send(signer: SolanaSigner, instruction: TransactionInstruction): Promise<string> {\n    const tx = new Transaction().add(instruction);\n    tx.feePayer = signer.publicKey;\n    tx.recentBlockhash = (await this.connection.getLatestBlockhash()).blockhash;\n    const signed = await signer.signTransaction(tx);\n    return this.connection.sendRawTransaction(signed.serialize());\n  }\n}\n\nfunction maybeCoords(): SolanaCoordinates | undefined {\n  try {\n    return getCoordinates(\"SOLANA\");\n  } catch {\n    return undefined;\n  }\n}\n"]}