{"version":3,"sources":["../src/client.ts","../src/wallet.ts"],"names":["WagmiBetSwirlWallet","BetSwirlWallet","wagmiConfig","__publicField","chainId","getPublicClient","functionData","gasPrice","call","readContract","functionDatas","contracts","states","readContracts","state","txHash","getTransactionReceipt","eventData","watchContractEvent","logs","error","value","request","simulateContract","writeContract","pollingInterval","waitForTransactionReceipt","WagmiBetSwirlClient","_WagmiBetSwirlClient","BetSwirlClient","betSwirlDefaultOptions","placedBet","options","waitRolledBet","params","callbacks","placeCoinTossBet","waitCoinTossRolledBet","placeDiceBet","waitDiceRolledBet","placeRouletteBet","waitRouletteRolledBet","onlyActive","getCasinoGames","getCasinoTokens","casinoToken","game","affiliate","casinoChain","casinoChainById","getCasinoGameToken","token","multiplier","getBetRequirements","tokenAddress","betCount","gasPriceType","getChainlinkVrfCost","getKenoConfiguration","effectiveChainId","switchChain","initWagmiBetSwirlClient"],"mappings":"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","file":"index.cjs","sourcesContent":["import type {\n  BetRequirements,\n  BetSwirlClientOptions,\n  CASINO_GAME_TYPE,\n  CasinoChainId,\n  CasinoGameToken,\n  CasinoPlaceBetOptions,\n  CasinoPlacedBet,\n  CasinoRolledBet,\n  CasinoToken,\n  CasinoWaitRollOptions,\n  ChainId,\n  CoinTossParams,\n  CoinTossPlacedBet,\n  CoinTossRolledBet,\n  DiceParams,\n  DicePlacedBet,\n  DiceRolledBet,\n  GAS_PRICE_TYPE,\n  KenoConfiguration,\n  PlaceBetCallbacks,\n  RouletteParams,\n  RoulettePlacedBet,\n  RouletteRolledBet,\n  Token,\n} from \"@betswirl/sdk-core\";\nimport {\n  BetSwirlClient,\n  casinoChainById,\n  getBetRequirements,\n  getCasinoGameToken,\n  getCasinoGames,\n  getCasinoTokens,\n  getChainlinkVrfCost,\n  getKenoConfiguration,\n  placeCoinTossBet,\n  placeDiceBet,\n  placeRouletteBet,\n  waitCoinTossRolledBet,\n  waitDiceRolledBet,\n  waitRolledBet,\n  waitRouletteRolledBet,\n} from \"@betswirl/sdk-core\";\nimport { type Config as WagmiConfig, switchChain } from \"@wagmi/core\";\nimport type { Hex, TransactionReceipt } from \"viem\";\nimport { WagmiBetSwirlWallet } from \"./wallet\";\n\nexport class WagmiBetSwirlClient extends BetSwirlClient {\n  public wagmiConfig: WagmiConfig;\n\n  constructor(wagmiConfig: WagmiConfig, betSwirlDefaultOptions: BetSwirlClientOptions = {}) {\n    super(new WagmiBetSwirlWallet(wagmiConfig), betSwirlDefaultOptions);\n    this.wagmiConfig = wagmiConfig;\n  }\n\n  /* Casino Games */\n\n  async waitRolledBet(\n    placedBet: CasinoPlacedBet,\n    options?: CasinoWaitRollOptions,\n  ): Promise<{ rolledBet: CasinoRolledBet; receipt: TransactionReceipt }> {\n    this._switchChain(placedBet.chainId);\n    return waitRolledBet(this.betSwirlWallet, placedBet, {\n      ...this.betSwirlDefaultOptions,\n      ...options,\n    });\n  }\n\n  async playCoinToss(\n    params: CoinTossParams,\n    options?: CasinoPlaceBetOptions,\n    callbacks?: PlaceBetCallbacks,\n    chainId?: CasinoChainId,\n  ): Promise<{ placedBet: CoinTossPlacedBet; receipt: TransactionReceipt }> {\n    this._switchChain(chainId);\n    return placeCoinTossBet(\n      this.betSwirlWallet,\n      { ...params, affiliate: this.betSwirlDefaultOptions.affiliate },\n      {\n        ...this.betSwirlDefaultOptions,\n        ...options,\n      },\n      callbacks,\n    );\n  }\n\n  async waitCoinToss(\n    placedBet: CoinTossPlacedBet,\n    options?: CasinoWaitRollOptions,\n  ): Promise<{ rolledBet: CoinTossRolledBet; receipt: TransactionReceipt }> {\n    this._switchChain(placedBet.chainId);\n    return waitCoinTossRolledBet(this.betSwirlWallet, placedBet, {\n      ...this.betSwirlDefaultOptions,\n      ...options,\n    });\n  }\n\n  async playDice(\n    params: DiceParams,\n    options?: CasinoPlaceBetOptions,\n    callbacks?: PlaceBetCallbacks,\n    chainId?: CasinoChainId,\n  ): Promise<{ placedBet: DicePlacedBet; receipt: TransactionReceipt }> {\n    this._switchChain(chainId);\n    return placeDiceBet(\n      this.betSwirlWallet,\n      { ...params, affiliate: this.betSwirlDefaultOptions.affiliate },\n      {\n        ...this.betSwirlDefaultOptions,\n        ...options,\n      },\n      callbacks,\n    );\n  }\n\n  async waitDice(\n    placedBet: DicePlacedBet,\n    options?: CasinoWaitRollOptions,\n  ): Promise<{ rolledBet: DiceRolledBet; receipt: TransactionReceipt }> {\n    this._switchChain(placedBet.chainId);\n    return waitDiceRolledBet(this.betSwirlWallet, placedBet, {\n      ...this.betSwirlDefaultOptions,\n      ...options,\n    });\n  }\n\n  async playRoulette(\n    params: RouletteParams,\n    options?: CasinoPlaceBetOptions,\n    callbacks?: PlaceBetCallbacks,\n    chainId?: CasinoChainId,\n  ): Promise<{ placedBet: RoulettePlacedBet; receipt: TransactionReceipt }> {\n    this._switchChain(chainId);\n    return placeRouletteBet(\n      this.betSwirlWallet,\n      { ...params, affiliate: this.betSwirlDefaultOptions.affiliate },\n      {\n        ...this.betSwirlDefaultOptions,\n        ...options,\n      },\n      callbacks,\n    );\n  }\n\n  async waitRoulette(\n    placedBet: RoulettePlacedBet,\n    options?: CasinoWaitRollOptions,\n  ): Promise<{ rolledBet: RouletteRolledBet; receipt: TransactionReceipt }> {\n    this._switchChain(placedBet.chainId);\n    return waitRouletteRolledBet(this.betSwirlWallet, placedBet, {\n      ...this.betSwirlDefaultOptions,\n      ...options,\n    });\n  }\n\n  /* Casino Utilities */\n\n  async getCasinoGames(onlyActive = false, chainId?: CasinoChainId) {\n    this._switchChain(chainId);\n    return getCasinoGames(this.betSwirlWallet, onlyActive);\n  }\n\n  async getCasinoTokens(onlyActive = false, chainId?: CasinoChainId): Promise<CasinoToken[]> {\n    this._switchChain(chainId);\n    return getCasinoTokens(this.betSwirlWallet, onlyActive);\n  }\n\n  async getCasinoGameToken(\n    casinoToken: CasinoToken,\n    game: CASINO_GAME_TYPE,\n    affiliate?: Hex,\n  ): Promise<CasinoGameToken> {\n    const casinoChain = casinoChainById[casinoToken.chainId];\n    this._switchChain(casinoToken.chainId);\n    return getCasinoGameToken(\n      this.betSwirlWallet,\n      casinoToken,\n      game,\n      affiliate || casinoChain.defaultAffiliate,\n    );\n  }\n\n  async getBetRequirements(\n    token: Token,\n    multiplier: number,\n    game: CASINO_GAME_TYPE,\n    chainId?: CasinoChainId,\n  ): Promise<BetRequirements> {\n    this._switchChain(chainId);\n    return getBetRequirements(this.betSwirlWallet, token, multiplier, game);\n  }\n\n  async getChainlinkVrfCost(\n    game: CASINO_GAME_TYPE,\n    tokenAddress: Hex,\n    betCount: number,\n    gasPrice?: bigint,\n    gasPriceType?: GAS_PRICE_TYPE,\n    chainId?: CasinoChainId,\n  ) {\n    this._switchChain(chainId);\n    return getChainlinkVrfCost(\n      this.betSwirlWallet,\n      game,\n      tokenAddress,\n      betCount,\n      gasPrice || this.betSwirlDefaultOptions.gasPrice,\n      gasPriceType || this.betSwirlDefaultOptions.gasPriceType,\n    );\n  }\n\n  async getKenoConfiguration(token: Token, chainId?: CasinoChainId): Promise<KenoConfiguration> {\n    this._switchChain(chainId);\n    return getKenoConfiguration(this.betSwirlWallet, token);\n  }\n\n  /* Private */\n  async _switchChain(chainId?: ChainId) {\n    const effectiveChainId = chainId || this.betSwirlDefaultOptions.chainId;\n    if (effectiveChainId) {\n      const currentChainId = await this.betSwirlWallet.getChainId();\n      if (currentChainId !== effectiveChainId) {\n        await switchChain(this.wagmiConfig, { chainId: effectiveChainId });\n      }\n    }\n  }\n\n  static init(wagmiConfig: WagmiConfig, options?: BetSwirlClientOptions): WagmiBetSwirlClient {\n    return new WagmiBetSwirlClient(wagmiConfig, options);\n  }\n}\n\nexport function initWagmiBetSwirlClient(\n  wagmiConfig: WagmiConfig,\n  options?: BetSwirlClientOptions,\n): WagmiBetSwirlClient {\n  return WagmiBetSwirlClient.init(wagmiConfig, options);\n}\n","import {\n  type BetSwirlEventData,\n  type BetSwirlFunctionData,\n  BetSwirlWallet,\n} from \"@betswirl/sdk-core\";\nimport {\n  type Config as WagmiConfig,\n  call,\n  getPublicClient,\n  getTransactionReceipt,\n  readContract,\n  readContracts,\n  simulateContract,\n  waitForTransactionReceipt,\n  watchContractEvent,\n  writeContract,\n} from \"@wagmi/core\";\nimport type { Abi, CallReturnType, Hash, PublicClient, TransactionReceipt } from \"viem\";\n\nexport class WagmiBetSwirlWallet extends BetSwirlWallet {\n  private wagmiConfig: WagmiConfig;\n\n  constructor(wagmiConfig: WagmiConfig) {\n    super();\n    this.wagmiConfig = wagmiConfig;\n  }\n\n  getChainId() {\n    return this.wagmiConfig.state.chainId;\n  }\n\n  // Wagmi currently does not support hosting Private Key & Mnemonic Accounts to the top-level Wagmi Config – meaning we have to explicitly pass through the account to every Action\n  // If at least one connector exists, then do not return an account\n  getAccount(chainId?: number) {\n    if (this.wagmiConfig.connectors.length > 0) return undefined;\n    return this.wagmiConfig.getClient({ chainId }).account;\n  }\n\n  getPublicClient(chainId?: number) {\n    return getPublicClient(this.wagmiConfig, { chainId }) as PublicClient;\n  }\n\n  async readContract<TFunctionData extends BetSwirlFunctionData<Abi, string, readonly any[]>>(\n    functionData: TFunctionData,\n    gasPrice: bigint,\n  ): Promise<CallReturnType>;\n\n  async readContract<\n    TFunctionData extends BetSwirlFunctionData<Abi, string, readonly any[]>,\n    TReturnType = any,\n  >(functionData: TFunctionData, gasPrice?: undefined): Promise<TReturnType>;\n\n  override async readContract<\n    TFunctionData extends BetSwirlFunctionData<Abi, string, readonly any[]>,\n    TReturnType = any,\n  >(functionData: TFunctionData, gasPrice?: bigint): Promise<CallReturnType | TReturnType> {\n    if (gasPrice && typeof gasPrice === \"bigint\") {\n      return call(this.wagmiConfig, {\n        to: functionData.data.to,\n        data: functionData.encodedData,\n        gasPrice,\n      }) as Promise<CallReturnType>;\n    }\n    return readContract(this.wagmiConfig, {\n      address: functionData.data.to,\n      abi: functionData.data.abi,\n      functionName: functionData.data.functionName,\n      args: functionData.data.args,\n    }) as Promise<TReturnType>;\n  }\n\n  async readContracts<\n    TFunctionDatas extends BetSwirlFunctionData<Abi, string, readonly any[]>[],\n    TReturnTypes extends any[],\n  >(functionDatas: [...TFunctionDatas]): Promise<TReturnTypes> {\n    const contracts = functionDatas.map((functionData) => ({\n      address: functionData.data.to,\n      abi: functionData.data.abi,\n      functionName: functionData.data.functionName,\n      args: functionData.data.args,\n    }));\n\n    const states = await readContracts(this.wagmiConfig, {\n      contracts,\n    });\n\n    if (states.some((state) => state.status === \"failure\" || state === undefined)) {\n      throw new Error(\"[wagmiWallet] An error occured while reading contracts\");\n    }\n\n    return states.map((state) => state.result) as TReturnTypes;\n  }\n\n  async getTransactionReceipt(txHash: Hash): Promise<TransactionReceipt> {\n    return getTransactionReceipt(this.wagmiConfig, { hash: txHash });\n  }\n\n  watchContractEvent<TEventData extends BetSwirlEventData<Abi, string, any>>(\n    eventData: TEventData,\n  ): () => void {\n    return watchContractEvent(this.wagmiConfig, {\n      address: eventData.data.to,\n      abi: eventData.data.abi,\n      eventName: eventData.data.eventName,\n      args: eventData.data.args,\n      pollingInterval: eventData.data.pollingInterval,\n      onLogs: (logs) => eventData.callbacks.onLogs?.(logs),\n      onError: (error) => eventData.callbacks.onError?.(error),\n    });\n  }\n\n  async writeContract<TFunctionData extends BetSwirlFunctionData<Abi, string, readonly any[]>>(\n    functionData: TFunctionData,\n    value?: bigint,\n    gasPrice?: bigint,\n  ): Promise<Hash> {\n    const { request } = await simulateContract(this.wagmiConfig, {\n      address: functionData.data.to,\n      abi: functionData.data.abi,\n      functionName: functionData.data.functionName,\n      args: functionData.data.args,\n      gasPrice,\n      account: this.getAccount(),\n      value,\n    });\n    return await writeContract(this.wagmiConfig, request);\n  }\n\n  async waitTransaction(txHash: Hash, pollingInterval?: number): Promise<TransactionReceipt> {\n    return await waitForTransactionReceipt(this.wagmiConfig, { hash: txHash, pollingInterval });\n  }\n}\n"]}