{"version":3,"sources":["../src/provider/index.ts","../src/provider/base.ts","../src/provider/helpers.ts","../src/provider/social.ts","../src/provider/registry.ts","../src/provider/slot.ts","../src/provider/types.ts","../src/modules/registry/access.ts","../src/modules/registry/game.ts","../src/modules/registry/edition.ts","../src/modules/registry/collection-edition.ts","../src/modules/registry/index.ts","../src/modules/registry/options.ts","../src/helpers/torii.ts","../src/helpers/index.ts","../src/modules/registry/policies.ts","../src/modules/social/pin.ts","../src/modules/social/follow.ts","../src/modules/social/guild.ts","../src/modules/social/alliance.ts","../src/modules/social/member.ts","../src/modules/social/index.ts","../src/modules/social/options.ts","../src/modules/social/policies.ts","../src/modules/marketplace/index.ts","../src/modules/marketplace/moderator.ts","../src/modules/marketplace/listing.ts","../src/modules/marketplace/offer.ts","../src/modules/marketplace/sale.ts","../src/modules/marketplace/options.ts","../src/modules/marketplace/policies.ts","../src/queries/token.ts","../src/queries/metadata.ts","../src/utils/semver.ts","../src/utils/torii-version.ts"],"sourcesContent":["/**\n * Provider class for interacting with the Cartridge World contracts\n *\n * @param manifest - The manifest containing contract addresses and ABIs\n * @param url - Optional RPC URL for the provider\n */\nimport type { DojoProvider } from \"@dojoengine/core\";\nimport * as torii from \"@dojoengine/torii-client\";\nimport type {\n  Account,\n  AccountInterface,\n  AllowArray,\n  Call,\n  constants,\n  GetTransactionReceiptResponse,\n} from \"starknet\";\n\nimport { BaseProvider, type InvokeContext } from \"./base\";\n\nimport { NAMESPACE } from \"../constants\";\nimport { Social } from \"./social\";\nimport { Registry } from \"./registry\";\nimport { Slot } from \"./slot\";\nimport { TransactionType } from \"./types\";\nimport { setupWorld } from \"../bindings\";\n\nexport { TransactionType };\n\nexport class ArcadeProvider extends BaseProvider {\n  public world: ReturnType<typeof setupWorld>;\n  public social: Social;\n  public registry: Registry;\n  public slot: Slot;\n  public marketplace: ReturnType<typeof setupWorld>[\"Marketplace\"];\n\n  /**\n   * Create a new ArcadeProvider instance\n   *\n   * @param chainId - The chain ID\n   */\n  constructor(chainId: constants.StarknetChainId) {\n    super(chainId, {\n      namespace: NAMESPACE,\n      torii: { ToriiClient: torii.ToriiClient },\n    });\n\n    const dojoProvider = this as unknown as DojoProvider;\n    // The typed DojoProvider interface still expects the string index signature,\n    // so cast to avoid the mismatch while we host the runtime instance.\n    this.world = setupWorld(dojoProvider);\n    this.marketplace = this.world.Marketplace;\n    this.social = new Social(this.manifest);\n    this.registry = new Registry(this.manifest);\n    this.slot = new Slot(this.manifest);\n  }\n\n  /**\n   * Execute a transaction and emit its result\n   *\n   * @param signer - Account that will sign the transaction\n   * @param calls - Transaction call data\n   * @param entrypoint - Starknet entrypoint invoked\n   * @returns Transaction receipt\n   */\n  async invoke(\n    signer: Account | AccountInterface,\n    calls: AllowArray<Call>,\n    context?: InvokeContext,\n  ): Promise<GetTransactionReceiptResponse>;\n  async invoke(\n    signer: Account | AccountInterface,\n    calls: AllowArray<Call>,\n    entrypoint: string,\n  ): Promise<GetTransactionReceiptResponse>;\n  async invoke(\n    signer: Account | AccountInterface,\n    calls: AllowArray<Call>,\n    contextOrEntrypoint?: InvokeContext | string,\n  ): Promise<GetTransactionReceiptResponse> {\n    const context =\n      typeof contextOrEntrypoint === \"string\"\n        ? { entrypoint: contextOrEntrypoint }\n        : contextOrEntrypoint;\n\n    return super.invoke(signer, calls, context);\n  }\n}\n","import { DojoProvider } from \"@dojoengine/core\";\nimport type { ToriiClient } from \"@dojoengine/torii-client\";\nimport type {\n  Account,\n  AccountInterface,\n  AllowArray,\n  Call,\n  constants,\n  GetTransactionReceiptResponse,\n} from \"starknet\";\n\nimport { configs } from \"../configs\";\n\ntype Constructor<TArgs extends any[] = any[], TInstance = object> = new (\n  ...args: TArgs\n) => TInstance;\n\ntype ToriiClientCtor = Constructor<\n  [\n    {\n      toriiUrl: string;\n      worldAddress: string;\n    },\n  ],\n  ToriiClient\n>;\n\nexport interface BaseProviderOptions {\n  namespace: string;\n  torii: {\n    ToriiClient: ToriiClientCtor;\n  };\n}\n\ninterface InvokeContext {\n  entrypoint?: string;\n}\n\ntype WithoutIndexSignature<T> = {\n  [K in keyof T as K extends string\n    ? string extends K\n      ? never\n      : K\n    : K extends number\n      ? number extends K\n        ? never\n        : K\n      : K extends symbol\n        ? symbol extends K\n          ? never\n          : K\n        : K]: T[K];\n};\n\ntype DojoProviderInstanceLike = WithoutIndexSignature<\n  InstanceType<typeof DojoProvider>\n>;\n\ntype DojoProviderConstructorLike = new (\n  ...args: ConstructorParameters<typeof DojoProvider>\n) => DojoProviderInstanceLike;\n\nconst DojoProviderBaseCtor =\n  DojoProvider as unknown as DojoProviderConstructorLike;\n\nexport class BaseProvider extends DojoProviderBaseCtor {\n  declare manifest: DojoProviderInstanceLike[\"manifest\"] & {\n    abis: readonly Record<string, unknown>[];\n  };\n  protected readonly namespace: string;\n  protected readonly toriiCtor: ToriiClientCtor;\n\n  constructor(\n    chainId: constants.StarknetChainId,\n    { namespace, torii }: BaseProviderOptions,\n  ) {\n    const config = configs[chainId];\n\n    if (!config) {\n      throw new Error(`Missing config for chain ${chainId}`);\n    }\n\n    super(config.manifest, config.rpcUrl);\n\n    this.manifest = config.manifest;\n    this.namespace = namespace;\n    this.toriiCtor = torii.ToriiClient;\n\n    this.getWorldAddress = function () {\n      return this.manifest.world.address;\n    };\n  }\n\n  getToriiClient(toriiUrl: string): ToriiClient {\n    return new this.toriiCtor({\n      toriiUrl,\n      worldAddress: this.manifest.world.address,\n    });\n  }\n\n  protected onTransactionReverted(\n    _receipt: GetTransactionReceiptResponse,\n  ): void {}\n\n  protected onInvokeCompleted(\n    _receipt: GetTransactionReceiptResponse,\n    _context?: InvokeContext,\n  ): void {}\n\n  async process(\n    transactionHash: string,\n  ): Promise<GetTransactionReceiptResponse> {\n    let receipt: GetTransactionReceiptResponse;\n\n    try {\n      receipt = await this.provider.waitForTransaction(transactionHash, {\n        retryInterval: 500,\n      });\n    } catch (error) {\n      console.error(`Error waiting for transaction ${transactionHash}`);\n      throw error;\n    }\n\n    if (receipt.isReverted()) {\n      this.onTransactionReverted(receipt);\n      throw new Error(\n        `Transaction failed with reason: ${receipt.value.revert_reason}`,\n      );\n    }\n\n    return receipt;\n  }\n\n  async invoke(\n    signer: Account | AccountInterface,\n    calls: AllowArray<Call>,\n    context?: InvokeContext,\n  ): Promise<GetTransactionReceiptResponse> {\n    const tx = await this.execute(signer, calls, this.namespace);\n    const receipt = await this.process(tx.transaction_hash);\n    this.onInvokeCompleted(receipt, context);\n    return receipt;\n  }\n}\n\nexport type { InvokeContext };\n","/**\n * Gets a contract address from the manifest by name\n *\n * @param manifest - The manifest containing contract information\n * @param name - The name/tag of the contract to find\n * @returns The contract address\n * @throws Error if contract not found\n */\nexport const getContractByName = (manifest: any, name: string) => {\n  const contract = manifest.contracts.find(\n    (contract: any) => contract.tag === name,\n  );\n  if (!contract) {\n    throw new Error(`Contract ${name} not found in manifest`);\n  }\n  return contract.address;\n};\n","/**\n * Provider class for interacting with the Cartridge World contracts\n *\n * @param manifest - The manifest containing contract addresses and ABIs\n */\nimport { NAMESPACE } from \"../constants\";\nimport type * as SystemProps from \"./types\";\nimport { getContractByName } from \"./helpers\";\nimport type { AllowArray, Call } from \"starknet\";\n\nexport class Social {\n  private manifest: unknown;\n  private name: string;\n\n  constructor(manifest: any) {\n    this.manifest = manifest;\n    this.name = `${NAMESPACE}-Social`;\n  }\n\n  public pin(props: SystemProps.RegistryPinProps): AllowArray<Call> {\n    const { achievementId } = props;\n    const entrypoint = \"pin\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [achievementId],\n    };\n  }\n\n  public unpin(props: SystemProps.RegistryUnpinProps): AllowArray<Call> {\n    const { achievementId } = props;\n    const entrypoint = \"unpin\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [achievementId],\n    };\n  }\n\n  public follow(props: SystemProps.SocialFollowProps): AllowArray<Call> {\n    const { target } = props;\n    const entrypoint = \"follow\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [target],\n    };\n  }\n\n  public unfollow(props: SystemProps.SocialUnfollowProps): AllowArray<Call> {\n    const { target } = props;\n    const entrypoint = \"unfollow\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [target],\n    };\n  }\n\n  public create_alliance(\n    props: SystemProps.SocialCreateAllianceProps,\n  ): AllowArray<Call> {\n    const { metadata, socials } = props;\n    const entrypoint = \"create_alliance\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [metadata, socials],\n    };\n  }\n\n  public open_alliance(\n    props: SystemProps.SocialOpenAllianceProps,\n  ): AllowArray<Call> {\n    const { free } = props;\n    const entrypoint = \"open_alliance\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [free],\n    };\n  }\n\n  public close_alliance(): AllowArray<Call> {\n    const entrypoint = \"close_alliance\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [],\n    };\n  }\n\n  public crown_guild(\n    props: SystemProps.SocialCrownGuildProps,\n  ): AllowArray<Call> {\n    const { guildId } = props;\n    const entrypoint = \"crown_guild\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [guildId],\n    };\n  }\n\n  public hire_guild(props: SystemProps.SocialHireGuildProps): AllowArray<Call> {\n    const { guildId } = props;\n    const entrypoint = \"hire_guild\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [guildId],\n    };\n  }\n\n  public fire_guild(props: SystemProps.SocialFireGuildProps): AllowArray<Call> {\n    const { guildId } = props;\n    const entrypoint = \"fire_guild\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [guildId],\n    };\n  }\n\n  public request_alliance(\n    props: SystemProps.SocialRequestAllianceProps,\n  ): AllowArray<Call> {\n    const { allianceId } = props;\n    const entrypoint = \"request_alliance\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [allianceId],\n    };\n  }\n\n  public cancel_alliance(): AllowArray<Call> {\n    const entrypoint = \"cancel_alliance\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [],\n    };\n  }\n\n  public leave_alliance(): AllowArray<Call> {\n    const entrypoint = \"leave_alliance\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [],\n    };\n  }\n\n  public create_guild(\n    props: SystemProps.SocialCreateGuildProps,\n  ): AllowArray<Call> {\n    const { metadata, socials } = props;\n    const entrypoint = \"create_guild\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [metadata, socials],\n    };\n  }\n\n  public open_guild(props: SystemProps.SocialOpenGuildProps): AllowArray<Call> {\n    const { free } = props;\n    const entrypoint = \"open_guild\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [free],\n    };\n  }\n\n  public close_guild(): AllowArray<Call> {\n    const entrypoint = \"close_guild\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [],\n    };\n  }\n\n  public crown_member(\n    props: SystemProps.SocialCrownMemberProps,\n  ): AllowArray<Call> {\n    const { memberId } = props;\n    const entrypoint = \"crown_member\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [memberId],\n    };\n  }\n\n  public promote_member(\n    props: SystemProps.SocialPromoteMemberProps,\n  ): AllowArray<Call> {\n    const { memberId } = props;\n    const entrypoint = \"promote_member\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [memberId],\n    };\n  }\n\n  public demote_member(\n    props: SystemProps.SocialDemoteMemberProps,\n  ): AllowArray<Call> {\n    const { memberId } = props;\n    const entrypoint = \"demote_member\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [memberId],\n    };\n  }\n\n  public hire_member(\n    props: SystemProps.SocialHireMemberProps,\n  ): AllowArray<Call> {\n    const { memberId } = props;\n    const entrypoint = \"hire_member\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [memberId],\n    };\n  }\n\n  public fire_member(\n    props: SystemProps.SocialFireMemberProps,\n  ): AllowArray<Call> {\n    const { memberId } = props;\n    const entrypoint = \"fire_member\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [memberId],\n    };\n  }\n\n  public request_guild(\n    props: SystemProps.SocialRequestGuildProps,\n  ): AllowArray<Call> {\n    const { guildId } = props;\n    const entrypoint = \"request_guild\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [guildId],\n    };\n  }\n\n  public cancel_guild(): AllowArray<Call> {\n    const entrypoint = \"cancel_guild\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [],\n    };\n  }\n\n  public leave_guild(): AllowArray<Call> {\n    const entrypoint = \"leave_guild\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [],\n    };\n  }\n}\n","/**\n * Provider class for interacting with the Cartridge World contracts\n *\n * @param manifest - The manifest containing contract addresses and ABIs\n * @param url - Optional RPC URL for the provider\n */\nimport { NAMESPACE } from \"../constants\";\nimport type * as SystemProps from \"./types\";\nimport { getContractByName } from \"./helpers\";\nimport type { AllowArray, Call } from \"starknet\";\n\nexport class Registry {\n  private manifest: any;\n  private name: string;\n\n  constructor(manifest: any) {\n    this.manifest = manifest;\n    this.name = `${NAMESPACE}-Registry`;\n  }\n\n  public register_game(\n    props: SystemProps.RegistryRegisterGameProps,\n  ): AllowArray<Call> {\n    const {\n      worldAddress,\n      namespace,\n      project,\n      rpc,\n      policies,\n      color,\n      game_image,\n      edition_image,\n      external_url,\n      description,\n      game_name,\n      edition_name,\n      game_attributes,\n      edition_attributes,\n      animation_url,\n      youtube_url,\n      properties,\n      game_socials,\n      edition_socials,\n    } = props;\n    const entrypoint = \"register_game\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [\n        worldAddress,\n        namespace,\n        project,\n        rpc,\n        policies,\n        color,\n        game_image,\n        edition_image,\n        external_url,\n        description,\n        game_name,\n        edition_name,\n        game_attributes,\n        edition_attributes,\n        animation_url,\n        youtube_url,\n        properties,\n        game_socials,\n        edition_socials,\n      ],\n    };\n  }\n\n  public update_game(\n    props: SystemProps.RegistryUpdateGameProps,\n  ): AllowArray<Call> {\n    const {\n      gameId,\n      color,\n      image,\n      image_data,\n      external_url,\n      description,\n      name,\n      attributes,\n      animation_url,\n      youtube_url,\n      properties,\n      socials,\n    } = props;\n    const entrypoint = \"update_game\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [\n        gameId,\n        color,\n        image,\n        image_data,\n        external_url,\n        description,\n        name,\n        attributes,\n        animation_url,\n        youtube_url,\n        properties,\n        socials,\n      ],\n    };\n  }\n\n  public publish_game(\n    props: SystemProps.RegistryPublishGameProps,\n  ): AllowArray<Call> {\n    const { gameId } = props;\n    const entrypoint = \"publish_game\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [gameId],\n    };\n  }\n\n  public hide_game(props: SystemProps.RegistryHideGameProps): AllowArray<Call> {\n    const { gameId } = props;\n    const entrypoint = \"hide_game\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [gameId],\n    };\n  }\n\n  public whitelist_game(\n    props: SystemProps.RegistryWhitelistGameProps,\n  ): AllowArray<Call> {\n    const { gameId } = props;\n    const entrypoint = \"whitelist_game\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [gameId],\n    };\n  }\n\n  public blacklist_game(\n    props: SystemProps.RegistryBlacklistGameProps,\n  ): AllowArray<Call> {\n    const { gameId } = props;\n    const entrypoint = \"blacklist_game\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [gameId],\n    };\n  }\n\n  public remove_game(\n    props: SystemProps.RegistryRemoveGameProps,\n  ): AllowArray<Call> {\n    const { gameId } = props;\n    const entrypoint = \"remove_game\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [gameId],\n    };\n  }\n\n  public register_edition(\n    props: SystemProps.RegistryRegisterEditionProps,\n  ): AllowArray<Call> {\n    const {\n      worldAddress,\n      namespace,\n      gameId,\n      project,\n      rpc,\n      policies,\n      color,\n      image,\n      image_data,\n      external_url,\n      description,\n      name,\n      attributes,\n      animation_url,\n      youtube_url,\n      properties,\n      socials,\n    } = props;\n    const entrypoint = \"register_edition\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [\n        worldAddress,\n        namespace,\n        gameId,\n        project,\n        rpc,\n        policies,\n        color,\n        image,\n        image_data,\n        external_url,\n        description,\n        name,\n        attributes,\n        animation_url,\n        youtube_url,\n        properties,\n        socials,\n      ],\n    };\n  }\n\n  public update_edition(\n    props: SystemProps.RegistryUpdateEditionProps,\n  ): AllowArray<Call> {\n    const {\n      editionId,\n      project,\n      rpc,\n      policies,\n      color,\n      image,\n      image_data,\n      external_url,\n      description,\n      name,\n      attributes,\n      animation_url,\n      youtube_url,\n      properties,\n      socials,\n    } = props;\n    const entrypoint = \"update_edition\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [\n        editionId,\n        project,\n        rpc,\n        policies,\n        color,\n        image,\n        image_data,\n        external_url,\n        description,\n        name,\n        attributes,\n        animation_url,\n        youtube_url,\n        properties,\n        socials,\n      ],\n    };\n  }\n\n  public prioritize_edition(\n    props: SystemProps.RegistryPrioritizeEditionProps,\n  ): AllowArray<Call> {\n    const { editionId, priority } = props;\n    const entrypoint = \"prioritize_edition\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [editionId, priority],\n    };\n  }\n\n  public publish_edition(\n    props: SystemProps.RegistryPublishEditionProps,\n  ): AllowArray<Call> {\n    const { editionId } = props;\n    const entrypoint = \"publish_edition\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [editionId],\n    };\n  }\n\n  public hide_edition(\n    props: SystemProps.RegistryHideEditionProps,\n  ): AllowArray<Call> {\n    const { editionId } = props;\n    const entrypoint = \"hide_edition\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [editionId],\n    };\n  }\n\n  public whitelist_edition(\n    props: SystemProps.RegistryWhitelistEditionProps,\n  ): AllowArray<Call> {\n    const { editionId } = props;\n    const entrypoint = \"whitelist_edition\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [editionId],\n    };\n  }\n\n  public blacklist_edition(\n    props: SystemProps.RegistryBlacklistEditionProps,\n  ): AllowArray<Call> {\n    const { editionId } = props;\n    const entrypoint = \"blacklist_edition\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [editionId],\n    };\n  }\n\n  public remove_edition(\n    props: SystemProps.RegistryRemoveEditionProps,\n  ): AllowArray<Call> {\n    const { editionId } = props;\n    const entrypoint = \"remove_edition\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [editionId],\n    };\n  }\n}\n","/**\n * Provider class for interacting with the Cartridge World contracts\n *\n * @param manifest - The manifest containing contract addresses and ABIs\n */\nimport { NAMESPACE } from \"../constants\";\nimport type * as SystemProps from \"./types\";\nimport { getContractByName } from \"./helpers\";\nimport type { AllowArray, Call } from \"starknet\";\n\nexport class Slot {\n  private manifest: any;\n  private name: string;\n\n  constructor(manifest: any) {\n    this.manifest = manifest;\n    this.name = `${NAMESPACE}-Slot`;\n  }\n\n  public deploy(props: SystemProps.SlotDeployProps): AllowArray<Call> {\n    const { service, project, tier } = props;\n    const entrypoint = \"deploy\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [service, project, tier],\n    };\n  }\n\n  public remove(props: SystemProps.SlotRemoveProps): AllowArray<Call> {\n    const { service, project } = props;\n    const entrypoint = \"remove\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [service, project],\n    };\n  }\n\n  public hire(props: SystemProps.SlotHireProps): AllowArray<Call> {\n    const { project, accountId, role } = props;\n    const entrypoint = \"hire\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [project, accountId, role],\n    };\n  }\n\n  public fire(props: SystemProps.SlotFireProps): AllowArray<Call> {\n    const { project, accountId } = props;\n    const entrypoint = \"fire\";\n\n    return {\n      contractAddress: getContractByName(this.manifest, this.name),\n      entrypoint,\n      calldata: [project, accountId],\n    };\n  }\n}\n","import type { BigNumberish, ByteArray } from \"starknet\";\n\nexport enum TransactionType {\n  // Social\n  FOLLOW = \"follow\",\n  UNFOLLOW = \"unfollow\",\n  CREATE_ALLIANCE = \"create_alliance\",\n  OPEN_ALLIANCE = \"open_alliance\",\n  CLOSE_ALLIANCE = \"close_alliance\",\n  CROWN_GUILD = \"crown_guild\",\n  HIRE_GUILD = \"hire_guild\",\n  FIRE_GUILD = \"fire_guild\",\n  REQUEST_ALLIANCE = \"request_alliance\",\n  CANCEL_ALLIANCE = \"cancel_alliance\",\n  LEAVE_ALLIANCE = \"leave_alliance\",\n  CREATE_GUILD = \"create_guild\",\n  OPEN_GUILD = \"open_guild\",\n  CLOSE_GUILD = \"close_guild\",\n  CROWN_MEMBER = \"crown_member\",\n  PROMOTE_MEMBER = \"promote_member\",\n  DEMOTE_MEMBER = \"demote_member\",\n  HIRE_MEMBER = \"hire_member\",\n  FIRE_MEMBER = \"fire_member\",\n  REQUEST_GUILD = \"request_guild\",\n  CANCEL_GUILD = \"cancel_guild\",\n  LEAVE_GUILD = \"leave_guild\",\n\n  // Registry\n  PIN = \"pin\",\n  UNPIN = \"unpin\",\n  REGISTER_GAME = \"register_game\",\n  UPDATE_GAME = \"update_game\",\n  PUBLISH_GAME = \"publish_game\",\n  HIDE_GAME = \"hide_game\",\n  WHITELIST_GAME = \"whitelist_game\",\n  BLACKLIST_GAME = \"blacklist_game\",\n  REMOVE_GAME = \"remove_game\",\n  REGISTER_EDITION = \"register_edition\",\n  UPDATE_EDITION = \"update_edition\",\n  PRIORITIZE_EDITION = \"prioritize_edition\",\n  PUBLISH_EDITION = \"publish_edition\",\n  HIDE_EDITION = \"hide_edition\",\n  WHITELIST_EDITION = \"whitelist_edition\",\n  BLACKLIST_EDITION = \"blacklist_edition\",\n  REMOVE_EDITION = \"remove_edition\",\n\n  // Slot transactions\n  DEPLOY = \"deploy\",\n  REMOVE = \"remove\",\n  HIRE = \"hire\",\n  FIRE = \"fire\",\n}\n\nexport interface SocialFollowProps {\n  target: BigNumberish;\n}\n\nexport interface SocialUnfollowProps {\n  target: BigNumberish;\n}\n\nexport interface SocialCreateAllianceProps {\n  metadata: ByteArray;\n  socials: ByteArray;\n}\n\nexport interface SocialOpenAllianceProps {\n  free: boolean;\n}\n\nexport type SocialCloseAllianceProps = Record<string, never>;\n\nexport interface SocialCrownGuildProps {\n  guildId: BigNumberish;\n}\n\nexport interface SocialHireGuildProps {\n  guildId: BigNumberish;\n}\n\nexport interface SocialFireGuildProps {\n  guildId: BigNumberish;\n}\n\nexport interface SocialRequestAllianceProps {\n  allianceId: BigNumberish;\n}\n\nexport type SocialCancelAllianceProps = Record<string, never>;\n\nexport type SocialLeaveAllianceProps = Record<string, never>;\n\nexport interface SocialCreateGuildProps {\n  metadata: ByteArray;\n  socials: ByteArray;\n}\n\nexport interface SocialOpenGuildProps {\n  free: boolean;\n}\n\nexport type SocialCloseGuildProps = Record<string, never>;\n\nexport interface SocialCrownMemberProps {\n  memberId: BigNumberish;\n}\n\nexport interface SocialPromoteMemberProps {\n  memberId: BigNumberish;\n}\n\nexport interface SocialDemoteMemberProps {\n  memberId: BigNumberish;\n}\n\nexport interface SocialHireMemberProps {\n  memberId: BigNumberish;\n}\n\nexport interface SocialFireMemberProps {\n  memberId: BigNumberish;\n}\n\nexport interface SocialRequestGuildProps {\n  guildId: BigNumberish;\n}\n\nexport type SocialCancelGuildProps = Record<string, never>;\n\nexport type SocialLeaveGuildProps = Record<string, never>;\n\nexport interface RegistryPinProps {\n  achievementId: BigNumberish;\n}\n\nexport interface RegistryUnpinProps {\n  achievementId: BigNumberish;\n}\n\nexport interface RegistryRegisterGameProps {\n  worldAddress: BigNumberish;\n  namespace: BigNumberish;\n  project: ByteArray;\n  rpc: ByteArray;\n  policies: ByteArray;\n  color: ByteArray;\n  game_image: ByteArray;\n  edition_image: ByteArray;\n  external_url: ByteArray;\n  description: ByteArray;\n  game_name: ByteArray;\n  edition_name: ByteArray;\n  game_attributes: ByteArray;\n  edition_attributes: ByteArray;\n  animation_url: ByteArray;\n  youtube_url: ByteArray;\n  properties: ByteArray;\n  game_socials: ByteArray;\n  edition_socials: ByteArray;\n}\n\nexport interface RegistryUpdateGameProps {\n  gameId: BigNumberish;\n  color: ByteArray;\n  image: ByteArray;\n  image_data: ByteArray;\n  external_url: ByteArray;\n  description: ByteArray;\n  name: ByteArray;\n  attributes: ByteArray;\n  animation_url: ByteArray;\n  youtube_url: ByteArray;\n  properties: ByteArray;\n  socials: ByteArray;\n}\n\nexport interface RegistryPublishGameProps {\n  gameId: BigNumberish;\n}\n\nexport interface RegistryHideGameProps {\n  gameId: BigNumberish;\n}\n\nexport interface RegistryWhitelistGameProps {\n  gameId: BigNumberish;\n}\n\nexport interface RegistryBlacklistGameProps {\n  gameId: BigNumberish;\n}\n\nexport interface RegistryRemoveGameProps {\n  gameId: BigNumberish;\n}\n\nexport interface RegistryRegisterEditionProps {\n  worldAddress: BigNumberish;\n  namespace: BigNumberish;\n  gameId: BigNumberish;\n  project: ByteArray;\n  rpc: ByteArray;\n  policies: ByteArray;\n  color: ByteArray;\n  image: ByteArray;\n  image_data: ByteArray;\n  external_url: ByteArray;\n  description: ByteArray;\n  name: ByteArray;\n  attributes: ByteArray;\n  animation_url: ByteArray;\n  youtube_url: ByteArray;\n  properties: ByteArray;\n  socials: ByteArray;\n}\n\nexport interface RegistryUpdateEditionProps {\n  editionId: BigNumberish;\n  project: ByteArray;\n  rpc: ByteArray;\n  policies: ByteArray;\n  color: ByteArray;\n  image: ByteArray;\n  image_data: ByteArray;\n  external_url: ByteArray;\n  description: ByteArray;\n  name: ByteArray;\n  attributes: ByteArray;\n  animation_url: ByteArray;\n  youtube_url: ByteArray;\n  properties: ByteArray;\n  socials: ByteArray;\n}\n\nexport interface RegistryPrioritizeEditionProps {\n  editionId: BigNumberish;\n  priority: BigNumberish;\n}\n\nexport interface RegistryPublishEditionProps {\n  editionId: BigNumberish;\n}\n\nexport interface RegistryHideEditionProps {\n  editionId: BigNumberish;\n}\n\nexport interface RegistryWhitelistEditionProps {\n  editionId: BigNumberish;\n}\n\nexport interface RegistryBlacklistEditionProps {\n  editionId: BigNumberish;\n}\n\nexport interface RegistryRemoveEditionProps {\n  editionId: BigNumberish;\n}\n\nexport interface SlotDeployProps {\n  service: BigNumberish;\n  project: BigNumberish;\n  tier: BigNumberish;\n}\n\nexport interface SlotRemoveProps {\n  service: BigNumberish;\n  project: BigNumberish;\n}\n\nexport interface SlotHireProps {\n  project: BigNumberish;\n  accountId: BigNumberish;\n  role: BigNumberish;\n}\n\nexport interface SlotFireProps {\n  project: BigNumberish;\n  accountId: BigNumberish;\n}\n","import { NAMESPACE } from \"../../constants\";\nimport { getChecksumAddress } from \"starknet\";\nimport type { SchemaType } from \"../../bindings\";\nimport { MemberClause, type ParsedEntity } from \"@dojoengine/sdk\";\nimport { Role, RoleType } from \"../../classes\";\n\nconst MODEL_NAME = \"Access\";\n\nexport class AccessModel {\n  type = MODEL_NAME;\n\n  constructor(\n    public identifier: string,\n    public address: string,\n    public role: Role,\n  ) {\n    this.identifier = identifier;\n    this.address = address;\n    this.role = role;\n  }\n\n  static from(identifier: string, model: any) {\n    if (!model) return AccessModel.default(identifier);\n    const address = getChecksumAddress(model.address);\n    const role = Role.from(model.role);\n    return new AccessModel(identifier, address, role);\n  }\n\n  static default(identifier: string) {\n    return new AccessModel(identifier, \"0x0\", new Role(RoleType.None));\n  }\n\n  static isType(model: AccessModel) {\n    return model.type === MODEL_NAME;\n  }\n\n  exists() {\n    return this.role.value !== RoleType.None;\n  }\n\n  clone(): AccessModel {\n    return new AccessModel(this.identifier, this.address, this.role);\n  }\n}\n\nexport const Access = {\n  parse: (entity: ParsedEntity<SchemaType>) => {\n    return AccessModel.from(\n      entity.entityId,\n      entity.models[NAMESPACE]?.[MODEL_NAME],\n    );\n  },\n\n  getModelName: () => {\n    return MODEL_NAME;\n  },\n\n  getClause: () => {\n    return MemberClause(\n      `${NAMESPACE}-${Access.getModelName()}`,\n      \"world_address\",\n      \"Neq\",\n      \"0x0\",\n    );\n  },\n\n  getMethods: () => [],\n};\n","import { NAMESPACE } from \"../../constants\";\nimport type { SchemaType } from \"../../bindings\";\nimport { MemberClause, type ParsedEntity } from \"@dojoengine/sdk\";\nimport { Attributes, Properties, Socials } from \"../../classes\";\n\nconst MODEL_NAME = \"Game\";\n\nexport class GameModel {\n  type = MODEL_NAME;\n\n  constructor(\n    public identifier: string,\n    public id: number,\n    public published: boolean,\n    public whitelisted: boolean,\n    public color: string,\n    public image: string,\n    public image_data: string,\n    public external_url: string,\n    public description: string,\n    public name: string,\n    public animation_url: string,\n    public youtube_url: string,\n    public attributes: Attributes,\n    public properties: Properties,\n    public socials: Socials,\n  ) {\n    this.identifier = identifier;\n    this.id = id;\n    this.published = published;\n    this.whitelisted = whitelisted;\n    this.color = color;\n    this.image = image;\n    this.image_data = image_data;\n    this.external_url = external_url;\n    this.description = description;\n    this.name = name;\n    this.animation_url = animation_url;\n    this.youtube_url = youtube_url;\n    this.attributes = attributes;\n    this.properties = properties;\n    this.socials = socials;\n  }\n\n  static from(identifier: string, model: any) {\n    if (!model) return GameModel.default(identifier);\n    const id = Number(model.id);\n    const published = !!model.published;\n    const whitelisted = !!model.whitelisted;\n    const color = model.color;\n    const image = model.image;\n    const image_data = model.image_data;\n    const external_url = model.external_url;\n    const description = model.description;\n    const name = model.name;\n    const animation_url = model.animation_url;\n    const youtube_url = model.youtube_url;\n    const attributes = Attributes.from(model.attributes);\n    const properties = Properties.from(model.properties);\n    const socials = Socials.from(model.socials);\n    return new GameModel(\n      identifier,\n      id,\n      published,\n      whitelisted,\n      color,\n      image,\n      image_data,\n      external_url,\n      description,\n      name,\n      animation_url,\n      youtube_url,\n      attributes,\n      properties,\n      socials,\n    );\n  }\n\n  static default(identifier: string) {\n    return new GameModel(\n      identifier,\n      0,\n      false,\n      false,\n      \"\",\n      \"\",\n      \"\",\n      \"\",\n      \"\",\n      \"\",\n      \"\",\n      \"\",\n      Attributes.default(),\n      Properties.default(),\n      Socials.default(),\n    );\n  }\n\n  static isType(model: GameModel) {\n    return model.type === MODEL_NAME;\n  }\n\n  exists() {\n    return this.name !== \"\";\n  }\n\n  clone(): GameModel {\n    return new GameModel(\n      this.identifier,\n      this.id,\n      this.published,\n      this.whitelisted,\n      this.color,\n      this.image,\n      this.image_data,\n      this.external_url,\n      this.description,\n      this.name,\n      this.animation_url,\n      this.youtube_url,\n      this.attributes.clone(),\n      this.properties.clone(),\n      this.socials.clone(),\n    );\n  }\n}\n\nexport const Game = {\n  parse: (entity: ParsedEntity<SchemaType>) => {\n    return GameModel.from(\n      entity.entityId,\n      entity.models[NAMESPACE]?.[MODEL_NAME],\n    );\n  },\n\n  getModelName: () => {\n    return MODEL_NAME;\n  },\n\n  getClause: () => {\n    return MemberClause(\n      `${NAMESPACE}-${Game.getModelName()}`,\n      \"name\",\n      \"Neq\",\n      \"\",\n    );\n  },\n\n  getMethods: () => [\n    {\n      name: \"register_game\",\n      entrypoint: \"register_game\",\n      description: \"Register a game.\",\n    },\n    {\n      name: \"update_game\",\n      entrypoint: \"update_game\",\n      description: \"Update a game.\",\n    },\n    {\n      name: \"publish_game\",\n      entrypoint: \"publish_game\",\n      description: \"Publish a game.\",\n    },\n    { name: \"hide_game\", entrypoint: \"hide_game\", description: \"Hide a game.\" },\n    {\n      name: \"whitelist_game\",\n      entrypoint: \"whitelist_game\",\n      description: \"Whitelist a game.\",\n    },\n    {\n      name: \"blacklist_game\",\n      entrypoint: \"blacklist_game\",\n      description: \"Blacklist a game.\",\n    },\n    {\n      name: \"remove_game\",\n      entrypoint: \"remove_game\",\n      description: \"Remove a game.\",\n    },\n  ],\n};\n","import { NAMESPACE } from \"../../constants\";\nimport { shortString, getChecksumAddress } from \"starknet\";\nimport type { SchemaType } from \"../../bindings\";\nimport { MemberClause, type ParsedEntity } from \"@dojoengine/sdk\";\nimport { Config } from \"../../classes/config\";\nimport { Attributes, Properties, Socials } from \"../../classes\";\n\nconst MODEL_NAME = \"Edition\";\n\nexport class EditionModel {\n  type = MODEL_NAME;\n\n  constructor(\n    public identifier: string,\n    public id: number,\n    public worldAddress: string,\n    public namespace: string,\n    public published: boolean,\n    public whitelisted: boolean,\n    public priority: number,\n    public gameId: number,\n    public config: Config,\n    public color: string,\n    public image: string,\n    public image_data: string,\n    public external_url: string,\n    public description: string,\n    public name: string,\n    public animation_url: string,\n    public youtube_url: string,\n    public attributes: Attributes,\n    public properties: Properties,\n    public socials: Socials,\n    public certified?: boolean,\n  ) {\n    this.identifier = identifier;\n    this.id = id;\n    this.worldAddress = worldAddress;\n    this.namespace = namespace;\n    this.published = published;\n    this.whitelisted = whitelisted;\n    this.priority = priority;\n    this.gameId = gameId;\n    this.config = config;\n    this.color = color;\n    this.image = image;\n    this.image_data = image_data;\n    this.external_url = external_url;\n    this.description = description;\n    this.name = name;\n    this.animation_url = animation_url;\n    this.youtube_url = youtube_url;\n    this.attributes = attributes;\n    this.properties = properties;\n    this.socials = socials;\n    this.certified = !!certified;\n  }\n\n  static from(identifier: string, model: any) {\n    if (!model) return EditionModel.default(identifier);\n    const id = Number(model.id);\n    const worldAddress = getChecksumAddress(model.world_address);\n    const namespace = shortString.decodeShortString(\n      `0x${BigInt(model.namespace).toString(16)}`,\n    );\n    const published = !!model.published;\n    const whitelisted = !!model.whitelisted;\n    const priority = Number(model.priority);\n    const gameId = Number(model.game_id);\n    const config = Config.from(\n      model.config.replace('\"{', \"{\").replace('}\"', \"}\"),\n    );\n    const color = model.color;\n    const image = model.image;\n    const image_data = model.image_data;\n    const external_url = model.external_url;\n    const description = model.description;\n    const name = model.name;\n    const animation_url = model.animation_url;\n    const youtube_url = model.youtube_url;\n    const attributes = Attributes.from(model.attributes);\n    const properties = Properties.from(model.properties);\n    const socials = Socials.from(model.socials);\n    return new EditionModel(\n      identifier,\n      id,\n      worldAddress,\n      namespace,\n      published,\n      whitelisted,\n      priority,\n      gameId,\n      config,\n      color,\n      image,\n      image_data,\n      external_url,\n      description,\n      name,\n      animation_url,\n      youtube_url,\n      attributes,\n      properties,\n      socials,\n    );\n  }\n\n  static default(identifier: string) {\n    return new EditionModel(\n      identifier,\n      0,\n      \"0x0\",\n      \"\",\n      false,\n      false,\n      0,\n      0,\n      Config.default(),\n      \"\",\n      \"\",\n      \"\",\n      \"\",\n      \"\",\n      \"\",\n      \"\",\n      \"\",\n      Attributes.default(),\n      Properties.default(),\n      Socials.default(),\n    );\n  }\n\n  static isType(model: EditionModel) {\n    return model.type === MODEL_NAME;\n  }\n\n  exists() {\n    return this.worldAddress !== \"0x0\";\n  }\n\n  clone(): EditionModel {\n    return new EditionModel(\n      this.identifier,\n      this.id,\n      this.worldAddress,\n      this.namespace,\n      this.published,\n      this.whitelisted,\n      this.priority,\n      this.gameId,\n      this.config,\n      this.color,\n      this.image,\n      this.image_data,\n      this.external_url,\n      this.description,\n      this.name,\n      this.animation_url,\n      this.youtube_url,\n      this.attributes.clone(),\n      this.properties.clone(),\n      this.socials.clone(),\n      this.certified,\n    );\n  }\n}\n\nexport const Edition = {\n  parse: (entity: ParsedEntity<SchemaType>) => {\n    return EditionModel.from(\n      entity.entityId,\n      entity.models[NAMESPACE]?.[MODEL_NAME],\n    );\n  },\n\n  getModelName: () => {\n    return MODEL_NAME;\n  },\n\n  getClause: () => {\n    return MemberClause(\n      `${NAMESPACE}-${Edition.getModelName()}`,\n      \"world_address\",\n      \"Neq\",\n      \"0x0\",\n    );\n  },\n\n  getMethods: () => [\n    {\n      name: \"register_edition\",\n      entrypoint: \"register_edition\",\n      description: \"Register an edition.\",\n    },\n    {\n      name: \"update_edition\",\n      entrypoint: \"update_edition\",\n      description: \"Update edition.\",\n    },\n    {\n      name: \"prioritize_edition\",\n      entrypoint: \"prioritize_edition\",\n      description: \"Set edition priority.\",\n    },\n    {\n      name: \"publish_edition\",\n      entrypoint: \"publish_edition\",\n      description: \"Publish edition.\",\n    },\n    {\n      name: \"hide_edition\",\n      entrypoint: \"hide_edition\",\n      description: \"Hide edition.\",\n    },\n    {\n      name: \"whitelist_edition\",\n      entrypoint: \"whitelist_edition\",\n      description: \"Whitelist edition.\",\n    },\n    {\n      name: \"blacklist_edition\",\n      entrypoint: \"blacklist_edition\",\n      description: \"Blacklist edition.\",\n    },\n    {\n      name: \"remove_edition\",\n      entrypoint: \"remove_edition\",\n      description: \"Remove edition.\",\n    },\n  ],\n};\n","import { NAMESPACE } from \"../../constants\";\nimport { getChecksumAddress } from \"starknet\";\nimport type { SchemaType } from \"../../bindings\";\nimport { MemberClause, type ParsedEntity } from \"@dojoengine/sdk\";\n\nconst MODEL_NAME = \"CollectionEdition\";\n\nexport class CollectionEditionModel {\n  type = MODEL_NAME;\n\n  constructor(\n    public identifier: string,\n    public collection: string,\n    public edition: string,\n    public active: boolean,\n  ) {\n    this.identifier = identifier;\n    this.collection = collection;\n    this.edition = edition;\n    this.active = !!active;\n  }\n\n  static from(identifier: string, model: any) {\n    if (!model) return CollectionEditionModel.default(identifier);\n    const collection = getChecksumAddress(model.collection);\n    const edition = getChecksumAddress(model.edition);\n    const active = !!model.active;\n    return new CollectionEditionModel(identifier, collection, edition, active);\n  }\n\n  static default(identifier: string) {\n    return new CollectionEditionModel(identifier, \"0x0\", \"0x0\", false);\n  }\n\n  static isType(model: CollectionEditionModel) {\n    return model.type === MODEL_NAME;\n  }\n\n  exists() {\n    return this.active;\n  }\n\n  clone(): CollectionEditionModel {\n    return new CollectionEditionModel(\n      this.identifier,\n      this.collection,\n      this.edition,\n      this.active,\n    );\n  }\n}\n\nexport const CollectionEdition = {\n  parse: (entity: ParsedEntity<SchemaType>) => {\n    return CollectionEditionModel.from(\n      entity.entityId,\n      entity.models[NAMESPACE]?.[MODEL_NAME],\n    );\n  },\n\n  getModelName: () => {\n    return MODEL_NAME;\n  },\n\n  getClause: () => {\n    return MemberClause(\n      `${NAMESPACE}-${CollectionEdition.getModelName()}`,\n      \"collection\",\n      \"Neq\",\n      \"0x0\",\n    );\n  },\n\n  getMethods: () => [],\n};\n","import { initArcadeSDK } from \"..\";\nimport type { constants } from \"starknet\";\nimport { Access, AccessModel } from \"./access\";\nimport { Game, GameModel } from \"./game\";\nimport { Edition, EditionModel } from \"./edition\";\nimport {\n  CollectionEdition,\n  CollectionEditionModel,\n} from \"./collection-edition\";\nimport {\n  ClauseBuilder,\n  type ParsedEntity,\n  type SDK,\n  type StandardizedQueryResult,\n  type SubscriptionCallbackArgs,\n  ToriiQueryBuilder,\n  type ToriiResponse,\n} from \"@dojoengine/sdk\";\nimport type { SchemaType } from \"../../bindings\";\nimport { NAMESPACE } from \"../../constants\";\nimport { RegistryOptions, DefaultRegistryOptions } from \"./options\";\nimport { Helpers } from \"../../helpers\";\n\nexport * from \"./policies\";\nexport {\n  AccessModel,\n  GameModel,\n  EditionModel,\n  CollectionEditionModel,\n  RegistryOptions,\n};\nexport type RegistryModel =\n  | AccessModel\n  | GameModel\n  | EditionModel\n  | CollectionEditionModel;\n\nconst ENTITIES_LIMIT = 10_000;\n\nexport const Registry = {\n  sdk: undefined as SDK<SchemaType> | undefined,\n  unsubEntities: undefined as (() => void) | undefined,\n\n  init: async (chainId: constants.StarknetChainId) => {\n    Registry.sdk = await initArcadeSDK(chainId);\n  },\n\n  isEntityQueryable(options: RegistryOptions) {\n    return (\n      options.game ||\n      options.edition ||\n      options.access ||\n      options.collectionEdition\n    );\n  },\n\n  getEntityQuery: (_options: RegistryOptions = DefaultRegistryOptions) => {\n    const keys: `${string}-${string}`[] = [];\n    // if (options.access) keys.push(`${NAMESPACE}-${Access.getModelName()}`);\n    // if (options.game) keys.push(`${NAMESPACE}-${Game.getModelName()}`);\n    // if (options.edition) keys.push(`${NAMESPACE}-${Edition.getModelName()}`);\n    // if (options.collectionEdition)\n    //   keys.push(`${NAMESPACE}-${CollectionEdition.getModelName()}`);\n    const clauses = new ClauseBuilder().keys(keys, []);\n    return new ToriiQueryBuilder<SchemaType>()\n      .withClause(clauses.build())\n      .withEntityModels(keys)\n      .includeHashedKeys()\n      .withLimit(ENTITIES_LIMIT);\n  },\n\n  fetchEntities: async (\n    callback: (models: RegistryModel[]) => void,\n    options: RegistryOptions,\n  ) => {\n    if (!Registry.sdk) return;\n\n    const wrappedCallback = async (entities?: ToriiResponse<SchemaType>) => {\n      if (!entities) return;\n      const models: RegistryModel[] = [];\n      const items = entities?.getItems();\n      await Promise.all(\n        items.map(async (entity: ParsedEntity<SchemaType>) => {\n          if (entity.models[NAMESPACE][Access.getModelName()]) {\n            models.push(Access.parse(entity as any));\n          }\n          if (entity.models[NAMESPACE][Game.getModelName()]) {\n            const game = Game.parse(entity as any);\n            game.image = await Helpers.getImage(\n              game.image,\n              game.properties.preset,\n            );\n            models.push(game);\n          }\n          if (entity.models[NAMESPACE][Edition.getModelName()]) {\n            models.push(Edition.parse(entity as any));\n          }\n          if (entity.models[NAMESPACE][CollectionEdition.getModelName()]) {\n            models.push(CollectionEdition.parse(entity as any));\n          }\n          return entity;\n        }),\n      );\n      callback(models);\n    };\n    const query = Registry.getEntityQuery(options);\n    try {\n      const entities = await Registry.sdk.getEntities({ query });\n      await wrappedCallback(entities);\n    } catch (error) {\n      console.error(\"Error fetching entities:\", error);\n    }\n  },\n\n  subEntities: async (\n    callback: (models: RegistryModel[]) => void,\n    options: RegistryOptions,\n  ) => {\n    if (!Registry.sdk) return;\n    const wrappedCallback = ({\n      data,\n      error,\n    }: SubscriptionCallbackArgs<\n      StandardizedQueryResult<SchemaType>,\n      Error\n    >) => {\n      if (error) {\n        console.error(\"Error subscribing to entities:\", error);\n        return;\n      }\n      if (!data || data.length === 0 || BigInt(data[0].entityId) === 0n) return;\n      const entity = data[0];\n      const eraseable = !entity.models[NAMESPACE];\n      if (!!entity.models[NAMESPACE]?.[Access.getModelName()] || eraseable) {\n        const access = Access.parse(entity as any);\n        callback([access]);\n      }\n      if (!!entity.models[NAMESPACE]?.[Game.getModelName()] || eraseable) {\n        const game = Game.parse(entity as any);\n        callback([game]);\n      }\n      if (!!entity.models[NAMESPACE]?.[Edition.getModelName()] || eraseable) {\n        const edition = Edition.parse(entity as any);\n        callback([edition]);\n      }\n      if (\n        !!entity.models[NAMESPACE]?.[CollectionEdition.getModelName()] ||\n        eraseable\n      ) {\n        const collectionEdition = CollectionEdition.parse(entity as any);\n        callback([collectionEdition]);\n      }\n    };\n\n    const query = Registry.getEntityQuery(options);\n    const [_, subscription] = await Registry.sdk.subscribeEntityQuery({\n      query,\n      callback: wrappedCallback,\n    });\n    Registry.unsubEntities = () => subscription.cancel();\n  },\n\n  fetch: async (\n    callback: (models: RegistryModel[]) => void,\n    options: RegistryOptions = DefaultRegistryOptions,\n  ) => {\n    if (!Registry.sdk) {\n      throw new Error(\"SDK not initialized\");\n    }\n    if (Registry.isEntityQueryable(options)) {\n      await Registry.fetchEntities(callback, options);\n    }\n  },\n\n  sub: async (\n    callback: (models: RegistryModel[]) => void,\n    options: RegistryOptions = DefaultRegistryOptions,\n  ) => {\n    if (!Registry.sdk) {\n      throw new Error(\"SDK not initialized\");\n    }\n    if (Registry.isEntityQueryable(options)) {\n      await Registry.subEntities(callback, options);\n    }\n  },\n\n  unsub: () => {\n    if (Registry.unsubEntities) {\n      Registry.unsubEntities();\n      Registry.unsubEntities = undefined;\n    }\n  },\n};\n","export type RegistryOptions = {\n  access?: boolean;\n  game?: boolean;\n  edition?: boolean;\n  collectionEdition?: boolean;\n};\n\nexport const DefaultRegistryOptions: RegistryOptions = {\n  game: true,\n  edition: true,\n  access: true,\n  collectionEdition: true,\n};\n","const TORII_SLOT_BASE = \"https://api.cartridge.gg\";\n\nexport function getToriiUrl(project: string): string {\n  try {\n    const clientEnv = (import.meta as any).env?.VITE_LOCAL_TORII;\n    if (clientEnv) return clientEnv;\n  } catch {}\n\n  const serverEnv =\n    typeof process !== \"undefined\" ? process.env?.VITE_LOCAL_TORII : undefined;\n  if (serverEnv) return serverEnv;\n\n  // Default URL pattern\n  return `${TORII_SLOT_BASE}/x/${project}/torii`;\n}\n\nexport function getToriiSqlUrl(project: string): string {\n  return `${getToriiUrl(project)}/sql`;\n}\n\nexport function getToriiGraphqlUrl(project: string): string {\n  return `${getToriiUrl(project)}/graphql`;\n}\n\nexport function getToriiAssetUrl(\n  project: string,\n  contractAddress: string,\n  tokenId?: string,\n): string {\n  const base = `${getToriiUrl(project)}/static/${contractAddress}`;\n  return tokenId ? `${base}/${tokenId}/image` : `${base}/image`;\n}\n","export const Helpers = {\n  async getImage(image: string, preset?: string): Promise<string> {\n    if (image && !preset) return image;\n    if (!image && !preset) return \"\";\n\n    const response = await fetch(image);\n    if (!!response && response.status !== 404) return image;\n\n    if (!preset) return \"\";\n\n    const imagePng = `https://static.cartridge.gg/presets/${preset}/icon.png`;\n    const responsePng = await fetch(imagePng);\n    if (!!responsePng && responsePng.status !== 404) return imagePng;\n\n    const imageSvg = `https://static.cartridge.gg/presets/${preset}/icon.svg`;\n    const responseSvg = await fetch(imageSvg);\n    if (!!responseSvg && responseSvg.status !== 404) return imageSvg;\n\n    return \"\";\n  },\n};\n\nexport {\n  getToriiUrl,\n  getToriiSqlUrl,\n  getToriiGraphqlUrl,\n  getToriiAssetUrl,\n} from \"./torii\";\n","import type { constants } from \"starknet\";\nimport { configs } from \"../../configs\";\nimport { NAMESPACE } from \"../../constants\";\nimport { getContractByName } from \"../../provider/helpers\";\nimport { Access } from \"./access\";\nimport { Game } from \"./game\";\nimport { Edition } from \"./edition\";\nimport { DefaultRegistryOptions, type RegistryOptions } from \"./options\";\n\nconst CONTRACT_NAME = \"Registry\";\nconst CONTRACT_TAG = `${NAMESPACE}-${CONTRACT_NAME}`;\nconst CONTRACT_DESCRIPTION = \"Registry contract for games and editions\";\n\nexport const getRegistryPolicies = (\n  chainId: constants.StarknetChainId,\n  options: RegistryOptions = DefaultRegistryOptions,\n) => {\n  const config = configs[chainId];\n  const address: string = getContractByName(config.manifest, CONTRACT_TAG);\n  return {\n    contracts: {\n      [address]: {\n        name: CONTRACT_NAME,\n        description: CONTRACT_DESCRIPTION,\n        methods: [\n          ...(options.access ? Access.getMethods() : []),\n          ...(options.game ? Game.getMethods() : []),\n          ...(options.edition ? Edition.getMethods() : []),\n        ],\n      },\n    },\n  };\n};\n","import { NAMESPACE } from \"../../constants\";\nimport { getChecksumAddress } from \"starknet\";\nimport type { SchemaType } from \"../../bindings\";\nimport { MemberClause, type ParsedEntity } from \"@dojoengine/sdk\";\n\nconst MODEL_NAME = \"TrophyPinning\";\n\nexport class PinEvent {\n  type = MODEL_NAME;\n\n  constructor(\n    public identifier: string,\n    public playerId: string,\n    public achievementId: string,\n    public time: number,\n  ) {\n    this.identifier = identifier;\n    this.playerId = playerId;\n    this.achievementId = achievementId;\n    this.time = time;\n  }\n\n  static from(identifier: string, model: any) {\n    if (!model) return PinEvent.default(identifier);\n    const playerId = getChecksumAddress(model.player_id);\n    const achievementId = `0x${BigInt(String(model.achievement_id)).toString(16)}`;\n    const time = Number(model.time);\n    return new PinEvent(identifier, playerId, achievementId, time);\n  }\n\n  static isType(model: PinEvent) {\n    return model.type === MODEL_NAME;\n  }\n\n  static default(identifier: string) {\n    return new PinEvent(identifier, \"0x0\", \"0x0\", 0);\n  }\n\n  exists() {\n    return this.playerId !== \"0x0\";\n  }\n}\n\nexport const Pin = {\n  parse: (entity: ParsedEntity<SchemaType>) => {\n    return PinEvent.from(\n      entity.entityId,\n      entity.models[NAMESPACE]?.[MODEL_NAME],\n    );\n  },\n\n  getModelName: () => {\n    return MODEL_NAME;\n  },\n\n  getClause: () => {\n    return MemberClause(\n      `${NAMESPACE}-${Pin.getModelName()}`,\n      \"player_id\",\n      \"Neq\",\n      \"0x0\",\n    );\n  },\n\n  getMethods: () => [\n    { name: \"pin\", entrypoint: \"pin\", description: \"Pin an achievement.\" },\n    {\n      name: \"unpin\",\n      entrypoint: \"unpin\",\n      description: \"Unpin an achievement.\",\n    },\n  ],\n};\n","import { NAMESPACE } from \"../../constants\";\nimport { getChecksumAddress } from \"starknet\";\nimport type { SchemaType } from \"../../bindings\";\nimport { MemberClause, type ParsedEntity } from \"@dojoengine/sdk\";\n\nconst MODEL_NAME = \"Follow\";\n\nexport class FollowEvent {\n  type = MODEL_NAME;\n\n  constructor(\n    public identifier: string,\n    public follower: string,\n    public followed: string,\n    public time: number,\n  ) {\n    this.identifier = identifier;\n    this.follower = follower;\n    this.followed = followed;\n    this.time = time;\n  }\n\n  static from(identifier: string, model: any) {\n    if (!model) return FollowEvent.default(identifier);\n    const follower = getChecksumAddress(model.follower);\n    const followed = getChecksumAddress(model.followed);\n    const time = Number(model.time);\n    return new FollowEvent(identifier, follower, followed, time);\n  }\n\n  static default(identifier: string) {\n    return new FollowEvent(identifier, \"0x0\", \"0x0\", 0);\n  }\n\n  static isType(model: FollowEvent) {\n    return model.type === MODEL_NAME;\n  }\n\n  exists() {\n    return this.follower !== \"0x0\";\n  }\n}\n\nexport const Follow = {\n  parse: (entity: ParsedEntity<SchemaType>) => {\n    return FollowEvent.from(\n      entity.entityId,\n      entity.models[NAMESPACE]?.[MODEL_NAME],\n    );\n  },\n\n  getModelName: () => {\n    return MODEL_NAME;\n  },\n\n  getClause: () => {\n    return MemberClause(\n      `${NAMESPACE}-${Follow.getModelName()}`,\n      \"follower\",\n      \"Neq\",\n      \"0x0\",\n    );\n  },\n\n  getMethods: () => [\n    {\n      name: \"follow\",\n      entrypoint: \"follow\",\n      description: \"Follow another player.\",\n    },\n    {\n      name: \"unfollow\",\n      entrypoint: \"unfollow\",\n      description: \"Unfollow a player.\",\n    },\n  ],\n};\n","import { NAMESPACE } from \"../../constants\";\nimport type { SchemaType } from \"../../bindings\";\nimport { MemberClause, type ParsedEntity } from \"@dojoengine/sdk\";\nimport { Properties, Socials } from \"../../classes\";\n\nconst MODEL_NAME = \"Guild\";\n\nexport class GuildModel {\n  type = MODEL_NAME;\n\n  constructor(\n    public identifier: string,\n    public id: number,\n    public open: boolean,\n    public free: boolean,\n    public guildCount: number,\n    public metadata: Properties,\n    public socials: Socials,\n  ) {\n    this.identifier = identifier;\n    this.id = id;\n    this.open = open;\n    this.free = free;\n    this.guildCount = guildCount;\n    this.metadata = metadata;\n    this.socials = socials;\n  }\n\n  static from(identifier: string, model: any) {\n    if (!model) return GuildModel.default(identifier);\n    const id = Number(model.id);\n    const open = !!model.open;\n    const free = !!model.free;\n    const guildCount = Number(model.guild_count);\n    const metadata = Properties.from(model.metadata);\n    const socials = Socials.from(model.socials);\n    return new GuildModel(\n      identifier,\n      id,\n      open,\n      free,\n      guildCount,\n      metadata,\n      socials,\n    );\n  }\n\n  static isType(model: GuildModel) {\n    return model.type === MODEL_NAME;\n  }\n\n  static default(identifier: string) {\n    return new GuildModel(\n      identifier,\n      0,\n      false,\n      false,\n      0,\n      Properties.default(),\n      Socials.default(),\n    );\n  }\n\n  exists() {\n    return this.id !== 0;\n  }\n}\n\nexport const Guild = {\n  parse: (entity: ParsedEntity<SchemaType>) => {\n    return GuildModel.from(\n      entity.entityId,\n      entity.models[NAMESPACE]?.[MODEL_NAME],\n    );\n  },\n\n  getModelName: () => {\n    return MODEL_NAME;\n  },\n\n  getClause: () => {\n    return MemberClause(\n      `${NAMESPACE}-${Guild.getModelName()}`,\n      \"id\",\n      \"Neq\",\n      \"0\",\n    );\n  },\n\n  getMethods: () => [\n    {\n      name: \"create_guild\",\n      entrypoint: \"create_guild\",\n      description: \"Create a guild.\",\n    },\n    {\n      name: \"open_guild\",\n      entrypoint: \"open_guild\",\n      description: \"Open a guild.\",\n    },\n    {\n      name: \"close_guild\",\n      entrypoint: \"close_guild\",\n      description: \"Close a guild.\",\n    },\n    {\n      name: \"crown_member\",\n      entrypoint: \"crown_member\",\n      description: \"Crown a member to lead the guild.\",\n    },\n    {\n      name: \"promote_member\",\n      entrypoint: \"promote_member\",\n      description: \"Promote a member to officer.\",\n    },\n    {\n      name: \"demote_member\",\n      entrypoint: \"demote_member\",\n      description: \"Demote an officer to member.\",\n    },\n    {\n      name: \"hire_member\",\n      entrypoint: \"hire_member\",\n      description: \"Hire a member to the guild.\",\n    },\n    {\n      name: \"fire_member\",\n      entrypoint: \"fire_member\",\n      description: \"Fire a member from the guild.\",\n    },\n  ],\n};\n","import { NAMESPACE } from \"../../constants\";\nimport type { SchemaType } from \"../../bindings\";\nimport { MemberClause, type ParsedEntity } from \"@dojoengine/sdk\";\nimport { Properties, Socials } from \"../../classes\";\n\nconst MODEL_NAME = \"Alliance\";\n\nexport class AllianceModel {\n  type = MODEL_NAME;\n\n  constructor(\n    public identifier: string,\n    public id: number,\n    public open: boolean,\n    public free: boolean,\n    public guildCount: number,\n    public metadata: Properties,\n    public socials: Socials,\n  ) {\n    this.identifier = identifier;\n    this.id = id;\n    this.open = open;\n    this.free = free;\n    this.guildCount = guildCount;\n    this.metadata = metadata;\n    this.socials = socials;\n  }\n\n  static from(identifier: string, model: any) {\n    if (!model) return AllianceModel.default(identifier);\n    const id = Number(model.id);\n    const open = !!model.open;\n    const free = !!model.free;\n    const guildCount = Number(model.guild_count);\n    const metadata = Properties.from(model.metadata);\n    const socials = Socials.from(model.socials);\n    return new AllianceModel(\n      identifier,\n      id,\n      open,\n      free,\n      guildCount,\n      metadata,\n      socials,\n    );\n  }\n\n  static default(identifier: string) {\n    return new AllianceModel(\n      identifier,\n      0,\n      false,\n      false,\n      0,\n      Properties.default(),\n      Socials.default(),\n    );\n  }\n\n  static isType(model: AllianceModel) {\n    return model.type === MODEL_NAME;\n  }\n\n  exists() {\n    return this.id !== 0;\n  }\n}\n\nexport const Alliance = {\n  parse: (entity: ParsedEntity<SchemaType>) => {\n    return AllianceModel.from(\n      entity.entityId,\n      entity.models[NAMESPACE]?.[MODEL_NAME],\n    );\n  },\n\n  getModelName: () => {\n    return MODEL_NAME;\n  },\n\n  getClause: () => {\n    return MemberClause(\n      `${NAMESPACE}-${Alliance.getModelName()}`,\n      \"id\",\n      \"Neq\",\n      \"0x0\",\n    );\n  },\n\n  getMethods: () => [\n    {\n      name: \"create_alliance\",\n      entrypoint: \"create_alliance\",\n      description: \"Create an alliance.\",\n    },\n    {\n      name: \"open_alliance\",\n      entrypoint: \"open_alliance\",\n      description: \"Open an alliance.\",\n    },\n    {\n      name: \"close_alliance\",\n      entrypoint: \"close_alliance\",\n      description: \"Close an alliance.\",\n    },\n    {\n      name: \"crown_guild\",\n      entrypoint: \"crown_guild\",\n      description: \"Crown a guild to lead the alliance.\",\n    },\n    {\n      name: \"hire_guild\",\n      entrypoint: \"hire_guild\",\n      description: \"Hire a guild in the alliance.\",\n    },\n    {\n      name: \"fire_guild\",\n      entrypoint: \"fire_guild\",\n      description: \"Fire a guild from the alliance.\",\n    },\n    {\n      name: \"request_alliance\",\n      entrypoint: \"request_alliance\",\n      description: \"Request to join an alliance.\",\n    },\n    {\n      name: \"cancel_alliance\",\n      entrypoint: \"cancel_alliance\",\n      description: \"Cancel a request to join an alliance.\",\n    },\n    {\n      name: \"leave_alliance\",\n      entrypoint: \"leave_alliance\",\n      description: \"Leave an alliance.\",\n    },\n  ],\n};\n","import { NAMESPACE } from \"../../constants\";\nimport type { SchemaType } from \"../../bindings\";\nimport { MemberClause, type ParsedEntity } from \"@dojoengine/sdk\";\nimport { getChecksumAddress } from \"starknet\";\n\nconst MODEL_NAME = \"Member\";\n\nexport class MemberModel {\n  type = MODEL_NAME;\n\n  constructor(\n    public identifier: string,\n    public id: string,\n    public role: number,\n    public guildId: number,\n    public pendingGuildId: number,\n  ) {\n    this.identifier = identifier;\n    this.id = id;\n    this.role = role;\n    this.guildId = guildId;\n    this.pendingGuildId = pendingGuildId;\n  }\n\n  static from(identifier: string, model: any) {\n    if (!model) return MemberModel.default(identifier);\n    const id = getChecksumAddress(model.id);\n    const role = Number(model.role);\n    const guildId = Number(model.guild_id);\n    const pendingGuildId = Number(model.pending_guild_id);\n    return new MemberModel(identifier, id, role, guildId, pendingGuildId);\n  }\n\n  static isType(model: MemberModel) {\n    return model.type === MODEL_NAME;\n  }\n\n  static default(identifier: string) {\n    return new MemberModel(identifier, \"0x0\", 0, 0, 0);\n  }\n\n  exists() {\n    return this.id !== \"0x0\";\n  }\n}\n\nexport const Member = {\n  parse: (entity: ParsedEntity<SchemaType>) => {\n    return MemberModel.from(\n      entity.entityId,\n      entity.models[NAMESPACE]?.[MODEL_NAME],\n    );\n  },\n\n  getModelName: () => {\n    return MODEL_NAME;\n  },\n\n  getClause: () => {\n    return MemberClause(\n      `${NAMESPACE}-${Member.getModelName()}`,\n      \"id\",\n      \"Neq\",\n      \"0x0\",\n    );\n  },\n\n  getMethods: () => [],\n};\n","import { initArcadeSDK } from \"..\";\nimport type { constants } from \"starknet\";\nimport { Pin, PinEvent } from \"./pin\";\nimport { Follow, FollowEvent } from \"./follow\";\nimport { Guild, GuildModel } from \"./guild\";\nimport { Alliance, AllianceModel } from \"./alliance\";\nimport { Member, MemberModel } from \"./member\";\nimport {\n  ClauseBuilder,\n  type ParsedEntity,\n  type SDK,\n  type StandardizedQueryResult,\n  ToriiQueryBuilder,\n  type ToriiResponse,\n} from \"@dojoengine/sdk\";\nimport { NAMESPACE } from \"../../constants\";\nimport { SocialOptions, DefaultSocialOptions } from \"./options\";\nimport type { SchemaType } from \"../../bindings\";\n\nexport * from \"./policies\";\nexport {\n  PinEvent,\n  FollowEvent,\n  GuildModel,\n  AllianceModel,\n  MemberModel,\n  SocialOptions,\n};\nexport type SocialModel =\n  | AllianceModel\n  | GuildModel\n  | MemberModel\n  | PinEvent\n  | FollowEvent;\n\nexport const Social = {\n  sdk: undefined as SDK<SchemaType> | undefined,\n  unsubEntities: undefined as (() => void) | undefined,\n  unsubEvents: undefined as (() => void) | undefined,\n\n  init: async (chainId: constants.StarknetChainId) => {\n    Social.sdk = await initArcadeSDK(chainId);\n  },\n\n  isEntityQueryable(options: SocialOptions) {\n    return options.alliance || options.guild || options.member;\n  },\n\n  isEventQueryable(options: SocialOptions) {\n    return options.pin || options.follow;\n  },\n\n  getEntityQuery: (options: SocialOptions = DefaultSocialOptions) => {\n    const keys: `${string}-${string}`[] = [];\n    if (options.alliance) keys.push(`${NAMESPACE}-${Alliance.getModelName()}`);\n    if (options.guild) keys.push(`${NAMESPACE}-${Guild.getModelName()}`);\n    if (options.member) keys.push(`${NAMESPACE}-${Member.getModelName()}`);\n    const clauses = new ClauseBuilder().keys(keys, []);\n    return new ToriiQueryBuilder<SchemaType>()\n      .withClause(clauses.build())\n      .includeHashedKeys();\n  },\n\n  getEventQuery: (options: SocialOptions = DefaultSocialOptions) => {\n    const keys: `${string}-${string}`[] = [];\n    if (options.pin) keys.push(`${NAMESPACE}-${Pin.getModelName()}`);\n    if (options.follow) keys.push(`${NAMESPACE}-${Follow.getModelName()}`);\n    const clauses = new ClauseBuilder().keys(keys, []);\n    return new ToriiQueryBuilder<SchemaType>()\n      .withClause(clauses.build())\n      .includeHashedKeys();\n  },\n\n  fetchEntities: async (\n    callback: (models: SocialModel[]) => void,\n    options: SocialOptions,\n  ) => {\n    if (!Social.sdk) return;\n\n    const wrappedCallback = (entities: ToriiResponse<SchemaType>) => {\n      if (!entities) return;\n      const models: SocialModel[] = [];\n      const items = entities?.getItems();\n      for (const entity of items) {\n        if (entity.models[NAMESPACE][Alliance.getModelName()]) {\n          models.push(Alliance.parse(entity as any));\n        }\n        if (entity.models[NAMESPACE][Guild.getModelName()]) {\n          models.push(Guild.parse(entity as any));\n        }\n        if (entity.models[NAMESPACE][Member.getModelName()]) {\n          models.push(Member.parse(entity as any));\n        }\n      }\n      callback(models);\n    };\n    const query = Social.getEntityQuery(options);\n    try {\n      const entities = await Social.sdk.getEntities({ query });\n      wrappedCallback(entities);\n    } catch (error) {\n      console.error(\"Error fetching entities:\", error);\n    }\n  },\n\n  fetchEvents: async (\n    callback: (models: SocialModel[]) => void,\n    options: SocialOptions,\n  ) => {\n    if (!Social.sdk) return;\n    const wrappedCallback = (entities: ToriiResponse<SchemaType>) => {\n      if (!entities) return;\n      const events: SocialModel[] = [];\n      const items = entities?.getItems();\n      for (const entity of items) {\n        if (entity.models[NAMESPACE][Pin.getModelName()]) {\n          events.push(Pin.parse(entity as any));\n        }\n        if (entity.models[NAMESPACE][Follow.getModelName()]) {\n          events.push(Follow.parse(entity as any));\n        }\n      }\n      callback(events);\n    };\n    const query = Social.getEventQuery(options);\n    try {\n      const events = await Social.sdk.getEventMessages({\n        query,\n        historical: false,\n      });\n      wrappedCallback(events);\n    } catch (error) {\n      console.error(\"Error fetching events:\", error);\n    }\n  },\n\n  subEntities: async (\n    callback: (models: SocialModel[]) => void,\n    options: SocialOptions,\n  ) => {\n    if (!Social.sdk) return;\n\n    const wrappedCallback = ({\n      data,\n      error,\n    }: {\n      data?: StandardizedQueryResult<SchemaType> | undefined;\n      error?: Error | undefined;\n    }) => {\n      if (error) {\n        console.error(\"Error subscribing to entities:\", error);\n        return;\n      }\n      if (\n        !data ||\n        data.length === 0 ||\n        (data[0] as ParsedEntity<SchemaType>).entityId === \"0x0\"\n      )\n        return;\n      const entity = (data as ParsedEntity<SchemaType>[])[0];\n      const eraseable = !entity.models[NAMESPACE];\n      if (entity.models[NAMESPACE]?.[Alliance.getModelName()] || eraseable) {\n        callback([Alliance.parse(entity as any)]);\n      }\n      if (entity.models[NAMESPACE]?.[Guild.getModelName()] || eraseable) {\n        callback([Guild.parse(entity as any)]);\n      }\n      if (entity.models[NAMESPACE]?.[Member.getModelName()] || eraseable) {\n        callback([Member.parse(entity as any)]);\n      }\n    };\n\n    const query = Social.getEntityQuery(options);\n\n    const [_, subscription] = await Social.sdk.subscribeEntityQuery({\n      query,\n      callback: wrappedCallback,\n    });\n    Social.unsubEntities = () => subscription.cancel();\n  },\n\n  subEvents: async (\n    callback: (models: SocialModel[]) => void,\n    options: SocialOptions,\n  ) => {\n    if (!Social.sdk) return;\n\n    const wrappedCallback = ({\n      data,\n      error,\n    }: {\n      data?:\n        | StandardizedQueryResult<SchemaType>\n        | StandardizedQueryResult<SchemaType>[]\n        | undefined;\n      error?: Error | undefined;\n    }) => {\n      if (error) {\n        console.error(\"Error subscribing to events:\", error);\n        return;\n      }\n      if (\n        !data ||\n        data.length === 0 ||\n        (data[0] as ParsedEntity<SchemaType>).entityId === \"0x0\"\n      )\n        return;\n      const entity = (data as ParsedEntity<SchemaType>[])[0];\n      const eraseable = !entity.models[NAMESPACE];\n      if (entity.models[NAMESPACE]?.[Pin.getModelName()] || eraseable) {\n        callback([Pin.parse(entity as any)]);\n      }\n      if (entity.models[NAMESPACE]?.[Follow.getModelName()] || eraseable) {\n        callback([Follow.parse(entity as any)]);\n      }\n    };\n\n    const query = Social.getEventQuery(options);\n\n    const [_, subscription] = await Social.sdk.subscribeEventQuery({\n      query,\n      callback: wrappedCallback,\n    });\n    Social.unsubEvents = () => subscription.cancel();\n  },\n\n  fetch: async (\n    callback: (models: SocialModel[]) => void,\n    options: SocialOptions = DefaultSocialOptions,\n  ) => {\n    if (!Social.sdk) {\n      throw new Error(\"SDK not initialized\");\n    }\n    if (Social.isEntityQueryable(options)) {\n      await Social.fetchEntities(callback, options);\n    }\n    if (Social.isEventQueryable(options)) {\n      await Social.fetchEvents(callback, options);\n    }\n  },\n\n  sub: async (\n    callback: (models: SocialModel[]) => void,\n    options: SocialOptions = DefaultSocialOptions,\n  ) => {\n    if (!Social.sdk) {\n      throw new Error(\"SDK not initialized\");\n    }\n    if (Social.isEntityQueryable(options)) {\n      await Social.subEntities(callback, options);\n    }\n    if (Social.isEventQueryable(options)) {\n      await Social.subEvents(callback, options);\n    }\n  },\n\n  unsub: () => {\n    if (Social.unsubEntities) {\n      Social.unsubEntities();\n      Social.unsubEntities = undefined;\n    }\n    if (Social.unsubEvents) {\n      Social.unsubEvents();\n      Social.unsubEvents = undefined;\n    }\n  },\n};\n","export type SocialOptions = {\n  pin?: boolean;\n  follow?: boolean;\n  member?: boolean;\n  guild?: boolean;\n  alliance?: boolean;\n};\n\nexport const DefaultSocialOptions: SocialOptions = {\n  pin: true,\n  follow: true,\n  member: true,\n  guild: true,\n  alliance: true,\n};\n","import type { constants } from \"starknet\";\nimport { configs } from \"../../configs\";\nimport { NAMESPACE } from \"../../constants\";\nimport { getContractByName } from \"../../provider/helpers\";\nimport { Pin } from \"./pin\";\nimport { Follow } from \"./follow\";\nimport { Member } from \"./member\";\nimport { Guild } from \"./guild\";\nimport { Alliance } from \"./alliance\";\nimport { DefaultSocialOptions, type SocialOptions } from \"./options\";\n\nconst CONTRACT_NAME = \"Social\";\nconst CONTRACT_TAG = `${NAMESPACE}-${CONTRACT_NAME}`;\nconst CONTRACT_DESCRIPTION = \"Social contract to manage your social activities\";\n\nexport const getSocialPolicies = (\n  chainId: constants.StarknetChainId,\n  options: SocialOptions = DefaultSocialOptions,\n) => {\n  const config = configs[chainId];\n  const address: string = getContractByName(config.manifest, CONTRACT_TAG);\n  return {\n    contracts: {\n      [address]: {\n        name: CONTRACT_NAME,\n        description: CONTRACT_DESCRIPTION,\n        methods: [\n          ...(options.pin ? Pin.getMethods() : []),\n          ...(options.follow ? Follow.getMethods() : []),\n          ...(options.member ? Member.getMethods() : []),\n          ...(options.guild ? Guild.getMethods() : []),\n          ...(options.alliance ? Alliance.getMethods() : []),\n        ],\n      },\n    },\n  };\n};\n","import { initArcadeSDK } from \"..\";\nimport { getChecksumAddress, type constants } from \"starknet\";\nimport {\n  Moderator,\n  ModeratorModel,\n  type ModeratorInterface,\n} from \"./moderator\";\nimport { Book, BookModel, type BookInterface } from \"./book\";\nimport { Order, OrderModel, type OrderInterface } from \"./order\";\nimport { Listing, ListingEvent, type ListingInterface } from \"./listing\";\nimport { Offer, OfferEvent, type OfferInterface } from \"./offer\";\nimport { Sale, SaleEvent, type SaleInterface } from \"./sale\";\nimport {\n  ClauseBuilder,\n  type ParsedEntity,\n  type SDK,\n  type StandardizedQueryResult,\n  type SubscriptionCallbackArgs,\n  ToriiQueryBuilder,\n  type ToriiResponse,\n} from \"@dojoengine/sdk\";\nimport type { SchemaType } from \"../../bindings\";\nimport { NAMESPACE } from \"../../constants\";\nimport { MarketplaceOptions, DefaultMarketplaceOptions } from \"./options\";\nimport type { Token, ToriiClient } from \"@dojoengine/torii-wasm/types\";\n\nexport type { Token, ToriiClient };\nexport * from \"./policies\";\nexport {\n  ModeratorModel,\n  BookModel,\n  Order as SDKOrder,\n  OrderModel,\n  ListingEvent,\n  OfferEvent,\n  SaleEvent,\n  MarketplaceOptions,\n};\nexport type MarketplaceModel =\n  | ModeratorModel\n  | BookModel\n  | OrderModel\n  | ListingEvent\n  | OfferEvent\n  | SaleEvent;\n\nexport type {\n  ModeratorInterface,\n  BookInterface,\n  OrderInterface,\n  ListingInterface,\n  OfferInterface,\n  SaleInterface,\n};\n\nexport type WithCount<T> = T & { count: number };\nexport type Collection = Record<string, WithCount<Token>>;\nexport type Collections = Record<string, Collection>;\n\nconst ENTITIES_LIMIT = 10_000;\n\nexport const Marketplace = {\n  sdk: undefined as SDK<SchemaType> | undefined,\n  unsubEntities: undefined as (() => void) | undefined,\n\n  init: async (chainId: constants.StarknetChainId) => {\n    Marketplace.sdk = await initArcadeSDK(chainId);\n  },\n\n  isEntityQueryable(options: MarketplaceOptions) {\n    return options.access || options.book || options.order;\n  },\n\n  isEventQueryable(options: MarketplaceOptions) {\n    return options.listing || options.offer || options.sale;\n  },\n\n  getEntityQuery: (options: MarketplaceOptions = DefaultMarketplaceOptions) => {\n    const keys: `${string}-${string}`[] = [];\n    if (options.access) keys.push(`${NAMESPACE}-${Moderator.getModelName()}`);\n    if (options.book) keys.push(`${NAMESPACE}-${Book.getModelName()}`);\n    if (options.order) keys.push(`${NAMESPACE}-${Order.getModelName()}`);\n    const clauses = new ClauseBuilder().keys(keys, []);\n    return new ToriiQueryBuilder<SchemaType>()\n      .withClause(clauses.build())\n      .withEntityModels(keys)\n      .includeHashedKeys();\n  },\n\n  getEventQuery: (options: MarketplaceOptions = DefaultMarketplaceOptions) => {\n    const keys: `${string}-${string}`[] = [];\n    if (options.listing) keys.push(`${NAMESPACE}-${Listing.getModelName()}`);\n    if (options.offer) keys.push(`${NAMESPACE}-${Offer.getModelName()}`);\n    if (options.sale) keys.push(`${NAMESPACE}-${Sale.getModelName()}`);\n    const clauses = new ClauseBuilder().keys(keys, []);\n    return new ToriiQueryBuilder<SchemaType>()\n      .withClause(clauses.build())\n      .withEntityModels(keys)\n      .includeHashedKeys()\n      .withLimit(ENTITIES_LIMIT);\n  },\n\n  fetchEntities: async (\n    callback: (models: MarketplaceModel[]) => void,\n    options: MarketplaceOptions,\n  ) => {\n    if (!Marketplace.sdk) return;\n\n    const wrappedCallback = async (entities?: ToriiResponse<SchemaType>) => {\n      if (!entities) return;\n      const models: MarketplaceModel[] = [];\n      const items = entities?.getItems();\n      await Promise.all(\n        items.map(async (entity: ParsedEntity<SchemaType>) => {\n          if (entity.models[NAMESPACE][Moderator.getModelName()]) {\n            models.push(Moderator.parse(entity));\n          }\n          if (entity.models[NAMESPACE][Book.getModelName()]) {\n            models.push(Book.parse(entity));\n          }\n          if (entity.models[NAMESPACE][Order.getModelName()]) {\n            models.push(Order.parse(entity));\n          }\n          return entity;\n        }),\n      );\n      callback(models);\n    };\n    const query = Marketplace.getEntityQuery(options);\n    try {\n      const entities = await Marketplace.sdk.getEntities({ query });\n      await wrappedCallback(entities);\n    } catch (error) {\n      console.error(\"Error fetching entities:\", error);\n    }\n  },\n\n  fetchEvents: async (\n    callback: (models: MarketplaceModel[]) => void,\n    options: MarketplaceOptions,\n  ) => {\n    if (!Marketplace.sdk) return;\n\n    const wrappedCallback = async (entities?: ToriiResponse<SchemaType>) => {\n      if (!entities) return;\n      const events: MarketplaceModel[] = [];\n      const items = entities?.getItems();\n      await Promise.all(\n        items.map(async (entity: ParsedEntity<SchemaType>) => {\n          if (entity.models[NAMESPACE][Listing.getModelName()]) {\n            events.push(Listing.parse(entity));\n          }\n          if (entity.models[NAMESPACE][Offer.getModelName()]) {\n            events.push(Offer.parse(entity));\n          }\n          if (entity.models[NAMESPACE][Sale.getModelName()]) {\n            events.push(Sale.parse(entity));\n          }\n          return entity;\n        }),\n      );\n      callback(events);\n    };\n    const query = Marketplace.getEventQuery(options);\n    try {\n      const events = await Marketplace.sdk.getEventMessages({ query });\n      await wrappedCallback(events);\n    } catch (error) {\n      console.error(\"Error fetching events:\", error);\n    }\n  },\n\n  subEntities: async (\n    callback: (models: MarketplaceModel[]) => void,\n    options: MarketplaceOptions,\n  ) => {\n    if (!Marketplace.sdk) return;\n    const wrappedCallback = ({\n      data,\n      error,\n    }: SubscriptionCallbackArgs<\n      StandardizedQueryResult<SchemaType>,\n      Error\n    >) => {\n      if (error) {\n        console.error(\"Error subscribing to marketplace entities:\", error);\n        return;\n      }\n      if (!data || data.length === 0 || BigInt(data[0].entityId) === 0n) return;\n      const entity = data[0];\n      const eraseable = !entity.models[NAMESPACE];\n      if (!!entity.models[NAMESPACE]?.[Moderator.getModelName()] || eraseable) {\n        callback([Moderator.parse(entity)]);\n      }\n      if (!!entity.models[NAMESPACE]?.[Book.getModelName()] || eraseable) {\n        callback([Book.parse(entity)]);\n      }\n      if (!!entity.models[NAMESPACE]?.[Order.getModelName()] || eraseable) {\n        callback([Order.parse(entity)]);\n      }\n    };\n\n    const query = Marketplace.getEntityQuery(options);\n    const [_, subscription] = await Marketplace.sdk.subscribeEntityQuery({\n      query,\n      callback: wrappedCallback,\n    });\n    Marketplace.unsubEntities = () => subscription.cancel();\n  },\n\n  subEvents: async (\n    callback: (models: MarketplaceModel[]) => void,\n    options: MarketplaceOptions,\n  ) => {\n    if (!Marketplace.sdk) return;\n    const wrappedCallback = ({\n      data,\n      error,\n    }: SubscriptionCallbackArgs<\n      StandardizedQueryResult<SchemaType>,\n      Error\n    >) => {\n      if (error) {\n        console.error(\"Error subscribing to marketplace events:\", error);\n        return;\n      }\n      if (!data || data.length === 0 || BigInt(data[0].entityId) === 0n) return;\n      const entity = data[0];\n      const eraseable = !entity.models[NAMESPACE];\n      if (!!entity.models[NAMESPACE]?.[Listing.getModelName()] || eraseable) {\n        callback([Listing.parse(entity)]);\n      }\n      if (!!entity.models[NAMESPACE]?.[Offer.getModelName()] || eraseable) {\n        callback([Offer.parse(entity)]);\n      }\n      if (!!entity.models[NAMESPACE]?.[Sale.getModelName()] || eraseable) {\n        callback([Sale.parse(entity)]);\n      }\n    };\n\n    const query = Marketplace.getEventQuery(options);\n    const [_, subscription] = await Marketplace.sdk.subscribeEventQuery({\n      query,\n      callback: wrappedCallback,\n    });\n    Marketplace.unsubEntities = () => subscription.cancel();\n  },\n\n  fetch: async (\n    callback: (models: MarketplaceModel[]) => void,\n    options: MarketplaceOptions = DefaultMarketplaceOptions,\n  ) => {\n    if (!Marketplace.sdk) {\n      throw new Error(\"SDK not initialized\");\n    }\n    if (Marketplace.isEntityQueryable(options)) {\n      await Marketplace.fetchEntities(callback, options);\n    }\n    if (Marketplace.isEventQueryable(options)) {\n      await Marketplace.fetchEvents(callback, options);\n    }\n  },\n\n  sub: async (\n    callback: (models: MarketplaceModel[]) => void,\n    options: MarketplaceOptions = DefaultMarketplaceOptions,\n  ) => {\n    if (!Marketplace.sdk) {\n      throw new Error(\"SDK not initialized\");\n    }\n    if (Marketplace.isEntityQueryable(options)) {\n      await Marketplace.subEntities(callback, options);\n    }\n    if (Marketplace.isEventQueryable(options)) {\n      await Marketplace.subEvents(callback, options);\n    }\n  },\n\n  unsub: () => {\n    if (Marketplace.unsubEntities) {\n      Marketplace.unsubEntities();\n      Marketplace.unsubEntities = undefined;\n    }\n  },\n\n  fetchCollections: async (\n    clients: { [key: string]: ToriiClient },\n    limit = 1000,\n  ) => {\n    const collections: Collections = {};\n    await Promise.all(\n      Object.keys(clients).map(async (project) => {\n        const client = clients[project];\n        try {\n          let tokens = await client.getTokens({\n            contract_addresses: [],\n            token_ids: [],\n            pagination: {\n              cursor: undefined,\n              limit: limit,\n              order_by: [],\n              direction: \"Forward\",\n            },\n            attribute_filters: [],\n          });\n          const allTokens = [...tokens.items];\n          while (tokens.next_cursor) {\n            tokens = await client.getTokens({\n              contract_addresses: [],\n              token_ids: [],\n              pagination: {\n                limit: limit,\n                cursor: tokens.next_cursor,\n                order_by: [],\n                direction: \"Forward\",\n              },\n              attribute_filters: [],\n            });\n            allTokens.push(...tokens.items);\n          }\n\n          const filtereds = allTokens.filter((token) => !!token.metadata);\n          if (filtereds.length === 0) return;\n\n          const collection: Collection = filtereds.reduce(\n            (acc: Collection, curr: Token) => {\n              const checksumAddress = getChecksumAddress(curr.contract_address);\n\n              if (Object.hasOwn(acc, checksumAddress)) {\n                acc[checksumAddress].count += 1;\n                return acc;\n              }\n\n              acc[checksumAddress] = {\n                ...curr,\n                contract_address: checksumAddress,\n                count: 1,\n              };\n\n              return acc;\n            },\n            {},\n          );\n\n          collections[project] = collection;\n          return;\n        } catch (error) {\n          console.error(\"Error fetching tokens:\", error, project);\n          return;\n        }\n      }),\n    );\n    return collections;\n  },\n};\n","import { NAMESPACE } from \"../../constants\";\nimport { getChecksumAddress } from \"starknet\";\nimport type { SchemaType } from \"../../bindings\";\nimport type { ParsedEntity } from \"@dojoengine/sdk\";\nimport { Role, RoleType } from \"../../classes\";\nimport type { MarketplaceModel } from \".\";\n\nconst MODEL_NAME = \"Moderator\";\n\nexport interface ModeratorInterface {\n  address: string;\n  role: number;\n}\n\nexport class ModeratorModel {\n  type = MODEL_NAME;\n\n  constructor(\n    public identifier: string,\n    public address: string,\n    public role: Role,\n  ) {\n    this.identifier = identifier;\n    this.address = address;\n    this.role = role;\n  }\n\n  static from(identifier: string, model: ModeratorInterface) {\n    if (!model) return ModeratorModel.default(identifier);\n    const address = getChecksumAddress(model.address);\n    const role = Role.from(model.role);\n    return new ModeratorModel(identifier, address, role);\n  }\n\n  static default(identifier: string) {\n    return new ModeratorModel(identifier, \"0x0\", new Role(RoleType.None));\n  }\n\n  static isType(model: MarketplaceModel): boolean {\n    return model.type === MODEL_NAME;\n  }\n\n  exists() {\n    return this.role.value !== RoleType.None;\n  }\n\n  clone(): ModeratorModel {\n    return new ModeratorModel(this.identifier, this.address, this.role);\n  }\n}\n\nexport const Moderator = {\n  parse: (entity: ParsedEntity<SchemaType>) => {\n    return ModeratorModel.from(\n      entity.entityId,\n      entity.models[NAMESPACE]?.[MODEL_NAME] as ModeratorInterface,\n    );\n  },\n\n  getModelName: () => {\n    return MODEL_NAME;\n  },\n\n  getMethods: () => [],\n};\n","import { NAMESPACE } from \"../../constants\";\nimport type { SchemaType } from \"../../bindings\";\nimport type { ParsedEntity } from \"@dojoengine/sdk\";\nimport { type MarketplaceModel, OrderModel, type OrderInterface } from \"..\";\n\nconst MODEL_NAME = \"Listing\";\n\nexport interface ListingInterface {\n  order_id: number;\n  order: OrderInterface;\n  time: number;\n}\n\nexport class ListingEvent {\n  type = MODEL_NAME;\n\n  constructor(\n    public identifier: string,\n    public id: number,\n    public order: OrderModel,\n    public time: number,\n  ) {\n    this.identifier = identifier;\n    this.id = id;\n    this.order = order;\n    this.time = time;\n  }\n\n  static from(identifier: string, model: ListingInterface) {\n    if (!model) return ListingEvent.default(identifier);\n    const id = Number(model.order_id);\n    const order = OrderModel.from(identifier, model.order);\n    const time = Number(model.time);\n    return new ListingEvent(identifier, id, order, time);\n  }\n\n  static default(identifier: string) {\n    return new ListingEvent(identifier, 0, OrderModel.default(identifier), 0);\n  }\n\n  static isType(model: MarketplaceModel): boolean {\n    return model.type === MODEL_NAME;\n  }\n\n  exists() {\n    return this.time !== 0;\n  }\n\n  clone(): ListingEvent {\n    return new ListingEvent(\n      this.identifier,\n      this.id,\n      this.order.clone(),\n      this.time,\n    );\n  }\n}\n\nexport const Listing = {\n  parse: (entity: ParsedEntity<SchemaType>) => {\n    return ListingEvent.from(\n      entity.entityId,\n      entity.models[NAMESPACE]?.[MODEL_NAME] as ListingInterface,\n    );\n  },\n\n  getModelName: () => {\n    return MODEL_NAME;\n  },\n\n  getMethods: () => [],\n};\n","import { NAMESPACE } from \"../../constants\";\nimport type { SchemaType } from \"../../bindings\";\nimport type { ParsedEntity } from \"@dojoengine/sdk\";\nimport { type MarketplaceModel, type OrderInterface, OrderModel } from \"..\";\n\nconst MODEL_NAME = \"Offer\";\n\nexport interface OfferInterface {\n  order_id: number;\n  order: OrderInterface;\n  time: number;\n}\n\nexport class OfferEvent {\n  type = MODEL_NAME;\n\n  constructor(\n    public identifier: string,\n    public id: number,\n    public order: OrderModel,\n    public time: number,\n  ) {\n    this.identifier = identifier;\n    this.id = id;\n    this.order = order;\n    this.time = time;\n  }\n\n  static from(identifier: string, model: OfferInterface) {\n    if (!model) return OfferEvent.default(identifier);\n    const id = Number(model.order_id);\n    const order = OrderModel.from(identifier, model.order);\n    const time = Number(model.time);\n    return new OfferEvent(identifier, id, order, time);\n  }\n\n  static default(identifier: string) {\n    return new OfferEvent(identifier, 0, OrderModel.default(identifier), 0);\n  }\n\n  static isType(model: MarketplaceModel): boolean {\n    return model.type === MODEL_NAME;\n  }\n\n  exists() {\n    return this.time !== 0;\n  }\n\n  clone(): OfferEvent {\n    return new OfferEvent(\n      this.identifier,\n      this.id,\n      this.order.clone(),\n      this.time,\n    );\n  }\n}\n\nexport const Offer = {\n  parse: (entity: ParsedEntity<SchemaType>) => {\n    return OfferEvent.from(\n      entity.entityId,\n      entity.models[NAMESPACE]?.[MODEL_NAME] as OfferInterface,\n    );\n  },\n\n  getModelName: () => {\n    return MODEL_NAME;\n  },\n\n  getMethods: () => [],\n};\n","import { NAMESPACE } from \"../../constants\";\nimport type { SchemaType } from \"../../bindings\";\nimport type { ParsedEntity } from \"@dojoengine/sdk\";\nimport { type MarketplaceModel, type OrderInterface, OrderModel } from \"..\";\nimport { getChecksumAddress } from \"starknet\";\n\nconst MODEL_NAME = \"Sale\";\n\nexport interface SaleInterface {\n  order_id: number;\n  order: OrderInterface;\n  from: string;\n  to: string;\n  time: number;\n}\n\nexport class SaleEvent {\n  type = MODEL_NAME;\n\n  constructor(\n    public identifier: string,\n    public id: number,\n    public order: OrderModel,\n    public from: string,\n    public to: string,\n    public time: number,\n  ) {\n    this.identifier = identifier;\n    this.id = id;\n    this.order = order;\n    this.from = from;\n    this.to = to;\n    this.time = time;\n  }\n\n  static from(identifier: string, model: SaleInterface) {\n    if (!model) return SaleEvent.default(identifier);\n    const id = Number(model.order_id);\n    const order = OrderModel.from(identifier, model.order);\n    const from = getChecksumAddress(model.from);\n    const to = getChecksumAddress(model.to);\n    const time = Number(model.time);\n    return new SaleEvent(identifier, id, order, from, to, time);\n  }\n\n  static default(identifier: string) {\n    const zero = getChecksumAddress(\"0x0\");\n    return new SaleEvent(\n      identifier,\n      0,\n      OrderModel.default(identifier),\n      zero,\n      zero,\n      0,\n    );\n  }\n\n  static isType(model: MarketplaceModel): boolean {\n    return model.type === MODEL_NAME;\n  }\n\n  exists() {\n    return this.time !== 0;\n  }\n\n  clone(): SaleEvent {\n    return new SaleEvent(\n      this.identifier,\n      this.id,\n      this.order.clone(),\n      this.from,\n      this.to,\n      this.time,\n    );\n  }\n}\n\nexport const Sale = {\n  parse: (entity: ParsedEntity<SchemaType>) => {\n    return SaleEvent.from(\n      entity.entityId,\n      entity.models[NAMESPACE]?.[MODEL_NAME] as SaleInterface,\n    );\n  },\n\n  getModelName: () => {\n    return MODEL_NAME;\n  },\n\n  getMethods: () => [],\n};\n","export type MarketplaceOptions = {\n  access?: boolean;\n  book?: boolean;\n  order?: boolean;\n  listing?: boolean;\n  offer?: boolean;\n  sale?: boolean;\n};\n\nexport const DefaultMarketplaceOptions: MarketplaceOptions = {\n  access: true,\n  book: true,\n  order: true,\n  listing: true,\n  offer: true,\n  sale: true,\n};\n","import type { constants } from \"starknet\";\nimport { configs } from \"../../configs\";\nimport { NAMESPACE } from \"../../constants\";\nimport { getContractByName } from \"@dojoengine/core\";\nimport { Moderator } from \"./moderator\";\nimport { Book } from \"./book\";\nimport { Order } from \"./order\";\nimport { DefaultMarketplaceOptions, type MarketplaceOptions } from \"./options\";\n\nconst CONTRACT_NAME = \"Marketplace\";\nconst CONTRACT_DESCRIPTION =\n  \"Marketplace contract to manage asset listings and offers.\";\n\nexport const getMarketplacePolicies = (\n  chainId: constants.StarknetChainId,\n  options: MarketplaceOptions = DefaultMarketplaceOptions,\n) => {\n  const config = configs[chainId];\n  const contract = getContractByName(config.manifest, NAMESPACE, CONTRACT_NAME);\n\n  if (!contract) {\n    throw new Error(`Missing ${NAMESPACE}-${CONTRACT_NAME} contract`);\n  }\n\n  return {\n    contracts: {\n      [contract.address]: {\n        name: CONTRACT_NAME,\n        description: CONTRACT_DESCRIPTION,\n        methods: [\n          ...(options.access ? Moderator.getMethods() : []),\n          ...(options.book ? Book.getMethods() : []),\n          ...(options.order ? Order.getMethods() : []),\n        ],\n      },\n    },\n  };\n};\n","import {\n  AndComposeClause,\n  KeysClause,\n  MemberClause,\n  ToriiQueryBuilder,\n} from \"@dojoengine/sdk\";\nimport { ModelsMapping, OrderCategory, OrderStatus } from \"../bindings\";\nimport { addAddressPadding, type BigNumberish } from \"starknet\";\n\nexport function subscribeToTokenUpdatesClause(\n  collectionAddress: string,\n  tokenId: BigNumberish | undefined,\n) {\n  return KeysClause(\n    [ModelsMapping.Order],\n    [\n      undefined,\n      addAddressPadding(collectionAddress),\n      tokenId?.toString(),\n      undefined,\n    ],\n  ).build();\n}\nfunction getOrderBaseClause(\n  collectionAddress: string,\n  tokenId: BigNumberish | undefined,\n  category: OrderCategory,\n) {\n  return AndComposeClause([\n    KeysClause(\n      [ModelsMapping.Order],\n      [\n        undefined,\n        addAddressPadding(collectionAddress),\n        tokenId?.toString(),\n        undefined,\n      ],\n      \"FixedLen\",\n    ),\n    MemberClause(ModelsMapping.Order, \"category\", \"Eq\", category.toString()),\n    MemberClause(\n      ModelsMapping.Order,\n      \"status\",\n      \"Eq\",\n      OrderStatus.Placed.toString(),\n    ),\n  ]);\n}\n\n// ToriiQuery to retrieve all marketplace informations related to input token.\nexport function getTokenQuery(collectionAddress: string, tokenId: string) {\n  return new ToriiQueryBuilder()\n    .withClause(\n      KeysClause(\n        [ModelsMapping.Order],\n        [undefined, addAddressPadding(collectionAddress), tokenId, undefined],\n      ).build(),\n    )\n    .includeHashedKeys()\n    .withEntityModels([ModelsMapping.Order])\n    .addOrderBy(\"expiration\", \"Asc\");\n}\n\n// Get orders for given token\nexport function getTokenOrders(collectionAddress: string, tokenId: string) {\n  return new ToriiQueryBuilder()\n    .withClause(\n      getOrderBaseClause(collectionAddress, tokenId, OrderCategory.Buy).build(),\n    )\n    .addOrderBy(\"expiration\", \"Desc\")\n    .withEntityModels([ModelsMapping.Order])\n    .includeHashedKeys();\n}\n\n// Get all listed tokens for a collection\nexport function getListedTokensForCollection(collectionAddress: string) {\n  return new ToriiQueryBuilder()\n    .withClause(\n      getOrderBaseClause(\n        collectionAddress,\n        undefined,\n        OrderCategory.Sell,\n      ).build(),\n    )\n    .addOrderBy(\"expiration\", \"Asc\")\n    .withEntityModels([ModelsMapping.Order])\n    .includeHashedKeys();\n}\n\n// Get token if Listed\nexport function isTokenListed(collectionAddress: string, tokenId: string) {\n  return new ToriiQueryBuilder()\n    .withClause(\n      getOrderBaseClause(\n        collectionAddress,\n        tokenId,\n        OrderCategory.Sell,\n      ).build(),\n    )\n    .withEntityModels([ModelsMapping.Order])\n    .includeHashedKeys();\n}\n","import {\n  AndComposeClause,\n  KeysClause,\n  MemberClause,\n  ToriiQueryBuilder,\n} from \"@dojoengine/sdk\";\nimport { ModelsMapping } from \"../bindings\";\nimport { addAddressPadding, type BigNumberish } from \"starknet\";\nimport { NAMESPACE } from \"../constants\";\n\nexport function getTokenMetadataQuery(\n  identity: string,\n  collectionAddress: string,\n  tokenId: BigNumberish,\n) {\n  return new ToriiQueryBuilder()\n    .withClause(\n      KeysClause(\n        [ModelsMapping.MetadataAttribute],\n        [\n          addAddressPadding(identity),\n          addAddressPadding(collectionAddress),\n          tokenId.toString(),\n          undefined,\n        ],\n        \"FixedLen\",\n      ).build(),\n    )\n    .withEntityModels([ModelsMapping.MetadataAttribute])\n    .addOrderBy(\"index\", \"Asc\");\n}\n\nexport function getCollectionMetadataQuery(\n  identity: string,\n  collectionAddress: string,\n) {\n  return new ToriiQueryBuilder()\n    .withClause(\n      KeysClause(\n        [ModelsMapping.MetadataAttribute],\n        [\n          addAddressPadding(identity),\n          addAddressPadding(collectionAddress),\n          undefined,\n          undefined,\n          undefined,\n        ],\n        \"FixedLen\",\n      ).build(),\n    )\n    .withEntityModels([ModelsMapping.MetadataAttribute])\n    .addOrderBy(\"index\", \"Asc\")\n    .withLimit(100000);\n}\n\nexport function getMetadataByTraitQuery(\n  identity: string,\n  collectionAddress: string,\n  traitType: string,\n) {\n  return new ToriiQueryBuilder()\n    .withClause(\n      AndComposeClause([\n        KeysClause(\n          [ModelsMapping.MetadataAttribute],\n          [\n            addAddressPadding(identity),\n            addAddressPadding(collectionAddress),\n            undefined,\n            undefined,\n          ],\n          \"FixedLen\",\n        ),\n        MemberClause(\n          ModelsMapping.MetadataAttribute,\n          \"trait_type\",\n          \"Eq\",\n          traitType,\n        ),\n      ]).build(),\n    )\n    .withEntityModels([ModelsMapping.MetadataAttribute])\n    .addOrderBy(\"token_id\", \"Asc\");\n}\n\nexport function getMetadataByValueQuery(\n  identity: string,\n  collectionAddress: string,\n  value: string,\n) {\n  return new ToriiQueryBuilder()\n    .withClause(\n      AndComposeClause([\n        KeysClause(\n          [ModelsMapping.MetadataAttribute],\n          [\n            addAddressPadding(identity),\n            addAddressPadding(collectionAddress),\n            undefined,\n            undefined,\n          ],\n          \"FixedLen\",\n        ),\n        MemberClause(ModelsMapping.MetadataAttribute, \"value\", \"Eq\", value),\n      ]).build(),\n    )\n    .withEntityModels([ModelsMapping.MetadataAttribute])\n    .addOrderBy(\"token_id\", \"Asc\");\n}\n\nexport function subscribeToMetadataUpdatesClause(\n  identity: string,\n  collectionAddress: string,\n  tokenId: BigNumberish | undefined,\n) {\n  return KeysClause(\n    [ModelsMapping.MetadataAttribute],\n    [\n      addAddressPadding(identity),\n      addAddressPadding(collectionAddress),\n      tokenId?.toString(),\n      undefined,\n    ],\n  ).build();\n}\n\nexport type TokenMetadataUI = {\n  tokenId: string;\n  attributes: Array<{\n    traitType: string;\n    value: string;\n  }>;\n};\n\nexport type CollectionMetadataUI = {\n  collectionAddress: string;\n  tokens: TokenMetadataUI[];\n};\n\nexport function transformMetadataForUI(\n  metadataEntities: any[],\n): TokenMetadataUI[] {\n  const tokenMap = new Map<string, TokenMetadataUI>();\n\n  for (const entity of metadataEntities) {\n    const metadata = entity.models?.[NAMESPACE].MetadataAttribute;\n    if (!metadata) continue;\n\n    const tokenId = `0x${metadata.token_id.toString(16)}`;\n\n    if (!tokenMap.has(tokenId)) {\n      tokenMap.set(tokenId, {\n        tokenId,\n        attributes: [],\n      });\n    }\n\n    const token = tokenMap.get(tokenId);\n    if (token) {\n      token.attributes.push({\n        traitType: metadata.trait_type,\n        value: metadata.value,\n      });\n    }\n  }\n\n  return Array.from(tokenMap.values()).sort((a, b) =>\n    BigInt(a.tokenId) > BigInt(b.tokenId) ? 1 : -1,\n  );\n}\n\nexport function transformCollectionMetadataForUI(\n  collectionAddress: string,\n  metadataEntities: any[],\n): CollectionMetadataUI {\n  return {\n    collectionAddress,\n    tokens: transformMetadataForUI(metadataEntities),\n  };\n}\n\nexport function filterMetadataByTraits(\n  metadata: TokenMetadataUI[],\n  traitFilters: { traitType: string; value: string }[],\n): TokenMetadataUI[] {\n  return metadata.filter((token) => {\n    return traitFilters.every((filter) =>\n      token.attributes.some(\n        (attr) =>\n          attr.traitType === filter.traitType && attr.value === filter.value,\n      ),\n    );\n  });\n}\n\nexport type MetadataStatistic = {\n  traitType: string;\n  values: Array<{\n    value: string;\n    count: number;\n    percentage: number;\n  }>;\n};\nexport type MetadataStatistics = MetadataStatistic[];\nexport function getMetadataStatistics(\n  metadata: TokenMetadataUI[],\n): MetadataStatistics {\n  const traitStats = new Map<string, Map<string, number>>();\n\n  for (const token of metadata) {\n    for (const attr of token.attributes) {\n      if (!traitStats.has(attr.traitType)) {\n        traitStats.set(attr.traitType, new Map());\n      }\n      const valueMap = traitStats.get(attr.traitType);\n      if (valueMap) {\n        valueMap.set(attr.value, (valueMap.get(attr.value) || 0) + 1);\n      }\n    }\n  }\n\n  const stats: Array<{\n    traitType: string;\n    values: Array<{ value: string; count: number; percentage: number }>;\n  }> = [];\n\n  traitStats.forEach((valueMap, traitType) => {\n    const values = Array.from(valueMap.entries())\n      .map(([value, count]) => ({\n        value,\n        count,\n        percentage: (count / metadata.length) * 100,\n      }))\n      .sort((a, b) => a.value.localeCompare(b.value));\n\n    stats.push({ traitType, values });\n  });\n\n  return stats.sort((a, b) => a.traitType.localeCompare(b.traitType));\n}\n","/**\n * Represents a parsed semantic version.\n */\nexport interface SemVer {\n  /** Major version number (X in X.Y.Z) */\n  major: number;\n  /** Minor version number (Y in X.Y.Z) */\n  minor: number;\n  /** Patch version number (Z in X.Y.Z) */\n  patch: number;\n  /** Prerelease version identifier (e.g., \"alpha.1\" in \"1.0.0-alpha.1\") */\n  prerelease?: string;\n  /** Build metadata (e.g., \"build.123\" in \"1.0.0+build.123\") */\n  build?: string;\n  /** The original version string */\n  raw: string;\n}\n\n/**\n * Parses a semantic version string into its components.\n * @param version - The version string to parse (e.g., \"1.2.3\", \"v1.2.3-alpha.1+build.123\")\n * @returns Parsed semantic version object\n * @throws Error if the version string is invalid\n */\nexport function parseSemVer(version: string): SemVer {\n  const cleanVersion = version.startsWith(\"v\") ? version.slice(1) : version;\n\n  const semverRegex =\n    /^(\\d+)\\.(\\d+)\\.(\\d+)(?:-([a-zA-Z0-9.-]+))?(?:\\+([a-zA-Z0-9.-]+))?$/;\n  const match = cleanVersion.match(semverRegex);\n\n  if (!match) {\n    throw new Error(`Invalid semver format: ${version}`);\n  }\n\n  const [, major, minor, patch, prerelease, build] = match;\n\n  return {\n    major: Number.parseInt(major, 10),\n    minor: Number.parseInt(minor, 10),\n    patch: Number.parseInt(patch, 10),\n    prerelease,\n    build,\n    raw: version,\n  };\n}\n\n/**\n * Compares prerelease identifiers according to semver specification.\n * Numeric identifiers are compared numerically, non-numeric lexically.\n * @param a - First prerelease identifier\n * @param b - Second prerelease identifier\n * @returns Negative if a < b, positive if a > b, 0 if equal\n */\nfunction comparePrereleaseIdentifiers(a: string, b: string): number {\n  const aParts = a.split(\".\");\n  const bParts = b.split(\".\");\n\n  const maxLength = Math.max(aParts.length, bParts.length);\n\n  for (let i = 0; i < maxLength; i++) {\n    const aPart = aParts[i];\n    const bPart = bParts[i];\n\n    // If one version has fewer parts, it's considered smaller\n    if (aPart === undefined) return -1;\n    if (bPart === undefined) return 1;\n\n    const aIsNumeric = /^\\d+$/.test(aPart);\n    const bIsNumeric = /^\\d+$/.test(bPart);\n\n    // Numeric identifiers always have lower precedence than non-numeric\n    if (aIsNumeric && !bIsNumeric) return -1;\n    if (!aIsNumeric && bIsNumeric) return 1;\n\n    // Compare numerically if both are numeric\n    if (aIsNumeric && bIsNumeric) {\n      const aNum = Number.parseInt(aPart, 10);\n      const bNum = Number.parseInt(bPart, 10);\n      if (aNum !== bNum) return aNum - bNum;\n    } else {\n      // Compare lexically if both are non-numeric\n      const result = aPart.localeCompare(bPart);\n      if (result !== 0) return result;\n    }\n  }\n\n  return 0;\n}\n\n/**\n * Compares two semantic versions.\n * @param a - First version to compare\n * @param b - Second version to compare\n * @returns Negative if a < b, positive if a > b, 0 if equal\n */\nexport function compareSemVer(a: SemVer, b: SemVer): number {\n  if (a.major !== b.major) return a.major - b.major;\n  if (a.minor !== b.minor) return a.minor - b.minor;\n  if (a.patch !== b.patch) return a.patch - b.patch;\n\n  if (a.prerelease && !b.prerelease) return -1;\n  if (!a.prerelease && b.prerelease) return 1;\n\n  if (a.prerelease && b.prerelease) {\n    return comparePrereleaseIdentifiers(a.prerelease, b.prerelease);\n  }\n\n  return 0;\n}\n\n/**\n * Checks if a version meets the specified requirements.\n * @param current - The current version\n * @param required - Required version constraints\n * @returns True if the current version satisfies the requirements\n */\nexport function isVersionCompatible(\n  current: SemVer,\n  required: { major?: number; minor?: number; patch?: number },\n): boolean {\n  if (required.major !== undefined && current.major !== required.major) {\n    return false;\n  }\n\n  if (required.minor !== undefined && current.minor < required.minor) {\n    return false;\n  }\n\n  if (required.patch !== undefined && current.patch < required.patch) {\n    return false;\n  }\n\n  return true;\n}\n","import { type SemVer, parseSemVer } from \"./semver\";\n\n/**\n * Response structure from Torii version endpoint.\n */\nexport interface ToriiVersionResponse {\n  /** Version string (e.g., \"1.5.8-preview.4 (main 5392c8a)\") */\n  version: string;\n  /** Service name (should be \"torii\") */\n  service: string;\n  /** Indicates if the request was successful */\n  success: boolean;\n}\n\n/**\n * Extended semantic version with Torii-specific metadata.\n */\nexport interface ToriiSemVer extends SemVer {\n  /** Git branch name (e.g., \"main\", \"develop\") */\n  branch?: string;\n  /** Git commit hash (7-40 characters) */\n  commit?: string;\n}\n\n/**\n * Function type for fetching version information from a URL.\n */\nexport type VersionFetcher = (url: string) => Promise<ToriiVersionResponse>;\n\n/**\n * Default implementation for fetching Torii version information.\n * Validates URL, handles network errors, and parses JSON response.\n * @param url - The URL to fetch version information from\n * @returns Promise resolving to version response\n * @throws Error for invalid URL, network errors, or JSON parsing failures\n */\nexport const defaultFetcher: VersionFetcher = async (url: string) => {\n  // Validate URL\n  try {\n    new URL(url);\n  } catch (error) {\n    throw new Error(`Invalid URL provided: ${url}`);\n  }\n\n  let response: Response;\n  try {\n    response = await fetch(url);\n  } catch (error) {\n    throw new Error(\n      `Network error while fetching Torii version from ${url}: ${\n        error instanceof Error ? error.message : \"Unknown error\"\n      }`,\n    );\n  }\n\n  if (!response.ok) {\n    throw new Error(\n      `Failed to fetch Torii version: ${response.status} ${response.statusText}`,\n    );\n  }\n\n  try {\n    const data = await response.json();\n    return data as ToriiVersionResponse;\n  } catch (error) {\n    throw new Error(\n      `Failed to parse JSON response from ${url}: ${error instanceof Error ? error.message : \"Invalid JSON\"}`,\n    );\n  }\n};\n\n/**\n * Parses a Torii version string including branch and commit information.\n * Supports format: \"1.5.8-preview.4 (main 5392c8a)\"\n * @param version - The version string to parse\n * @returns Parsed version with branch and commit information\n */\nexport function parseToriiVersion(version: string): ToriiSemVer {\n  // Pattern to match versions like \"1.5.8-preview.4 (main 5392c8a)\"\n  // Branch names: letters, numbers, hyphens, underscores, dots, and forward slashes\n  // Commit hashes: 1-40 alphanumeric characters (flexible for various hash lengths)\n  const toriiVersionRegex =\n    /^([^(]+?)(?:\\s*\\(([a-zA-Z0-9._\\/-]+)\\s+([a-zA-Z0-9]{1,40})\\))?$/;\n  const match = version.match(toriiVersionRegex);\n\n  if (!match) {\n    // Fallback to standard semver parsing if no Torii-specific format\n    return parseSemVer(version);\n  }\n\n  const [, semverPart, branch, commit] = match;\n  const baseSemVer = parseSemVer(semverPart.trim());\n\n  return {\n    ...baseSemVer,\n    branch,\n    commit,\n  };\n}\n\n/**\n * Retrieves and parses version information from a Torii service.\n * @param toriiUrl - The URL of the Torii service\n * @param fetcher - Optional custom fetcher function\n * @returns Promise resolving to parsed Torii version information\n * @throws Error if service is not \"torii\", response indicates failure, or version is invalid\n */\nexport async function getToriiVersion(\n  toriiUrl: string,\n  fetcher: VersionFetcher = defaultFetcher,\n): Promise<ToriiSemVer> {\n  const response = await fetcher(toriiUrl);\n\n  if (response.service !== \"torii\") {\n    throw new Error(\n      `Invalid service: expected 'torii', got '${response.service}'`,\n    );\n  }\n\n  if (!response.success) {\n    throw new Error(\"Torii service response indicates failure\");\n  }\n\n  return parseToriiVersion(response.version);\n}\n"],"mappings":"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","names":["torii","contract","TransactionType","MemberClause","MODEL_NAME","MemberClause","getChecksumAddress","MemberClause","MODEL_NAME","getChecksumAddress","MemberClause","getChecksumAddress","MemberClause","MODEL_NAME","Registry","getChecksumAddress","MemberClause","MODEL_NAME","getChecksumAddress","MemberClause","MODEL_NAME","MemberClause","MODEL_NAME","MemberClause","MemberClause","MODEL_NAME","MemberClause","MemberClause","getChecksumAddress","MODEL_NAME","ClauseBuilder","ToriiQueryBuilder","CONTRACT_NAME","CONTRACT_TAG","CONTRACT_DESCRIPTION","Social","ClauseBuilder","ToriiQueryBuilder","getChecksumAddress","getChecksumAddress","MODEL_NAME","getChecksumAddress","MODEL_NAME","MODEL_NAME","getChecksumAddress","MODEL_NAME","ClauseBuilder","ToriiQueryBuilder","getContractByName","CONTRACT_NAME","CONTRACT_DESCRIPTION","getContractByName","ENTITIES_LIMIT","ClauseBuilder","ToriiQueryBuilder","getChecksumAddress","MemberClause","ToriiQueryBuilder","MemberClause","ToriiQueryBuilder","AndComposeClause","KeysClause","MemberClause","ToriiQueryBuilder","addAddressPadding","ToriiQueryBuilder","KeysClause","addAddressPadding","AndComposeClause","MemberClause"]}