@betswirl/wagmi-provider
Version:
Wagmi client & wallet for Betswirl core SDK
1 lines • 18.4 kB
Source Map (JSON)
{"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.mjs","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"]}