{"version":3,"sources":["../src/abis/v2/casino/bank.ts","../src/abis/v2/casino/cointoss.ts","../src/abis/v2/casino/dice.ts","../src/abis/v2/casino/game.ts","../src/abis/v2/casino/keno.ts","../src/abis/v2/casino/roulette.ts","../src/abis/v2/casino/weightedGame.ts","../src/data/chains.ts","../src/errors/codes.ts","../src/errors/betSwirlError.ts","../src/errors/types.ts","../src/constants.ts","../src/utils/api.ts","../src/data/api/freebet/bets.ts","../src/data/api/freebet/campaigns.ts","../src/data/api/freebet/codeCampaigns.ts","../src/data/casino.ts","../src/entities/casino/game.ts","../src/entities/casino/cointoss.ts","../src/entities/casino/dice.ts","../src/entities/casino/keno.ts","../src/entities/casino/roulette.ts","../src/entities/casino/weightedGame.ts","../src/utils/bet.ts","../src/utils/chains.ts","../src/utils/format.ts","../src/utils/wallet.ts","../src/utils/index.ts","../src/data/api/leaderboard/leaderboards.ts","../src/data/subgraphs/protocol/documents/types.ts","../src/data/subgraphs/protocol/documents/fragments/bet.ts","../src/data/subgraphs/protocol/documents/bet.ts","../src/data/subgraphs/protocol/documents/bets.ts","../src/utils/subgraphs.ts","../src/data/subgraphs/protocol/clients/common.ts","../src/data/subgraphs/protocol/clients/bet.ts","../src/data/subgraphs/protocol/documents/fragments/token.ts","../src/data/subgraphs/protocol/documents/token.ts","../src/data/subgraphs/protocol/documents/tokens.ts","../src/data/subgraphs/protocol/clients/token.ts","../src/data/tokens.ts","../src/utils/tokens.ts","../src/read/common/tokenMetadata.ts","../src/actions/api/freebet/claim.ts","../src/actions/api/leaderboard/leaderboards.ts","../src/abis/v2/casino/freebet.ts","../src/read/common/gasPrice.ts","../src/read/common/chainlinkVrfCost.ts","../src/actions/common/approve.ts","../src/actions/casino/game.ts","../src/actions/casino/cointoss.ts","../src/actions/casino/dice.ts","../src/actions/casino/keno.ts","../src/entities/casino/plinko.ts","../src/entities/casino/wheel.ts","../src/actions/casino/weightedGame.ts","../src/actions/casino/plinko.ts","../src/actions/casino/roulette.ts","../src/actions/casino/wheel.ts","../src/actions/freebet/claim.ts","../src/abis/v2/leaderboard/leaderboard.ts","../src/read/casino/bank.ts","../src/read/casino/game.ts","../src/read/casino/cointoss.ts","../src/read/casino/dice.ts","../src/read/casino/keno.ts","../src/read/casino/plinko.ts","../src/read/casino/roulette.ts","../src/read/casino/weightedGame.ts","../src/read/casino/wheel.ts","../src/read/leaderboard/leaderboard.ts","../src/actions/leaderboard/leaderboard.ts","../src/provider/client.ts","../src/provider/wallet.ts","../src/provider/viemWallet.ts","../src/provider/viemClient.ts"],"names":["bankAbi","coinTossAbi","diceAbi","casinoGameAbi","kenoAbi","rouletteAbi","wheelAbi","weightedGameAbi","chainByKey","polygon","polygonAmoy","avalanche","avalancheFuji","arbitrum","arbitrumSepolia","bsc","bscTestnet","mainnet","sepolia","base","baseSepolia","gnosis","optimism","optimismSepolia","chains","chainById","slugById","wrappedGasTokenById","ERROR_CODES","BetSwirlError","message","code","context","__publicField","ChainError","TransactionError","ConfigurationError","SubgraphError","apolloError","errorContext","BP_VALUE","DEFAULT_ADMIN_ROLE","DEFAULT_PAGE","DEFAULT_ITEMS_PER_PAGE","GAS_TOKEN_ADDRESS","zeroAddress","BETSWIRL_BASE_URL","BETSWIRL_API_URL","BETWIRL_TEST_API_URL","getBetSwirlApiUrl","isTestMode","fetchFreebets","player","affiliates","chainIds","withExternalBankrollFreebets","testMode","params","affiliate","chainId","res","freebet","formatUnits","error","FREEBET_CAMPAIGN_STATUS","fetchFreebetCampaigns","limit","offset","status","response","campaign","formatRawFreebetCampaign","fetchFreebetCampaign","id","fetchFreebetCodeCampaigns","formatRawFreebetCodeCampaign","fetchFreebetCodeCampaign","token","MAX_HOUSE_EGDE","MAX_SDK_HOUSE_EGDE","CASINO_GAME_TYPE","NORMAL_GAME_TYPES","WEIGHTED_CASINO_GAME_TYPES","CASINO_GAME_SUBGRAPH_TYPE","CASINO_GAME_LABEL_TYPE","_extractRollEvent","abi","COINTOSS_ROLL_ABI","DICE_ROLL_ABI","ROULETTE_ROLL_ABI","KENO_ROLL_ABI","WEIGHTED_GAME_ROLL_ABI","CASINO_GAME_ROLL_ABI","_extractPlaceBetEvent","COINTOSS_PLACE_BET_ABI","DICE_PLACE_BET_ABI","ROULETTE_PLACE_BET_ABI","KENO_PLACE_BET_ABI","WEIGHTED_GAME_PLACE_BET_ABI","CASINO_GAME_PLACE_BET_ABI","arbitrumSepoliaData","avalancheFujiData","polygonAmoyData","baseSepoliaData","arbitrumData","avalancheData","polygonData","bscData","baseData","casinoChainById","casinoChains","casinoChainIds","chain","labelCasinoGameByType","typeBySubgraphCasinoGame","subgraphGameByType","maxGameBetCountByType","AbstractCasinoGame","_input","_encodedInput","_encodedRolledInput","COINTOSS_FACE","CoinToss","_CoinToss","_face","face","encodeAbiParameters","parseAbiParameters","encodedFace","normalizedValue","decodedRolled","encodedInput","houseEdge","multiplier","formattedMultiplier","netMultiplier","getNetMultiplier","formattedNetMultiplier","getFormattedNetMultiplier","MIN_SELECTABLE_DICE_NUMBER","MAX_SELECTABLE_DICE_NUMBER","Dice","_Dice","cap","encodedCap","_","i","diceNumber","KENO_INPUT_BUNDLE","Keno","_Keno","kenoConfig","selectedBallsCount","matchedBallsCount","balls","sortedNumbers","a","b","sortedBooleans","num","binaryNumbers","numbers","isActive","encodedBalls","encodedRolled","createChoiceInput","label","possibleMatchedCounts","matchedCount","choiceInputs","kenoBall","maxFirstNumbers","maxLastNumbers","ball","MIN_SELECTABLE_ROULETTE_NUMBER","MAX_SELECTABLE_ROULETTE_NUMBER","ROULETTE_INPUT_BUNDLE","Roulette","_Roulette","encodedNumbers","number","rouletteNumber","startNumber","rowNumbers","bundle","fromToBundles","colorBundles","colorBundle","inputs","combinedNumbers","input","sortedCombinedNumbers","customLabel","WeightedGame","_WeightedGame","weightedGameConfig","position","weight","totalWeight","acc","curr","configId","weightedGameConfiguration","game","customWeightedGameConfigs","weightedGameCachedConfigurationsByGame","config","multipliers","index","existingCachedConfig","weightedGameCachedConfigurations","c","existingCustomConfig","uniqueMultipliers","generateRandomHexColor","getBetSwirlFees","payout","getGrossPayout","amount","betCount","grossMulitplier","getNetPayout","grossMultiplier","grossPayout","getPayoutDetails","fees","netPayout","decodeNormalCasinoInput","decodeWeightedCasinoInput","_weightedGameConfiguration","_houseEdge","decodeNormalCasinoRolled","decodeWeightedCasinoRolled","formatChainlinkSubscriptionUrl","subscriptionId","getCasinoChainId","wallet","overridedChainIds","_formatAmount","maxDecimals","minValue","trailingDecimals","Decimal","divisor","suffix","suffixes","thresholds","threshold","formattedNumber","integerPart","decimalPart","significantPart","trailedPart","finalFormattedNumber","formatAmount","formatType","value","formatTypes","formatRawAmount","rawAmount","decimals","FORMAT_TYPE","getTransactionReceiptWithRetry","txHash","retries","delay","resolve","bigIntFormatter","_key","truncate","fullStr","strLen","separator","frontChars","backChars","formatAccountUrl","account","formatTxnUrl","tx","getBetSwirlBetUrl","betId","randomRGBValue","LEADERBOARD_STATUS","LEADERBOARD_TYPE","LEADERBOARD_CASINO_RULES_SOURCE","LEADERBOARD_CASINO_RULES_GAME","LEADERBOARD_SPORT_RULES_SOURCE","LEADERBOARD_SPORT_RULES_BET_TYPE","fetchLeaderboards","playerAddress","withExternalBankrollLeaderboards","endDateDirection","statuses","leaderboard","formatRawLeaderboard","fetchAffiliateLeaderboards","formatRawAffiliateLeaderboard","fetchLeaderboard","fetchAffiliateLeaderboard","casinoRules","sportRules","share","ranking","Bet_OrderBy","OrderDirection","BetFragmentDoc","gql","BetDocument","BetsDocument","replaceGraphQlKey","endpoint","key","defaultSubgraphCasinoClient","InMemoryCache","getGraphqlEndpoint","subgraphClient","casinoChain","graphQlKey","formatCasinoBet","bet","betAmount","nativeCurrency","chainNativeCurrencyToToken","getAddress","totalBetAmount","rollTotalBetAmount","benefit","isWin","isStopTriggered","encoded","CasinoBetFilterStatus","fetchBets","client","filter","page","itemsPerPage","sortBy","apolloClient","ApolloClient","HttpLink","variables","data","fetchBet","fetchBetByHash","placeBetHash","TokenFragmentDoc","TokenDocument","TokensDocument","formatToken","fetchTokens","fetchToken","address","BETS_ADDRESS","formatTokenUrl","tokenAddress","rawTokenToToken","rawToken","casinoChainId","getTokenMetadata","functionDatas","getTokenDecimalsFunctionData","getTokenSymbolFunctionData","tokenMetadata","erc20Abi","functionName","args","encodeFunctionData","claimFreebetCode","signature","typedData","MAX_BET_IDS","refreshLeaderboardsWithBets","betIds","betType","freebetAbi","GAS_PRICE_TYPE","getGasPrices","gasPrice","basePrice","getChainlinkVrfCost","gasPriceType","effectiveGasPrice","defaultCasinoPlaceBetOptions","functionData","getChainlinkVrfCostFunctionData","gameAddress","vrfCost","ALLOWANCE_TYPE","approve","allower","spender","pollingInterval","allowanceType","onApprovePending","allowance","getAllowanceFunctionData","amountToApprove","getApproveFunctionData","result","defaultCasinoGameParams","placeBet","betParams","options","callbacks","accountAddress","receiver","getPlaceBetFunctionData","approveReceipt","approveResult","vrfFees","hash","receipt","placedBet","getPlacedBetFromReceipt","gameParams","stopGain","stopLoss","maxHouseEdge","placeFreebet","freebetParams","getPlaceFreebetFunctionData","placedFreebet","usedToken","decodedPlaceBetEvent","log","decodeEventLog","getPlaceBetEventData","gameData","eventName","placeBetEvent","placeCoinTossBet","coinTossParams","coinTossPlacedBet","getCoinTossPlacedBetFromReceipt","placeCoinTossFreebet","coinTossPlacedFreebet","gamePlacedBet","decodedCoinTossPlaceBetEvent","placeDiceBet","diceParams","dicePlacedBet","getDicePlacedBetFromReceipt","placeDiceFreebet","dicePlacedFreebet","decodedDicePlaceBetEvent","placeKenoBet","kenoParams","kenoPlacedBet","getKenoPlacedBetFromReceipt","placeKenoFreebet","kenoPlacedFreebet","decodedKenoPlaceBetEvent","Plinko","sortedByWeight","color","bellShapedOrder","item","Wheel","placeWeightedGameBet","weightedGameParams","weightedGamePlacedBet","getWeightedGamePlacedBetFromReceipt","placeWeightedGameFreebet","weightedGamePlacedFreebet","decodedWeightedGamePlaceBetEvent","placePlinkoBet","plinkoParams","placePlinkoFreebet","getPlinkoPlacedBetFromReceipt","customPlinkoConfigs","placeRouletteBet","rouletteParams","roulettePlacedBet","getRoulettePlacedBetFromReceipt","placeRouletteFreebet","roulettePlacedFreebet","decodedRoulettePlaceBetEvent","placeWheelBet","wheelParams","placeWheelFreebet","getWheelPlacedBetFromReceipt","customWheelConfigs","getClaimFreebetCodeTypedData","userAddress","signFreebetCode","leaderboardAbi","parseRawCasinoToken","getCasinoTokens","onlyActive","getCasinoTokensFunctionData","parseRawBetRequirements","rawBetRequirements","getBetRequirements","biggestMultiplier","getBetRequirementsFunctionData","defaultCasinoWaiRollOptions","formatCasinoRolledBet","rollEvent","tokenDecimals","r","waitRolledBet","reject","isResolved","onRollEvent","unwatch","eventData","getRollEventData","logs","matchingLog","_error","publicClient","getLogs","pastLogs","matchingPastLog","getCasinoGames","games","getGamePausedFunctionData","rawPauseds","gameType","getCasinoGamePaused","parseRawTokenInfoAndAffiliateHouseEdge","rawTokenInfo","rawAffiliateHouseEdge","casinoToken","defaultHouseEdge","getCasinoGameToken","tokenInfoFunctionData","getTokenInfoFunctionData","affiliateHouseEdgeFunctionData","getAffiliateHouseEdgeFunctionData","rawTokenData","waitCoinTossRolledBet","rolledBet","waitDiceRolledBet","waitKenoRolledBet","parseRawKenoConfiguration","rawConfiguration","row","getKenoConfiguration","getKenoConfigurationFunctionData","waitPlinkoRolledBet","waitRouletteRolledBet","normalWheelConfiguration","safePlinkoConfiguration","volatilePlinkoConfiguration","wheelCachedConfigurations","plinkoCachedConfigurations","gameIdByWeightedGameId","parseRawWeightedGameConfiguration","v","getWeightedGameConfiguration","cachedConfigurations","existingCachedConfiguration","getWeightedGameConfigurationFunctionData","waitWheelRolledBet","getLeaderboardClaimableAmount","leaderboardOnChainId","getClaimableAmountFunctionData","leaderboardAddress","claimLeaderboardRewards","onClaimPending","claimableAmount","getClaimRewardsLeaderboardFunctionData","effectivePollingInterval","BetSwirlClient","betSwirlWallet","betSwirlDefaultOptions","BetSwirlWallet","ViemBetSwirlWallet","viemPublicClient","viemWalletClient","_chainId","request","ViemBetSwirlClient","_ViemBetSwirlClient","walletClient","initViemBetSwirlClient"],"mappings":"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","file":"index.cjs","sourcesContent":["export const bankAbi = [\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"treasuryAddress\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"teamWalletAddress\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"wrappedGasToken\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"maxCallGas_\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"nonpayable\",\n    type: \"constructor\",\n  },\n  {\n    inputs: [],\n    name: \"AccessDenied\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidAddress\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidParam\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidValue\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"TokenExists\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"TokenHasPendingBets\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"TokenNotExists\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"TokenNotPaused\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint16\",\n        name: \"splitSum\",\n        type: \"uint16\",\n      },\n    ],\n    name: \"WrongHouseEdgeSplit\",\n    type: \"error\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"bool\",\n        name: \"added\",\n        type: \"bool\",\n      },\n    ],\n    name: \"AddToken\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"affiliateAmount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"AffiliateRevenuesDistribution\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"bank\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"dividend\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"treasury\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"team\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"affiliate\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"affiliateAddress\",\n        type: \"address\",\n      },\n    ],\n    name: \"AllocateHouseEdgeAmount\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"newBalance\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"CashIn\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"Deposit\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"newBalance\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"profit\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"Payout\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"treasuryAmount\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"teamAmount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"ProtocolRevenuesDistribution\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"bytes32\",\n        name: \"role\",\n        type: \"bytes32\",\n      },\n      {\n        indexed: true,\n        internalType: \"bytes32\",\n        name: \"previousAdminRole\",\n        type: \"bytes32\",\n      },\n      {\n        indexed: true,\n        internalType: \"bytes32\",\n        name: \"newAdminRole\",\n        type: \"bytes32\",\n      },\n    ],\n    name: \"RoleAdminChanged\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"bytes32\",\n        name: \"role\",\n        type: \"bytes32\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"account\",\n        type: \"address\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"sender\",\n        type: \"address\",\n      },\n    ],\n    name: \"RoleGranted\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"bytes32\",\n        name: \"role\",\n        type: \"bytes32\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"account\",\n        type: \"address\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"sender\",\n        type: \"address\",\n      },\n    ],\n    name: \"RoleRevoked\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"bool\",\n        name: \"allowed\",\n        type: \"bool\",\n      },\n    ],\n    name: \"SetAllowedToken\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"previousBalanceRisk\",\n        type: \"uint16\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"balanceRisk\",\n        type: \"uint16\",\n      },\n    ],\n    name: \"SetBalanceRisk\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"previousMaxCallGas\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"maxCallGas\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"SetMaxCallGas\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"bool\",\n        name: \"paused\",\n        type: \"bool\",\n      },\n    ],\n    name: \"SetPausedToken\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"previousTeamWallet\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"teamWallet\",\n        type: \"address\",\n      },\n    ],\n    name: \"SetTeamWallet\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"bank\",\n        type: \"uint16\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"dividend\",\n        type: \"uint16\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"affiliate\",\n        type: \"uint16\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"treasury\",\n        type: \"uint16\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"team\",\n        type: \"uint16\",\n      },\n    ],\n    name: \"SetTokenHouseEdgeSplit\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"previousBankrollProvider\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"bankrollProvider\",\n        type: \"address\",\n      },\n    ],\n    name: \"TokenBankrollProviderTransferAccepted\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"newBankrollProvider\",\n        type: \"address\",\n      },\n    ],\n    name: \"TokenBankrollProviderTransferStarted\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n    ],\n    name: \"Withdraw\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"WithdrawDividend\",\n    type: \"event\",\n  },\n  {\n    inputs: [],\n    name: \"DEFAULT_ADMIN_ROLE\",\n    outputs: [\n      {\n        internalType: \"bytes32\",\n        name: \"\",\n        type: \"bytes32\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"DIVIDEND_MANAGER_ROLE\",\n    outputs: [\n      {\n        internalType: \"bytes32\",\n        name: \"\",\n        type: \"bytes32\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"GAME_ROLE\",\n    outputs: [\n      {\n        internalType: \"bytes32\",\n        name: \"\",\n        type: \"bytes32\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"TREASURY_WALLET\",\n    outputs: [\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"WRAPPED\",\n    outputs: [\n      {\n        internalType: \"contract IWrapped\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n    ],\n    name: \"acceptTokenBankrollProviderTransfer\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"bool\",\n        name: \"added\",\n        type: \"bool\",\n      },\n    ],\n    name: \"addToken\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    name: \"affiliateAmounts\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"tokenAddress\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"fees\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n    ],\n    name: \"cashIn\",\n    outputs: [],\n    stateMutability: \"payable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"deposit\",\n    outputs: [],\n    stateMutability: \"payable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n    ],\n    name: \"getBalance\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n    ],\n    name: \"getBankrollProvider\",\n    outputs: [\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"tokenAddress\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"multiplier\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"getBetRequirements\",\n    outputs: [\n      {\n        internalType: \"bool\",\n        name: \"isAllowedToken\",\n        type: \"bool\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"maxBetAmount\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"maxBetCount\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"multiplier\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"getMaxBetAmount\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"multiplier\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"getMaxBetCount\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"bytes32\",\n        name: \"role\",\n        type: \"bytes32\",\n      },\n    ],\n    name: \"getRoleAdmin\",\n    outputs: [\n      {\n        internalType: \"bytes32\",\n        name: \"\",\n        type: \"bytes32\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"bytes32\",\n        name: \"role\",\n        type: \"bytes32\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"index\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"getRoleMember\",\n    outputs: [\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"bytes32\",\n        name: \"role\",\n        type: \"bytes32\",\n      },\n    ],\n    name: \"getRoleMemberCount\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"getTokens\",\n    outputs: [\n      {\n        components: [\n          {\n            internalType: \"uint8\",\n            name: \"decimals\",\n            type: \"uint8\",\n          },\n          {\n            internalType: \"address\",\n            name: \"tokenAddress\",\n            type: \"address\",\n          },\n          {\n            internalType: \"string\",\n            name: \"name\",\n            type: \"string\",\n          },\n          {\n            internalType: \"string\",\n            name: \"symbol\",\n            type: \"string\",\n          },\n          {\n            components: [\n              {\n                internalType: \"bool\",\n                name: \"allowed\",\n                type: \"bool\",\n              },\n              {\n                internalType: \"bool\",\n                name: \"paused\",\n                type: \"bool\",\n              },\n              {\n                internalType: \"uint16\",\n                name: \"balanceRisk\",\n                type: \"uint16\",\n              },\n              {\n                internalType: \"address\",\n                name: \"bankrollProvider\",\n                type: \"address\",\n              },\n              {\n                internalType: \"address\",\n                name: \"pendingBankrollProvider\",\n                type: \"address\",\n              },\n              {\n                components: [\n                  {\n                    internalType: \"uint16\",\n                    name: \"bank\",\n                    type: \"uint16\",\n                  },\n                  {\n                    internalType: \"uint16\",\n                    name: \"dividend\",\n                    type: \"uint16\",\n                  },\n                  {\n                    internalType: \"uint16\",\n                    name: \"affiliate\",\n                    type: \"uint16\",\n                  },\n                  {\n                    internalType: \"uint16\",\n                    name: \"treasury\",\n                    type: \"uint16\",\n                  },\n                  {\n                    internalType: \"uint16\",\n                    name: \"team\",\n                    type: \"uint16\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"dividendAmount\",\n                    type: \"uint256\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"affiliateAmount\",\n                    type: \"uint256\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"treasuryAmount\",\n                    type: \"uint256\",\n                  },\n                  {\n                    internalType: \"uint256\",\n                    name: \"teamAmount\",\n                    type: \"uint256\",\n                  },\n                ],\n                internalType: \"struct IBankAdmin.HouseEdgeSplitAndAllocation\",\n                name: \"houseEdgeSplitAndAllocation\",\n                type: \"tuple\",\n              },\n            ],\n            internalType: \"struct IBankAdmin.Token\",\n            name: \"token\",\n            type: \"tuple\",\n          },\n        ],\n        internalType: \"struct IBankAdmin.TokenMetadata[]\",\n        name: \"\",\n        type: \"tuple[]\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"bytes32\",\n        name: \"role\",\n        type: \"bytes32\",\n      },\n      {\n        internalType: \"address\",\n        name: \"account\",\n        type: \"address\",\n      },\n    ],\n    name: \"grantRole\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"bytes32\",\n        name: \"role\",\n        type: \"bytes32\",\n      },\n      {\n        internalType: \"address\",\n        name: \"account\",\n        type: \"address\",\n      },\n    ],\n    name: \"hasRole\",\n    outputs: [\n      {\n        internalType: \"bool\",\n        name: \"\",\n        type: \"bool\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"maxCallGas\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"user\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"profit\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"fees\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n    ],\n    name: \"payout\",\n    outputs: [],\n    stateMutability: \"payable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"bytes32\",\n        name: \"role\",\n        type: \"bytes32\",\n      },\n      {\n        internalType: \"address\",\n        name: \"account\",\n        type: \"address\",\n      },\n    ],\n    name: \"renounceRole\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"bytes32\",\n        name: \"role\",\n        type: \"bytes32\",\n      },\n      {\n        internalType: \"address\",\n        name: \"account\",\n        type: \"address\",\n      },\n    ],\n    name: \"revokeRole\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"bool\",\n        name: \"allowed\",\n        type: \"bool\",\n      },\n    ],\n    name: \"setAllowedToken\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"balanceRisk\",\n        type: \"uint16\",\n      },\n    ],\n    name: \"setBalanceRisk\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"bank\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"dividend\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"affiliate\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"treasury\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"team\",\n        type: \"uint16\",\n      },\n    ],\n    name: \"setHouseEdgeSplit\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"maxCallGas_\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"setMaxCallGas\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"bool\",\n        name: \"paused\",\n        type: \"bool\",\n      },\n    ],\n    name: \"setPausedToken\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"teamWallet_\",\n        type: \"address\",\n      },\n    ],\n    name: \"setTeamWallet\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n    ],\n    name: \"setTokenBankrollProviderTransfer\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"bytes4\",\n        name: \"interfaceId\",\n        type: \"bytes4\",\n      },\n    ],\n    name: \"supportsInterface\",\n    outputs: [\n      {\n        internalType: \"bool\",\n        name: \"\",\n        type: \"bool\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"teamWallet\",\n    outputs: [\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    name: \"tokens\",\n    outputs: [\n      {\n        internalType: \"bool\",\n        name: \"allowed\",\n        type: \"bool\",\n      },\n      {\n        internalType: \"bool\",\n        name: \"paused\",\n        type: \"bool\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"balanceRisk\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"address\",\n        name: \"bankrollProvider\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"pendingBankrollProvider\",\n        type: \"address\",\n      },\n      {\n        components: [\n          {\n            internalType: \"uint16\",\n            name: \"bank\",\n            type: \"uint16\",\n          },\n          {\n            internalType: \"uint16\",\n            name: \"dividend\",\n            type: \"uint16\",\n          },\n          {\n            internalType: \"uint16\",\n            name: \"affiliate\",\n            type: \"uint16\",\n          },\n          {\n            internalType: \"uint16\",\n            name: \"treasury\",\n            type: \"uint16\",\n          },\n          {\n            internalType: \"uint16\",\n            name: \"team\",\n            type: \"uint16\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"dividendAmount\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"affiliateAmount\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"treasuryAmount\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"teamAmount\",\n            type: \"uint256\",\n          },\n        ],\n        internalType: \"struct IBankAdmin.HouseEdgeSplitAndAllocation\",\n        name: \"houseEdgeSplitAndAllocation\",\n        type: \"tuple\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"withdraw\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"tokenAddress\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n    ],\n    name: \"withdrawAffiliateRevenues\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"tokenAddress\",\n        type: \"address\",\n      },\n    ],\n    name: \"withdrawDividend\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"withdrawDividends\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"tokenAddress\",\n        type: \"address\",\n      },\n    ],\n    name: \"withdrawProtocolRevenues\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n] as const;\n","export const coinTossAbi = [\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"bankAddress\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"chainlinkCoordinatorAddress\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"chainlinkWrapperAddress\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"wrappedGasToken\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint64\",\n        name: \"refundTime_\",\n        type: \"uint64\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"maxCallGas_\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"nonpayable\",\n    type: \"constructor\",\n  },\n  {\n    inputs: [],\n    name: \"AccessDenied\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"maxBetCount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"BetCountTooHigh\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"ForbiddenToken\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"HouseEdgeTooHigh\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"HouseEdgeTooLow\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidAddress\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidMaxCallGas\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidParam\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidVRFSubId\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"NotFulfilled\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"NotPendingBet\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"have\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"want\",\n        type: \"address\",\n      },\n    ],\n    name: \"OnlyCoordinatorCanFulfill\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"have\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"owner\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"coordinator\",\n        type: \"address\",\n      },\n    ],\n    name: \"OnlyOwnerOrCoordinator\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"TokenHasPendingBets\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"minBetAmount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"UnderMinBetAmount\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"minBetCount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"UnderMinBetCount\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"WrongGasValueToCoverVRFFee\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"ZeroAddress\",\n    type: \"error\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"user\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"BetRefunded\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"vrfCoordinator\",\n        type: \"address\",\n      },\n    ],\n    name: \"CoordinatorSet\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"DistributeTokenVRFFees\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"from\",\n        type: \"address\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n    ],\n    name: \"OwnershipTransferRequested\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"from\",\n        type: \"address\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n    ],\n    name: \"OwnershipTransferred\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"account\",\n        type: \"address\",\n      },\n    ],\n    name: \"Paused\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"receiver\",\n        type: \"address\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"chargedVRFCost\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"bool\",\n        name: \"face\",\n        type: \"bool\",\n      },\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint32\",\n        name: \"betCount\",\n        type: \"uint32\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"stopGain\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"stopLoss\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"PlaceBet\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"receiver\",\n        type: \"address\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"totalBetAmount\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"bool\",\n        name: \"face\",\n        type: \"bool\",\n      },\n      {\n        indexed: false,\n        internalType: \"bool[]\",\n        name: \"rolled\",\n        type: \"bool[]\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"payout\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"Roll\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"previousHouseEdge\",\n        type: \"uint16\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"houseEdge\",\n        type: \"uint16\",\n      },\n    ],\n    name: \"SetAffiliateHouseEdge\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"requestConfirmations\",\n        type: \"uint16\",\n      },\n      {\n        indexed: false,\n        internalType: \"bytes32\",\n        name: \"keyHash\",\n        type: \"bytes32\",\n      },\n      {\n        indexed: false,\n        internalType: \"contract IVRFV2PlusWrapperCustom\",\n        name: \"chainlinkWrapper\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint32\",\n        name: \"VRFCallbackGasExtraBet\",\n        type: \"uint32\",\n      },\n      {\n        indexed: false,\n        internalType: \"bool\",\n        name: \"nativePayment\",\n        type: \"bool\",\n      },\n    ],\n    name: \"SetChainlinkConfig\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"previousHouseEdge\",\n        type: \"uint16\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"houseEdge\",\n        type: \"uint16\",\n      },\n    ],\n    name: \"SetHouseEdge\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"previousMaxCallGas\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"maxCallGas\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"SetMaxCallGas\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"uint64\",\n        name: \"previousRefundTime\",\n        type: \"uint64\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint64\",\n        name: \"refundTime\",\n        type: \"uint64\",\n      },\n    ],\n    name: \"SetRefundTime\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint32\",\n        name: \"previousCallbackGasBase\",\n        type: \"uint32\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint32\",\n        name: \"callbackGasBase\",\n        type: \"uint32\",\n      },\n    ],\n    name: \"SetVRFCallbackGasBase\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"previousSubId\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"subId\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"SetVRFSubId\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"account\",\n        type: \"address\",\n      },\n    ],\n    name: \"Unpaused\",\n    type: \"event\",\n  },\n  {\n    inputs: [],\n    name: \"BANK\",\n    outputs: [\n      {\n        internalType: \"contract IBankGame\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"WRAPPED\",\n    outputs: [\n      {\n        internalType: \"contract IWrapped\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    name: \"_affiliateHouseEdges\",\n    outputs: [\n      {\n        internalType: \"uint16\",\n        name: \"\",\n        type: \"uint16\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"acceptOwnership\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"bets\",\n    outputs: [\n      {\n        internalType: \"bool\",\n        name: \"resolved\",\n        type: \"bool\",\n      },\n      {\n        internalType: \"address\",\n        name: \"receiver\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"houseEdge\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"uint32\",\n        name: \"timestamp\",\n        type: \"uint32\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"payout\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"betCount\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"stopGain\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"stopLoss\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"coinTossBets\",\n    outputs: [\n      {\n        components: [\n          {\n            internalType: \"bool\",\n            name: \"face\",\n            type: \"bool\",\n          },\n          {\n            internalType: \"bool[]\",\n            name: \"rolled\",\n            type: \"bool[]\",\n          },\n        ],\n        internalType: \"struct ICoinToss.CoinTossBet\",\n        name: \"\",\n        type: \"tuple\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n    ],\n    name: \"getAffiliateHouseEdge\",\n    outputs: [\n      {\n        internalType: \"uint16\",\n        name: \"\",\n        type: \"uint16\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"getChainlinkConfig\",\n    outputs: [\n      {\n        internalType: \"uint16\",\n        name: \"requestConfirmations\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"bytes32\",\n        name: \"keyHash\",\n        type: \"bytes32\",\n      },\n      {\n        internalType: \"contract IVRFCoordinatorV2Plus\",\n        name: \"chainlinkCoordinator\",\n        type: \"address\",\n      },\n      {\n        internalType: \"contract IVRFV2PlusWrapperCustom\",\n        name: \"chainlinkWrapper\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint32\",\n        name: \"VRFCallbackGasExtraBet\",\n        type: \"uint32\",\n      },\n      {\n        internalType: \"bool\",\n        name: \"nativePayment\",\n        type: \"bool\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"betCount\",\n        type: \"uint16\",\n      },\n    ],\n    name: \"getChainlinkVRFCost\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n    ],\n    name: \"hasPendingBets\",\n    outputs: [\n      {\n        internalType: \"bool\",\n        name: \"\",\n        type: \"bool\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"maxCallGas\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"owner\",\n    outputs: [\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"paused\",\n    outputs: [\n      {\n        internalType: \"bool\",\n        name: \"\",\n        type: \"bool\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"requestId\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint256[]\",\n        name: \"randomWords\",\n        type: \"uint256[]\",\n      },\n    ],\n    name: \"rawFulfillRandomWords\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"refundBet\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"refundTime\",\n    outputs: [\n      {\n        internalType: \"uint64\",\n        name: \"\",\n        type: \"uint64\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"s_vrfCoordinator\",\n    outputs: [\n      {\n        internalType: \"contract IVRFCoordinatorV2Plus\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"affiliateHouseEdge\",\n        type: \"uint16\",\n      },\n    ],\n    name: \"setAffiliateHouseEdge\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint16\",\n        name: \"requestConfirmations\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"bytes32\",\n        name: \"keyHash\",\n        type: \"bytes32\",\n      },\n      {\n        internalType: \"contract IVRFV2PlusWrapperCustom\",\n        name: \"chainlinkWrapper\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint32\",\n        name: \"VRFCallbackGasExtraBet\",\n        type: \"uint32\",\n      },\n      {\n        internalType: \"bool\",\n        name: \"nativePayment\",\n        type: \"bool\",\n      },\n    ],\n    name: \"setChainlinkConfig\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"_vrfCoordinator\",\n        type: \"address\",\n      },\n    ],\n    name: \"setCoordinator\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"houseEdge\",\n        type: \"uint16\",\n      },\n    ],\n    name: \"setHouseEdge\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"maxCallGas_\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"setMaxCallGas\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint64\",\n        name: \"refundTime_\",\n        type: \"uint64\",\n      },\n    ],\n    name: \"setRefundTime\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint32\",\n        name: \"callbackGasBase\",\n        type: \"uint32\",\n      },\n    ],\n    name: \"setVRFCallbackGasBase\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"subId\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"setVRFSubId\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"togglePause\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    name: \"tokens\",\n    outputs: [\n      {\n        internalType: \"uint16\",\n        name: \"houseEdge\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"uint64\",\n        name: \"pendingCount\",\n        type: \"uint64\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"vrfSubId\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint32\",\n        name: \"VRFCallbackGasBase\",\n        type: \"uint32\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"VRFFees\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n    ],\n    name: \"transferOwnership\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"bool\",\n        name: \"face\",\n        type: \"bool\",\n      },\n      {\n        internalType: \"address\",\n        name: \"receiver\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n      {\n        components: [\n          {\n            internalType: \"address\",\n            name: \"token\",\n            type: \"address\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"betAmount\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint16\",\n            name: \"betCount\",\n            type: \"uint16\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"stopGain\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"stopLoss\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint16\",\n            name: \"maxHouseEdge\",\n            type: \"uint16\",\n          },\n        ],\n        internalType: \"struct IGamePlayer.BetData\",\n        name: \"betData\",\n        type: \"tuple\",\n      },\n    ],\n    name: \"wager\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"payable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"bytes\",\n        name: \"bet\",\n        type: \"bytes\",\n      },\n      {\n        internalType: \"address\",\n        name: \"receiver\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n      {\n        components: [\n          {\n            internalType: \"address\",\n            name: \"token\",\n            type: \"address\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"betAmount\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint16\",\n            name: \"betCount\",\n            type: \"uint16\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"stopGain\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"stopLoss\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint16\",\n            name: \"maxHouseEdge\",\n            type: \"uint16\",\n          },\n        ],\n        internalType: \"struct IGamePlayer.BetData\",\n        name: \"betData\",\n        type: \"tuple\",\n      },\n    ],\n    name: \"wagerWithData\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"payable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n    ],\n    name: \"withdrawTokenVRFFees\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n] as const;\n","export const diceAbi = [\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"bankAddress\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"chainlinkCoordinatorAddress\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"chainlinkWrapperAddress\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"wrappedGasToken\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint64\",\n        name: \"refundTime_\",\n        type: \"uint64\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"maxCallGas_\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"nonpayable\",\n    type: \"constructor\",\n  },\n  {\n    inputs: [],\n    name: \"AccessDenied\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"maxBetCount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"BetCountTooHigh\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint8\",\n        name: \"minCap\",\n        type: \"uint8\",\n      },\n      {\n        internalType: \"uint8\",\n        name: \"maxCap\",\n        type: \"uint8\",\n      },\n    ],\n    name: \"CapNotInRange\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"ForbiddenToken\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"HouseEdgeTooHigh\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"HouseEdgeTooLow\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidAddress\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidMaxCallGas\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidParam\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidVRFSubId\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"NotFulfilled\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"NotPendingBet\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"have\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"want\",\n        type: \"address\",\n      },\n    ],\n    name: \"OnlyCoordinatorCanFulfill\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"have\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"owner\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"coordinator\",\n        type: \"address\",\n      },\n    ],\n    name: \"OnlyOwnerOrCoordinator\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"TokenHasPendingBets\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"minBetAmount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"UnderMinBetAmount\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"minBetCount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"UnderMinBetCount\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"WrongGasValueToCoverVRFFee\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"ZeroAddress\",\n    type: \"error\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"user\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"BetRefunded\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"vrfCoordinator\",\n        type: \"address\",\n      },\n    ],\n    name: \"CoordinatorSet\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"DistributeTokenVRFFees\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"from\",\n        type: \"address\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n    ],\n    name: \"OwnershipTransferRequested\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"from\",\n        type: \"address\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n    ],\n    name: \"OwnershipTransferred\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"account\",\n        type: \"address\",\n      },\n    ],\n    name: \"Paused\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"receiver\",\n        type: \"address\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"chargedVRFCost\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint8\",\n        name: \"cap\",\n        type: \"uint8\",\n      },\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint32\",\n        name: \"betCount\",\n        type: \"uint32\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"stopGain\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"stopLoss\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"PlaceBet\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"receiver\",\n        type: \"address\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"totalBetAmount\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint8\",\n        name: \"cap\",\n        type: \"uint8\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint8[]\",\n        name: \"rolled\",\n        type: \"uint8[]\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"payout\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"Roll\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"previousHouseEdge\",\n        type: \"uint16\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"houseEdge\",\n        type: \"uint16\",\n      },\n    ],\n    name: \"SetAffiliateHouseEdge\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"requestConfirmations\",\n        type: \"uint16\",\n      },\n      {\n        indexed: false,\n        internalType: \"bytes32\",\n        name: \"keyHash\",\n        type: \"bytes32\",\n      },\n      {\n        indexed: false,\n        internalType: \"contract IVRFV2PlusWrapperCustom\",\n        name: \"chainlinkWrapper\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint32\",\n        name: \"VRFCallbackGasExtraBet\",\n        type: \"uint32\",\n      },\n      {\n        indexed: false,\n        internalType: \"bool\",\n        name: \"nativePayment\",\n        type: \"bool\",\n      },\n    ],\n    name: \"SetChainlinkConfig\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"previousHouseEdge\",\n        type: \"uint16\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"houseEdge\",\n        type: \"uint16\",\n      },\n    ],\n    name: \"SetHouseEdge\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"previousMaxCallGas\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"maxCallGas\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"SetMaxCallGas\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"uint64\",\n        name: \"previousRefundTime\",\n        type: \"uint64\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint64\",\n        name: \"refundTime\",\n        type: \"uint64\",\n      },\n    ],\n    name: \"SetRefundTime\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint32\",\n        name: \"previousCallbackGasBase\",\n        type: \"uint32\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint32\",\n        name: \"callbackGasBase\",\n        type: \"uint32\",\n      },\n    ],\n    name: \"SetVRFCallbackGasBase\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"previousSubId\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"subId\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"SetVRFSubId\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"account\",\n        type: \"address\",\n      },\n    ],\n    name: \"Unpaused\",\n    type: \"event\",\n  },\n  {\n    inputs: [],\n    name: \"BANK\",\n    outputs: [\n      {\n        internalType: \"contract IBankGame\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"WRAPPED\",\n    outputs: [\n      {\n        internalType: \"contract IWrapped\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    name: \"_affiliateHouseEdges\",\n    outputs: [\n      {\n        internalType: \"uint16\",\n        name: \"\",\n        type: \"uint16\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"acceptOwnership\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"bets\",\n    outputs: [\n      {\n        internalType: \"bool\",\n        name: \"resolved\",\n        type: \"bool\",\n      },\n      {\n        internalType: \"address\",\n        name: \"receiver\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"houseEdge\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"uint32\",\n        name: \"timestamp\",\n        type: \"uint32\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"payout\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"betCount\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"stopGain\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"stopLoss\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"diceBets\",\n    outputs: [\n      {\n        components: [\n          {\n            internalType: \"uint8\",\n            name: \"cap\",\n            type: \"uint8\",\n          },\n          {\n            internalType: \"uint8[]\",\n            name: \"rolled\",\n            type: \"uint8[]\",\n          },\n        ],\n        internalType: \"struct IDice.DiceBet\",\n        name: \"\",\n        type: \"tuple\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n    ],\n    name: \"getAffiliateHouseEdge\",\n    outputs: [\n      {\n        internalType: \"uint16\",\n        name: \"\",\n        type: \"uint16\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"getChainlinkConfig\",\n    outputs: [\n      {\n        internalType: \"uint16\",\n        name: \"requestConfirmations\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"bytes32\",\n        name: \"keyHash\",\n        type: \"bytes32\",\n      },\n      {\n        internalType: \"contract IVRFCoordinatorV2Plus\",\n        name: \"chainlinkCoordinator\",\n        type: \"address\",\n      },\n      {\n        internalType: \"contract IVRFV2PlusWrapperCustom\",\n        name: \"chainlinkWrapper\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint32\",\n        name: \"VRFCallbackGasExtraBet\",\n        type: \"uint32\",\n      },\n      {\n        internalType: \"bool\",\n        name: \"nativePayment\",\n        type: \"bool\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"betCount\",\n        type: \"uint16\",\n      },\n    ],\n    name: \"getChainlinkVRFCost\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n    ],\n    name: \"hasPendingBets\",\n    outputs: [\n      {\n        internalType: \"bool\",\n        name: \"\",\n        type: \"bool\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"maxCallGas\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"owner\",\n    outputs: [\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"paused\",\n    outputs: [\n      {\n        internalType: \"bool\",\n        name: \"\",\n        type: \"bool\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"requestId\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint256[]\",\n        name: \"randomWords\",\n        type: \"uint256[]\",\n      },\n    ],\n    name: \"rawFulfillRandomWords\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"refundBet\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"refundTime\",\n    outputs: [\n      {\n        internalType: \"uint64\",\n        name: \"\",\n        type: \"uint64\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"s_vrfCoordinator\",\n    outputs: [\n      {\n        internalType: \"contract IVRFCoordinatorV2Plus\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"affiliateHouseEdge\",\n        type: \"uint16\",\n      },\n    ],\n    name: \"setAffiliateHouseEdge\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint16\",\n        name: \"requestConfirmations\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"bytes32\",\n        name: \"keyHash\",\n        type: \"bytes32\",\n      },\n      {\n        internalType: \"contract IVRFV2PlusWrapperCustom\",\n        name: \"chainlinkWrapper\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint32\",\n        name: \"VRFCallbackGasExtraBet\",\n        type: \"uint32\",\n      },\n      {\n        internalType: \"bool\",\n        name: \"nativePayment\",\n        type: \"bool\",\n      },\n    ],\n    name: \"setChainlinkConfig\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"_vrfCoordinator\",\n        type: \"address\",\n      },\n    ],\n    name: \"setCoordinator\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"houseEdge\",\n        type: \"uint16\",\n      },\n    ],\n    name: \"setHouseEdge\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"maxCallGas_\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"setMaxCallGas\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint64\",\n        name: \"refundTime_\",\n        type: \"uint64\",\n      },\n    ],\n    name: \"setRefundTime\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint32\",\n        name: \"callbackGasBase\",\n        type: \"uint32\",\n      },\n    ],\n    name: \"setVRFCallbackGasBase\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"subId\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"setVRFSubId\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"togglePause\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    name: \"tokens\",\n    outputs: [\n      {\n        internalType: \"uint16\",\n        name: \"houseEdge\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"uint64\",\n        name: \"pendingCount\",\n        type: \"uint64\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"vrfSubId\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint32\",\n        name: \"VRFCallbackGasBase\",\n        type: \"uint32\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"VRFFees\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n    ],\n    name: \"transferOwnership\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint8\",\n        name: \"cap\",\n        type: \"uint8\",\n      },\n      {\n        internalType: \"address\",\n        name: \"receiver\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n      {\n        components: [\n          {\n            internalType: \"address\",\n            name: \"token\",\n            type: \"address\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"betAmount\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint16\",\n            name: \"betCount\",\n            type: \"uint16\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"stopGain\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"stopLoss\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint16\",\n            name: \"maxHouseEdge\",\n            type: \"uint16\",\n          },\n        ],\n        internalType: \"struct IGamePlayer.BetData\",\n        name: \"betData\",\n        type: \"tuple\",\n      },\n    ],\n    name: \"wager\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"payable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"bytes\",\n        name: \"bet\",\n        type: \"bytes\",\n      },\n      {\n        internalType: \"address\",\n        name: \"receiver\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n      {\n        components: [\n          {\n            internalType: \"address\",\n            name: \"token\",\n            type: \"address\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"betAmount\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint16\",\n            name: \"betCount\",\n            type: \"uint16\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"stopGain\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"stopLoss\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint16\",\n            name: \"maxHouseEdge\",\n            type: \"uint16\",\n          },\n        ],\n        internalType: \"struct IGamePlayer.BetData\",\n        name: \"betData\",\n        type: \"tuple\",\n      },\n    ],\n    name: \"wagerWithData\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"payable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n    ],\n    name: \"withdrawTokenVRFFees\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n] as const;\n","export const casinoGameAbi = [\n  {\n    inputs: [],\n    name: \"AccessDenied\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"maxBetCount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"BetCountTooHigh\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"ForbiddenToken\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"HouseEdgeTooHigh\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"HouseEdgeTooLow\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidAddress\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidMaxCallGas\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidParam\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidVRFSubId\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"NotFulfilled\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"NotPendingBet\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"have\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"want\",\n        type: \"address\",\n      },\n    ],\n    name: \"OnlyCoordinatorCanFulfill\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"have\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"owner\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"coordinator\",\n        type: \"address\",\n      },\n    ],\n    name: \"OnlyOwnerOrCoordinator\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"TokenHasPendingBets\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"minBetAmount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"UnderMinBetAmount\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"minBetCount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"UnderMinBetCount\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"WrongGasValueToCoverVRFFee\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"ZeroAddress\",\n    type: \"error\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"user\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"BetRefunded\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"vrfCoordinator\",\n        type: \"address\",\n      },\n    ],\n    name: \"CoordinatorSet\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"DistributeTokenVRFFees\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"from\",\n        type: \"address\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n    ],\n    name: \"OwnershipTransferRequested\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"from\",\n        type: \"address\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n    ],\n    name: \"OwnershipTransferred\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"account\",\n        type: \"address\",\n      },\n    ],\n    name: \"Paused\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"previousHouseEdge\",\n        type: \"uint16\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"houseEdge\",\n        type: \"uint16\",\n      },\n    ],\n    name: \"SetAffiliateHouseEdge\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"requestConfirmations\",\n        type: \"uint16\",\n      },\n      {\n        indexed: false,\n        internalType: \"bytes32\",\n        name: \"keyHash\",\n        type: \"bytes32\",\n      },\n      {\n        indexed: false,\n        internalType: \"contract IVRFV2PlusWrapperCustom\",\n        name: \"chainlinkWrapper\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint32\",\n        name: \"VRFCallbackGasExtraBet\",\n        type: \"uint32\",\n      },\n      {\n        indexed: false,\n        internalType: \"bool\",\n        name: \"nativePayment\",\n        type: \"bool\",\n      },\n    ],\n    name: \"SetChainlinkConfig\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"previousHouseEdge\",\n        type: \"uint16\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"houseEdge\",\n        type: \"uint16\",\n      },\n    ],\n    name: \"SetHouseEdge\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"previousMaxCallGas\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"maxCallGas\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"SetMaxCallGas\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"uint64\",\n        name: \"previousRefundTime\",\n        type: \"uint64\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint64\",\n        name: \"refundTime\",\n        type: \"uint64\",\n      },\n    ],\n    name: \"SetRefundTime\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint32\",\n        name: \"previousCallbackGasBase\",\n        type: \"uint32\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint32\",\n        name: \"callbackGasBase\",\n        type: \"uint32\",\n      },\n    ],\n    name: \"SetVRFCallbackGasBase\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"previousSubId\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"subId\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"SetVRFSubId\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"account\",\n        type: \"address\",\n      },\n    ],\n    name: \"Unpaused\",\n    type: \"event\",\n  },\n  {\n    inputs: [],\n    name: \"BANK\",\n    outputs: [\n      {\n        internalType: \"contract IBankGame\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"WRAPPED\",\n    outputs: [\n      {\n        internalType: \"contract IWrapped\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    name: \"_affiliateHouseEdges\",\n    outputs: [\n      {\n        internalType: \"uint16\",\n        name: \"\",\n        type: \"uint16\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"acceptOwnership\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"bets\",\n    outputs: [\n      {\n        internalType: \"bool\",\n        name: \"resolved\",\n        type: \"bool\",\n      },\n      {\n        internalType: \"address\",\n        name: \"receiver\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"houseEdge\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"uint32\",\n        name: \"timestamp\",\n        type: \"uint32\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"payout\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"betCount\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"stopGain\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"stopLoss\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n    ],\n    name: \"getAffiliateHouseEdge\",\n    outputs: [\n      {\n        internalType: \"uint16\",\n        name: \"\",\n        type: \"uint16\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"getChainlinkConfig\",\n    outputs: [\n      {\n        internalType: \"uint16\",\n        name: \"requestConfirmations\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"bytes32\",\n        name: \"keyHash\",\n        type: \"bytes32\",\n      },\n      {\n        internalType: \"contract IVRFCoordinatorV2Plus\",\n        name: \"chainlinkCoordinator\",\n        type: \"address\",\n      },\n      {\n        internalType: \"contract IVRFV2PlusWrapperCustom\",\n        name: \"chainlinkWrapper\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint32\",\n        name: \"VRFCallbackGasExtraBet\",\n        type: \"uint32\",\n      },\n      {\n        internalType: \"bool\",\n        name: \"nativePayment\",\n        type: \"bool\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"betCount\",\n        type: \"uint16\",\n      },\n    ],\n    name: \"getChainlinkVRFCost\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n    ],\n    name: \"hasPendingBets\",\n    outputs: [\n      {\n        internalType: \"bool\",\n        name: \"\",\n        type: \"bool\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"maxCallGas\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"owner\",\n    outputs: [\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"paused\",\n    outputs: [\n      {\n        internalType: \"bool\",\n        name: \"\",\n        type: \"bool\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"requestId\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint256[]\",\n        name: \"randomWords\",\n        type: \"uint256[]\",\n      },\n    ],\n    name: \"rawFulfillRandomWords\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"refundBet\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"refundTime\",\n    outputs: [\n      {\n        internalType: \"uint64\",\n        name: \"\",\n        type: \"uint64\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"s_vrfCoordinator\",\n    outputs: [\n      {\n        internalType: \"contract IVRFCoordinatorV2Plus\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"affiliateHouseEdge\",\n        type: \"uint16\",\n      },\n    ],\n    name: \"setAffiliateHouseEdge\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint16\",\n        name: \"requestConfirmations\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"bytes32\",\n        name: \"keyHash\",\n        type: \"bytes32\",\n      },\n      {\n        internalType: \"contract IVRFV2PlusWrapperCustom\",\n        name: \"chainlinkWrapper\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint32\",\n        name: \"VRFCallbackGasExtraBet\",\n        type: \"uint32\",\n      },\n      {\n        internalType: \"bool\",\n        name: \"nativePayment\",\n        type: \"bool\",\n      },\n    ],\n    name: \"setChainlinkConfig\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"_vrfCoordinator\",\n        type: \"address\",\n      },\n    ],\n    name: \"setCoordinator\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"houseEdge\",\n        type: \"uint16\",\n      },\n    ],\n    name: \"setHouseEdge\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"maxCallGas_\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"setMaxCallGas\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint64\",\n        name: \"refundTime_\",\n        type: \"uint64\",\n      },\n    ],\n    name: \"setRefundTime\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint32\",\n        name: \"callbackGasBase\",\n        type: \"uint32\",\n      },\n    ],\n    name: \"setVRFCallbackGasBase\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"subId\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"setVRFSubId\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"togglePause\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    name: \"tokens\",\n    outputs: [\n      {\n        internalType: \"uint16\",\n        name: \"houseEdge\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"uint64\",\n        name: \"pendingCount\",\n        type: \"uint64\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"vrfSubId\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint32\",\n        name: \"VRFCallbackGasBase\",\n        type: \"uint32\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"VRFFees\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n    ],\n    name: \"transferOwnership\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n    ],\n    name: \"withdrawTokenVRFFees\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n] as const;\n","export const kenoAbi = [\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"bankAddress\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"chainlinkCoordinatorAddress\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"chainlinkWrapperAddress\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"wrappedGasToken\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint64\",\n        name: \"refundTime_\",\n        type: \"uint64\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"maxCallGas_\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"nonpayable\",\n    type: \"constructor\",\n  },\n  {\n    inputs: [],\n    name: \"AccessDenied\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"maxBetCount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"BetCountTooHigh\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"ForbiddenToken\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"HouseEdgeTooHigh\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"HouseEdgeTooLow\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidAddress\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidMaxCallGas\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidParam\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidSettings\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidVRFSubId\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"NotFulfilled\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"NotPendingBet\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"NumbersNotInRange\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"have\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"want\",\n        type: \"address\",\n      },\n    ],\n    name: \"OnlyCoordinatorCanFulfill\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"have\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"owner\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"coordinator\",\n        type: \"address\",\n      },\n    ],\n    name: \"OnlyOwnerOrCoordinator\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"TokenHasPendingBets\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"TooManyNumbersPlayed\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"minBetAmount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"UnderMinBetAmount\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"minBetCount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"UnderMinBetCount\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"WrongGasValueToCoverVRFFee\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"ZeroAddress\",\n    type: \"error\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"user\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"BetRefunded\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"vrfCoordinator\",\n        type: \"address\",\n      },\n    ],\n    name: \"CoordinatorSet\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"DistributeTokenVRFFees\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"from\",\n        type: \"address\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n    ],\n    name: \"OwnershipTransferRequested\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"from\",\n        type: \"address\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n    ],\n    name: \"OwnershipTransferred\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"account\",\n        type: \"address\",\n      },\n    ],\n    name: \"Paused\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"receiver\",\n        type: \"address\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"chargedVRFCost\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint40\",\n        name: \"numbers\",\n        type: \"uint40\",\n      },\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint32\",\n        name: \"betCount\",\n        type: \"uint32\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"stopGain\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"stopLoss\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"PlaceBet\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"receiver\",\n        type: \"address\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"totalBetAmount\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint40\",\n        name: \"numbers\",\n        type: \"uint40\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint40[]\",\n        name: \"rolled\",\n        type: \"uint40[]\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"payout\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"Roll\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"previousHouseEdge\",\n        type: \"uint16\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"houseEdge\",\n        type: \"uint16\",\n      },\n    ],\n    name: \"SetAffiliateHouseEdge\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"requestConfirmations\",\n        type: \"uint16\",\n      },\n      {\n        indexed: false,\n        internalType: \"bytes32\",\n        name: \"keyHash\",\n        type: \"bytes32\",\n      },\n      {\n        indexed: false,\n        internalType: \"contract IVRFV2PlusWrapperCustom\",\n        name: \"chainlinkWrapper\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint32\",\n        name: \"VRFCallbackGasExtraBet\",\n        type: \"uint32\",\n      },\n      {\n        indexed: false,\n        internalType: \"bool\",\n        name: \"nativePayment\",\n        type: \"bool\",\n      },\n    ],\n    name: \"SetChainlinkConfig\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"previousHouseEdge\",\n        type: \"uint16\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"houseEdge\",\n        type: \"uint16\",\n      },\n    ],\n    name: \"SetHouseEdge\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"previousMaxCallGas\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"maxCallGas\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"SetMaxCallGas\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"uint64\",\n        name: \"previousRefundTime\",\n        type: \"uint64\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint64\",\n        name: \"refundTime\",\n        type: \"uint64\",\n      },\n    ],\n    name: \"SetRefundTime\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint32\",\n        name: \"previousCallbackGasBase\",\n        type: \"uint32\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint32\",\n        name: \"callbackGasBase\",\n        type: \"uint32\",\n      },\n    ],\n    name: \"SetVRFCallbackGasBase\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"previousSubId\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"subId\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"SetVRFSubId\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint128\",\n        name: \"newBiggestNumber\",\n        type: \"uint128\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint128\",\n        name: \"newMaxNumbers\",\n        type: \"uint128\",\n      },\n    ],\n    name: \"TokenConfigUpdated\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"account\",\n        type: \"address\",\n      },\n    ],\n    name: \"Unpaused\",\n    type: \"event\",\n  },\n  {\n    inputs: [],\n    name: \"BANK\",\n    outputs: [\n      {\n        internalType: \"contract IBankGame\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"WRAPPED\",\n    outputs: [\n      {\n        internalType: \"contract IWrapped\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    name: \"_affiliateHouseEdges\",\n    outputs: [\n      {\n        internalType: \"uint16\",\n        name: \"\",\n        type: \"uint16\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"acceptOwnership\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"bets\",\n    outputs: [\n      {\n        internalType: \"bool\",\n        name: \"resolved\",\n        type: \"bool\",\n      },\n      {\n        internalType: \"address\",\n        name: \"receiver\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"houseEdge\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"uint32\",\n        name: \"timestamp\",\n        type: \"uint32\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"payout\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"betCount\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"stopGain\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"stopLoss\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"played\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"matchCount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"gain\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"_factor\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n    ],\n    name: \"gains\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"biggestNumber\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"maxNumbersPlayed\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint256[][]\",\n        name: \"_gainsTable\",\n        type: \"uint256[][]\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n    ],\n    name: \"getAffiliateHouseEdge\",\n    outputs: [\n      {\n        internalType: \"uint16\",\n        name: \"\",\n        type: \"uint16\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"getChainlinkConfig\",\n    outputs: [\n      {\n        internalType: \"uint16\",\n        name: \"requestConfirmations\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"bytes32\",\n        name: \"keyHash\",\n        type: \"bytes32\",\n      },\n      {\n        internalType: \"contract IVRFCoordinatorV2Plus\",\n        name: \"chainlinkCoordinator\",\n        type: \"address\",\n      },\n      {\n        internalType: \"contract IVRFV2PlusWrapperCustom\",\n        name: \"chainlinkWrapper\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint32\",\n        name: \"VRFCallbackGasExtraBet\",\n        type: \"uint32\",\n      },\n      {\n        internalType: \"bool\",\n        name: \"nativePayment\",\n        type: \"bool\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"betCount\",\n        type: \"uint16\",\n      },\n    ],\n    name: \"getChainlinkVRFCost\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"seed\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"getNumbersOutOfRandomWord\",\n    outputs: [\n      {\n        internalType: \"uint40\",\n        name: \"\",\n        type: \"uint40\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n    ],\n    name: \"hasPendingBets\",\n    outputs: [\n      {\n        internalType: \"bool\",\n        name: \"\",\n        type: \"bool\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"kenoBets\",\n    outputs: [\n      {\n        components: [\n          {\n            internalType: \"uint40\",\n            name: \"numbers\",\n            type: \"uint40\",\n          },\n          {\n            internalType: \"uint40[]\",\n            name: \"rolled\",\n            type: \"uint40[]\",\n          },\n        ],\n        internalType: \"struct IKeno.KenoBet\",\n        name: \"\",\n        type: \"tuple\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"maxCallGas\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"owner\",\n    outputs: [\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"paused\",\n    outputs: [\n      {\n        internalType: \"bool\",\n        name: \"\",\n        type: \"bool\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"requestId\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint256[]\",\n        name: \"randomWords\",\n        type: \"uint256[]\",\n      },\n    ],\n    name: \"rawFulfillRandomWords\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"refundBet\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"refundTime\",\n    outputs: [\n      {\n        internalType: \"uint64\",\n        name: \"\",\n        type: \"uint64\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"s_vrfCoordinator\",\n    outputs: [\n      {\n        internalType: \"contract IVRFCoordinatorV2Plus\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"affiliateHouseEdge\",\n        type: \"uint16\",\n      },\n    ],\n    name: \"setAffiliateHouseEdge\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint16\",\n        name: \"requestConfirmations\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"bytes32\",\n        name: \"keyHash\",\n        type: \"bytes32\",\n      },\n      {\n        internalType: \"contract IVRFV2PlusWrapperCustom\",\n        name: \"chainlinkWrapper\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint32\",\n        name: \"VRFCallbackGasExtraBet\",\n        type: \"uint32\",\n      },\n      {\n        internalType: \"bool\",\n        name: \"nativePayment\",\n        type: \"bool\",\n      },\n    ],\n    name: \"setChainlinkConfig\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"_vrfCoordinator\",\n        type: \"address\",\n      },\n    ],\n    name: \"setCoordinator\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"houseEdge\",\n        type: \"uint16\",\n      },\n    ],\n    name: \"setHouseEdge\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"maxCallGas_\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"setMaxCallGas\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint64\",\n        name: \"refundTime_\",\n        type: \"uint64\",\n      },\n    ],\n    name: \"setRefundTime\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint32\",\n        name: \"callbackGasBase\",\n        type: \"uint32\",\n      },\n    ],\n    name: \"setVRFCallbackGasBase\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"subId\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"setVRFSubId\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"togglePause\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    name: \"tokenConfigurations\",\n    outputs: [\n      {\n        internalType: \"uint128\",\n        name: \"biggestNumber\",\n        type: \"uint128\",\n      },\n      {\n        internalType: \"uint128\",\n        name: \"maxNumbersPlayed\",\n        type: \"uint128\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    name: \"tokens\",\n    outputs: [\n      {\n        internalType: \"uint16\",\n        name: \"houseEdge\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"uint64\",\n        name: \"pendingCount\",\n        type: \"uint64\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"vrfSubId\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint32\",\n        name: \"VRFCallbackGasBase\",\n        type: \"uint32\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"VRFFees\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n    ],\n    name: \"transferOwnership\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint128\",\n        name: \"newBiggestNumber\",\n        type: \"uint128\",\n      },\n      {\n        internalType: \"uint128\",\n        name: \"newMaxNumbers\",\n        type: \"uint128\",\n      },\n    ],\n    name: \"updateTokenConfig\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint40\",\n        name: \"numbers\",\n        type: \"uint40\",\n      },\n      {\n        internalType: \"address\",\n        name: \"receiver\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n      {\n        components: [\n          {\n            internalType: \"address\",\n            name: \"token\",\n            type: \"address\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"betAmount\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint16\",\n            name: \"betCount\",\n            type: \"uint16\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"stopGain\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"stopLoss\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint16\",\n            name: \"maxHouseEdge\",\n            type: \"uint16\",\n          },\n        ],\n        internalType: \"struct IGamePlayer.BetData\",\n        name: \"betData\",\n        type: \"tuple\",\n      },\n    ],\n    name: \"wager\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"payable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"bytes\",\n        name: \"bet\",\n        type: \"bytes\",\n      },\n      {\n        internalType: \"address\",\n        name: \"receiver\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n      {\n        components: [\n          {\n            internalType: \"address\",\n            name: \"token\",\n            type: \"address\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"betAmount\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint16\",\n            name: \"betCount\",\n            type: \"uint16\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"stopGain\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"stopLoss\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint16\",\n            name: \"maxHouseEdge\",\n            type: \"uint16\",\n          },\n        ],\n        internalType: \"struct IGamePlayer.BetData\",\n        name: \"betData\",\n        type: \"tuple\",\n      },\n    ],\n    name: \"wagerWithData\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"payable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n    ],\n    name: \"withdrawTokenVRFFees\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n] as const;\n","export const rouletteAbi = [\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"bankAddress\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"chainlinkCoordinatorAddress\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"chainlinkWrapperAddress\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"wrappedGasToken\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint64\",\n        name: \"refundTime_\",\n        type: \"uint64\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"maxCallGas_\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"nonpayable\",\n    type: \"constructor\",\n  },\n  {\n    inputs: [],\n    name: \"AccessDenied\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"maxBetCount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"BetCountTooHigh\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"ForbiddenToken\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"HouseEdgeTooHigh\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"HouseEdgeTooLow\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidAddress\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidMaxCallGas\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidParam\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidVRFSubId\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"NotFulfilled\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"NotPendingBet\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"NumbersNotInRange\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"have\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"want\",\n        type: \"address\",\n      },\n    ],\n    name: \"OnlyCoordinatorCanFulfill\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"have\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"owner\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"coordinator\",\n        type: \"address\",\n      },\n    ],\n    name: \"OnlyOwnerOrCoordinator\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"TokenHasPendingBets\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"minBetAmount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"UnderMinBetAmount\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"minBetCount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"UnderMinBetCount\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"WrongGasValueToCoverVRFFee\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"ZeroAddress\",\n    type: \"error\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"user\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"BetRefunded\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"vrfCoordinator\",\n        type: \"address\",\n      },\n    ],\n    name: \"CoordinatorSet\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"DistributeTokenVRFFees\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"from\",\n        type: \"address\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n    ],\n    name: \"OwnershipTransferRequested\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"from\",\n        type: \"address\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n    ],\n    name: \"OwnershipTransferred\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"account\",\n        type: \"address\",\n      },\n    ],\n    name: \"Paused\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"receiver\",\n        type: \"address\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"chargedVRFCost\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint40\",\n        name: \"numbers\",\n        type: \"uint40\",\n      },\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint32\",\n        name: \"betCount\",\n        type: \"uint32\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"stopGain\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"stopLoss\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"PlaceBet\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"receiver\",\n        type: \"address\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"totalBetAmount\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint40\",\n        name: \"numbers\",\n        type: \"uint40\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint8[]\",\n        name: \"rolled\",\n        type: \"uint8[]\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"payout\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"Roll\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"previousHouseEdge\",\n        type: \"uint16\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"houseEdge\",\n        type: \"uint16\",\n      },\n    ],\n    name: \"SetAffiliateHouseEdge\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"requestConfirmations\",\n        type: \"uint16\",\n      },\n      {\n        indexed: false,\n        internalType: \"bytes32\",\n        name: \"keyHash\",\n        type: \"bytes32\",\n      },\n      {\n        indexed: false,\n        internalType: \"contract IVRFV2PlusWrapperCustom\",\n        name: \"chainlinkWrapper\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint32\",\n        name: \"VRFCallbackGasExtraBet\",\n        type: \"uint32\",\n      },\n      {\n        indexed: false,\n        internalType: \"bool\",\n        name: \"nativePayment\",\n        type: \"bool\",\n      },\n    ],\n    name: \"SetChainlinkConfig\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"previousHouseEdge\",\n        type: \"uint16\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"houseEdge\",\n        type: \"uint16\",\n      },\n    ],\n    name: \"SetHouseEdge\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"previousMaxCallGas\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"maxCallGas\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"SetMaxCallGas\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"uint64\",\n        name: \"previousRefundTime\",\n        type: \"uint64\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint64\",\n        name: \"refundTime\",\n        type: \"uint64\",\n      },\n    ],\n    name: \"SetRefundTime\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint32\",\n        name: \"previousCallbackGasBase\",\n        type: \"uint32\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint32\",\n        name: \"callbackGasBase\",\n        type: \"uint32\",\n      },\n    ],\n    name: \"SetVRFCallbackGasBase\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"previousSubId\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"subId\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"SetVRFSubId\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"account\",\n        type: \"address\",\n      },\n    ],\n    name: \"Unpaused\",\n    type: \"event\",\n  },\n  {\n    inputs: [],\n    name: \"BANK\",\n    outputs: [\n      {\n        internalType: \"contract IBankGame\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"WRAPPED\",\n    outputs: [\n      {\n        internalType: \"contract IWrapped\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    name: \"_affiliateHouseEdges\",\n    outputs: [\n      {\n        internalType: \"uint16\",\n        name: \"\",\n        type: \"uint16\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"acceptOwnership\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"bets\",\n    outputs: [\n      {\n        internalType: \"bool\",\n        name: \"resolved\",\n        type: \"bool\",\n      },\n      {\n        internalType: \"address\",\n        name: \"receiver\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"houseEdge\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"uint32\",\n        name: \"timestamp\",\n        type: \"uint32\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"payout\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"betCount\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"stopGain\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"stopLoss\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n    ],\n    name: \"getAffiliateHouseEdge\",\n    outputs: [\n      {\n        internalType: \"uint16\",\n        name: \"\",\n        type: \"uint16\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"getChainlinkConfig\",\n    outputs: [\n      {\n        internalType: \"uint16\",\n        name: \"requestConfirmations\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"bytes32\",\n        name: \"keyHash\",\n        type: \"bytes32\",\n      },\n      {\n        internalType: \"contract IVRFCoordinatorV2Plus\",\n        name: \"chainlinkCoordinator\",\n        type: \"address\",\n      },\n      {\n        internalType: \"contract IVRFV2PlusWrapperCustom\",\n        name: \"chainlinkWrapper\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint32\",\n        name: \"VRFCallbackGasExtraBet\",\n        type: \"uint32\",\n      },\n      {\n        internalType: \"bool\",\n        name: \"nativePayment\",\n        type: \"bool\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"betCount\",\n        type: \"uint16\",\n      },\n    ],\n    name: \"getChainlinkVRFCost\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n    ],\n    name: \"hasPendingBets\",\n    outputs: [\n      {\n        internalType: \"bool\",\n        name: \"\",\n        type: \"bool\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"maxCallGas\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"owner\",\n    outputs: [\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"paused\",\n    outputs: [\n      {\n        internalType: \"bool\",\n        name: \"\",\n        type: \"bool\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"requestId\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint256[]\",\n        name: \"randomWords\",\n        type: \"uint256[]\",\n      },\n    ],\n    name: \"rawFulfillRandomWords\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"refundBet\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"refundTime\",\n    outputs: [\n      {\n        internalType: \"uint64\",\n        name: \"\",\n        type: \"uint64\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"rouletteBets\",\n    outputs: [\n      {\n        components: [\n          {\n            internalType: \"uint40\",\n            name: \"numbers\",\n            type: \"uint40\",\n          },\n          {\n            internalType: \"uint8[]\",\n            name: \"rolled\",\n            type: \"uint8[]\",\n          },\n        ],\n        internalType: \"struct IRoulette.RouletteBet\",\n        name: \"\",\n        type: \"tuple\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"s_vrfCoordinator\",\n    outputs: [\n      {\n        internalType: \"contract IVRFCoordinatorV2Plus\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"affiliateHouseEdge\",\n        type: \"uint16\",\n      },\n    ],\n    name: \"setAffiliateHouseEdge\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint16\",\n        name: \"requestConfirmations\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"bytes32\",\n        name: \"keyHash\",\n        type: \"bytes32\",\n      },\n      {\n        internalType: \"contract IVRFV2PlusWrapperCustom\",\n        name: \"chainlinkWrapper\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint32\",\n        name: \"VRFCallbackGasExtraBet\",\n        type: \"uint32\",\n      },\n      {\n        internalType: \"bool\",\n        name: \"nativePayment\",\n        type: \"bool\",\n      },\n    ],\n    name: \"setChainlinkConfig\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"_vrfCoordinator\",\n        type: \"address\",\n      },\n    ],\n    name: \"setCoordinator\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"houseEdge\",\n        type: \"uint16\",\n      },\n    ],\n    name: \"setHouseEdge\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"maxCallGas_\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"setMaxCallGas\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint64\",\n        name: \"refundTime_\",\n        type: \"uint64\",\n      },\n    ],\n    name: \"setRefundTime\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint32\",\n        name: \"callbackGasBase\",\n        type: \"uint32\",\n      },\n    ],\n    name: \"setVRFCallbackGasBase\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"subId\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"setVRFSubId\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"togglePause\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    name: \"tokens\",\n    outputs: [\n      {\n        internalType: \"uint16\",\n        name: \"houseEdge\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"uint64\",\n        name: \"pendingCount\",\n        type: \"uint64\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"vrfSubId\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint32\",\n        name: \"VRFCallbackGasBase\",\n        type: \"uint32\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"VRFFees\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n    ],\n    name: \"transferOwnership\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint40\",\n        name: \"numbers\",\n        type: \"uint40\",\n      },\n      {\n        internalType: \"address\",\n        name: \"receiver\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n      {\n        components: [\n          {\n            internalType: \"address\",\n            name: \"token\",\n            type: \"address\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"betAmount\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint16\",\n            name: \"betCount\",\n            type: \"uint16\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"stopGain\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"stopLoss\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint16\",\n            name: \"maxHouseEdge\",\n            type: \"uint16\",\n          },\n        ],\n        internalType: \"struct IGamePlayer.BetData\",\n        name: \"betData\",\n        type: \"tuple\",\n      },\n    ],\n    name: \"wager\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"payable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"bytes\",\n        name: \"bet\",\n        type: \"bytes\",\n      },\n      {\n        internalType: \"address\",\n        name: \"receiver\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n      {\n        components: [\n          {\n            internalType: \"address\",\n            name: \"token\",\n            type: \"address\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"betAmount\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint16\",\n            name: \"betCount\",\n            type: \"uint16\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"stopGain\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"stopLoss\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint16\",\n            name: \"maxHouseEdge\",\n            type: \"uint16\",\n          },\n        ],\n        internalType: \"struct IGamePlayer.BetData\",\n        name: \"betData\",\n        type: \"tuple\",\n      },\n    ],\n    name: \"wagerWithData\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"payable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n    ],\n    name: \"withdrawTokenVRFFees\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n] as const;\n","export const wheelAbi = [\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"bankAddress\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"chainlinkCoordinatorAddress\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"chainlinkWrapperAddress\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"wrappedGasToken\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint64\",\n        name: \"refundTime_\",\n        type: \"uint64\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"maxCallGas_\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint8\",\n        name: \"maxColors_\",\n        type: \"uint8\",\n      },\n    ],\n    stateMutability: \"nonpayable\",\n    type: \"constructor\",\n  },\n  {\n    inputs: [],\n    name: \"AccessDenied\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"maxBetCount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"BetCountTooHigh\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint32\",\n        name: \"id\",\n        type: \"uint32\",\n      },\n    ],\n    name: \"ConfigNotExists\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"ForbiddenToken\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"HouseEdgeTooHigh\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"HouseEdgeTooLow\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidAddress\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidConfig\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidMaxCallGas\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidParam\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidVRFSubId\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"NotFulfilled\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"NotPendingBet\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"have\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"want\",\n        type: \"address\",\n      },\n    ],\n    name: \"OnlyCoordinatorCanFulfill\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"have\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"owner\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"coordinator\",\n        type: \"address\",\n      },\n    ],\n    name: \"OnlyOwnerOrCoordinator\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"TokenHasPendingBets\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"minBetAmount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"UnderMinBetAmount\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"minBetCount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"UnderMinBetCount\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"WrongGasValueToCoverVRFFee\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"ZeroAddress\",\n    type: \"error\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"user\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"BetRefunded\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"vrfCoordinator\",\n        type: \"address\",\n      },\n    ],\n    name: \"CoordinatorSet\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"DistributeTokenVRFFees\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"uint32\",\n        name: \"configId\",\n        type: \"uint32\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint64[]\",\n        name: \"weights\",\n        type: \"uint64[]\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint64[]\",\n        name: \"multipliers\",\n        type: \"uint64[]\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint32\",\n        name: \"gameId\",\n        type: \"uint32\",\n      },\n    ],\n    name: \"GameConfigAdded\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"from\",\n        type: \"address\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n    ],\n    name: \"OwnershipTransferRequested\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"from\",\n        type: \"address\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n    ],\n    name: \"OwnershipTransferred\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"account\",\n        type: \"address\",\n      },\n    ],\n    name: \"Paused\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"receiver\",\n        type: \"address\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"chargedVRFCost\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint32\",\n        name: \"configId\",\n        type: \"uint32\",\n      },\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint32\",\n        name: \"betCount\",\n        type: \"uint32\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"stopGain\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"stopLoss\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"PlaceBet\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"receiver\",\n        type: \"address\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"totalBetAmount\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint32\",\n        name: \"configId\",\n        type: \"uint32\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint8[]\",\n        name: \"rolled\",\n        type: \"uint8[]\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"payout\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"Roll\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"previousHouseEdge\",\n        type: \"uint16\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"houseEdge\",\n        type: \"uint16\",\n      },\n    ],\n    name: \"SetAffiliateHouseEdge\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"requestConfirmations\",\n        type: \"uint16\",\n      },\n      {\n        indexed: false,\n        internalType: \"bytes32\",\n        name: \"keyHash\",\n        type: \"bytes32\",\n      },\n      {\n        indexed: false,\n        internalType: \"contract IVRFV2PlusWrapperCustom\",\n        name: \"chainlinkWrapper\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint32\",\n        name: \"VRFCallbackGasExtraBet\",\n        type: \"uint32\",\n      },\n      {\n        indexed: false,\n        internalType: \"bool\",\n        name: \"nativePayment\",\n        type: \"bool\",\n      },\n    ],\n    name: \"SetChainlinkConfig\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"previousHouseEdge\",\n        type: \"uint16\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"houseEdge\",\n        type: \"uint16\",\n      },\n    ],\n    name: \"SetHouseEdge\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"previousMaxCallGas\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"maxCallGas\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"SetMaxCallGas\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"uint8\",\n        name: \"previousMaxColors\",\n        type: \"uint8\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint8\",\n        name: \"maxColors\",\n        type: \"uint8\",\n      },\n    ],\n    name: \"SetMaxColors\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"uint64\",\n        name: \"previousRefundTime\",\n        type: \"uint64\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint64\",\n        name: \"refundTime\",\n        type: \"uint64\",\n      },\n    ],\n    name: \"SetRefundTime\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint32\",\n        name: \"previousCallbackGasBase\",\n        type: \"uint32\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint32\",\n        name: \"callbackGasBase\",\n        type: \"uint32\",\n      },\n    ],\n    name: \"SetVRFCallbackGasBase\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"previousSubId\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"subId\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"SetVRFSubId\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"account\",\n        type: \"address\",\n      },\n    ],\n    name: \"Unpaused\",\n    type: \"event\",\n  },\n  {\n    inputs: [],\n    name: \"BANK\",\n    outputs: [\n      {\n        internalType: \"contract IBankGame\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"WRAPPED\",\n    outputs: [\n      {\n        internalType: \"contract IWrapped\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    name: \"_affiliateHouseEdges\",\n    outputs: [\n      {\n        internalType: \"uint16\",\n        name: \"\",\n        type: \"uint16\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"acceptOwnership\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint64[]\",\n        name: \"weights_\",\n        type: \"uint64[]\",\n      },\n      {\n        internalType: \"uint64[]\",\n        name: \"multipliers_\",\n        type: \"uint64[]\",\n      },\n      {\n        internalType: \"uint32\",\n        name: \"gameId\",\n        type: \"uint32\",\n      },\n    ],\n    name: \"addGameConfig\",\n    outputs: [\n      {\n        internalType: \"uint32\",\n        name: \"configId\",\n        type: \"uint32\",\n      },\n    ],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"bets\",\n    outputs: [\n      {\n        internalType: \"bool\",\n        name: \"resolved\",\n        type: \"bool\",\n      },\n      {\n        internalType: \"address\",\n        name: \"receiver\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"houseEdge\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"uint32\",\n        name: \"timestamp\",\n        type: \"uint32\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"payout\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"betCount\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"stopGain\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"stopLoss\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"configsCount\",\n    outputs: [\n      {\n        internalType: \"uint32\",\n        name: \"\",\n        type: \"uint32\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint32\",\n        name: \"configId\",\n        type: \"uint32\",\n      },\n    ],\n    name: \"gameConfigs\",\n    outputs: [\n      {\n        components: [\n          {\n            internalType: \"uint72[]\",\n            name: \"weightRanges\",\n            type: \"uint72[]\",\n          },\n          {\n            internalType: \"uint64[]\",\n            name: \"multipliers\",\n            type: \"uint64[]\",\n          },\n          {\n            internalType: \"uint64\",\n            name: \"maxMultiplier\",\n            type: \"uint64\",\n          },\n          {\n            internalType: \"uint32\",\n            name: \"gameId\",\n            type: \"uint32\",\n          },\n        ],\n        internalType: \"struct IWheel.GameConfig\",\n        name: \"\",\n        type: \"tuple\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n    ],\n    name: \"getAffiliateHouseEdge\",\n    outputs: [\n      {\n        internalType: \"uint16\",\n        name: \"\",\n        type: \"uint16\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"getChainlinkConfig\",\n    outputs: [\n      {\n        internalType: \"uint16\",\n        name: \"requestConfirmations\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"bytes32\",\n        name: \"keyHash\",\n        type: \"bytes32\",\n      },\n      {\n        internalType: \"contract IVRFCoordinatorV2Plus\",\n        name: \"chainlinkCoordinator\",\n        type: \"address\",\n      },\n      {\n        internalType: \"contract IVRFV2PlusWrapperCustom\",\n        name: \"chainlinkWrapper\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint32\",\n        name: \"VRFCallbackGasExtraBet\",\n        type: \"uint32\",\n      },\n      {\n        internalType: \"bool\",\n        name: \"nativePayment\",\n        type: \"bool\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"betCount\",\n        type: \"uint16\",\n      },\n    ],\n    name: \"getChainlinkVRFCost\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n    ],\n    name: \"hasPendingBets\",\n    outputs: [\n      {\n        internalType: \"bool\",\n        name: \"\",\n        type: \"bool\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"maxCallGas\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"maxColors\",\n    outputs: [\n      {\n        internalType: \"uint8\",\n        name: \"\",\n        type: \"uint8\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"owner\",\n    outputs: [\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"paused\",\n    outputs: [\n      {\n        internalType: \"bool\",\n        name: \"\",\n        type: \"bool\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"requestId\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint256[]\",\n        name: \"randomWords\",\n        type: \"uint256[]\",\n      },\n    ],\n    name: \"rawFulfillRandomWords\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"refundBet\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"refundTime\",\n    outputs: [\n      {\n        internalType: \"uint64\",\n        name: \"\",\n        type: \"uint64\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"s_vrfCoordinator\",\n    outputs: [\n      {\n        internalType: \"contract IVRFCoordinatorV2Plus\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"affiliateHouseEdge\",\n        type: \"uint16\",\n      },\n    ],\n    name: \"setAffiliateHouseEdge\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint16\",\n        name: \"requestConfirmations\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"bytes32\",\n        name: \"keyHash\",\n        type: \"bytes32\",\n      },\n      {\n        internalType: \"contract IVRFV2PlusWrapperCustom\",\n        name: \"chainlinkWrapper\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint32\",\n        name: \"VRFCallbackGasExtraBet\",\n        type: \"uint32\",\n      },\n      {\n        internalType: \"bool\",\n        name: \"nativePayment\",\n        type: \"bool\",\n      },\n    ],\n    name: \"setChainlinkConfig\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"_vrfCoordinator\",\n        type: \"address\",\n      },\n    ],\n    name: \"setCoordinator\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"houseEdge\",\n        type: \"uint16\",\n      },\n    ],\n    name: \"setHouseEdge\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"maxCallGas_\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"setMaxCallGas\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint8\",\n        name: \"maxColors_\",\n        type: \"uint8\",\n      },\n    ],\n    name: \"setMaxColors\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint64\",\n        name: \"refundTime_\",\n        type: \"uint64\",\n      },\n    ],\n    name: \"setRefundTime\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint32\",\n        name: \"callbackGasBase\",\n        type: \"uint32\",\n      },\n    ],\n    name: \"setVRFCallbackGasBase\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"subId\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"setVRFSubId\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"togglePause\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    name: \"tokens\",\n    outputs: [\n      {\n        internalType: \"uint16\",\n        name: \"houseEdge\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"uint64\",\n        name: \"pendingCount\",\n        type: \"uint64\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"vrfSubId\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint32\",\n        name: \"VRFCallbackGasBase\",\n        type: \"uint32\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"VRFFees\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n    ],\n    name: \"transferOwnership\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint32\",\n        name: \"configId\",\n        type: \"uint32\",\n      },\n      {\n        internalType: \"address\",\n        name: \"receiver\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n      {\n        components: [\n          {\n            internalType: \"address\",\n            name: \"token\",\n            type: \"address\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"betAmount\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint16\",\n            name: \"betCount\",\n            type: \"uint16\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"stopGain\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"stopLoss\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint16\",\n            name: \"maxHouseEdge\",\n            type: \"uint16\",\n          },\n        ],\n        internalType: \"struct IGamePlayer.BetData\",\n        name: \"betData\",\n        type: \"tuple\",\n      },\n    ],\n    name: \"wager\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"payable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"bytes\",\n        name: \"bet\",\n        type: \"bytes\",\n      },\n      {\n        internalType: \"address\",\n        name: \"receiver\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n      {\n        components: [\n          {\n            internalType: \"address\",\n            name: \"token\",\n            type: \"address\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"betAmount\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint16\",\n            name: \"betCount\",\n            type: \"uint16\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"stopGain\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"stopLoss\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint16\",\n            name: \"maxHouseEdge\",\n            type: \"uint16\",\n          },\n        ],\n        internalType: \"struct IGamePlayer.BetData\",\n        name: \"betData\",\n        type: \"tuple\",\n      },\n    ],\n    name: \"wagerWithData\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"payable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"wheelBets\",\n    outputs: [\n      {\n        components: [\n          {\n            internalType: \"uint32\",\n            name: \"configId\",\n            type: \"uint32\",\n          },\n          {\n            internalType: \"uint8[]\",\n            name: \"rolled\",\n            type: \"uint8[]\",\n          },\n        ],\n        internalType: \"struct IWheel.WheelBet\",\n        name: \"\",\n        type: \"tuple\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n    ],\n    name: \"withdrawTokenVRFFees\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n] as const;\n\nexport const weightedGameAbi = wheelAbi;\n","import {\n  arbitrum,\n  arbitrumSepolia,\n  avalanche,\n  avalancheFuji,\n  base,\n  baseSepolia,\n  bsc,\n  bscTestnet,\n  type Chain,\n  gnosis,\n  mainnet,\n  optimism,\n  optimismSepolia,\n  polygon,\n  polygonAmoy,\n  sepolia,\n} from \"viem/chains\";\nimport type { Token } from \"../interfaces\";\n\nexport type ChainId = keyof typeof chainById;\n\nexport const chainByKey = {\n  polygon,\n  polygonAmoy,\n  avalanche,\n  avalancheFuji,\n  arbitrum,\n  arbitrumSepolia,\n  bsc,\n  bscTestnet,\n  mainnet,\n  sepolia,\n  base,\n  baseSepolia,\n  gnosis,\n  optimism,\n  optimismSepolia,\n} as const;\n\nexport const chains = Object.values(chainByKey) as unknown as readonly [Chain, ...Chain[]];\n\nexport const chainById = {\n  [polygon.id]: polygon,\n  [polygonAmoy.id]: polygonAmoy,\n  [avalanche.id]: avalanche,\n  [avalancheFuji.id]: avalancheFuji,\n  [arbitrum.id]: arbitrum,\n  [arbitrumSepolia.id]: arbitrumSepolia,\n  [bsc.id]: bsc,\n  [bscTestnet.id]: bscTestnet,\n  [mainnet.id]: mainnet,\n  [sepolia.id]: sepolia,\n  [base.id]: base,\n  [baseSepolia.id]: baseSepolia,\n  [gnosis.id]: gnosis,\n  [optimism.id]: optimism,\n  [optimismSepolia.id]: optimismSepolia,\n} as const;\n\nexport const slugById = {\n  [polygon.id as number]: \"polygon\",\n  [polygonAmoy.id as number]: \"amoy\",\n  [avalanche.id as number]: \"avalanche\",\n  [avalancheFuji.id as number]: \"fuji\",\n  [arbitrum.id as number]: \"arbitrum\",\n  [arbitrumSepolia.id as number]: \"arbitrum-sepolia\",\n  [bsc.id as number]: \"bnb-chain\",\n  [bscTestnet.id as number]: \"bnb-chain-testnet\",\n  [mainnet.id as number]: \"ethereum\",\n  [sepolia.id as number]: \"sepolia\",\n  [base.id as number]: \"base\",\n  [baseSepolia.id as number]: \"base-sepolia\",\n  [gnosis.id as number]: \"gnosis\",\n  [optimism.id as number]: \"optimism\",\n  [optimismSepolia.id as number]: \"optimism-sepolia\",\n} as const;\n\nexport const wrappedGasTokenById: Record<number, Token[\"address\"]> = {\n  [polygon.id]: \"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270\",\n  [polygonAmoy.id]: \"0x52eF3d68BaB452a294342DC3e5f464d7f610f72E\",\n  [avalanche.id]: \"0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7\",\n  [avalancheFuji.id]: \"0xd00ae08403B9bbb9124bB305C09058E32C39A48c\",\n  [arbitrum.id]: \"0x82af49447d8a07e3bd95bd0d56f35241523fbab1\",\n  [arbitrumSepolia.id]: \"0x187De399100aA962F209Aa78621F5138ACA6111f\",\n  [bsc.id]: \"0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c\",\n  [bscTestnet.id]: \"0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd\",\n  [mainnet.id]: \"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\",\n  [sepolia.id]: \"0x7b79995e5f793A07Bc00c21412e50Ecae098E7f9\",\n  [base.id]: \"0x4200000000000000000000000000000000000006\",\n  [baseSepolia.id]: \"0x4200000000000000000000000000000000000006\",\n  [gnosis.id]: \"0x6a023ccd1ff6f2045c3309768ead9e68f978f6e1\",\n  [optimism.id]: \"0x4200000000000000000000000000000000000006\",\n  [optimismSepolia.id]: \"0x4200000000000000000000000000000000000006\",\n};\n","export const ERROR_CODES = {\n  CHAIN: {\n    UNSUPPORTED_CHAIN: \"UNSUPPORTED_CHAIN\",\n    UNSUPPORTED_GAME: \"UNSUPPORTED_GAME\",\n    CHAIN_ID_MISMATCH: \"CHAIN_ID_MISMATCH\",\n  },\n  TRANSACTION: {\n    TOKEN_APPROVAL_ERROR: \"TOKEN_APPROVAL_ERROR\",\n    TOKEN_METADATA_ERROR: \"TOKEN_METADATA_ERROR\",\n  },\n  READ: {\n    CHAINLINK_VRF_COST_ERROR: \"CHAINLINK_VRF_COST_ERROR\",\n  },\n  GAME: {\n    PLACE_BET_ERROR: \"PLACE_BET_ERROR\",\n    PLACE_FREEBET_ERROR: \"PLACE_FREEBET_ERROR\",\n    PLACE_BET_EVENT_NOT_FOUND: \"PLACE_BET_EVENT_NOT_FOUND\",\n    ROLL_EVENT_ERROR: \"ROLL_EVENT_ERROR\",\n    ROLL_EVENT_TIMEOUT: \"ROLL_EVENT_TIMEOUT\",\n    GET_PAUSED_ERROR: \"GET_PAUSED_ERROR\",\n    GET_TOKEN_ERROR: \"GET_TOKEN_ERROR\",\n    GET_AFFILIATE_HOUSE_EDGE_ERROR: \"GET_AFFILIATE_HOUSE_EDGE_ERROR\",\n    GET_KENO_CONFIGURATION_ERROR: \"GET_KENO_CONFIGURATION_ERROR\",\n    GET_WEIGHTED_GAME_CONFIGURATION_ERROR: \"GET_WEIGHTED_GAME_CONFIGURATION_ERROR\",\n  },\n  BANK: {\n    GET_TOKENS_ERROR: \"GET_TOKENS_ERROR\",\n    GET_BET_REQUIREMENTS_ERROR: \"GET_BET_REQUIREMENTS_ERROR\",\n  },\n  SUBGRAPH: {\n    FETCH_BET_ERROR: \"FETCH_BET_ERROR\",\n    FETCH_BETS_ERROR: \"FETCH_BETS_ERROR\",\n    FETCH_TOKENS_ERROR: \"FETCH_TOKENS_ERROR\",\n    FETCH_TOKEN_ERROR: \"FETCH_TOKEN_ERROR\",\n  },\n  WALLET: {\n    ACCOUNT_MISSING: \"ACCOUNT_MISSING\",\n    GET_TRANSACTION_RECEIPT_ERROR: \"GET_TRANSACTION_RECEIPT_ERROR\",\n  },\n  LEADERBOARD: {\n    TOO_MANY_BETS: \"TOO_MANY_BETS\",\n    GET_CLAIMABLE_AMOUNT_ERROR: \"GET_CLAIMABLE_AMOUNT_ERROR\",\n    UNSUPPORTED_CHAIN: \"UNSUPPORTED_CHAIN\",\n    NO_CLAIMABLE_AMOUNT: \"NO_CLAIMABLE_AMOUNT\",\n  },\n} as const;\n","export class BetSwirlError extends Error {\n  public code: string;\n  public context?: Record<string, any>;\n\n  constructor(message: string, code: string, context?: Record<string, any>) {\n    super(message);\n    this.name = \"BetSwirlError\";\n    this.code = code;\n    this.context = context;\n  }\n}\n","import type { ErrorLike } from \"@apollo/client\";\nimport { BetSwirlError } from \"./betSwirlError\";\n\nexport class ChainError extends BetSwirlError {\n  constructor(message: string, code: string, context?: Record<string, any>) {\n    super(message, code, context);\n    this.name = \"ChainError\";\n  }\n}\n\nexport class TransactionError extends BetSwirlError {\n  constructor(message: string, code: string, context?: Record<string, any>) {\n    super(message, code, context);\n    this.name = \"TransactionError\";\n  }\n}\n\nexport class ConfigurationError extends BetSwirlError {\n  constructor(message: string, code: string, context?: Record<string, any>) {\n    super(message, code, context);\n    this.name = \"ConfigurationError\";\n  }\n}\n\nexport class SubgraphError extends BetSwirlError {\n  public apolloError: ErrorLike;\n  constructor(\n    message: string,\n    code: string,\n    apolloError: ErrorLike,\n    context?: Record<string, any>,\n  ) {\n    const errorContext = context ? { ...context, apolloError } : { apolloError };\n    super(message, code, errorContext);\n    this.name = \"SubgraphError\";\n    this.apolloError = apolloError;\n  }\n}\n","import { zeroAddress } from \"viem\";\n\nexport const BP_VALUE = 10000;\nexport const DEFAULT_ADMIN_ROLE =\n  \"0x0000000000000000000000000000000000000000000000000000000000000000\";\n\nexport const DEFAULT_PAGE = 1;\nexport const DEFAULT_ITEMS_PER_PAGE = 25;\nexport const GAS_TOKEN_ADDRESS = zeroAddress;\nexport const BETSWIRL_BASE_URL = \"https://betswirl.com\";\n\nexport const BETSWIRL_API_URL = \"https://api.betswirl.com/api\";\nexport const BETWIRL_TEST_API_URL = \"https://api-dev.betswirl.com/api\";\n","import { BETSWIRL_API_URL, BETWIRL_TEST_API_URL } from \"../constants\";\n\nexport const getBetSwirlApiUrl = (isTestMode = false) => {\n  return isTestMode ? BETWIRL_TEST_API_URL : BETSWIRL_API_URL;\n};\n","import { type Address, formatUnits, type Hex } from \"viem\";\nimport type { Token } from \"../../../interfaces\";\nimport { getBetSwirlApiUrl } from \"../../../utils/api\";\nimport type { CasinoChainId } from \"../..\";\n\nexport type GetFreebetsRawResponse = SignedRawFreebet[];\n\nexport type SignedRawFreebet = {\n  id: number;\n  player_address: Address;\n  amount: string; // raw\n  token: Token;\n  campaign: {\n    id: number;\n    label: string;\n  };\n  expiration_date: string; // iso date\n  chain_id: CasinoChainId;\n  affiliate_address: Address;\n  freebet_address: Address;\n  signature: Hex;\n};\n\nexport type SignedFreebet = {\n  id: number;\n  playerAddress: Address;\n  amount: bigint; // raw\n  formattedAmount: string;\n  token: Token;\n  campaign: {\n    id: number;\n    label: string;\n  };\n  expirationDate: Date; // iso date\n  chainId: CasinoChainId;\n  affiliateAddress: Address;\n  freebetAddress: Address;\n  signature: Hex;\n};\n\n/**\n * Fetches freebets for a player from the Betswirl API\n * @param player - The player's wallet address\n * @param affiliates - Array of affiliate addresses to filter freebets\n * @param withExternalBankrollFreebets - Whether to include external bankroll freebets (default: false). If true, it means some returned freebets could have a different affiliate address than the ones provided in the `affiliates` array.\n * @param chainIds - Array of chain ids to filter freebets\n * @param testMode - Whether to use test mode API endpoint (default: false)\n * @returns Promise<SignedFreebet[]> - Array of formatted freebets with additional metadata\n * @throws Returns empty array if the API request fails\n */\nexport const fetchFreebets = async (\n  player: Address,\n  affiliates?: Address[],\n  chainIds?: CasinoChainId[],\n  withExternalBankrollFreebets = false,\n  testMode = false,\n): Promise<SignedFreebet[]> => {\n  try {\n    const params = new URLSearchParams();\n    params.set(\"player\", player);\n    params.set(\"with_external_bankroll\", withExternalBankrollFreebets.toString());\n    if (affiliates) {\n      for (const affiliate of affiliates) {\n        params.append(\"affiliates\", affiliate);\n      }\n    }\n    if (chainIds) {\n      for (const chainId of chainIds) {\n        params.append(\"chain_ids\", chainId.toString());\n      }\n    }\n    const res = await fetch(\n      `${getBetSwirlApiUrl(testMode)}/public/v1/freebet/bets?${params.toString()}`,\n    );\n    if (!res.ok) {\n      throw new Error(`Status ${res.status}: ${res.statusText}`);\n    }\n\n    const response: GetFreebetsRawResponse = await res.json();\n    return response.map((freebet) => ({\n      ...freebet,\n      playerAddress: freebet.player_address,\n      amount: BigInt(freebet.amount),\n      formattedAmount: formatUnits(BigInt(freebet.amount), freebet.token.decimals),\n      expirationDate: new Date(freebet.expiration_date),\n      chainId: freebet.chain_id,\n      affiliateAddress: freebet.affiliate_address,\n      freebetAddress: freebet.freebet_address,\n    }));\n  } catch (error) {\n    console.error(\"An error occured while fetching casino freebets\", JSON.stringify(error));\n    return [];\n  }\n};\n","import { type Address, formatUnits } from \"viem\";\nimport type { Token } from \"../../../interfaces\";\nimport { getBetSwirlApiUrl } from \"../../../utils/api\";\nimport type { CasinoChainId } from \"../..\";\n\nexport enum FREEBET_CAMPAIGN_STATUS {\n  PENDING = \"pending\",\n  EXPIRED = \"expired\",\n}\n\nexport type RawLightFreebet = {\n  id: number;\n  is_wagered: boolean;\n  amount: string; // raw\n  player_address: Address;\n  from_code?: string;\n};\n\nexport type RawAggregatedFreebetCampaign = {\n  affiliate_address: Address;\n  chain_id: CasinoChainId;\n  created_at: string; // iso date\n  expiration_date: string; // iso date\n  id: number;\n  is_bankroll_mode: boolean;\n  label: string;\n  signer_address: Address;\n  status: FREEBET_CAMPAIGN_STATUS;\n  token: Token;\n  freebets: RawLightFreebet[];\n  total_count: number;\n  total_wagered_count: number;\n  total_amount: string; // raw\n  total_wagered_amount: string; // raw\n};\n\nexport type FreebetCampaign = {\n  affiliateAddress: Address;\n  chainId: CasinoChainId;\n  createdAt: Date;\n  expirationDate: Date;\n  id: number;\n  isBankrollMode: boolean;\n  label: string;\n  signerAddress: Address;\n  status: FREEBET_CAMPAIGN_STATUS;\n  token: Token;\n  freebets: {\n    id: number;\n    isWagered: boolean;\n    amount: bigint;\n    formattedAmount: string;\n    playerAddress: Address;\n    fromCode?: string;\n  }[];\n  totalCount: number;\n  totalWageredCount: number;\n  totalAmount: bigint;\n  formattedTotalAmount: string;\n  totalWageredAmount: bigint;\n  formattedTotalWageredAmount: string;\n};\n\nexport type GetCampaignsRawResponse = {\n  campaigns: RawAggregatedFreebetCampaign[];\n  total: number;\n  offset: number;\n  limit: number;\n};\n\n/**\n * Fetches freebet campaigns from the Betswirl API\n * @param limit - The number of campaigns to fetch\n * @param offset - The offset of the campaigns to fetch\n * @param status - The status of the campaigns to fetch\n * @param affiliate - The affiliate address to filter campaigns\n * @param testMode - Whether to use test mode API endpoint (default: false)\n * @returns Promise<FreebetCampaign[]> - Array of freebet campaigns\n * @throws Returns empty array if the API request fails\n */\nexport const fetchFreebetCampaigns = async (\n  limit = 10,\n  offset = 0,\n  status?: FREEBET_CAMPAIGN_STATUS,\n  affiliate?: Address,\n  chainId?: CasinoChainId,\n  testMode = false,\n): Promise<{ campaigns: FreebetCampaign[]; total: number; offset: number; limit: number }> => {\n  try {\n    const params = new URLSearchParams();\n    params.set(\"limit\", limit.toString());\n    params.set(\"offset\", offset.toString());\n    if (status) {\n      params.set(\"status\", status);\n    }\n    if (affiliate) {\n      params.set(\"affiliate\", affiliate);\n    }\n    if (chainId) {\n      params.set(\"chain_id\", chainId.toString());\n    }\n    const res = await fetch(\n      `${getBetSwirlApiUrl(testMode)}/affiliate/v1/freebet/campaigns?${params.toString()}`,\n      {\n        // This is needed to get the JWT cookie from the browser\n        credentials: \"include\",\n      },\n    );\n    if (!res.ok) {\n      throw new Error(`Status ${res.status}: ${res.statusText}`);\n    }\n\n    const response: GetCampaignsRawResponse = await res.json();\n    return {\n      campaigns: response.campaigns.map((campaign) => formatRawFreebetCampaign(campaign)),\n      total: response.total,\n      offset: response.offset,\n      limit: response.limit,\n    };\n  } catch (error) {\n    console.error(\"An error occured while fetching freebet campaigns\", error);\n    return {\n      campaigns: [],\n      total: 0,\n      offset,\n      limit,\n    };\n  }\n};\n\nexport type GetCampaignRawResponse = RawAggregatedFreebetCampaign;\n\n/**\n * Fetches freebet campaign by id from the Betswirl API\n * @param id - The campaign id\n * @param testMode - Whether to use test mode API endpoint (default: false)\n * @returns Promise<FreebetCampaign> - The freebet campaign\n * @throws Returns nullif the API request fails or campaign is not found\n */\nexport const fetchFreebetCampaign = async (\n  id: number,\n  testMode = false,\n): Promise<FreebetCampaign | null> => {\n  try {\n    const res = await fetch(`${getBetSwirlApiUrl(testMode)}/affiliate/v1/freebet/campaigns/${id}`, {\n      // This is needed to get the JWT cookie from the browser\n      credentials: \"include\",\n    });\n    if (!res.ok) {\n      throw new Error(`Status ${res.status}: ${res.statusText}`);\n    }\n\n    const response: GetCampaignRawResponse = await res.json();\n    return formatRawFreebetCampaign(response);\n  } catch (error) {\n    console.error(\"An error occured while fetching the freebet campaign\", error);\n    return null;\n  }\n};\n\nexport const formatRawFreebetCampaign = (\n  campaign: RawAggregatedFreebetCampaign,\n): FreebetCampaign => ({\n  id: campaign.id,\n  affiliateAddress: campaign.affiliate_address,\n  chainId: campaign.chain_id,\n  createdAt: new Date(campaign.created_at),\n  expirationDate: new Date(campaign.expiration_date),\n  isBankrollMode: campaign.is_bankroll_mode,\n  label: campaign.label,\n  signerAddress: campaign.signer_address,\n  status: campaign.status,\n  token: campaign.token,\n  freebets: campaign.freebets.map((freebet: RawAggregatedFreebetCampaign[\"freebets\"][number]) => ({\n    id: freebet.id,\n    isWagered: freebet.is_wagered,\n    amount: BigInt(freebet.amount),\n    formattedAmount: formatUnits(BigInt(freebet.amount), campaign.token.decimals),\n    playerAddress: freebet.player_address,\n    fromCode: freebet.from_code,\n  })),\n  totalCount: campaign.total_count,\n  totalWageredCount: campaign.total_wagered_count,\n  totalAmount: BigInt(campaign.total_amount),\n  formattedTotalAmount: formatUnits(BigInt(campaign.total_amount), campaign.token.decimals),\n  totalWageredAmount: BigInt(campaign.total_wagered_amount),\n  formattedTotalWageredAmount: formatUnits(\n    BigInt(campaign.total_wagered_amount),\n    campaign.token.decimals,\n  ),\n});\n","import { type Address, formatUnits } from \"viem\";\nimport type { Token } from \"../../../interfaces\";\nimport { getBetSwirlApiUrl } from \"../../../utils/api\";\nimport {\n  type CasinoChainId,\n  type ChainId,\n  type FREEBET_CAMPAIGN_STATUS,\n  type FreebetCampaign,\n  formatRawFreebetCampaign,\n  type RawAggregatedFreebetCampaign,\n} from \"../..\";\n\nexport type RawTokenWithChainId = Token & {\n  chain_id: number;\n};\n\nexport type TokenWithChainId = Token & {\n  chainId: ChainId;\n};\n\nexport type RawVolumeRequirements = {\n  tokens: RawTokenWithChainId[];\n  affiliate_id: string;\n  chain_ids: number[];\n  minimum_usd_volume: number; // raw (cents)\n  time_period: number; // seconds\n};\n\nexport type RawAggregatedFreebetCodeCampaign = {\n  campaign: RawAggregatedFreebetCampaign;\n  code: {\n    id: number;\n    is_private_mode: boolean;\n    codes: {\n      code: string;\n      claim_count: number;\n      wager_count: number;\n    }[];\n    bet_count: number;\n    bet_amount: string; // raw\n    expiration_time: number; // seconds\n    volume_requirements: RawVolumeRequirements;\n  };\n};\n\nexport type FreebetCodeCampaign = {\n  campaign: FreebetCampaign;\n  code: {\n    id: number;\n    isPrivateMode: boolean;\n    codes: {\n      code: string;\n      claimCount: number;\n      wagerCount: number;\n    }[];\n    betCount: number;\n    betAmount: bigint;\n    formattedBetAmount: string;\n    expirationTime: number;\n    volumeRequirements: {\n      tokens: TokenWithChainId[];\n      affiliateId: string;\n      chainIds: ChainId[];\n      minimumUsdVolume: number; // raw (cents)\n      timePeriod: number; // seconds\n    };\n  };\n};\n\nexport type GetCodeCampaignsRawResponse = {\n  campaigns: RawAggregatedFreebetCodeCampaign[];\n  total: number;\n  offset: number;\n  limit: number;\n};\n\n/**\n * Fetches freebet code campaigns from the Betswirl API\n * @param limit - The number of campaigns to fetch\n * @param offset - The offset of the campaigns to fetch\n * @param status - The status of the campaigns to fetch\n * @param affiliate - The affiliate address to filter campaigns\n * @param testMode - Whether to use test mode API endpoint (default: false)\n * @returns Promise<FreebetCodeCampaign[]> - Array of freebet code campaigns\n * @throws Returns empty array if the API request fails\n */\nexport const fetchFreebetCodeCampaigns = async (\n  limit = 10,\n  offset = 0,\n  status?: FREEBET_CAMPAIGN_STATUS,\n  affiliate?: Address,\n  chainId?: CasinoChainId,\n  testMode = false,\n): Promise<{ campaigns: FreebetCodeCampaign[]; total: number; offset: number; limit: number }> => {\n  try {\n    const params = new URLSearchParams();\n    params.set(\"limit\", limit.toString());\n    params.set(\"offset\", offset.toString());\n    if (status) {\n      params.set(\"status\", status);\n    }\n    if (affiliate) {\n      params.set(\"affiliate\", affiliate);\n    }\n    if (chainId) {\n      params.set(\"chain_id\", chainId.toString());\n    }\n    const res = await fetch(\n      `${getBetSwirlApiUrl(testMode)}/affiliate/v1/freebet/code-campaigns?${params.toString()}`,\n      {\n        // This is needed to get the JWT cookie from the browser\n        credentials: \"include\",\n      },\n    );\n    if (!res.ok) {\n      throw new Error(`Status ${res.status}: ${res.statusText}`);\n    }\n\n    const response: GetCodeCampaignsRawResponse = await res.json();\n    return {\n      campaigns: response.campaigns.map((campaign) => formatRawFreebetCodeCampaign(campaign)),\n      total: response.total,\n      offset: response.offset,\n      limit: response.limit,\n    };\n  } catch (error) {\n    console.error(\"An error occured while fetching freebet code campaigns\", error);\n    return {\n      campaigns: [],\n      total: 0,\n      offset,\n      limit,\n    };\n  }\n};\n\nexport type GetCodeCampaignRawResponse = RawAggregatedFreebetCodeCampaign;\n\n/**\n * Fetches freebet code campaign by id from the Betswirl API\n * @param id - The code campaign id\n * @param testMode - Whether to use test mode API endpoint (default: false)\n * @returns Promise<FreebetCodeCampaign> - The freebet code campaign\n * @throws Returns null if the API request fails or campaign is not found\n */\nexport const fetchFreebetCodeCampaign = async (\n  id: number,\n  testMode = false,\n): Promise<FreebetCodeCampaign | null> => {\n  try {\n    const res = await fetch(\n      `${getBetSwirlApiUrl(testMode)}/affiliate/v1/freebet/code-campaigns/${id}`,\n      {\n        // This is needed to get the JWT cookie from the browser\n        credentials: \"include\",\n      },\n    );\n    if (!res.ok) {\n      throw new Error(`Status ${res.status}: ${res.statusText}`);\n    }\n\n    const response: GetCodeCampaignRawResponse = await res.json();\n    return formatRawFreebetCodeCampaign(response);\n  } catch (error) {\n    console.error(\"An error occured while fetching the freebet code campaign\", error);\n    return null;\n  }\n};\n\nexport const formatRawFreebetCodeCampaign = (\n  campaign: RawAggregatedFreebetCodeCampaign,\n): FreebetCodeCampaign => ({\n  campaign: formatRawFreebetCampaign(campaign.campaign),\n  code: {\n    id: campaign.code.id,\n    isPrivateMode: campaign.code.is_private_mode,\n    codes: campaign.code.codes.map((code) => ({\n      code: code.code,\n      claimCount: code.claim_count,\n      wagerCount: code.wager_count,\n    })),\n    betCount: campaign.code.bet_count,\n    betAmount: BigInt(campaign.code.bet_amount),\n    formattedBetAmount: formatUnits(\n      BigInt(campaign.code.bet_amount),\n      campaign.campaign.token.decimals,\n    ),\n    expirationTime: campaign.code.expiration_time,\n    volumeRequirements: {\n      tokens: campaign.code.volume_requirements.tokens.map((token) => ({\n        ...token,\n        chainId: token.chain_id as ChainId,\n      })),\n      affiliateId: campaign.code.volume_requirements.affiliate_id,\n      chainIds: campaign.code.volume_requirements.chain_ids as ChainId[],\n      minimumUsdVolume: campaign.code.volume_requirements.minimum_usd_volume,\n      timePeriod: campaign.code.volume_requirements.time_period,\n    },\n  },\n});\n","import type { ExtractAbiEvent } from \"abitype\";\nimport { type Abi, type Chain, type Hex } from \"viem\";\nimport { coinTossAbi } from \"../abis/v2/casino/cointoss\";\nimport { diceAbi } from \"../abis/v2/casino/dice\";\nimport { kenoAbi } from \"../abis/v2/casino/keno\";\nimport { rouletteAbi } from \"../abis/v2/casino/roulette\";\nimport { weightedGameAbi } from \"../abis/v2/casino/weightedGame\";\nimport { chainByKey } from \"./chains\";\n\nexport const MAX_HOUSE_EGDE = 3500;\nexport const MAX_SDK_HOUSE_EGDE = 1000;\n\nexport type CasinoChainId = keyof typeof casinoChainById;\n\nexport type CasinoChain = {\n  id: CasinoChainId;\n  viemChain: Chain;\n  options: {\n    pollingInterval: number;\n  };\n  contracts: {\n    bank: Hex;\n    games: {\n      [key in CASINO_GAME_TYPE]?: { address: Hex; abi: Abi };\n    };\n    leaderboard?: Hex;\n    freebet?: Hex;\n  };\n  graphql: {\n    endpoint: string;\n    defaultEndpoint: string;\n  };\n  defaultAffiliate: Hex;\n};\n\nexport enum CASINO_GAME_TYPE {\n  COINTOSS = \"coin-toss\",\n  DICE = \"dice\",\n  ROULETTE = \"roulette\",\n  KENO = \"keno\",\n  WHEEL = \"wheel\",\n  PLINKO = \"plinko\",\n  CUSTOM_WEIGHTED_GAME = \"custom-weighted-game\",\n}\n\nexport type NORMAL_CASINO_GAME_TYPE =\n  | CASINO_GAME_TYPE.COINTOSS\n  | CASINO_GAME_TYPE.DICE\n  | CASINO_GAME_TYPE.ROULETTE\n  | CASINO_GAME_TYPE.KENO\n  | CASINO_GAME_TYPE.PLINKO;\n\nexport type WEIGHTED_CASINO_GAME_TYPE =\n  | CASINO_GAME_TYPE.WHEEL\n  | CASINO_GAME_TYPE.PLINKO\n  | CASINO_GAME_TYPE.CUSTOM_WEIGHTED_GAME;\n\nexport const NORMAL_GAME_TYPES = [\n  CASINO_GAME_TYPE.COINTOSS,\n  CASINO_GAME_TYPE.DICE,\n  CASINO_GAME_TYPE.ROULETTE,\n  CASINO_GAME_TYPE.KENO,\n  CASINO_GAME_TYPE.PLINKO,\n];\n\nexport const WEIGHTED_CASINO_GAME_TYPES = [\n  CASINO_GAME_TYPE.WHEEL,\n  CASINO_GAME_TYPE.PLINKO,\n  CASINO_GAME_TYPE.CUSTOM_WEIGHTED_GAME,\n];\n\nexport enum CASINO_GAME_SUBGRAPH_TYPE {\n  COINTOSS = \"CoinToss\",\n  DICE = \"Dice\",\n  ROULETTE = \"Roulette\",\n  KENO = \"Keno\",\n  WHEEL = \"Wheel\",\n  PLINKO = \"Plinko\",\n  CUSTOM_WEIGHTED_GAME = \"CUSTOM_WEIGHTED_GAME\",\n}\n\nexport enum CASINO_GAME_LABEL_TYPE {\n  COINTOSS = \"Coin Toss\",\n  DICE = \"Dice\",\n  ROULETTE = \"Roulette\",\n  KENO = \"Keno\",\n  WHEEL = \"Wheel\",\n  PLINKO = \"Plinko\",\n  CUSTOM_WEIGHTED_GAME = \"Custom game\",\n}\n\nconst _extractRollEvent = <T extends Abi>(abi: T) =>\n  [\n    abi.find((e): e is ExtractAbiEvent<T, \"Roll\"> => e.type === \"event\" && e.name === \"Roll\")!,\n  ] as const;\n\nconst COINTOSS_ROLL_ABI = _extractRollEvent(coinTossAbi);\nconst DICE_ROLL_ABI = _extractRollEvent(diceAbi);\nconst ROULETTE_ROLL_ABI = _extractRollEvent(rouletteAbi);\nconst KENO_ROLL_ABI = _extractRollEvent(kenoAbi);\nconst WEIGHTED_GAME_ROLL_ABI = _extractRollEvent(weightedGameAbi);\n\nexport const CASINO_GAME_ROLL_ABI: Record<\n  CASINO_GAME_TYPE,\n  | typeof COINTOSS_ROLL_ABI\n  | typeof DICE_ROLL_ABI\n  | typeof ROULETTE_ROLL_ABI\n  | typeof KENO_ROLL_ABI\n  | typeof WEIGHTED_GAME_ROLL_ABI\n> = {\n  [CASINO_GAME_TYPE.COINTOSS]: COINTOSS_ROLL_ABI,\n  [CASINO_GAME_TYPE.DICE]: DICE_ROLL_ABI,\n  [CASINO_GAME_TYPE.ROULETTE]: ROULETTE_ROLL_ABI,\n  [CASINO_GAME_TYPE.KENO]: KENO_ROLL_ABI,\n  [CASINO_GAME_TYPE.WHEEL]: WEIGHTED_GAME_ROLL_ABI,\n  [CASINO_GAME_TYPE.PLINKO]: WEIGHTED_GAME_ROLL_ABI,\n  [CASINO_GAME_TYPE.CUSTOM_WEIGHTED_GAME]: WEIGHTED_GAME_ROLL_ABI,\n};\n\nconst _extractPlaceBetEvent = <T extends Abi>(abi: T) =>\n  [\n    abi.find(\n      (e): e is ExtractAbiEvent<T, \"PlaceBet\"> => e.type === \"event\" && e.name === \"PlaceBet\",\n    )!,\n  ] as const;\n\nconst COINTOSS_PLACE_BET_ABI = _extractPlaceBetEvent(coinTossAbi);\nconst DICE_PLACE_BET_ABI = _extractPlaceBetEvent(diceAbi);\nconst ROULETTE_PLACE_BET_ABI = _extractPlaceBetEvent(rouletteAbi);\nconst KENO_PLACE_BET_ABI = _extractPlaceBetEvent(kenoAbi);\nconst WEIGHTED_GAME_PLACE_BET_ABI = _extractPlaceBetEvent(weightedGameAbi);\n\nexport const CASINO_GAME_PLACE_BET_ABI: Record<\n  CASINO_GAME_TYPE,\n  | typeof COINTOSS_PLACE_BET_ABI\n  | typeof DICE_PLACE_BET_ABI\n  | typeof ROULETTE_PLACE_BET_ABI\n  | typeof KENO_PLACE_BET_ABI\n  | typeof WEIGHTED_GAME_PLACE_BET_ABI\n> = {\n  [CASINO_GAME_TYPE.COINTOSS]: COINTOSS_PLACE_BET_ABI,\n  [CASINO_GAME_TYPE.DICE]: DICE_PLACE_BET_ABI,\n  [CASINO_GAME_TYPE.ROULETTE]: ROULETTE_PLACE_BET_ABI,\n  [CASINO_GAME_TYPE.KENO]: KENO_PLACE_BET_ABI,\n  [CASINO_GAME_TYPE.WHEEL]: WEIGHTED_GAME_PLACE_BET_ABI,\n  [CASINO_GAME_TYPE.PLINKO]: WEIGHTED_GAME_PLACE_BET_ABI,\n  [CASINO_GAME_TYPE.CUSTOM_WEIGHTED_GAME]: WEIGHTED_GAME_PLACE_BET_ABI,\n};\n\nconst arbitrumSepoliaData: CasinoChain = {\n  id: chainByKey.arbitrumSepolia.id,\n  viemChain: chainByKey.arbitrumSepolia,\n  options: {\n    pollingInterval: 200,\n  },\n  contracts: {\n    bank: \"0x3ca54e047aE5f9141b49c6817aa7994CDc589d19\",\n    games: {\n      [CASINO_GAME_TYPE.DICE]: {\n        address: \"0xF68762683515f6670Fe661bff4Fe469A1A459904\",\n        abi: diceAbi,\n      },\n      [CASINO_GAME_TYPE.COINTOSS]: {\n        address: \"0x0Ff6EEfc86a79aE2239399ceC4C826099391B046\",\n        abi: coinTossAbi,\n      },\n      [CASINO_GAME_TYPE.ROULETTE]: {\n        address: \"0x044c7E3Cd069d3e12D37686E92B85799E36fa7e4\",\n        abi: rouletteAbi,\n      },\n      [CASINO_GAME_TYPE.KENO]: {\n        address: \"0xA78465DE64F302568cbb869698413a60681d2Fe8\",\n        abi: kenoAbi,\n      },\n      [CASINO_GAME_TYPE.WHEEL]: {\n        address: \"0xd021018E82eE105Feb7f50a0534DC0a3e6776F32\",\n        abi: weightedGameAbi,\n      },\n      [CASINO_GAME_TYPE.PLINKO]: {\n        address: \"0xd021018E82eE105Feb7f50a0534DC0a3e6776F32\",\n        abi: weightedGameAbi,\n      },\n      [CASINO_GAME_TYPE.CUSTOM_WEIGHTED_GAME]: {\n        address: \"0xd021018E82eE105Feb7f50a0534DC0a3e6776F32\",\n        abi: weightedGameAbi,\n      },\n    },\n    leaderboard: \"0xf8e7EE248BE53C8b428542E9bc498D78fea09Ee4\",\n    freebet: \"0xBf34537E0648724713740267c72826A8f08ECadA\",\n  },\n  graphql: {\n    endpoint: \"https://api.studio.thegraph.com/query/80936/betswirl-arbitrum-sepolia-v2/v0.1.3\",\n    defaultEndpoint:\n      \"https://api.studio.thegraph.com/query/80936/betswirl-arbitrum-sepolia-v2/v0.1.3\",\n  },\n  defaultAffiliate: \"0x057BcBF736DADD774A8A45A185c1697F4cF7517D\",\n};\n\nconst avalancheFujiData: CasinoChain = {\n  id: chainByKey.avalancheFuji.id,\n  viemChain: chainByKey.avalancheFuji,\n  options: {\n    pollingInterval: 500,\n  },\n  contracts: {\n    bank: \"0x25bED5A341218Df801a64951d02d3c968E84a6d4\",\n    games: {\n      [CASINO_GAME_TYPE.DICE]: {\n        address: \"0xE25b810B1A3d7DCff051abcdc109466d32b4F2a1\",\n        abi: diceAbi,\n      },\n      [CASINO_GAME_TYPE.COINTOSS]: {\n        address: \"0x5856B199ae1c51296cB17d29D65Da702FE0DA12a\",\n        abi: coinTossAbi,\n      },\n      [CASINO_GAME_TYPE.ROULETTE]: {\n        address: \"0x91f6A418E2B4535f1828836d2DEa93E99d49836e\",\n        abi: rouletteAbi,\n      },\n      [CASINO_GAME_TYPE.KENO]: {\n        address: \"0xEC5800455EeFE3A193778747EeAfF38221bFdFe4\",\n        abi: kenoAbi,\n      },\n      [CASINO_GAME_TYPE.WHEEL]: {\n        address: \"0xEaFBA4d8a062b4C41775FED9Ced52633c89DFca0\",\n        abi: weightedGameAbi,\n      },\n      [CASINO_GAME_TYPE.PLINKO]: {\n        address: \"0xEaFBA4d8a062b4C41775FED9Ced52633c89DFca0\",\n        abi: weightedGameAbi,\n      },\n      [CASINO_GAME_TYPE.CUSTOM_WEIGHTED_GAME]: {\n        address: \"0xEaFBA4d8a062b4C41775FED9Ced52633c89DFca0\",\n        abi: weightedGameAbi,\n      },\n    },\n    leaderboard: \"0xbB613c35D539eE86AB600e376117887A006d028f\",\n    freebet: \"0xf341aa5e54E9536BDac0928d4Dbba3E09A8f774E\",\n  },\n  graphql: {\n    endpoint: \"https://api.studio.thegraph.com/query/80936/betswirl-fuji-v2/v0.1.3\",\n    defaultEndpoint: \"https://api.studio.thegraph.com/query/80936/betswirl-fuji-v2/v0.1.3\",\n  },\n  defaultAffiliate: \"0x057BcBF736DADD774A8A45A185c1697F4cF7517D\",\n};\n\nconst polygonAmoyData: CasinoChain = {\n  id: chainByKey.polygonAmoy.id,\n  viemChain: chainByKey.polygonAmoy,\n  options: {\n    pollingInterval: 500,\n  },\n  contracts: {\n    bank: \"0x89D47048152581633579450DC4888C931CD4c28C\",\n    games: {\n      [CASINO_GAME_TYPE.DICE]: {\n        address: \"0xE14E752c6Ef78fB54da5A28ff7C9f808534603e9\",\n        abi: diceAbi,\n      },\n      [CASINO_GAME_TYPE.COINTOSS]: {\n        address: \"0xC2fc743768A1a842dD2CfA121359b8545B9876cA\",\n        abi: coinTossAbi,\n      },\n      [CASINO_GAME_TYPE.ROULETTE]: {\n        address: \"0x5F628ccd0D5929B16fF6E239D8BB8C81F1b0feD9\",\n        abi: rouletteAbi,\n      },\n      [CASINO_GAME_TYPE.KENO]: {\n        address: \"0x77A654D0895baF09c42314FBb4b18822Ec3c1DD0\",\n        abi: kenoAbi,\n      },\n      [CASINO_GAME_TYPE.WHEEL]: {\n        address: \"0xd300a3757dDBb3Eafb8fb3e401a5eb60e4a571b1\",\n        abi: weightedGameAbi,\n      },\n      [CASINO_GAME_TYPE.PLINKO]: {\n        address: \"0xd300a3757dDBb3Eafb8fb3e401a5eb60e4a571b1\",\n        abi: weightedGameAbi,\n      },\n      [CASINO_GAME_TYPE.CUSTOM_WEIGHTED_GAME]: {\n        address: \"0xd300a3757dDBb3Eafb8fb3e401a5eb60e4a571b1\",\n        abi: weightedGameAbi,\n      },\n    },\n    leaderboard: \"0x143DB52C913143345B6a24D8f22f1a8BEaC19e16\",\n    freebet: \"0xfBE92f62bd32B3b6c2335D757049f190752f5292\",\n  },\n  graphql: {\n    endpoint: \"https://api.studio.thegraph.com/query/80936/betswirl-amoy-v2/v0.1.3\",\n    defaultEndpoint: \"https://api.studio.thegraph.com/query/80936/betswirl-amoy-v2/v0.1.3\",\n  },\n  defaultAffiliate: \"0x057BcBF736DADD774A8A45A185c1697F4cF7517D\",\n};\n\nconst baseSepoliaData: CasinoChain = {\n  id: chainByKey.baseSepolia.id,\n  viemChain: chainByKey.baseSepolia,\n  options: {\n    pollingInterval: 200,\n  },\n  contracts: {\n    bank: \"0x637D401554875a330264e910A3778DAf549F2021\",\n    games: {\n      [CASINO_GAME_TYPE.DICE]: {\n        address: \"0x76e982a4823bEd3ed77d8E0b4c3FAa616385a286\",\n        abi: diceAbi,\n      },\n      [CASINO_GAME_TYPE.COINTOSS]: {\n        address: \"0x431c7E0856C0DEf20e50A809cBDdEcF5F8dD6142\",\n        abi: coinTossAbi,\n      },\n      [CASINO_GAME_TYPE.ROULETTE]: {\n        address: \"0x441b191bc9253ab4E16D7d90E99650bb71D0E4f4\",\n        abi: rouletteAbi,\n      },\n      [CASINO_GAME_TYPE.KENO]: {\n        address: \"0xb5C9f183C1E5D2e9d0CA0679D7149ea075E0e82F\",\n        abi: kenoAbi,\n      },\n      [CASINO_GAME_TYPE.WHEEL]: {\n        address: \"0x011e537eB2313fc0096a87AA4ACC3750f712Ce2D\",\n        abi: weightedGameAbi,\n      },\n      [CASINO_GAME_TYPE.PLINKO]: {\n        address: \"0x011e537eB2313fc0096a87AA4ACC3750f712Ce2D\",\n        abi: weightedGameAbi,\n      },\n      [CASINO_GAME_TYPE.CUSTOM_WEIGHTED_GAME]: {\n        address: \"0x011e537eB2313fc0096a87AA4ACC3750f712Ce2D\",\n        abi: weightedGameAbi,\n      },\n    },\n    leaderboard: \"0xd60Fac02E78e2a4E37501053ab3E822E330dd970\",\n    freebet: \"0xcBa83991C4D6A8c75FA7Aac02AAE202Ed0E44224\",\n  },\n  graphql: {\n    endpoint: \"https://api.studio.thegraph.com/query/80936/betswirl-base-sepolia-v2/v0.1.3\",\n    defaultEndpoint: \"https://api.studio.thegraph.com/query/80936/betswirl-base-sepolia-v2/v0.1.3\",\n  },\n  defaultAffiliate: \"0x057BcBF736DADD774A8A45A185c1697F4cF7517D\",\n};\n\nconst arbitrumData: CasinoChain = {\n  id: chainByKey.arbitrum.id,\n  viemChain: chainByKey.arbitrum,\n  options: {\n    pollingInterval: 200,\n  },\n  contracts: {\n    bank: \"0x8FB3110015FBCAA469ee45B64dcd2BdF544B9CFA\",\n    games: {\n      [CASINO_GAME_TYPE.DICE]: {\n        address: \"0xAa4D2931a9fE14c3dec8AC3f12923Cbb535C0e5f\",\n        abi: diceAbi,\n      },\n      [CASINO_GAME_TYPE.COINTOSS]: {\n        address: \"0xC3Dff2489F8241729B824e23eD01F986fcDf8ec3\",\n        abi: coinTossAbi,\n      },\n      [CASINO_GAME_TYPE.ROULETTE]: {\n        address: \"0x6678e3B4AB2a8C8Cdd068F132C21293CcBda33cb\",\n        abi: rouletteAbi,\n      },\n      [CASINO_GAME_TYPE.KENO]: {\n        address: \"0xc3428E4FEb5C770Db51DCb9B1C08223B10994a89\",\n        abi: kenoAbi,\n      },\n      [CASINO_GAME_TYPE.PLINKO]: {\n        address: \"0xdec2A4f75c5fAE4a09c83975681CE1Dd1dff764b\",\n        abi: weightedGameAbi,\n      },\n      [CASINO_GAME_TYPE.WHEEL]: {\n        address: \"0xdec2A4f75c5fAE4a09c83975681CE1Dd1dff764b\",\n        abi: weightedGameAbi,\n      },\n      [CASINO_GAME_TYPE.CUSTOM_WEIGHTED_GAME]: {\n        address: \"0xdec2A4f75c5fAE4a09c83975681CE1Dd1dff764b\",\n        abi: weightedGameAbi,\n      },\n    },\n    freebet: \"0x7a1EFD33f41150E3247F14209b2a733bc6B1cb7a\",\n    leaderboard: \"0x0E5C8EA20a1EB26e5dDE5AFab5279F546dB92a79\",\n  },\n  graphql: {\n    endpoint:\n      \"https://gateway.thegraph.com/api/{key}/deployments/id/QmYMwfki8kR9LwJ2Jv9BFdr938Js8THGS1J3PSd38W7jQF\",\n    defaultEndpoint: \"https://api.studio.thegraph.com/query/1726/betswirl-arbitrum-one/v2.3.3\",\n  },\n  defaultAffiliate: \"0xf14C79a7fA22c1f97C779F573c9bF39b6b43381c\",\n};\n\nconst avalancheData: CasinoChain = {\n  id: chainByKey.avalanche.id,\n  viemChain: chainByKey.avalanche,\n  options: {\n    pollingInterval: 500,\n  },\n  contracts: {\n    bank: \"0x8FB3110015FBCAA469ee45B64dcd2BdF544B9CFA\",\n    games: {\n      [CASINO_GAME_TYPE.DICE]: {\n        address: \"0xAa4D2931a9fE14c3dec8AC3f12923Cbb535C0e5f\",\n        abi: diceAbi,\n      },\n      [CASINO_GAME_TYPE.COINTOSS]: {\n        address: \"0xC3Dff2489F8241729B824e23eD01F986fcDf8ec3\",\n        abi: coinTossAbi,\n      },\n      [CASINO_GAME_TYPE.ROULETTE]: {\n        address: \"0x6678e3B4AB2a8C8Cdd068F132C21293CcBda33cb\",\n        abi: rouletteAbi,\n      },\n      [CASINO_GAME_TYPE.KENO]: {\n        address: \"0xc3428E4FEb5C770Db51DCb9B1C08223B10994a89\",\n        abi: kenoAbi,\n      },\n      [CASINO_GAME_TYPE.WHEEL]: {\n        address: \"0xdec2A4f75c5fAE4a09c83975681CE1Dd1dff764b\",\n        abi: weightedGameAbi,\n      },\n      [CASINO_GAME_TYPE.PLINKO]: {\n        address: \"0xdec2A4f75c5fAE4a09c83975681CE1Dd1dff764b\",\n        abi: weightedGameAbi,\n      },\n      [CASINO_GAME_TYPE.CUSTOM_WEIGHTED_GAME]: {\n        address: \"0xdec2A4f75c5fAE4a09c83975681CE1Dd1dff764b\",\n        abi: weightedGameAbi,\n      },\n    },\n    freebet: \"0x7a1EFD33f41150E3247F14209b2a733bc6B1cb7a\",\n    leaderboard: \"0x0E5C8EA20a1EB26e5dDE5AFab5279F546dB92a79\",\n  },\n  graphql: {\n    endpoint:\n      \"https://gateway.thegraph.com/api/{key}/deployments/id/Qmf3KfduW97R5zFUNV5fBcFQJ9P48EnhHsdJeKzkTQiUBz\",\n    defaultEndpoint: \"https://api.studio.thegraph.com/query/1726/betswirl-avalanche/v2.3.3\",\n  },\n  defaultAffiliate: \"0x1a75280F832280Af93f588f715a5Fb4Ca7918430\",\n};\n\nconst polygonData: CasinoChain = {\n  id: chainByKey.polygon.id,\n  viemChain: chainByKey.polygon,\n  options: {\n    pollingInterval: 1000,\n  },\n  contracts: {\n    bank: \"0x8FB3110015FBCAA469ee45B64dcd2BdF544B9CFA\",\n    games: {\n      [CASINO_GAME_TYPE.DICE]: {\n        address: \"0xAa4D2931a9fE14c3dec8AC3f12923Cbb535C0e5f\",\n        abi: diceAbi,\n      },\n      [CASINO_GAME_TYPE.COINTOSS]: {\n        address: \"0xC3Dff2489F8241729B824e23eD01F986fcDf8ec3\",\n        abi: coinTossAbi,\n      },\n      [CASINO_GAME_TYPE.ROULETTE]: {\n        address: \"0x6678e3B4AB2a8C8Cdd068F132C21293CcBda33cb\",\n        abi: rouletteAbi,\n      },\n      [CASINO_GAME_TYPE.KENO]: {\n        address: \"0xc3428E4FEb5C770Db51DCb9B1C08223B10994a89\",\n        abi: kenoAbi,\n      },\n      [CASINO_GAME_TYPE.WHEEL]: {\n        address: \"0xdec2A4f75c5fAE4a09c83975681CE1Dd1dff764b\",\n        abi: weightedGameAbi,\n      },\n      [CASINO_GAME_TYPE.PLINKO]: {\n        address: \"0xdec2A4f75c5fAE4a09c83975681CE1Dd1dff764b\",\n        abi: weightedGameAbi,\n      },\n      [CASINO_GAME_TYPE.CUSTOM_WEIGHTED_GAME]: {\n        address: \"0xdec2A4f75c5fAE4a09c83975681CE1Dd1dff764b\",\n        abi: weightedGameAbi,\n      },\n    },\n    freebet: \"0x7a1EFD33f41150E3247F14209b2a733bc6B1cb7a\",\n    leaderboard: \"0x0E5C8EA20a1EB26e5dDE5AFab5279F546dB92a79\",\n  },\n  graphql: {\n    endpoint:\n      \"https://gateway.thegraph.com/api/{key}/deployments/id/QmUa6b7voVS4kuERGo3bEDvRsW2FdTogSLeztnvtsi5DB2\",\n    defaultEndpoint: \"https://api.studio.thegraph.com/query/1726/betswirl-polygon/v2.3.3\",\n  },\n  defaultAffiliate: \"0xfA695010bF9e757a1abCd2703259F419217aa756\",\n};\n\nconst bscData: CasinoChain = {\n  id: chainByKey.bsc.id,\n  viemChain: chainByKey.bsc,\n  options: {\n    pollingInterval: 500,\n  },\n  contracts: {\n    bank: \"0x8FB3110015FBCAA469ee45B64dcd2BdF544B9CFA\",\n    games: {\n      [CASINO_GAME_TYPE.DICE]: {\n        address: \"0xAa4D2931a9fE14c3dec8AC3f12923Cbb535C0e5f\",\n        abi: diceAbi,\n      },\n      [CASINO_GAME_TYPE.COINTOSS]: {\n        address: \"0xC3Dff2489F8241729B824e23eD01F986fcDf8ec3\",\n        abi: coinTossAbi,\n      },\n      [CASINO_GAME_TYPE.ROULETTE]: {\n        address: \"0x6678e3B4AB2a8C8Cdd068F132C21293CcBda33cb\",\n        abi: rouletteAbi,\n      },\n      [CASINO_GAME_TYPE.KENO]: {\n        address: \"0xc3428E4FEb5C770Db51DCb9B1C08223B10994a89\",\n        abi: kenoAbi,\n      },\n      [CASINO_GAME_TYPE.WHEEL]: {\n        address: \"0xdec2A4f75c5fAE4a09c83975681CE1Dd1dff764b\",\n        abi: weightedGameAbi,\n      },\n      [CASINO_GAME_TYPE.PLINKO]: {\n        address: \"0xdec2A4f75c5fAE4a09c83975681CE1Dd1dff764b\",\n        abi: weightedGameAbi,\n      },\n      [CASINO_GAME_TYPE.CUSTOM_WEIGHTED_GAME]: {\n        address: \"0xdec2A4f75c5fAE4a09c83975681CE1Dd1dff764b\",\n        abi: weightedGameAbi,\n      },\n    },\n    freebet: \"0x7a1EFD33f41150E3247F14209b2a733bc6B1cb7a\",\n    leaderboard: \"0x0E5C8EA20a1EB26e5dDE5AFab5279F546dB92a79\",\n  },\n  graphql: {\n    endpoint:\n      \"https://gateway.thegraph.com/api/{key}/deployments/id/Qmd5oqyojVx5wWSFuWfKz3YVLPHdE3KU5458Qqq3SVeGEB\",\n    defaultEndpoint: \"https://api.studio.thegraph.com/query/1726/betswirl-bnb-chain/v2.3.3\",\n  },\n  defaultAffiliate: \"0xCD25325a6eF20BC5dF9bceAc0cC22a48d2e8f6eF\",\n};\n\nconst baseData: CasinoChain = {\n  id: chainByKey.base.id,\n  viemChain: chainByKey.base,\n  options: {\n    pollingInterval: 200,\n  },\n  contracts: {\n    bank: \"0x8FB3110015FBCAA469ee45B64dcd2BdF544B9CFA\",\n    games: {\n      [CASINO_GAME_TYPE.DICE]: {\n        address: \"0xAa4D2931a9fE14c3dec8AC3f12923Cbb535C0e5f\",\n        abi: diceAbi,\n      },\n      [CASINO_GAME_TYPE.COINTOSS]: {\n        address: \"0xC3Dff2489F8241729B824e23eD01F986fcDf8ec3\",\n        abi: coinTossAbi,\n      },\n      [CASINO_GAME_TYPE.ROULETTE]: {\n        address: \"0x6678e3B4AB2a8C8Cdd068F132C21293CcBda33cb\",\n        abi: rouletteAbi,\n      },\n      [CASINO_GAME_TYPE.KENO]: {\n        address: \"0xc3428E4FEb5C770Db51DCb9B1C08223B10994a89\",\n        abi: kenoAbi,\n      },\n      [CASINO_GAME_TYPE.WHEEL]: {\n        address: \"0xdec2A4f75c5fAE4a09c83975681CE1Dd1dff764b\",\n        abi: weightedGameAbi,\n      },\n      [CASINO_GAME_TYPE.PLINKO]: {\n        address: \"0xdec2A4f75c5fAE4a09c83975681CE1Dd1dff764b\",\n        abi: weightedGameAbi,\n      },\n      [CASINO_GAME_TYPE.CUSTOM_WEIGHTED_GAME]: {\n        address: \"0xdec2A4f75c5fAE4a09c83975681CE1Dd1dff764b\",\n        abi: weightedGameAbi,\n      },\n    },\n    freebet: \"0x7a1EFD33f41150E3247F14209b2a733bc6B1cb7a\",\n    leaderboard: \"0x0E5C8EA20a1EB26e5dDE5AFab5279F546dB92a79\",\n  },\n  graphql: {\n    endpoint:\n      \"https://gateway.thegraph.com/api/{key}/deployments/id/QmZuY97Ai2EHqc3GmA26n3WzwrGJZ7orXvEi3SmqmSe11T\",\n    defaultEndpoint: \"https://api.studio.thegraph.com/query/1726/betswirl-base/v2.3.3\",\n  },\n  defaultAffiliate: \"0xBf1998e1F1cD52fBfb63e7E646bb39c091A7B70A\",\n};\n\nexport const casinoChainById = {\n  [chainByKey.arbitrumSepolia.id]: arbitrumSepoliaData,\n  [chainByKey.avalancheFuji.id]: avalancheFujiData,\n  [chainByKey.polygonAmoy.id]: polygonAmoyData,\n  [chainByKey.baseSepolia.id]: baseSepoliaData,\n  [chainByKey.arbitrum.id]: arbitrumData,\n  [chainByKey.avalanche.id]: avalancheData,\n  [chainByKey.polygon.id]: polygonData,\n  [chainByKey.bsc.id]: bscData,\n  [chainByKey.base.id]: baseData,\n} as const;\n\nexport const casinoChains = Object.values(casinoChainById) as unknown as readonly [\n  CasinoChain,\n  ...CasinoChain[],\n];\n\nexport const casinoChainIds: CasinoChainId[] = casinoChains.map(\n  (chain) => chain.viemChain.id as CasinoChainId,\n);\n\nexport const labelCasinoGameByType = {\n  [CASINO_GAME_TYPE.COINTOSS]: CASINO_GAME_LABEL_TYPE.COINTOSS,\n  [CASINO_GAME_TYPE.DICE]: CASINO_GAME_LABEL_TYPE.DICE,\n  [CASINO_GAME_TYPE.ROULETTE]: CASINO_GAME_LABEL_TYPE.ROULETTE,\n  [CASINO_GAME_TYPE.KENO]: CASINO_GAME_LABEL_TYPE.KENO,\n  [CASINO_GAME_TYPE.WHEEL]: CASINO_GAME_LABEL_TYPE.WHEEL,\n  [CASINO_GAME_TYPE.PLINKO]: CASINO_GAME_LABEL_TYPE.PLINKO,\n  [CASINO_GAME_TYPE.CUSTOM_WEIGHTED_GAME]: CASINO_GAME_LABEL_TYPE.CUSTOM_WEIGHTED_GAME,\n} as const;\n\nexport const typeBySubgraphCasinoGame = {\n  [CASINO_GAME_SUBGRAPH_TYPE.COINTOSS]: CASINO_GAME_TYPE.COINTOSS,\n  [CASINO_GAME_SUBGRAPH_TYPE.DICE]: CASINO_GAME_TYPE.DICE,\n  [CASINO_GAME_SUBGRAPH_TYPE.ROULETTE]: CASINO_GAME_TYPE.ROULETTE,\n  [CASINO_GAME_SUBGRAPH_TYPE.KENO]: CASINO_GAME_TYPE.KENO,\n  [CASINO_GAME_SUBGRAPH_TYPE.WHEEL]: CASINO_GAME_TYPE.WHEEL,\n  [CASINO_GAME_SUBGRAPH_TYPE.PLINKO]: CASINO_GAME_TYPE.PLINKO,\n  [CASINO_GAME_SUBGRAPH_TYPE.CUSTOM_WEIGHTED_GAME]: CASINO_GAME_TYPE.CUSTOM_WEIGHTED_GAME,\n} as const;\n\nexport const subgraphGameByType = {\n  [CASINO_GAME_TYPE.COINTOSS]: CASINO_GAME_SUBGRAPH_TYPE.COINTOSS,\n  [CASINO_GAME_TYPE.DICE]: CASINO_GAME_SUBGRAPH_TYPE.DICE,\n  [CASINO_GAME_TYPE.ROULETTE]: CASINO_GAME_SUBGRAPH_TYPE.ROULETTE,\n  [CASINO_GAME_TYPE.KENO]: CASINO_GAME_SUBGRAPH_TYPE.KENO,\n  [CASINO_GAME_TYPE.WHEEL]: CASINO_GAME_SUBGRAPH_TYPE.WHEEL,\n  [CASINO_GAME_TYPE.PLINKO]: CASINO_GAME_SUBGRAPH_TYPE.PLINKO,\n  [CASINO_GAME_TYPE.CUSTOM_WEIGHTED_GAME]: CASINO_GAME_SUBGRAPH_TYPE.CUSTOM_WEIGHTED_GAME,\n} as const;\n\n// Could be increased in the future if we increase vrfCallbackGasExtraBet value in smart contracts\n// This limit is a static limit, you need to Math.min(static limit, dynamic limit)\nexport const maxGameBetCountByType = {\n  [CASINO_GAME_TYPE.COINTOSS]: 100,\n  [CASINO_GAME_TYPE.DICE]: 200,\n  [CASINO_GAME_TYPE.ROULETTE]: 200,\n  [CASINO_GAME_TYPE.KENO]: 125,\n  [CASINO_GAME_TYPE.WHEEL]: 100,\n  [CASINO_GAME_TYPE.PLINKO]: 100,\n  [CASINO_GAME_TYPE.CUSTOM_WEIGHTED_GAME]: 100,\n} as const;\n","import { CASINO_GAME_TYPE, type WEIGHTED_CASINO_GAME_TYPE } from \"../../data/casino\";\nimport type { BP } from \"../../interfaces\";\nimport type {\n  CoinTossChoiceInput,\n  DiceChoiceInput,\n  KenoChoiceInput,\n  RouletteChoiceInput,\n} from \"..\";\n\ntype MayBeMultiOutputsValue<T extends CASINO_GAME_TYPE> = T extends\n  | CASINO_GAME_TYPE.KENO\n  | WEIGHTED_CASINO_GAME_TYPE\n  ? number[]\n  : number;\n\nexport interface ChoiceInput<T extends CASINO_GAME_TYPE = CASINO_GAME_TYPE> {\n  game: CASINO_GAME_TYPE;\n  label: string;\n  winChancePercent: MayBeMultiOutputsValue<T>;\n  multiplier: MayBeMultiOutputsValue<T>;\n  formattedMultiplier: MayBeMultiOutputsValue<T>;\n  netMultiplier?: MayBeMultiOutputsValue<T>;\n  formattedNetMultiplier?: MayBeMultiOutputsValue<T>;\n}\n\n// Game should not know the game implementation details, but well..  it helps developers\nexport type NormalGameChoiceInput =\n  | CoinTossChoiceInput\n  | DiceChoiceInput\n  | RouletteChoiceInput\n  | KenoChoiceInput;\n\nexport abstract class AbstractCasinoGame<TInput, TEncodedInput, TRolled, TEncodedRolled> {\n  getWinChancePercent(_input: TInput | string): number {\n    throw new Error(\"Not implemented\");\n  }\n  encodeInput(_input: TInput | string): TEncodedInput {\n    throw new Error(\"Not implemented\");\n  }\n  encodeAbiParametersInput(_input: TInput | string): TEncodedInput {\n    throw new Error(\"Not implemented\");\n  }\n  decodeInput(_encodedInput: TEncodedInput | string): TInput {\n    throw new Error(\"Not implemented\");\n  }\n  getMultiplier(_input: TInput | string): BP {\n    throw new Error(\"Not implemented\");\n  }\n  getFormattedMultiplier(_input: TInput | string): number {\n    throw new Error(\"Not implemented\");\n  }\n  decodeRolled(_encodedRolledInput: TEncodedRolled | string): TRolled {\n    throw new Error(\"Not implemented\");\n  }\n}\n","import { type EncodeAbiParametersReturnType, encodeAbiParameters, parseAbiParameters } from \"viem\";\nimport { BP_VALUE } from \"../../constants\";\nimport { CASINO_GAME_TYPE } from \"../../data/casino\";\nimport type { BP } from \"../../interfaces\";\nimport { getFormattedNetMultiplier, getNetMultiplier } from \"../../utils/bet\";\nimport { AbstractCasinoGame, type ChoiceInput } from \"./game\";\n\nexport enum COINTOSS_FACE {\n  TAILS = \"TAILS\",\n  HEADS = \"HEADS\",\n}\n\nexport interface CoinTossChoiceInput extends ChoiceInput<CASINO_GAME_TYPE.COINTOSS> {\n  value: COINTOSS_FACE;\n  id: COINTOSS_FACE;\n}\n\nexport type CoinTossEncodedInput = boolean;\nexport type CoinTossEncodedRolled = boolean;\n\nexport class CoinToss extends AbstractCasinoGame<\n  COINTOSS_FACE,\n  CoinTossEncodedInput,\n  COINTOSS_FACE,\n  CoinTossEncodedRolled\n> {\n  static getWinChancePercent(_face: COINTOSS_FACE | string): number {\n    return 50;\n  }\n\n  static getMultiplier(_face: COINTOSS_FACE | string): BP {\n    return 20000;\n  }\n\n  static getFormattedMultiplier(_face: COINTOSS_FACE | string): number {\n    return Number((CoinToss.getMultiplier(_face) / BP_VALUE).toFixed(3));\n  }\n\n  static encodeInput(face: COINTOSS_FACE | string): CoinTossEncodedInput {\n    return face === COINTOSS_FACE.HEADS || face.toLowerCase() === \"true\" || face === \"1\";\n  }\n\n  static encodeAbiParametersInput(face: COINTOSS_FACE | string): EncodeAbiParametersReturnType {\n    return encodeAbiParameters(parseAbiParameters(\"bool\"), [CoinToss.encodeInput(face)]);\n  }\n\n  static decodeInput(encodedFace: CoinTossEncodedInput | string): COINTOSS_FACE {\n    if (typeof encodedFace === \"string\") {\n      const normalizedValue = encodedFace.toLowerCase();\n      return normalizedValue === \"true\" || normalizedValue === \"1\"\n        ? COINTOSS_FACE.HEADS\n        : COINTOSS_FACE.TAILS;\n    }\n    return encodedFace ? COINTOSS_FACE.HEADS : COINTOSS_FACE.TAILS;\n  }\n\n  static decodeRolled(encodedFace: CoinTossEncodedRolled | string): COINTOSS_FACE {\n    return CoinToss.decodeInput(encodedFace);\n  }\n\n  /**\n   * Determines if a single decoded roll is a winning roll for CoinToss.\n   *\n   * This method is particularly useful for multibetting scenarios where you need to:\n   * - Identify which individual rolls are winners\n   * - Color-code winning faces in the UI\n   *\n   * @param decodedRolled - The decoded face result (HEADS or TAILS)\n   * @param encodedInput - The player's encoded choice (true for HEADS, false for TAILS)\n   * @returns true if the roll is a win, false otherwise\n   */\n  static isSingleRolledWin(\n    decodedRolled: COINTOSS_FACE,\n    encodedInput: CoinTossEncodedInput | string,\n  ): boolean {\n    return CoinToss.decodeInput(encodedInput) === decodedRolled;\n  }\n\n  // houseEdge is a number between 0 and 10000\n  static getChoiceInputs(houseEdge?: BP): CoinTossChoiceInput[] {\n    const multiplier = CoinToss.getMultiplier(COINTOSS_FACE.TAILS);\n    const formattedMultiplier = CoinToss.getFormattedMultiplier(COINTOSS_FACE.TAILS);\n    const netMultiplier = houseEdge ? getNetMultiplier(multiplier, houseEdge) : undefined;\n    const formattedNetMultiplier = houseEdge\n      ? getFormattedNetMultiplier(multiplier, houseEdge)\n      : undefined;\n\n    return [\n      {\n        value: COINTOSS_FACE.TAILS,\n        id: COINTOSS_FACE.TAILS,\n        game: CASINO_GAME_TYPE.COINTOSS,\n        label: \"Tails\",\n        winChancePercent: CoinToss.getWinChancePercent(COINTOSS_FACE.TAILS),\n        multiplier: CoinToss.getMultiplier(COINTOSS_FACE.TAILS),\n        formattedMultiplier,\n        netMultiplier,\n        formattedNetMultiplier,\n      },\n      {\n        value: COINTOSS_FACE.HEADS,\n        id: COINTOSS_FACE.HEADS,\n        game: CASINO_GAME_TYPE.COINTOSS,\n        label: \"Heads\",\n        winChancePercent: CoinToss.getWinChancePercent(COINTOSS_FACE.HEADS),\n        multiplier: multiplier,\n        formattedMultiplier,\n        netMultiplier,\n        formattedNetMultiplier,\n      },\n    ];\n  }\n}\n","import type { EncodeAbiParametersReturnType } from \"viem\";\nimport { encodeAbiParameters, parseAbiParameters } from \"viem\";\nimport { BP_VALUE } from \"../../constants\";\nimport { CASINO_GAME_TYPE } from \"../../data/casino\";\nimport type { BP } from \"../../interfaces\";\nimport { getFormattedNetMultiplier, getNetMultiplier } from \"../../utils/bet\";\nimport { AbstractCasinoGame, type ChoiceInput } from \"./game\";\n\nexport const MIN_SELECTABLE_DICE_NUMBER = 1 as DiceNumber;\nexport const MAX_SELECTABLE_DICE_NUMBER = 99 as DiceNumber;\n\nexport type DiceNumber =\n  | 1\n  | 2\n  | 3\n  | 4\n  | 5\n  | 6\n  | 7\n  | 8\n  | 9\n  | 10\n  | 11\n  | 12\n  | 13\n  | 14\n  | 15\n  | 16\n  | 17\n  | 18\n  | 19\n  | 20\n  | 21\n  | 22\n  | 23\n  | 24\n  | 25\n  | 26\n  | 27\n  | 28\n  | 29\n  | 30\n  | 31\n  | 32\n  | 33\n  | 34\n  | 35\n  | 36\n  | 37\n  | 38\n  | 39\n  | 40\n  | 41\n  | 42\n  | 43\n  | 44\n  | 45\n  | 46\n  | 47\n  | 48\n  | 49\n  | 50\n  | 51\n  | 52\n  | 53\n  | 54\n  | 55\n  | 56\n  | 57\n  | 58\n  | 59\n  | 60\n  | 61\n  | 62\n  | 63\n  | 64\n  | 65\n  | 66\n  | 67\n  | 68\n  | 69\n  | 70\n  | 71\n  | 72\n  | 73\n  | 74\n  | 75\n  | 76\n  | 77\n  | 78\n  | 79\n  | 80\n  | 81\n  | 82\n  | 83\n  | 84\n  | 85\n  | 86\n  | 87\n  | 88\n  | 89\n  | 90\n  | 91\n  | 92\n  | 93\n  | 94\n  | 95\n  | 96\n  | 97\n  | 98\n  | 99;\n\nexport type DiceRolledNumber = 100 & DiceNumber;\n\nexport interface DiceChoiceInput extends ChoiceInput<CASINO_GAME_TYPE.DICE> {\n  value: DiceNumber;\n  id: DiceNumber;\n}\n\nexport type DiceEncodedInput = number;\nexport type DiceEncodedRolled = number;\n\nexport class Dice extends AbstractCasinoGame<\n  DiceNumber,\n  DiceEncodedInput,\n  DiceRolledNumber,\n  DiceEncodedRolled\n> {\n  static getWinChancePercent(cap: DiceNumber | string): number {\n    return Math.max(100 - Number(cap), 1);\n  }\n\n  static getMultiplier(cap: DiceNumber | string): BP {\n    return Math.round((BP_VALUE * 100) / (100 - Number(cap)));\n  }\n\n  static getFormattedMultiplier(cap: DiceNumber | string): number {\n    return Number((Dice.getMultiplier(cap) / BP_VALUE).toFixed(3));\n  }\n\n  static encodeInput(cap: DiceNumber | string): DiceEncodedInput {\n    return Number(cap) as DiceEncodedInput;\n  }\n\n  static encodeAbiParametersInput(cap: DiceNumber | string): EncodeAbiParametersReturnType {\n    return encodeAbiParameters(parseAbiParameters(\"uint8\"), [Dice.encodeInput(cap)]);\n  }\n\n  static decodeInput(encodedCap: DiceEncodedInput | string): DiceNumber {\n    return Number(encodedCap) as DiceNumber;\n  }\n\n  static decodeRolled(encodedCap: DiceEncodedRolled | string): DiceRolledNumber {\n    return Number(encodedCap) as DiceRolledNumber;\n  }\n\n  /**\n   * Determines if a single decoded roll is a winning roll for Dice.\n   *\n   * This method is particularly useful for multibetting scenarios where you need to:\n   * - Identify which individual rolls are winners\n   * - Color-code winning numbers in the UI\n   *\n   * @param decodedRolled - The decoded dice number result (1-100)\n   * @param encodedInput - The player's encoded cap choice (1-99)\n   * @returns true if the roll is a win (rolled number > cap), false otherwise\n   */\n  static isSingleRolledWin(\n    decodedRolled: DiceRolledNumber,\n    encodedInput: DiceEncodedInput | string,\n  ): boolean {\n    return Number(decodedRolled) > Number(encodedInput);\n  }\n\n  static getChoiceInputs(houseEdge?: BP): DiceChoiceInput[] {\n    return Array.from({ length: 99 }, (_, i) => {\n      const diceNumber = (i + 1) as DiceNumber;\n      return {\n        value: diceNumber,\n        id: diceNumber,\n        game: CASINO_GAME_TYPE.DICE,\n        label: `${diceNumber}`,\n        winChancePercent: Dice.getWinChancePercent(diceNumber),\n        multiplier: Dice.getMultiplier(diceNumber),\n        formattedMultiplier: Dice.getFormattedMultiplier(diceNumber),\n        netMultiplier: houseEdge\n          ? getNetMultiplier(Dice.getMultiplier(diceNumber), houseEdge)\n          : undefined,\n        formattedNetMultiplier: houseEdge\n          ? getFormattedNetMultiplier(Dice.getMultiplier(diceNumber), houseEdge)\n          : undefined,\n      };\n    });\n  }\n}\n","import { type EncodeAbiParametersReturnType, encodeAbiParameters, parseAbiParameters } from \"viem\";\nimport { type BP, CASINO_GAME_TYPE, getFormattedNetMultiplier, getNetMultiplier } from \"../..\";\nimport { BP_VALUE } from \"../../constants\";\nimport type { KenoConfiguration } from \"../../read/casino/keno\";\nimport { AbstractCasinoGame, type ChoiceInput } from \"./game\";\n\nexport type KenoBall =\n  | 1\n  | 2\n  | 3\n  | 4\n  | 5\n  | 6\n  | 7\n  | 8\n  | 9\n  | 10\n  | 11\n  | 12\n  | 13\n  | 14\n  | 15\n  | 16\n  | 17\n  | 18\n  | 19\n  | 20\n  | 21\n  | 22\n  | 23\n  | 24\n  | 25\n  | 26\n  | 27\n  | 28\n  | 29\n  | 30\n  | 31\n  | 32\n  | 33\n  | 34\n  | 35\n  | 36\n  | 37\n  | 38\n  | 39\n  | 40;\nexport enum KENO_INPUT_BUNDLE {\n  MAX_FIRST_NUMBERS = \"All last numbers\",\n  MAX_LAST_NUMBERS = \"All first numbers\",\n  FIRST_AND_LAST = \"The first and the last number\",\n}\n\nexport interface KenoChoiceInput extends ChoiceInput<CASINO_GAME_TYPE.KENO> {\n  value: KenoBall[];\n  config: KenoConfiguration;\n  id: KenoBall[] | KENO_INPUT_BUNDLE;\n}\n\nexport type KenoEncodedInput = number;\nexport type KenoEncodedRolled = bigint[];\n\nexport class Keno extends AbstractCasinoGame<\n  KenoBall[],\n  KenoEncodedInput,\n  KenoBall[],\n  KenoEncodedRolled[]\n> {\n  static getWinChancePercent(\n    kenoConfig: KenoConfiguration,\n    selectedBallsCount: number,\n    matchedBallsCount: number,\n  ): number {\n    const multiplier = Keno.getMultiplier(kenoConfig, selectedBallsCount, matchedBallsCount);\n    if (!multiplier) return 0;\n\n    return (1 / multiplier / (selectedBallsCount + 1)) * BP_VALUE * 100;\n  }\n\n  static getMultiplier(\n    kenoConfig: KenoConfiguration,\n    selectedBallsCount: number,\n    matchedBallsCount: number,\n  ): BP {\n    return kenoConfig.multiplierTable[selectedBallsCount]?.[matchedBallsCount] || 0;\n  }\n\n  static getFormattedMultiplier(\n    kenoConfig: KenoConfiguration,\n    selectedBallsCount: number,\n    matchedBallsCount: number,\n  ): number {\n    return Number(\n      (Keno.getMultiplier(kenoConfig, selectedBallsCount, matchedBallsCount) / BP_VALUE).toFixed(3),\n    );\n  }\n\n  static encodeInput(balls: KenoBall[], kenoConfig: KenoConfiguration): KenoEncodedInput {\n    // 1. Make the array unique\n    const uniqueNumbers = [...new Set(balls)];\n    // 2. Sort the array\n    const sortedNumbers = uniqueNumbers.sort((a, b) => a - b);\n    // 3. Create a boolean array\n    const sortedBooleans: boolean[] = Array(kenoConfig.biggestSelectableBall).fill(false);\n    for (const num of sortedNumbers) {\n      sortedBooleans[num] = true;\n    }\n    // 4. Create a binary numbers\n    const binaryNumbers = Object.values(sortedBooleans)\n      .slice()\n      .reverse()\n      .reduce((numbers, isActive) => {\n        return numbers + (isActive ? 1 : 0);\n      }, \"\");\n    // 5. Transform the binary numbers to a number\n    return Number.parseInt(binaryNumbers, 2);\n  }\n\n  static encodeAbiParametersInput(\n    balls: KenoBall[],\n    kenoConfig: KenoConfiguration,\n  ): EncodeAbiParametersReturnType {\n    return encodeAbiParameters(parseAbiParameters(\"uint40\"), [Keno.encodeInput(balls, kenoConfig)]);\n  }\n\n  static decodeInput(encodedBalls: KenoEncodedInput | string): KenoBall[] {\n    return Keno.maskToBalls(Number(encodedBalls));\n  }\n\n  static decodeRolled(encodedRolled: KenoEncodedRolled | string): KenoBall[] {\n    return Keno.maskToBalls(Number(encodedRolled));\n  }\n\n  /**\n   * Determines if a single decoded roll is a winning roll for Keno.\n   *\n   * This method is particularly useful for multibetting scenarios where you need to:\n   * - Identify which individual rolls are winners\n   * - Color-code winning balls in the UI\n   *\n   * @param decodedRolled - A decoded keno ball number result (1-40)\n   * @param encodedInput - The player's encoded ball selection mask\n   * @returns true if the rolled ball is in the player's selection, false otherwise\n   */\n  static isSingleRolledWin(\n    decodedRolled: KenoBall,\n    encodedInput: KenoEncodedInput | string,\n  ): boolean {\n    return Keno.decodeInput(encodedInput).includes(decodedRolled);\n  }\n\n  static getChoiceInputs(kenoConfig: KenoConfiguration, houseEdge?: BP): KenoChoiceInput[] {\n    const createChoiceInput = (\n      balls: KenoBall[],\n      id: KenoBall[] | KENO_INPUT_BUNDLE,\n      selectedBallsCount: number,\n      label: string,\n    ): KenoChoiceInput => {\n      // eg. selectedBallsCount = 2 => possibleMatchedCounts = [0, 1, 2]\n      const possibleMatchedCounts = Array.from({ length: selectedBallsCount + 1 }, (_, i) => i);\n      return {\n        value: balls,\n        config: kenoConfig,\n        id,\n        game: CASINO_GAME_TYPE.KENO,\n        label,\n        winChancePercent: possibleMatchedCounts.map((matchedCount) =>\n          Keno.getWinChancePercent(kenoConfig, selectedBallsCount, matchedCount),\n        ),\n        multiplier: possibleMatchedCounts.map((matchedCount) =>\n          Keno.getMultiplier(kenoConfig, selectedBallsCount, matchedCount),\n        ),\n        formattedMultiplier: possibleMatchedCounts.map((matchedCount) =>\n          Keno.getFormattedMultiplier(kenoConfig, selectedBallsCount, matchedCount),\n        ),\n        netMultiplier: houseEdge\n          ? possibleMatchedCounts.map((matchedCount) =>\n              getNetMultiplier(\n                Keno.getMultiplier(kenoConfig, selectedBallsCount, matchedCount),\n                houseEdge,\n              ),\n            )\n          : undefined,\n        formattedNetMultiplier: houseEdge\n          ? possibleMatchedCounts.map((matchedCount) =>\n              getFormattedNetMultiplier(\n                Keno.getMultiplier(kenoConfig, selectedBallsCount, matchedCount),\n                houseEdge,\n              ),\n            )\n          : undefined,\n      };\n    };\n\n    // 1. Single numbers\n    const choiceInputs: KenoChoiceInput[] = Array.from(\n      { length: kenoConfig.biggestSelectableBall },\n      (_, i) => {\n        const kenoBall = (i + 1) as KenoBall;\n        return createChoiceInput([kenoBall], [kenoBall], 1, `${kenoBall}`);\n      },\n    );\n\n    // 2. First one and last one\n    if (kenoConfig.maxSelectableBalls > 1 && kenoConfig.biggestSelectableBall > 1) {\n      choiceInputs.push(\n        createChoiceInput(\n          [1, kenoConfig.biggestSelectableBall as KenoBall],\n          KENO_INPUT_BUNDLE.FIRST_AND_LAST,\n          2,\n          `${KENO_INPUT_BUNDLE.FIRST_AND_LAST} (1 & ${kenoConfig.biggestSelectableBall})`,\n        ),\n      );\n    }\n\n    // 3. All first numbers\n    const maxFirstNumbers = Array.from(\n      { length: kenoConfig.maxSelectableBalls },\n      (_, i) => (i + 1) as KenoBall,\n    );\n    choiceInputs.push(\n      createChoiceInput(\n        maxFirstNumbers,\n        KENO_INPUT_BUNDLE.MAX_FIRST_NUMBERS,\n        kenoConfig.maxSelectableBalls,\n        `${KENO_INPUT_BUNDLE.MAX_FIRST_NUMBERS} (${maxFirstNumbers.join(\", \")})`,\n      ),\n    );\n\n    // 4. All last numbers\n    const maxLastNumbers = Array.from(\n      { length: kenoConfig.maxSelectableBalls },\n      (_, i) => (kenoConfig.biggestSelectableBall - i) as KenoBall,\n    );\n    choiceInputs.push(\n      createChoiceInput(\n        maxLastNumbers,\n        KENO_INPUT_BUNDLE.MAX_LAST_NUMBERS,\n        kenoConfig.maxSelectableBalls,\n        `${KENO_INPUT_BUNDLE.MAX_LAST_NUMBERS} (${maxLastNumbers.join(\", \")})`,\n      ),\n    );\n\n    return choiceInputs;\n  }\n\n  // Keno utilities\n\n  static maskToBalls(encodedBalls: number) {\n    return encodedBalls\n      .toString(2)\n      .split(\"\")\n      .reverse()\n      .map((ball, i) => (ball === \"1\" ? i + 1 : 0))\n      .filter((ball) => ball) as KenoBall[];\n  }\n}\n","import { encodeAbiParameters, parseAbiParameters } from \"viem\";\nimport type { EncodeAbiParametersReturnType } from \"viem/_types/utils/abi/encodeAbiParameters\";\nimport { BP_VALUE } from \"../../constants\";\nimport { CASINO_GAME_TYPE } from \"../../data/casino\";\nimport type { BP } from \"../../interfaces\";\nimport { getFormattedNetMultiplier, getNetMultiplier } from \"../../utils/bet\";\nimport { AbstractCasinoGame, type ChoiceInput } from \"./game\";\nexport const MIN_SELECTABLE_ROULETTE_NUMBER = 0 as RouletteNumber;\nexport const MAX_SELECTABLE_ROULETTE_NUMBER = 36 as RouletteNumber;\n\nexport type RouletteNumber =\n  | 0\n  | 1\n  | 2\n  | 3\n  | 4\n  | 5\n  | 6\n  | 7\n  | 8\n  | 9\n  | 10\n  | 11\n  | 12\n  | 13\n  | 14\n  | 15\n  | 16\n  | 17\n  | 18\n  | 19\n  | 20\n  | 21\n  | 22\n  | 23\n  | 24\n  | 25\n  | 26\n  | 27\n  | 28\n  | 29\n  | 30\n  | 31\n  | 32\n  | 33\n  | 34\n  | 35\n  | 36;\nexport enum ROULETTE_INPUT_BUNDLE {\n  FIRST_ROW = \"First row\",\n  SECOND_ROW = \"Second row\",\n  THIRD_ROW = \"Third row\",\n  ONE_TO_TWELVE = \"1 to 12\",\n  THIRTEEN_TO_TWENTY_FOUR = \"13 to 24\",\n  TWENTY_FIVE_TO_THIRTY_SIX = \"25 to 36\",\n  ONE_TO_EIGHTEEN = \"1 to 18\",\n  EIGHTEEN_TO_THIRTY_SIX = \"18 to 36\",\n  ODD = \"Odd\",\n  EVEN = \"Even\",\n  RED = \"Red\",\n  BLACK = \"Black\",\n}\n\nexport interface RouletteChoiceInput extends ChoiceInput<CASINO_GAME_TYPE.ROULETTE> {\n  value: RouletteNumber[];\n  id: RouletteNumber[] | ROULETTE_INPUT_BUNDLE;\n}\n\nexport type RouletteEncodedInput = number;\nexport type RouletteEncodedRolled = number;\n\nexport class Roulette extends AbstractCasinoGame<\n  RouletteNumber[],\n  RouletteEncodedInput,\n  RouletteNumber,\n  RouletteEncodedRolled\n> {\n  static getWinChancePercent(numbers: RouletteNumber[]): number {\n    const encodedNumbers = Roulette.encodeInput(numbers);\n    return (\n      Math.round(\n        (Roulette.getSelectedNumbersCount(encodedNumbers) / (MAX_SELECTABLE_ROULETTE_NUMBER + 1)) *\n          1e3,\n      ) / 10\n    );\n  }\n\n  static getMultiplier(numbers: RouletteNumber[]): BP {\n    const encodedNumbers = Roulette.encodeInput(numbers);\n    return encodedNumbers\n      ? Number(\n          (BigInt(BP_VALUE) * BigInt(MAX_SELECTABLE_ROULETTE_NUMBER + 1)) /\n            BigInt(Roulette.getSelectedNumbersCount(encodedNumbers)),\n        )\n      : 0;\n  }\n\n  static getFormattedMultiplier(numbers: RouletteNumber[]): number {\n    return Number((Roulette.getMultiplier(numbers) / BP_VALUE).toFixed(3));\n  }\n\n  static encodeInput(numbers: RouletteNumber[]): RouletteEncodedInput {\n    // 1. Make the array unique\n    const uniqueNumbers = [...new Set(numbers)];\n    // 2. Sort the array\n    const sortedNumbers = uniqueNumbers.sort((a, b) => a - b);\n    // 3. Create a boolean array\n    const sortedBooleans: boolean[] = Array(37).fill(false);\n    for (const num of sortedNumbers) {\n      sortedBooleans[num] = true;\n    }\n    // 4. Create a binary numbers\n    const binaryNumbers = Object.values(sortedBooleans)\n      .slice()\n      .reverse()\n      .reduce((numbers, isActive) => {\n        return numbers + (isActive ? 1 : 0);\n      }, \"\");\n    // 5. Transform the binary numbers to a number\n    return Number.parseInt(binaryNumbers, 2);\n  }\n\n  static encodeAbiParametersInput(numbers: RouletteNumber[]): EncodeAbiParametersReturnType {\n    return encodeAbiParameters(parseAbiParameters(\"uint40\"), [Roulette.encodeInput(numbers)]);\n  }\n\n  static decodeInput(encodedNumbers: RouletteEncodedInput | string): RouletteNumber[] {\n    return Number(encodedNumbers)\n      .toString(2)\n      .split(\"\")\n      .reverse()\n      .map((number, i) => (number === \"1\" ? i : -1))\n      .filter((number) => number >= 0) as RouletteNumber[];\n  }\n\n  static decodeRolled(encodedRolled: RouletteEncodedRolled | string): RouletteNumber {\n    return Number(encodedRolled) as RouletteNumber;\n  }\n\n  /**\n   * Determines if a single decoded roll is a winning roll for Roulette.\n   *\n   * This method is particularly useful for multibetting scenarios where you need to:\n   * - Identify which individual rolls are winners\n   * - Color-code winning numbers in the UI\n   *\n   * @param decodedRolled - The decoded roulette number result (0-36)\n   * @param encodedInput - The player's encoded number selection\n   * @returns true if the rolled number is in the player's selection, false otherwise\n   */\n  static isSingleRolledWin(\n    decodedRolled: RouletteNumber,\n    encodedInput: RouletteEncodedInput | string,\n  ): boolean {\n    return Roulette.decodeInput(Number(encodedInput)).includes(decodedRolled);\n  }\n\n  static getChoiceInputs(houseEdge?: number): RouletteChoiceInput[] {\n    const createChoiceInput = (\n      numbers: RouletteNumber[],\n      id: RouletteNumber[] | ROULETTE_INPUT_BUNDLE,\n      label: string,\n    ): RouletteChoiceInput => ({\n      value: numbers,\n      id,\n      game: CASINO_GAME_TYPE.ROULETTE,\n      label,\n      winChancePercent: Roulette.getWinChancePercent(numbers),\n      multiplier: Roulette.getMultiplier(numbers),\n      formattedMultiplier: Roulette.getFormattedMultiplier(numbers),\n      netMultiplier: houseEdge\n        ? getNetMultiplier(Roulette.getMultiplier(numbers), houseEdge)\n        : undefined,\n      formattedNetMultiplier: houseEdge\n        ? getFormattedNetMultiplier(Roulette.getMultiplier(numbers), houseEdge)\n        : undefined,\n    });\n\n    // 1. Single numbers\n    const choiceInputs: RouletteChoiceInput[] = Array.from({ length: 37 }, (_, i) => {\n      const rouletteNumber = i as RouletteNumber;\n      return createChoiceInput([rouletteNumber], [rouletteNumber], `${rouletteNumber}`);\n    });\n\n    // 2. Rows\n    choiceInputs.push(\n      ...[1, 2, 3].map((startNumber) => {\n        const rowNumbers = Array.from(\n          { length: 12 },\n          (_, i) => startNumber + i * 3,\n        ) as RouletteNumber[];\n        const bundle =\n          startNumber === 1\n            ? ROULETTE_INPUT_BUNDLE.FIRST_ROW\n            : startNumber === 2\n              ? ROULETTE_INPUT_BUNDLE.SECOND_ROW\n              : ROULETTE_INPUT_BUNDLE.THIRD_ROW;\n        return createChoiceInput(rowNumbers, bundle, `${bundle} (${rowNumbers})`);\n      }),\n    );\n\n    // 3. From to\n    const fromToBundles = [\n      {\n        from: 1,\n        to: 12,\n        id: ROULETTE_INPUT_BUNDLE.ONE_TO_TWELVE,\n      },\n      {\n        from: 13,\n        to: 24,\n        id: ROULETTE_INPUT_BUNDLE.THIRTEEN_TO_TWENTY_FOUR,\n      },\n      {\n        from: 25,\n        to: 36,\n        id: ROULETTE_INPUT_BUNDLE.TWENTY_FIVE_TO_THIRTY_SIX,\n      },\n      {\n        from: 1,\n        to: 18,\n        id: ROULETTE_INPUT_BUNDLE.ONE_TO_EIGHTEEN,\n      },\n      {\n        from: 19,\n        to: 36,\n        id: ROULETTE_INPUT_BUNDLE.EIGHTEEN_TO_THIRTY_SIX,\n      },\n    ];\n    choiceInputs.push(\n      ...fromToBundles.map((bundle) => {\n        const numbers = Array.from(\n          { length: bundle.to - bundle.from + 1 },\n          (_, i) => bundle.from + i,\n        ) as RouletteNumber[];\n        return createChoiceInput(numbers, bundle.id, `${bundle.id}`);\n      }),\n    );\n\n    // 4. Odd and even\n    choiceInputs.push(\n      ...[1, 2].map((startNumber) => {\n        const rowNumbers = Array.from(\n          { length: 18 },\n          (_, i) => startNumber + i * 2,\n        ) as RouletteNumber[];\n        const bundle = startNumber === 1 ? ROULETTE_INPUT_BUNDLE.ODD : ROULETTE_INPUT_BUNDLE.EVEN;\n        return createChoiceInput(rowNumbers, bundle, `${bundle} (${rowNumbers})`);\n      }),\n    );\n\n    // 5. Colors\n    const colorBundles = [\n      {\n        id: ROULETTE_INPUT_BUNDLE.BLACK,\n        numbers: [\n          2, 4, 6, 8, 10, 11, 13, 15, 17, 20, 22, 24, 26, 28, 29, 31, 33, 35,\n        ] as RouletteNumber[],\n      },\n      {\n        id: ROULETTE_INPUT_BUNDLE.RED,\n        numbers: [\n          1, 3, 5, 7, 9, 12, 14, 16, 18, 19, 21, 23, 25, 27, 30, 32, 34, 36,\n        ] as RouletteNumber[],\n      },\n    ];\n    choiceInputs.push(\n      ...colorBundles.map((colorBundle) =>\n        createChoiceInput(colorBundle.numbers, colorBundle.id, `${colorBundle.id}`),\n      ),\n    );\n    return choiceInputs;\n  }\n\n  // Roulette utilities\n  static getSelectedNumbersCount(encodedNumbers: number) {\n    return (Number(encodedNumbers).toString(2).match(/1/g) || []).length;\n  }\n\n  static combineChoiceInputs(inputs: RouletteChoiceInput[], houseEdge?: BP): RouletteChoiceInput {\n    // 1. Combine all unique numbers from the inputs\n    const combinedNumbers = [...new Set(inputs.flatMap((input) => input.value))];\n    // 2. Sort the numbers\n    const sortedCombinedNumbers = combinedNumbers.sort((a, b) => a - b);\n\n    // 3. Create a the custom label\n    const customLabel = sortedCombinedNumbers.map((rouletteNumber) => rouletteNumber).join(\" & \");\n\n    return {\n      value: sortedCombinedNumbers,\n      id: sortedCombinedNumbers,\n      game: CASINO_GAME_TYPE.ROULETTE,\n      label: customLabel,\n      winChancePercent: Roulette.getWinChancePercent(combinedNumbers),\n      multiplier: Roulette.getMultiplier(combinedNumbers),\n      formattedMultiplier: Roulette.getFormattedMultiplier(combinedNumbers),\n      netMultiplier: houseEdge\n        ? getNetMultiplier(Roulette.getMultiplier(combinedNumbers), houseEdge)\n        : undefined,\n      formattedNetMultiplier: houseEdge\n        ? getFormattedNetMultiplier(Roulette.getMultiplier(combinedNumbers), houseEdge)\n        : undefined,\n    };\n  }\n}\n","import { encodeAbiParameters, parseAbiParameters } from \"viem\";\nimport type { EncodeAbiParametersReturnType } from \"viem/_types/utils/abi/encodeAbiParameters\";\nimport {\n  type BP,\n  type CasinoChainId,\n  generateRandomHexColor,\n  getFormattedNetMultiplier,\n  getNetMultiplier,\n  type WEIGHTED_CASINO_GAME_TYPE,\n  type WeightedGameConfiguration,\n  weightedGameCachedConfigurations,\n  weightedGameCachedConfigurationsByGame,\n} from \"../..\";\nimport { BP_VALUE } from \"../../constants\";\nimport { AbstractCasinoGame, type ChoiceInput } from \"./game\";\n\nexport type WeightedGameConfigId = number;\n\nexport interface WeightedGameChoiceInput extends ChoiceInput<WEIGHTED_CASINO_GAME_TYPE> {\n  value: WeightedGameConfigId;\n  config: WeightedGameConfiguration;\n  id: WeightedGameConfigId;\n}\n\nexport type WeightedGameEncodedInput = number; // configId\nexport type WeightedGameEncodedRolled = number; // the position of the rolled multiplier\n\nexport class WeightedGame extends AbstractCasinoGame<\n  string,\n  WeightedGameEncodedInput,\n  string,\n  WeightedGameEncodedRolled\n> {\n  static getWinChancePercent(\n    weightedGameConfig: WeightedGameConfiguration,\n    position: number,\n  ): number {\n    /*const multipliersPositions = weightedGameConfig.multipliers.map((w, i) => w === multiplier ? i : null).filter(m => m !== null)\n\n    const weights = weightedGameConfig.weights.filter((_, i) => multipliersPositions.includes(i))\n    const totalWeight = weightedGameConfig.weights.reduce((acc, curr) => acc + curr, 0n)\n    const totalWeightForMultiplier = weights.reduce((acc, curr) => acc + curr, 0n)\n\n    return Number(totalWeightForMultiplier) / Number(totalWeight) * 100 */\n\n    const weight = weightedGameConfig.weights[position];\n    const totalWeight = weightedGameConfig.weights.reduce((acc, curr) => acc + curr, 0n);\n    return (Number(weight) / Number(totalWeight)) * 100;\n  }\n\n  static getMultiplier(weightedGameConfig: WeightedGameConfiguration, position: number): BP {\n    return Number(weightedGameConfig.multipliers[position] ?? 0);\n  }\n\n  protected static _formatMultiplier(multiplier: BP): number {\n    return Number((multiplier / BP_VALUE).toFixed(3));\n  }\n\n  static getFormattedMultiplier(\n    weightedGameConfig: WeightedGameConfiguration,\n    position: number,\n  ): number {\n    return WeightedGame._formatMultiplier(WeightedGame.getMultiplier(weightedGameConfig, position));\n  }\n\n  static encodeInput(configId: WeightedGameConfigId): WeightedGameEncodedInput {\n    return configId;\n  }\n\n  static encodeAbiParametersInput(configId: WeightedGameConfigId): EncodeAbiParametersReturnType {\n    return encodeAbiParameters(parseAbiParameters(\"uint40\"), [WeightedGame.encodeInput(configId)]);\n  }\n\n  static decodeInput(configId: WeightedGameEncodedInput | string): WeightedGameConfigId {\n    return Number(configId);\n  }\n\n  static decodeRolled(\n    encodedRolled: WeightedGameEncodedRolled | string,\n    weightedGameConfiguration: WeightedGameConfiguration,\n    houseEdge: number,\n  ): string {\n    const multiplier = weightedGameConfiguration.multipliers[Number(encodedRolled)];\n    const netMultiplier = (Number(multiplier) * (1 - houseEdge / BP_VALUE)) / BP_VALUE;\n    return `x${netMultiplier.toFixed(2)}`;\n  }\n\n  /**\n   * Determines if a single decoded roll is a winning roll for Weighted Games (Wheel, Plinko).\n   *\n   * This method is particularly useful for multibetting scenarios where you need to:\n   * - Identify which individual rolls are winners\n   * - Color-code winning multipliers in the UI\n   *\n   * @param decodedRolled - The decoded roll result in format \"multiplierx\" (e.g., \"2.5x\", \"0.5x\")\n   * @returns true if the multiplier is >= 1 (win), false otherwise (loss)\n   *\n   */\n\n  static isSingleRolledWin(decodedRolled: string): boolean {\n    const multiplier = decodedRolled.split(\"x\")[1];\n    return Number(multiplier) >= 1;\n  }\n\n  static getChoiceInputs(\n    chainId: CasinoChainId,\n    game: WEIGHTED_CASINO_GAME_TYPE,\n    houseEdge?: BP,\n    customWeightedGameConfigs?: WeightedGameConfiguration[],\n  ): WeightedGameChoiceInput[] {\n    const weightedGameConfigs = [\n      ...(weightedGameCachedConfigurationsByGame[game]?.[chainId] ?? []),\n      ...(customWeightedGameConfigs ?? []),\n    ];\n    return weightedGameConfigs.map((config) => {\n      const multipliers = config.multipliers;\n      return {\n        value: config.configId,\n        config: config,\n        id: config.configId,\n        game: config.game,\n        label: WeightedGame.getWeightedGameConfigLabel(\n          config.configId,\n          chainId,\n          customWeightedGameConfigs,\n        ),\n        winChancePercent: multipliers.map((_, index) =>\n          WeightedGame.getWinChancePercent(config, index),\n        ),\n        multiplier: multipliers.map((_, index) => WeightedGame.getMultiplier(config, index)),\n        formattedMultiplier: multipliers.map((_, index) =>\n          WeightedGame.getFormattedMultiplier(config, index),\n        ),\n        netMultiplier: houseEdge\n          ? multipliers.map((_, index) =>\n              getNetMultiplier(WeightedGame.getMultiplier(config, index), houseEdge),\n            )\n          : undefined,\n        formattedNetMultiplier: houseEdge\n          ? multipliers.map((_, index) =>\n              getFormattedNetMultiplier(WeightedGame.getMultiplier(config, index), houseEdge),\n            )\n          : undefined,\n      };\n    });\n  }\n\n  // Weighted game utilities\n  static getWeightedGameConfigLabel(\n    configId: WeightedGameConfigId,\n    chainId: CasinoChainId,\n    customWeightedGameConfigs?: WeightedGameConfiguration[],\n  ): string {\n    const existingCachedConfig = weightedGameCachedConfigurations[chainId].find(\n      (c) => c.configId === configId,\n    );\n    const existingCustomConfig = customWeightedGameConfigs?.find((c) => c.configId === configId);\n    return existingCachedConfig?.label ?? existingCustomConfig?.label ?? `Config #${configId}`;\n  }\n\n  /**\n   * Computes and returns the list of unique outputs for a given weighted game configuration.\n   * It is particularly useful to display all the unique possible outputs above/below the wheel in the UI.\n   *\n   * This function groups segments that have the same net multiplier (netMultiplier),\n   * sums their weights, and returns for each unique multiplier:\n   *   - the net multiplier (rounded to 2 decimals)\n   *   - the raw multiplier (before house edge)\n   *   - the chance to win this multiplier (as a percentage)\n   *   - the color associated with this segment (or a randomly generated color if not provided)\n   *\n   * @param weightedGameConfig The configuration (weights, multipliers, colors, etc.)\n   * @param houseEdge The house edge to apply for net multiplier calculation\n   * @returns An array of objects representing each unique output:\n   *   - multiplier: the raw multiplier (before house edge, BP)\n   *   - formattedMultiplier: the raw multiplier formatted (rounded to 3 decimals)\n   *   - netMultiplier: the net multiplier (after house edge, BP)\n   *   - formattedNetMultiplier: the net multiplier formatted (rounded to 3 decimals)\n   *   - chanceToWin: the probability of landing on this multiplier (in %)\n   *   - color: the color associated with this segment\n   *\n   * @example\n   * const outputs = Wheel.getUniqueOutputs(config, 200);\n   * // [\n   * //   { multiplier: 1.95, rawMultiplier: 19500, chanceToWin: 10.5, color: \"#29384C\" },\n   * //   ...\n   * // ]\n   */\n  static getUniqueOutputs(\n    weightedGameConfig: WeightedGameConfiguration,\n    houseEdge: BP,\n  ): {\n    multiplier: BP;\n    formattedMultiplier: number;\n    netMultiplier: BP;\n    formattedNetMultiplier: number;\n    chanceToWin: number;\n    color: string;\n  }[] {\n    const uniqueMultipliers = new Map<number, { color: string; weight: bigint }>();\n    const totalWeight = weightedGameConfig.weights.reduce((acc, curr) => acc + curr, 0n);\n    weightedGameConfig.multipliers.forEach((_, index) => {\n      const multiplier = WeightedGame.getMultiplier(weightedGameConfig, index);\n      if (!uniqueMultipliers.has(multiplier)) {\n        uniqueMultipliers.set(multiplier, {\n          color: weightedGameConfig.colors?.[index] || generateRandomHexColor(),\n          weight: weightedGameConfig.weights[index]!,\n        });\n      } else {\n        uniqueMultipliers.get(multiplier)!.weight =\n          uniqueMultipliers.get(multiplier)!.weight + weightedGameConfig.weights[index]!;\n      }\n    });\n\n    return Array.from(uniqueMultipliers.entries())\n      .map(([multiplier, config]) => ({\n        multiplier: multiplier,\n        formattedMultiplier: WeightedGame._formatMultiplier(multiplier),\n        netMultiplier: getNetMultiplier(multiplier, houseEdge),\n        formattedNetMultiplier: WeightedGame._formatMultiplier(\n          getNetMultiplier(multiplier, houseEdge),\n        ),\n        chanceToWin: Number(((Number(config.weight) / Number(totalWeight)) * 100).toFixed(2)),\n        color: config.color,\n      }))\n      .sort((a, b) => a.multiplier - b.multiplier);\n  }\n}\n","import { BP_VALUE } from \"../constants\";\nimport { CASINO_GAME_TYPE, type ChainId, type NORMAL_CASINO_GAME_TYPE, slugById } from \"../data\";\nimport { CoinToss } from \"../entities/casino/cointoss\";\nimport { Dice } from \"../entities/casino/dice\";\nimport { Keno } from \"../entities/casino/keno\";\nimport { Roulette } from \"../entities/casino/roulette\";\nimport { WeightedGame } from \"../entities/casino/weightedGame\";\nimport type { BP } from \"../interfaces\";\nimport type { WeightedGameConfiguration } from \"../read\";\n\nexport function getBetSwirlFees(payout: bigint, houseEdge: BP): bigint {\n  return (payout * BigInt(houseEdge)) / BigInt(BP_VALUE);\n}\n\nexport function getGrossPayout(amount: bigint, betCount: number, grossMulitplier: BP): bigint {\n  return (amount * BigInt(betCount) * BigInt(grossMulitplier)) / BigInt(BP_VALUE);\n}\n\nexport function getNetPayout(\n  amount: bigint,\n  betCount: number,\n  grossMultiplier: BP,\n  houseEdge: BP,\n): bigint {\n  const grossPayout = getGrossPayout(amount, betCount, grossMultiplier);\n  return grossPayout - getBetSwirlFees(grossPayout, houseEdge);\n}\nexport function getNetMultiplier(grossMulitplier: BP, houseEdge: BP): number {\n  return Math.round(\n    (Number(getNetPayout(BigInt(10 ** 18), 1, grossMulitplier, houseEdge)) / 10 ** 18) * BP_VALUE,\n  );\n}\n\nexport function getFormattedNetMultiplier(grossMulitplier: BP, houseEdge: BP): number {\n  return Number((getNetMultiplier(grossMulitplier, houseEdge) / BP_VALUE).toFixed(3));\n}\n\nexport function getPayoutDetails(\n  amount: bigint,\n  betCount: number,\n  grossMultiplier: BP,\n  houseEdge: BP,\n): {\n  grossPayout: bigint;\n  netPayout: bigint;\n  betSwirlFees: bigint;\n  netMultiplier: number;\n  formattedNetMultiplier: number;\n} {\n  const grossPayout = getGrossPayout(amount, betCount, grossMultiplier);\n  const fees = getBetSwirlFees(grossPayout, houseEdge);\n  const netPayout = grossPayout - fees;\n  const netMultiplier = getNetMultiplier(grossMultiplier, houseEdge);\n  const formattedNetMultiplier = getFormattedNetMultiplier(grossMultiplier, houseEdge);\n  return {\n    grossPayout,\n    netPayout,\n    betSwirlFees: fees,\n    netMultiplier,\n    formattedNetMultiplier,\n  };\n}\n\nexport function decodeNormalCasinoInput(encodedInput: string, game: NORMAL_CASINO_GAME_TYPE): any {\n  switch (game) {\n    case CASINO_GAME_TYPE.DICE:\n      return Dice.decodeInput(encodedInput);\n    case CASINO_GAME_TYPE.COINTOSS:\n      return CoinToss.decodeInput(encodedInput);\n    case CASINO_GAME_TYPE.ROULETTE:\n      return Roulette.decodeInput(encodedInput);\n    case CASINO_GAME_TYPE.KENO:\n      return Keno.decodeInput(encodedInput);\n  }\n}\n\nexport function decodeWeightedCasinoInput(\n  encodedInput: string,\n  _weightedGameConfiguration: WeightedGameConfiguration,\n  _houseEdge: BP = 0,\n) {\n  return WeightedGame.decodeInput(encodedInput);\n}\nexport function decodeNormalCasinoRolled(\n  encodedRolled: string,\n  game: NORMAL_CASINO_GAME_TYPE,\n): any {\n  switch (game) {\n    case CASINO_GAME_TYPE.DICE:\n      return Dice.decodeRolled(encodedRolled);\n    case CASINO_GAME_TYPE.COINTOSS:\n      return CoinToss.decodeRolled(encodedRolled);\n    case CASINO_GAME_TYPE.ROULETTE:\n      return Roulette.decodeRolled(encodedRolled);\n    case CASINO_GAME_TYPE.KENO:\n      return Keno.decodeRolled(encodedRolled);\n  }\n}\nexport function decodeWeightedCasinoRolled(\n  encodedRolled: string,\n  weightedGameConfiguration: WeightedGameConfiguration,\n  houseEdge: BP = 0,\n): any {\n  return WeightedGame.decodeRolled(encodedRolled, weightedGameConfiguration, houseEdge);\n}\n\nexport function formatChainlinkSubscriptionUrl(subscriptionId: string | bigint, chainId: ChainId) {\n  return `https://vrf.chain.link/${slugById[chainId]}#/side-drawer/subscription/${\n    slugById[chainId]\n  }/${subscriptionId.toString()}`;\n}\n","import type { CasinoChainId } from \"../data/casino\";\nimport { casinoChainById } from \"../data/casino\";\nimport { ERROR_CODES } from \"../errors/codes\";\nimport { ChainError } from \"../errors/types\";\nimport type { BetSwirlWallet } from \"../provider\";\n\nexport function getCasinoChainId(\n  wallet: BetSwirlWallet,\n  ...overridedChainIds: Array<number | undefined>\n): CasinoChainId {\n  const chainId = overridedChainIds?.find((id) => id !== undefined) || wallet.getChainId();\n  if (chainId && !(chainId in casinoChainById)) {\n    throw new ChainError(\n      `Chain ID ${chainId} is not compatible with casino games`,\n      ERROR_CODES.CHAIN.UNSUPPORTED_CHAIN,\n      {\n        chainId,\n        supportedChains: Object.keys(casinoChainById),\n      },\n    );\n  }\n  return chainId as CasinoChainId;\n}\n","import Decimal from \"decimal.js\";\nimport { formatUnits } from \"viem\";\n\n/**\n * Formats a number or string representation of a number into a more readable string format,\n * with support for large numbers and optional control over decimal places and minimum displayable values.\n *\n * @param {string | number} input - The number or string representation of a number to be formatted.\n * @param {number} [maxDecimals=2] - The maximum number of decimal places to display after the decimal point.\n * @param {number} [minValue=1e-5] - The minimum value to display. Values smaller than this threshold will be shown as \"< minValue\".\n * @param {number} [trailingDecimals=2] - The number of decimal places to retain even if they are trailing zeros.\n *\n * @returns {string} - The formatted number as a string, potentially with a suffix indicating large numbers (e.g., \"M\" for million, \"B\" for billion).\n *\n * @example\n * // Small number with default params\n * formatAmount(123.456); // returns \"123.46\"\n *\n * @example\n * // Small number with max decimals\n * formatAmount(123.456, 1); // returns \"123.5\"\n *\n * @example\n * // Small number with a min value\n * formatAmount(0.000004, 2, 1e-5); // returns \"< 0.00001\"\n *\n * @example\n * // Large number with default params\n * formatAmount(123456789); // returns \"123.46M\"\n *\n * @example\n * // Large numbers with 4 decimals & trailing zeros\n * formatAmount(123.4000, 4, 1e-5, 4); // returns \"123.4000\"\n *\n * @example\n * // Large number with 3 decimals BUT 2 traling zeros\n * formatAmount(1500000000, 3, 1e-5, 2); // returns \"1.50B\"\n */\nfunction _formatAmount(\n  input: string | number,\n  maxDecimals = 2, // Maximum decimals after the dot\n  minValue = 1e-5, // Minimum displayable value\n  trailingDecimals = 2, // Maximum decimals after the dot to keep even if they are trailing zero\n): string {\n  const amount = new Decimal(input);\n  // Check min value\n  if (amount.gt(0) && amount.lt(minValue)) {\n    return `<${minValue}`;\n  }\n\n  let divisor = new Decimal(1);\n  let suffix = \"\";\n  // If number if larger or equals to 1 million, then format it\n  if (amount.gte(1e6)) {\n    const suffixes = [\"M\", \"B\", \"T\", \"Qa\", \"Qi\", \"Sx\", \"Sp\"];\n    const thresholds = [1e6, 1e9, 1e12, 1e15, 1e18, 1e21, 1e24];\n    // Find the most appropriate suffix\n    const index = thresholds.findIndex((threshold) =>\n      amount.lt(new Decimal(threshold).times(1000)),\n    );\n    divisor = new Decimal(thresholds[index]!);\n    suffix = suffixes[index]!;\n  }\n\n  // Format the number with max decimals\n  let formattedNumber = amount.div(divisor).toFixed(maxDecimals);\n\n  // Remove some trailing zeros if needed\n  if (trailingDecimals < maxDecimals) {\n    const [integerPart, decimalPart] = formattedNumber.split(\".\");\n    if (decimalPart) {\n      const significantPart = decimalPart.slice(0, trailingDecimals);\n      // Remove all trailing zeros in the trailed part\n      const trailedPart = decimalPart.slice(trailingDecimals).replace(/0+$/, \"\");\n      formattedNumber = Number(decimalPart)\n        ? `${integerPart}.${significantPart}${trailedPart}`\n        : (integerPart ?? \"0\");\n    }\n  }\n  const finalFormattedNumber = formattedNumber + suffix;\n  // If string equals zero, returns \"0\" to avoid to have \"0.00\", etc\n  return Number(finalFormattedNumber) === 0 ? \"0\" : finalFormattedNumber;\n}\n\nexport function formatAmount(\n  amount: string | number | undefined,\n  formatType: FORMAT_TYPE = FORMAT_TYPE.STANDARD,\n) {\n  const value = amount || 0;\n  const { maxDecimals, minValue, trailingDecimals } = formatTypes[formatType];\n  return _formatAmount(value, maxDecimals, minValue, trailingDecimals);\n}\n\nexport function formatRawAmount(\n  rawAmount: bigint | undefined,\n  decimals = 18,\n  formatType: FORMAT_TYPE = FORMAT_TYPE.STANDARD,\n) {\n  const value = rawAmount || 0n;\n  const amount = formatUnits(BigInt(value), decimals);\n  return formatAmount(amount, formatType);\n}\ninterface FormatOptions {\n  maxDecimals: number;\n  minValue: number;\n  trailingDecimals: number;\n}\n\nexport enum FORMAT_TYPE {\n  MINIFY = \"minify\",\n  STANDARD = \"standard\",\n  PRECISE = \"precise\",\n  FULL_PRECISE = \"full_precise\",\n}\n\nexport const formatTypes: Record<FORMAT_TYPE, FormatOptions> = {\n  [FORMAT_TYPE.MINIFY]: {\n    maxDecimals: 2,\n    minValue: 1e-2,\n    trailingDecimals: 0,\n  },\n  [FORMAT_TYPE.STANDARD]: {\n    maxDecimals: 4,\n    minValue: 1e-4,\n    trailingDecimals: 2,\n  },\n  [FORMAT_TYPE.PRECISE]: { maxDecimals: 9, minValue: 1e-9, trailingDecimals: 2 },\n  [FORMAT_TYPE.FULL_PRECISE]: {\n    maxDecimals: 18,\n    minValue: 1e-18,\n    trailingDecimals: 3,\n  },\n};\n","import type { Hash } from \"viem\";\nimport { ERROR_CODES, TransactionError } from \"../errors\";\nimport type { BetSwirlWallet } from \"../provider\";\n\nexport async function getTransactionReceiptWithRetry(\n  wallet: BetSwirlWallet,\n  txHash: Hash,\n  retries: number[] = [\n    250, 500, 750, 1000, 1250, 1500, 1750, 2000, 2500, 3000, 3500, 4000, 4500, 5000,\n  ],\n) {\n  //let lastError: Error | undefined;\n\n  for (const delay of retries) {\n    try {\n      const receipt = wallet.getTransactionReceipt(txHash);\n      return receipt;\n    } catch (_error) {\n      // const lastError = error as Error;\n      await new Promise((resolve) => setTimeout(resolve, delay));\n    }\n  }\n\n  throw new TransactionError(\n    \"Get transaction recript failfor all retries\",\n    ERROR_CODES.WALLET.GET_TRANSACTION_RECEIPT_ERROR,\n    {\n      hash: txHash,\n      chainId: wallet.getChainId(),\n      retries,\n    },\n  );\n}\n","import type { Address, Hash } from \"viem\";\nimport { BETSWIRL_BASE_URL } from \"../constants\";\nimport { CASINO_GAME_TYPE, type ChainId, chainById, slugById } from \"../data\";\n\nexport * from \"./api\";\nexport * from \"./bet\";\nexport * from \"./chains\";\nexport * from \"./format\";\nexport * from \"./tokens\";\nexport * from \"./wallet\";\n\nexport function bigIntFormatter(_key: string | number, value: any) {\n  if (typeof value === \"bigint\") {\n    return value.toString();\n  }\n  return value;\n}\n\nexport function truncate(fullStr: string, strLen: number, separator = \"...\") {\n  if (fullStr.length <= strLen) return fullStr;\n\n  const frontChars = Math.ceil(strLen / 2);\n  const backChars = Math.floor(strLen / 2);\n\n  return fullStr.slice(0, frontChars) + separator + fullStr.slice(fullStr.length - backChars);\n}\n\nexport function formatAccountUrl(account: Address, chainId: ChainId) {\n  const chain = chainById[chainId];\n  return `${chain.blockExplorers?.default.url}/address/${account}`;\n}\n\nexport function formatTxnUrl(tx: Hash, chainId: ChainId) {\n  const chain = chainById[chainId];\n  return `${chain.blockExplorers?.default.url}/tx/${tx}`;\n}\n\nexport function getBetSwirlBetUrl(\n  betId: bigint | string,\n  game: CASINO_GAME_TYPE,\n  chainId: ChainId,\n) {\n  return `${BETSWIRL_BASE_URL}/${slugById[chainId]}/casino/${game}/${betId.toString()}`;\n}\n\nexport function generateRandomHexColor(): string {\n  const randomRGBValue = () =>\n    Math.floor(Math.random() * 256)\n      .toString(16)\n      .padStart(2, \"0\");\n  return `#${randomRGBValue()}${randomRGBValue()}${randomRGBValue()}`;\n}\n","import { type Address, formatUnits, type Hash } from \"viem\";\nimport type { Token } from \"../../../interfaces\";\nimport { getBetSwirlApiUrl } from \"../../../utils\";\nimport type { ChainId } from \"../../chains\";\n\nexport enum LEADERBOARD_STATUS {\n  NOT_STARTED = \"not_started\",\n  PENDING = \"pending\",\n  ENDED = \"ended\",\n  FINALIZED = \"finalized\",\n  EXPIRED = \"expired\",\n}\n\nexport enum LEADERBOARD_TYPE {\n  CASINO = \"casino\",\n  SPORTS = \"sports\",\n}\n\nexport enum LEADERBOARD_CASINO_RULES_SOURCE {\n  BET_AMOUNT = \"BET_AMOUNT\",\n  PAYOUT = \"PAYOUT\",\n  BET_AMOUNT_USD = \"BET_AMOUNT_USD\",\n  PAYOUT_USD = \"PAYOUT_USD\",\n}\nexport enum LEADERBOARD_CASINO_RULES_GAME {\n  ALL = \"ALL\",\n  DICE = \"DICE\",\n  COINTOSS = \"COINTOSS\",\n  ROULETTE = \"ROULETTE\",\n  KENO = \"KENO\",\n  WHEEL = \"WHEEL\",\n  PLINKO = \"PLINKO\",\n}\n\nexport enum LEADERBOARD_SPORT_RULES_SOURCE {\n  BET_AMOUNT = \"BET_AMOUNT\",\n}\nexport enum LEADERBOARD_SPORT_RULES_BET_TYPE {\n  SINGLE = \"SINGLE\",\n  COMBO = \"COMBO\",\n}\n\nexport type RawCasinoRules = {\n  tokens: Token[];\n  source: LEADERBOARD_CASINO_RULES_SOURCE;\n  interval: string;\n  points_per_interval: number;\n  min_value?: string;\n  max_value?: string;\n  games: LEADERBOARD_CASINO_RULES_GAME[];\n};\n\nexport type CasinoRules = {\n  tokens: Token[];\n  source: LEADERBOARD_CASINO_RULES_SOURCE;\n  interval: bigint;\n  formattedInterval: string;\n  pointsPerInterval: number;\n  minValue?: bigint;\n  formattedMinValue?: string;\n  maxValue?: bigint;\n  formattedMaxValue?: string;\n  games: LEADERBOARD_CASINO_RULES_GAME[];\n};\n\nexport type RawSportRules = {\n  tokens: Token[];\n  source: LEADERBOARD_SPORT_RULES_SOURCE;\n  interval: string;\n  points_per_interval: number;\n  min_value?: string;\n  max_value?: string;\n  bet_types: LEADERBOARD_SPORT_RULES_BET_TYPE[];\n};\n\nexport type SportRules = {\n  tokens: Token[];\n  source: LEADERBOARD_SPORT_RULES_SOURCE;\n  interval: bigint;\n  formattedInterval: string;\n  pointsPerInterval: number;\n  minValue?: bigint;\n  formattedMinValue?: string;\n  maxValue?: bigint;\n  formattedMaxValue?: string;\n  betTypes: LEADERBOARD_SPORT_RULES_BET_TYPE[];\n};\n\nexport type RawLeaderboardRanking = {\n  bettor_address: Address;\n  leaderboard_id: number;\n  bet_count: number;\n  rank: number;\n  total_points: string;\n  total_wagered: string;\n};\n\nexport type LeaderboardRanking = {\n  bettorAddress: Address;\n  leaderboardId: number;\n  betCount: number;\n  rank: number;\n  totalPoints: bigint;\n  totalWagered: bigint;\n  formattedTotalWagered: string;\n};\n\nexport type RawCompleteLeaderboard = {\n  affiliate_address: Address;\n  chain_id: ChainId;\n  created_at: string; // iso date\n  description?: string;\n  end_date: string; // iso date\n  expiration_time: number; // secs\n  expiration_date?: string; // iso date\n  frontend_url: string;\n  id: number;\n  on_chain_id: number; // ID of the leaderboard in the smart contract\n  is_bankroll_mode: boolean;\n  is_finalized: boolean;\n  last_refresh_date?: string; // iso date\n  leaderboard_address: Address;\n  //points: Json | null\n  start_date: string; // iso date\n  status: LEADERBOARD_STATUS;\n  title: string;\n  token: Token;\n  winners?: Address[];\n  total_shares: string;\n  shares: string[];\n  casino_rules?: RawCasinoRules;\n  sport_rules?: RawSportRules;\n  effective_rules: RawCasinoRules | RawSportRules;\n  is_usd_rules_source: boolean;\n  rankings: RawLeaderboardRanking[];\n  player_rank?: RawLeaderboardRanking;\n  total_bettors: number;\n  total_bets: number;\n  total_wagered: string;\n  wagered_symbol: string; // \"$\" if USD source, else token symbol\n  wagered_decimals: number; // 2 if USD source, else token decimals\n};\n\nexport type RawAffiliateCompleteLeaderboard = RawCompleteLeaderboard & {\n  creation_tx: Hash;\n  creator_address: Address;\n};\nexport type RawAffiliateCompleteLeaderboardWithClaimDetails = RawAffiliateCompleteLeaderboard & {\n  claim_details: RawLeaderboardClaimDetails;\n};\n\nexport type RawLeaderboardClaimDetails = {\n  are_winners_claimed_shares: boolean[];\n  is_affiliate_claimed: boolean;\n  is_affiliate_claimable: boolean;\n  affiliate_claimed_amount: string;\n  winners_claimed_amount: string;\n  affiliate_claimable_amount: string;\n};\n\nexport type Leaderboard = {\n  affiliateAddress: Address;\n  chainId: ChainId;\n  createdAt: Date;\n  description?: string;\n  endDate: Date;\n  expirationTimeSecs: number;\n  expirationDate?: Date;\n  frontendUrl: string;\n  id: number;\n  onChainId: number; // ID of the leaderboard in the smart contract\n  isBankrollMode: boolean;\n  isFinalized: boolean;\n  lastRefreshDate?: Date;\n  leaderboardAddress: Address;\n  startDate: Date;\n  status: LEADERBOARD_STATUS;\n  title: string;\n  token: Token;\n  winners?: Address[];\n  totalShares: bigint;\n  formattedTotalShares: string;\n  shares: bigint[];\n  formattedShares: string[];\n  casinoRules?: CasinoRules;\n  sportRules?: SportRules;\n  effectiveRules: CasinoRules | SportRules;\n  isUsdRulesSource: boolean;\n  type: LEADERBOARD_TYPE;\n  rankings: LeaderboardRanking[];\n  player_rank?: LeaderboardRanking;\n  totalBettors: number;\n  totalBets: number;\n  totalWagered: bigint;\n  formattedTotalWagered: string;\n  wageredSymbol: string;\n  wageredDecimals: number;\n};\n\nexport type AffiliateLeaderboard = Leaderboard & {\n  creationTxnHash: Hash;\n  creatorAddress: Address;\n};\nexport type AffiliateLeaderboardWithClaimDetails = AffiliateLeaderboard & {\n  claimDetails: LeaderboardClaimDetails;\n};\n\nexport type LeaderboardClaimDetails = {\n  areWinnersClaimedShares: boolean[];\n  isAffiliateClaimed: boolean;\n  isAffiliateClaimable: boolean;\n  affiliateClaimedAmount: bigint;\n  formattedAffiliateClaimedAmount: string;\n  winnersClaimedAmount: bigint;\n  formattedWinnersClaimedAmount: string;\n  affiliateClaimableAmount: bigint;\n  formattedAffiliateClaimableAmount: string;\n};\n\nexport type GetLeaderboardsRawResponse = {\n  leaderboards: RawCompleteLeaderboard[];\n  total: number;\n  offset: number;\n  limit: number;\n};\n\n/**\n * Fetches leaderboards from the Betswirl API\n * @param limit - The number of leaderboards to fetch\n * @param offset - The offset of the leaderboards to fetch\n * @param playerAddress - Player address to get the leaderboard ranking (useful if the player is not in the top 100 ranking)\n * @param affiliate - Affiliate address to filter leaderboards\n * @param chainId - The chain id of the leaderboards to fetch\n * @param withExternalBankrollLeaderboards - Whether to include external bankroll leaderboards (default: false). If true, it means some returned leaderboards could have a different affiliate address than the one provided in affiliate param.\n * @param endDateDirection - The direction of the end date to sort the leaderboards\n * @param statuses - Array of statuses to filter the leaderboards\n * @param testMode - Whether to use test mode API endpoint (default: false)\n * @returns Promise<Leaderboard[]> - Array of leaderboards\n * @throws Returns empty array if the API request fails\n */\nexport const fetchLeaderboards = async (\n  limit = 10,\n  offset = 0,\n  playerAddress?: Address,\n  affiliates?: Address[],\n  chainIds?: ChainId[],\n  withExternalBankrollLeaderboards = false,\n  endDateDirection?: \"asc\" | \"desc\",\n  statuses?: LEADERBOARD_STATUS[],\n  testMode = false,\n): Promise<{ leaderboards: Leaderboard[]; total: number; offset: number; limit: number }> => {\n  try {\n    const params = new URLSearchParams();\n    params.set(\"limit\", limit.toString());\n    params.set(\"offset\", offset.toString());\n    if (playerAddress) {\n      params.set(\"player_address\", playerAddress);\n    }\n    if (affiliates) {\n      for (const affiliate of affiliates) {\n        params.append(\"affiliates\", affiliate);\n      }\n    }\n    if (chainIds) {\n      for (const chainId of chainIds) {\n        params.append(\"chain_ids\", chainId.toString());\n      }\n    }\n    if (withExternalBankrollLeaderboards) {\n      params.set(\"with_external_bankroll\", withExternalBankrollLeaderboards.toString());\n    }\n    if (endDateDirection) {\n      params.set(\"end_date_direction\", endDateDirection);\n    }\n    if (statuses) {\n      for (const status of statuses) {\n        params.append(\"statuses\", status);\n      }\n    }\n    const res = await fetch(\n      `${getBetSwirlApiUrl(testMode)}/public/v2/leaderboards?${params.toString()}`,\n    );\n    if (!res.ok) {\n      throw new Error(`Status ${res.status}: ${res.statusText}`);\n    }\n\n    const response: GetLeaderboardsRawResponse = await res.json();\n    return {\n      leaderboards: response.leaderboards.map((leaderboard) => formatRawLeaderboard(leaderboard)),\n      total: response.total,\n      offset: response.offset,\n      limit: response.limit,\n    };\n  } catch (error) {\n    console.error(\"An error occured while fetching leaderboards\", error);\n    return {\n      leaderboards: [],\n      total: 0,\n      offset,\n      limit,\n    };\n  }\n};\n\nexport type GetAffiliateLeaderboardsRawResponse = {\n  leaderboards: RawAffiliateCompleteLeaderboardWithClaimDetails[];\n  total: number;\n  offset: number;\n  limit: number;\n};\n\n/**\n * Fetches leaderboards for the affiliates from the Betswirl API\n * @param affiliate - Affiliate address to filter leaderboards\n * @param limit - The number of leaderboards to fetch\n * @param offset - The offset of the leaderboards to fetch\n * @param chainId - The chain id of the leaderboards to fetch\n * @param endDateDirection - The direction of the end date to sort the leaderboards\n * @param statuses - Array of statuses to filter the leaderboards\n * @param testMode - Whether to use test mode API endpoint (default: false)\n * @returns Promise<AffiliateLeaderboardWithClaimDetails[]> - Array of affiliate leaderboards with claim details\n * @throws Returns empty array if the API request fails\n */\nexport const fetchAffiliateLeaderboards = async (\n  affiliate: Address,\n  limit = 10,\n  offset = 0,\n  chainId?: ChainId,\n  endDateDirection?: \"asc\" | \"desc\",\n  statuses?: LEADERBOARD_STATUS[],\n  testMode = false,\n): Promise<{\n  leaderboards: AffiliateLeaderboardWithClaimDetails[];\n  total: number;\n  offset: number;\n  limit: number;\n}> => {\n  try {\n    const params = new URLSearchParams();\n    params.set(\"affiliate\", affiliate);\n    params.set(\"limit\", limit.toString());\n    params.set(\"offset\", offset.toString());\n    if (chainId) {\n      params.set(\"chain_id\", chainId.toString());\n    }\n\n    if (endDateDirection) {\n      params.set(\"end_date_direction\", endDateDirection);\n    }\n    if (statuses) {\n      for (const status of statuses) {\n        params.append(\"statuses\", status);\n      }\n    }\n    const res = await fetch(\n      `${getBetSwirlApiUrl(testMode)}/affiliate/v1/leaderboards?${params.toString()}`,\n      // This is needed to get the JWT cookie from the browser\n      { credentials: \"include\" },\n    );\n    if (!res.ok) {\n      throw new Error(`Status ${res.status}: ${res.statusText}`);\n    }\n\n    const response: GetAffiliateLeaderboardsRawResponse = await res.json();\n    return {\n      leaderboards: response.leaderboards.map((leaderboard) =>\n        formatRawAffiliateLeaderboard(leaderboard),\n      ),\n      total: response.total,\n      offset: response.offset,\n      limit: response.limit,\n    };\n  } catch (error) {\n    console.error(\"An error occured while fetching affiliate leaderboards\", error);\n    return {\n      leaderboards: [],\n      total: 0,\n      offset,\n      limit,\n    };\n  }\n};\n\nexport type GetLeaderboardRawResponse = RawCompleteLeaderboard | null;\n\n/**\n * Fetches leaderboard by id from the Betswirl API\n * @param id - The leaderboard id (not the on chain one)\n * @param playerAddress - Player address to get the leaderboard ranking (useful if the player is not in the top 100 ranking)\n * @param testMode - Whether to use test mode API endpoint (default: false)\n * @returns Promise<Leaderboard> - The leaderboard\n * @throws Returns null if the API request fails or the leaderboard is not found\n */\nexport const fetchLeaderboard = async (\n  id: number,\n  playerAddress?: Address,\n  testMode = false,\n): Promise<Leaderboard | null> => {\n  try {\n    const params = new URLSearchParams();\n    if (playerAddress) {\n      params.set(\"player_address\", playerAddress);\n    }\n    const res = await fetch(\n      `${getBetSwirlApiUrl(testMode)}/public/v1/leaderboards/${id}?${params.toString()}`,\n    );\n    if (!res.ok) {\n      throw new Error(`Status ${res.status}: ${res.statusText}`);\n    }\n\n    const response: GetLeaderboardRawResponse = await res.json();\n    return response ? formatRawLeaderboard(response) : null;\n  } catch (error) {\n    console.error(\"An error occured while fetching the leaderboard\", error);\n    return null;\n  }\n};\n\nexport type GetAffiliateLeaderboardRawResponse =\n  RawAffiliateCompleteLeaderboardWithClaimDetails | null;\n\n/**\n * Fetches leaderboard by id from the Betswirl API\n * @param id - The leaderboard id (not the on chain one)\n * @param testMode - Whether to use test mode API endpoint (default: false)\n * @returns Promise<AffiliateLeaderboardWithClaimDetails> - The affiliate leaderboard with claim details\n * @throws Returns null if the API request fails or the leaderboard is not found\n */\nexport const fetchAffiliateLeaderboard = async (\n  id: number,\n  testMode = false,\n): Promise<AffiliateLeaderboardWithClaimDetails | null> => {\n  try {\n    const res = await fetch(`${getBetSwirlApiUrl(testMode)}/affiliate/v1/leaderboards/${id}`, {\n      // This is needed to get the JWT cookie from the browser\n      credentials: \"include\",\n    });\n    if (!res.ok) {\n      throw new Error(`Status ${res.status}: ${res.statusText}`);\n    }\n\n    const response: GetAffiliateLeaderboardRawResponse = await res.json();\n    return response ? formatRawAffiliateLeaderboard(response) : null;\n  } catch (error) {\n    console.error(\"An error occured while fetching the affiliate leaderboard\", error);\n    return null;\n  }\n};\n\nexport const formatRawLeaderboard = (leaderboard: RawCompleteLeaderboard): Leaderboard => {\n  const casinoRules = leaderboard.casino_rules\n    ? {\n        tokens: leaderboard.casino_rules.tokens,\n        games: leaderboard.casino_rules.games,\n        source: leaderboard.casino_rules.source,\n        interval: BigInt(leaderboard.casino_rules.interval),\n        formattedInterval: formatUnits(\n          BigInt(leaderboard.casino_rules.interval),\n          leaderboard.wagered_decimals,\n        ),\n        pointsPerInterval: leaderboard.casino_rules.points_per_interval,\n        minValue: leaderboard.casino_rules.min_value\n          ? BigInt(leaderboard.casino_rules.min_value)\n          : undefined,\n        formattedMinValue: leaderboard.casino_rules.min_value\n          ? formatUnits(BigInt(leaderboard.casino_rules.min_value), leaderboard.wagered_decimals)\n          : undefined,\n      }\n    : undefined;\n  const sportRules = leaderboard.sport_rules\n    ? {\n        tokens: leaderboard.sport_rules.tokens,\n        source: leaderboard.sport_rules.source,\n        interval: BigInt(leaderboard.sport_rules.interval),\n        formattedInterval: formatUnits(\n          BigInt(leaderboard.sport_rules.interval),\n          leaderboard.wagered_decimals,\n        ),\n        pointsPerInterval: leaderboard.sport_rules.points_per_interval,\n        minValue: leaderboard.sport_rules.min_value\n          ? BigInt(leaderboard.sport_rules.min_value)\n          : undefined,\n        formattedMinValue: leaderboard.sport_rules.min_value\n          ? formatUnits(BigInt(leaderboard.sport_rules.min_value), leaderboard.wagered_decimals)\n          : undefined,\n        betTypes: leaderboard.sport_rules.bet_types,\n      }\n    : undefined;\n  return {\n    affiliateAddress: leaderboard.affiliate_address,\n    chainId: leaderboard.chain_id,\n    createdAt: new Date(leaderboard.created_at),\n    description: leaderboard.description,\n    endDate: new Date(leaderboard.end_date),\n    expirationTimeSecs: leaderboard.expiration_time,\n    expirationDate: leaderboard.expiration_date ? new Date(leaderboard.expiration_date) : undefined,\n    frontendUrl: leaderboard.frontend_url,\n    id: leaderboard.id,\n    onChainId: leaderboard.on_chain_id,\n    isBankrollMode: leaderboard.is_bankroll_mode,\n    isFinalized: leaderboard.is_finalized,\n    lastRefreshDate: leaderboard.last_refresh_date\n      ? new Date(leaderboard.last_refresh_date)\n      : undefined,\n    leaderboardAddress: leaderboard.leaderboard_address,\n    startDate: new Date(leaderboard.start_date),\n    status: leaderboard.status,\n    title: leaderboard.title,\n    token: leaderboard.token,\n    winners: leaderboard.winners,\n    totalShares: BigInt(leaderboard.total_shares),\n    formattedTotalShares: formatUnits(BigInt(leaderboard.total_shares), leaderboard.token.decimals),\n    shares: leaderboard.shares.map((share) => BigInt(share)),\n    formattedShares: leaderboard.shares.map((share) =>\n      formatUnits(BigInt(share), leaderboard.token.decimals),\n    ),\n    casinoRules,\n    sportRules,\n    effectiveRules: casinoRules || sportRules!,\n    isUsdRulesSource: leaderboard.is_usd_rules_source,\n    type: leaderboard.casino_rules ? LEADERBOARD_TYPE.CASINO : LEADERBOARD_TYPE.SPORTS,\n    rankings: leaderboard.rankings.map((ranking) => ({\n      bettorAddress: ranking.bettor_address,\n      leaderboardId: ranking.leaderboard_id,\n      betCount: ranking.bet_count,\n      rank: ranking.rank,\n      totalPoints: BigInt(ranking.total_points),\n      totalWagered: BigInt(ranking.total_wagered),\n      formattedTotalWagered: formatUnits(BigInt(ranking.total_wagered), leaderboard.token.decimals),\n    })),\n    player_rank: leaderboard.player_rank\n      ? {\n          bettorAddress: leaderboard.player_rank.bettor_address,\n          leaderboardId: leaderboard.player_rank.leaderboard_id,\n          betCount: leaderboard.player_rank.bet_count,\n          rank: leaderboard.player_rank.rank,\n          totalPoints: BigInt(leaderboard.player_rank.total_points),\n          totalWagered: BigInt(leaderboard.player_rank.total_wagered),\n          formattedTotalWagered: formatUnits(\n            BigInt(leaderboard.player_rank.total_wagered),\n            leaderboard.token.decimals,\n          ),\n        }\n      : undefined,\n    totalBettors: leaderboard.total_bettors,\n    totalBets: leaderboard.total_bets,\n    totalWagered: BigInt(leaderboard.total_wagered),\n    formattedTotalWagered: formatUnits(\n      BigInt(leaderboard.total_wagered),\n      leaderboard.wagered_decimals,\n    ),\n    wageredSymbol: leaderboard.wagered_symbol,\n    wageredDecimals: leaderboard.wagered_decimals,\n  };\n};\n\nexport const formatRawAffiliateLeaderboard = (\n  leaderboard: RawAffiliateCompleteLeaderboardWithClaimDetails,\n): AffiliateLeaderboardWithClaimDetails => {\n  return {\n    ...formatRawLeaderboard(leaderboard),\n    creationTxnHash: leaderboard.creation_tx,\n    creatorAddress: leaderboard.creator_address,\n    claimDetails: {\n      areWinnersClaimedShares: leaderboard.claim_details.are_winners_claimed_shares,\n      isAffiliateClaimed: leaderboard.claim_details.is_affiliate_claimed,\n      isAffiliateClaimable: leaderboard.claim_details.is_affiliate_claimable,\n      affiliateClaimedAmount: BigInt(leaderboard.claim_details.affiliate_claimed_amount),\n      formattedAffiliateClaimedAmount: formatUnits(\n        BigInt(leaderboard.claim_details.affiliate_claimed_amount),\n        leaderboard.token.decimals,\n      ),\n      winnersClaimedAmount: BigInt(leaderboard.claim_details.winners_claimed_amount),\n      formattedWinnersClaimedAmount: formatUnits(\n        BigInt(leaderboard.claim_details.winners_claimed_amount),\n        leaderboard.token.decimals,\n      ),\n      affiliateClaimableAmount: BigInt(leaderboard.claim_details.affiliate_claimable_amount),\n      formattedAffiliateClaimableAmount: formatUnits(\n        BigInt(leaderboard.claim_details.affiliate_claimable_amount),\n        leaderboard.token.decimals,\n      ),\n    },\n  };\n};\n","export type Maybe<T> = T | null;\nexport type InputMaybe<T> = Maybe<T>;\nexport type Exact<T extends { [key: string]: unknown }> = { [K in keyof T]: T[K] };\nexport type MakeOptional<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]?: Maybe<T[SubKey]> };\nexport type MakeMaybe<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]: Maybe<T[SubKey]> };\nexport type MakeEmpty<T extends { [key: string]: unknown }, K extends keyof T> = { [_ in K]?: never };\nexport type Incremental<T> = T | { [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never };\n/** All built-in and custom scalars, mapped to their actual values */\nexport type Scalars = {\n  ID: { input: string; output: string; }\n  String: { input: string; output: string; }\n  Boolean: { input: boolean; output: boolean; }\n  Int: { input: number; output: number; }\n  Float: { input: number; output: number; }\n  BigDecimal: { input: any; output: any; }\n  BigInt: { input: any; output: any; }\n  Bytes: { input: any; output: any; }\n  Int8: { input: any; output: any; }\n  Timestamp: { input: any; output: any; }\n};\n\nexport type Affiliate = {\n  __typename?: 'Affiliate';\n  affiliatedGameTokens: Array<AffiliateGameToken>;\n  affiliatedTokens: Array<AffiliateToken>;\n  affiliatedUserTokens: Array<AffiliateUserToken>;\n  affiliatedUsers: Array<AffiliateUser>;\n  betCount: Scalars['BigInt']['output'];\n  betTxnCount: Scalars['BigInt']['output'];\n  bets: Array<Bet>;\n  firstBetTimestamp?: Maybe<Scalars['BigInt']['output']>;\n  id: Scalars['Bytes']['output'];\n  lastBetTimestamp?: Maybe<Scalars['BigInt']['output']>;\n  leaderboardAffiliatedTokens: Array<LeaderboardAffiliateToken>;\n  leaderboardAffiliatedUserTokens: Array<LeaderboardAffiliateUserToken>;\n  leaderboardAffiliatedUsers: Array<LeaderboardAffiliateUser>;\n  leaderboards?: Maybe<Array<Leaderboard>>;\n  pvpAffiliatedGameTokens: Array<PvPAffiliateGameToken>;\n  pvpAffiliatedTokens: Array<PvPAffiliateToken>;\n  pvpAffiliatedUserTokens: Array<PvPAffiliateUserToken>;\n  pvpBets: Array<PvPBet>;\n  seatCount: Scalars['BigInt']['output'];\n  totalFreebetCount: Scalars['BigInt']['output'];\n  totalLeaderboards: Scalars['BigInt']['output'];\n  userCount: Scalars['BigInt']['output'];\n  wagerAndJoinTxnCount: Scalars['BigInt']['output'];\n  winSeatCount: Scalars['BigInt']['output'];\n  winTxnCount: Scalars['BigInt']['output'];\n};\n\n\nexport type AffiliateAffiliatedGameTokensArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<AffiliateGameToken_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<AffiliateGameToken_Filter>;\n};\n\n\nexport type AffiliateAffiliatedTokensArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<AffiliateToken_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<AffiliateToken_Filter>;\n};\n\n\nexport type AffiliateAffiliatedUserTokensArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<AffiliateUserToken_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<AffiliateUserToken_Filter>;\n};\n\n\nexport type AffiliateAffiliatedUsersArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<AffiliateUser_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<AffiliateUser_Filter>;\n};\n\n\nexport type AffiliateBetsArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<Bet_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<Bet_Filter>;\n};\n\n\nexport type AffiliateLeaderboardAffiliatedTokensArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<LeaderboardAffiliateToken_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<LeaderboardAffiliateToken_Filter>;\n};\n\n\nexport type AffiliateLeaderboardAffiliatedUserTokensArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<LeaderboardAffiliateUserToken_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<LeaderboardAffiliateUserToken_Filter>;\n};\n\n\nexport type AffiliateLeaderboardAffiliatedUsersArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<LeaderboardAffiliateUser_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<LeaderboardAffiliateUser_Filter>;\n};\n\n\nexport type AffiliateLeaderboardsArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<Leaderboard_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<Leaderboard_Filter>;\n};\n\n\nexport type AffiliatePvpAffiliatedGameTokensArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<PvPAffiliateGameToken_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<PvPAffiliateGameToken_Filter>;\n};\n\n\nexport type AffiliatePvpAffiliatedTokensArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<PvPAffiliateToken_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<PvPAffiliateToken_Filter>;\n};\n\n\nexport type AffiliatePvpAffiliatedUserTokensArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<PvPAffiliateUserToken_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<PvPAffiliateUserToken_Filter>;\n};\n\n\nexport type AffiliatePvpBetsArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<PvPBet_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<PvPBet_Filter>;\n};\n\nexport type AffiliateGameToken = {\n  __typename?: 'AffiliateGameToken';\n  affiliate: Affiliate;\n  affiliateToken: AffiliateToken;\n  betCount: Scalars['BigInt']['output'];\n  betTxnCount: Scalars['BigInt']['output'];\n  game: Scalars['String']['output'];\n  houseEdge?: Maybe<Scalars['Int']['output']>;\n  id: Scalars['ID']['output'];\n  totalFreebetCount: Scalars['BigInt']['output'];\n  totalFreebetWagered: Scalars['BigInt']['output'];\n  totalPayout: Scalars['BigInt']['output'];\n  totalWagered: Scalars['BigInt']['output'];\n  winTxnCount: Scalars['BigInt']['output'];\n};\n\nexport type AffiliateGameToken_Filter = {\n  /** Filter for the block changed event. */\n  _change_block?: InputMaybe<BlockChangedFilter>;\n  affiliate?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_?: InputMaybe<AffiliateToken_Filter>;\n  affiliateToken_contains?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_ends_with?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_gt?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_gte?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  affiliateToken_lt?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_lte?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_not?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_not_contains?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  affiliateToken_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_starts_with?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_?: InputMaybe<Affiliate_Filter>;\n  affiliate_contains?: InputMaybe<Scalars['String']['input']>;\n  affiliate_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_ends_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_gt?: InputMaybe<Scalars['String']['input']>;\n  affiliate_gte?: InputMaybe<Scalars['String']['input']>;\n  affiliate_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  affiliate_lt?: InputMaybe<Scalars['String']['input']>;\n  affiliate_lte?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_contains?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  affiliate_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_starts_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  and?: InputMaybe<Array<InputMaybe<AffiliateGameToken_Filter>>>;\n  betCount?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betTxnCount?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betTxnCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  game?: InputMaybe<Scalars['String']['input']>;\n  game_contains?: InputMaybe<Scalars['String']['input']>;\n  game_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  game_ends_with?: InputMaybe<Scalars['String']['input']>;\n  game_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  game_gt?: InputMaybe<Scalars['String']['input']>;\n  game_gte?: InputMaybe<Scalars['String']['input']>;\n  game_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  game_lt?: InputMaybe<Scalars['String']['input']>;\n  game_lte?: InputMaybe<Scalars['String']['input']>;\n  game_not?: InputMaybe<Scalars['String']['input']>;\n  game_not_contains?: InputMaybe<Scalars['String']['input']>;\n  game_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  game_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  game_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  game_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  game_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  game_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  game_starts_with?: InputMaybe<Scalars['String']['input']>;\n  game_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  houseEdge?: InputMaybe<Scalars['Int']['input']>;\n  houseEdge_gt?: InputMaybe<Scalars['Int']['input']>;\n  houseEdge_gte?: InputMaybe<Scalars['Int']['input']>;\n  houseEdge_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  houseEdge_lt?: InputMaybe<Scalars['Int']['input']>;\n  houseEdge_lte?: InputMaybe<Scalars['Int']['input']>;\n  houseEdge_not?: InputMaybe<Scalars['Int']['input']>;\n  houseEdge_not_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  id?: InputMaybe<Scalars['ID']['input']>;\n  id_gt?: InputMaybe<Scalars['ID']['input']>;\n  id_gte?: InputMaybe<Scalars['ID']['input']>;\n  id_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  id_lt?: InputMaybe<Scalars['ID']['input']>;\n  id_lte?: InputMaybe<Scalars['ID']['input']>;\n  id_not?: InputMaybe<Scalars['ID']['input']>;\n  id_not_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  or?: InputMaybe<Array<InputMaybe<AffiliateGameToken_Filter>>>;\n  totalFreebetCount?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalFreebetCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalFreebetWagered?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetWagered_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetWagered_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetWagered_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalFreebetWagered_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetWagered_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetWagered_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetWagered_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalPayout?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalPayout_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalWagered?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalWagered_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  winTxnCount?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  winTxnCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n};\n\nexport enum AffiliateGameToken_OrderBy {\n  Affiliate = 'affiliate',\n  AffiliateToken = 'affiliateToken',\n  AffiliateTokenBetCount = 'affiliateToken__betCount',\n  AffiliateTokenBetTxnCount = 'affiliateToken__betTxnCount',\n  AffiliateTokenId = 'affiliateToken__id',\n  AffiliateTokenTotalEarned = 'affiliateToken__totalEarned',\n  AffiliateTokenTotalFreebetCount = 'affiliateToken__totalFreebetCount',\n  AffiliateTokenTotalFreebetWagered = 'affiliateToken__totalFreebetWagered',\n  AffiliateTokenTotalPayout = 'affiliateToken__totalPayout',\n  AffiliateTokenTotalWagered = 'affiliateToken__totalWagered',\n  AffiliateTokenWinTxnCount = 'affiliateToken__winTxnCount',\n  AffiliateBetCount = 'affiliate__betCount',\n  AffiliateBetTxnCount = 'affiliate__betTxnCount',\n  AffiliateFirstBetTimestamp = 'affiliate__firstBetTimestamp',\n  AffiliateId = 'affiliate__id',\n  AffiliateLastBetTimestamp = 'affiliate__lastBetTimestamp',\n  AffiliateSeatCount = 'affiliate__seatCount',\n  AffiliateTotalFreebetCount = 'affiliate__totalFreebetCount',\n  AffiliateTotalLeaderboards = 'affiliate__totalLeaderboards',\n  AffiliateUserCount = 'affiliate__userCount',\n  AffiliateWagerAndJoinTxnCount = 'affiliate__wagerAndJoinTxnCount',\n  AffiliateWinSeatCount = 'affiliate__winSeatCount',\n  AffiliateWinTxnCount = 'affiliate__winTxnCount',\n  BetCount = 'betCount',\n  BetTxnCount = 'betTxnCount',\n  Game = 'game',\n  HouseEdge = 'houseEdge',\n  Id = 'id',\n  TotalFreebetCount = 'totalFreebetCount',\n  TotalFreebetWagered = 'totalFreebetWagered',\n  TotalPayout = 'totalPayout',\n  TotalWagered = 'totalWagered',\n  WinTxnCount = 'winTxnCount'\n}\n\nexport type AffiliateToken = {\n  __typename?: 'AffiliateToken';\n  affiliate: Affiliate;\n  affiliateGameTokens: Array<AffiliateGameToken>;\n  affiliateUserTokens: Array<AffiliateUserToken>;\n  betCount: Scalars['BigInt']['output'];\n  betTxnCount: Scalars['BigInt']['output'];\n  id: Scalars['ID']['output'];\n  token: Token;\n  totalEarned: Scalars['BigInt']['output'];\n  totalFreebetCount: Scalars['BigInt']['output'];\n  totalFreebetWagered: Scalars['BigInt']['output'];\n  totalPayout: Scalars['BigInt']['output'];\n  totalWagered: Scalars['BigInt']['output'];\n  winTxnCount: Scalars['BigInt']['output'];\n};\n\n\nexport type AffiliateTokenAffiliateGameTokensArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<AffiliateGameToken_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<AffiliateGameToken_Filter>;\n};\n\n\nexport type AffiliateTokenAffiliateUserTokensArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<AffiliateUserToken_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<AffiliateUserToken_Filter>;\n};\n\nexport type AffiliateToken_Filter = {\n  /** Filter for the block changed event. */\n  _change_block?: InputMaybe<BlockChangedFilter>;\n  affiliate?: InputMaybe<Scalars['String']['input']>;\n  affiliateGameTokens_?: InputMaybe<AffiliateGameToken_Filter>;\n  affiliateUserTokens_?: InputMaybe<AffiliateUserToken_Filter>;\n  affiliate_?: InputMaybe<Affiliate_Filter>;\n  affiliate_contains?: InputMaybe<Scalars['String']['input']>;\n  affiliate_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_ends_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_gt?: InputMaybe<Scalars['String']['input']>;\n  affiliate_gte?: InputMaybe<Scalars['String']['input']>;\n  affiliate_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  affiliate_lt?: InputMaybe<Scalars['String']['input']>;\n  affiliate_lte?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_contains?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  affiliate_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_starts_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  and?: InputMaybe<Array<InputMaybe<AffiliateToken_Filter>>>;\n  betCount?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betTxnCount?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betTxnCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  id?: InputMaybe<Scalars['ID']['input']>;\n  id_gt?: InputMaybe<Scalars['ID']['input']>;\n  id_gte?: InputMaybe<Scalars['ID']['input']>;\n  id_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  id_lt?: InputMaybe<Scalars['ID']['input']>;\n  id_lte?: InputMaybe<Scalars['ID']['input']>;\n  id_not?: InputMaybe<Scalars['ID']['input']>;\n  id_not_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  or?: InputMaybe<Array<InputMaybe<AffiliateToken_Filter>>>;\n  token?: InputMaybe<Scalars['String']['input']>;\n  token_?: InputMaybe<Token_Filter>;\n  token_contains?: InputMaybe<Scalars['String']['input']>;\n  token_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_ends_with?: InputMaybe<Scalars['String']['input']>;\n  token_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_gt?: InputMaybe<Scalars['String']['input']>;\n  token_gte?: InputMaybe<Scalars['String']['input']>;\n  token_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  token_lt?: InputMaybe<Scalars['String']['input']>;\n  token_lte?: InputMaybe<Scalars['String']['input']>;\n  token_not?: InputMaybe<Scalars['String']['input']>;\n  token_not_contains?: InputMaybe<Scalars['String']['input']>;\n  token_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  token_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  token_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  token_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_starts_with?: InputMaybe<Scalars['String']['input']>;\n  token_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  totalEarned?: InputMaybe<Scalars['BigInt']['input']>;\n  totalEarned_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalEarned_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalEarned_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalEarned_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalEarned_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalEarned_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalEarned_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalFreebetCount?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalFreebetCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalFreebetWagered?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetWagered_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetWagered_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetWagered_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalFreebetWagered_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetWagered_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetWagered_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetWagered_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalPayout?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalPayout_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalWagered?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalWagered_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  winTxnCount?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  winTxnCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n};\n\nexport enum AffiliateToken_OrderBy {\n  Affiliate = 'affiliate',\n  AffiliateGameTokens = 'affiliateGameTokens',\n  AffiliateUserTokens = 'affiliateUserTokens',\n  AffiliateBetCount = 'affiliate__betCount',\n  AffiliateBetTxnCount = 'affiliate__betTxnCount',\n  AffiliateFirstBetTimestamp = 'affiliate__firstBetTimestamp',\n  AffiliateId = 'affiliate__id',\n  AffiliateLastBetTimestamp = 'affiliate__lastBetTimestamp',\n  AffiliateSeatCount = 'affiliate__seatCount',\n  AffiliateTotalFreebetCount = 'affiliate__totalFreebetCount',\n  AffiliateTotalLeaderboards = 'affiliate__totalLeaderboards',\n  AffiliateUserCount = 'affiliate__userCount',\n  AffiliateWagerAndJoinTxnCount = 'affiliate__wagerAndJoinTxnCount',\n  AffiliateWinSeatCount = 'affiliate__winSeatCount',\n  AffiliateWinTxnCount = 'affiliate__winTxnCount',\n  BetCount = 'betCount',\n  BetTxnCount = 'betTxnCount',\n  Id = 'id',\n  Token = 'token',\n  TokenAffiliateAmount = 'token__affiliateAmount',\n  TokenBalancesDayDataLength = 'token__balancesDayDataLength',\n  TokenBankAmount = 'token__bankAmount',\n  TokenBetCount = 'token__betCount',\n  TokenBetTxnCount = 'token__betTxnCount',\n  TokenDecimals = 'token__decimals',\n  TokenDividendAmount = 'token__dividendAmount',\n  TokenId = 'token__id',\n  TokenName = 'token__name',\n  TokenPartnerAmount = 'token__partnerAmount',\n  TokenSymbol = 'token__symbol',\n  TokenTeamAmount = 'token__teamAmount',\n  TokenTotalPayout = 'token__totalPayout',\n  TokenTotalWagered = 'token__totalWagered',\n  TokenTreasuryAmount = 'token__treasuryAmount',\n  TokenUserCount = 'token__userCount',\n  TokenWinTxnCount = 'token__winTxnCount',\n  TotalEarned = 'totalEarned',\n  TotalFreebetCount = 'totalFreebetCount',\n  TotalFreebetWagered = 'totalFreebetWagered',\n  TotalPayout = 'totalPayout',\n  TotalWagered = 'totalWagered',\n  WinTxnCount = 'winTxnCount'\n}\n\nexport type AffiliateUser = {\n  __typename?: 'AffiliateUser';\n  affiliate: Affiliate;\n  affiliateUserTokens: Array<AffiliateUserToken>;\n  betCount: Scalars['BigInt']['output'];\n  betTxnCount: Scalars['BigInt']['output'];\n  firstBetTimestamp?: Maybe<Scalars['BigInt']['output']>;\n  firstFreebetTimestamp?: Maybe<Scalars['BigInt']['output']>;\n  id: Scalars['ID']['output'];\n  isFirstBetAFreebet: Scalars['Boolean']['output'];\n  lastBetTimestamp?: Maybe<Scalars['BigInt']['output']>;\n  lastFreebetTimestamp?: Maybe<Scalars['BigInt']['output']>;\n  pvpAffiliateUserTokens: Array<PvPAffiliateUserToken>;\n  seatCount: Scalars['BigInt']['output'];\n  totalFreebetCount: Scalars['BigInt']['output'];\n  user: User;\n  wagerAndJoinTxnCount: Scalars['BigInt']['output'];\n  winSeatCount: Scalars['BigInt']['output'];\n  winTxnCount: Scalars['BigInt']['output'];\n};\n\n\nexport type AffiliateUserAffiliateUserTokensArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<AffiliateUserToken_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<AffiliateUserToken_Filter>;\n};\n\n\nexport type AffiliateUserPvpAffiliateUserTokensArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<PvPAffiliateUserToken_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<PvPAffiliateUserToken_Filter>;\n};\n\nexport type AffiliateUserToken = {\n  __typename?: 'AffiliateUserToken';\n  affiliate: Affiliate;\n  affiliateToken: AffiliateToken;\n  affiliateUser: AffiliateUser;\n  betCount: Scalars['BigInt']['output'];\n  betTxnCount: Scalars['BigInt']['output'];\n  id: Scalars['ID']['output'];\n  totalFreebetCount: Scalars['BigInt']['output'];\n  totalFreebetWagered: Scalars['BigInt']['output'];\n  totalPayout: Scalars['BigInt']['output'];\n  totalWagered: Scalars['BigInt']['output'];\n  totalWageredAfterFirstFreebet: Scalars['BigInt']['output'];\n  totalWageredAfterLastFreebet: Scalars['BigInt']['output'];\n  totalWageredBeforeFirstFreebet: Scalars['BigInt']['output'];\n  winTxnCount: Scalars['BigInt']['output'];\n};\n\nexport type AffiliateUserToken_Filter = {\n  /** Filter for the block changed event. */\n  _change_block?: InputMaybe<BlockChangedFilter>;\n  affiliate?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_?: InputMaybe<AffiliateToken_Filter>;\n  affiliateToken_contains?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_ends_with?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_gt?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_gte?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  affiliateToken_lt?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_lte?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_not?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_not_contains?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  affiliateToken_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_starts_with?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliateUser?: InputMaybe<Scalars['String']['input']>;\n  affiliateUser_?: InputMaybe<AffiliateUser_Filter>;\n  affiliateUser_contains?: InputMaybe<Scalars['String']['input']>;\n  affiliateUser_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliateUser_ends_with?: InputMaybe<Scalars['String']['input']>;\n  affiliateUser_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliateUser_gt?: InputMaybe<Scalars['String']['input']>;\n  affiliateUser_gte?: InputMaybe<Scalars['String']['input']>;\n  affiliateUser_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  affiliateUser_lt?: InputMaybe<Scalars['String']['input']>;\n  affiliateUser_lte?: InputMaybe<Scalars['String']['input']>;\n  affiliateUser_not?: InputMaybe<Scalars['String']['input']>;\n  affiliateUser_not_contains?: InputMaybe<Scalars['String']['input']>;\n  affiliateUser_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliateUser_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  affiliateUser_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliateUser_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  affiliateUser_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  affiliateUser_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliateUser_starts_with?: InputMaybe<Scalars['String']['input']>;\n  affiliateUser_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_?: InputMaybe<Affiliate_Filter>;\n  affiliate_contains?: InputMaybe<Scalars['String']['input']>;\n  affiliate_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_ends_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_gt?: InputMaybe<Scalars['String']['input']>;\n  affiliate_gte?: InputMaybe<Scalars['String']['input']>;\n  affiliate_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  affiliate_lt?: InputMaybe<Scalars['String']['input']>;\n  affiliate_lte?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_contains?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  affiliate_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_starts_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  and?: InputMaybe<Array<InputMaybe<AffiliateUserToken_Filter>>>;\n  betCount?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betTxnCount?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betTxnCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  id?: InputMaybe<Scalars['ID']['input']>;\n  id_gt?: InputMaybe<Scalars['ID']['input']>;\n  id_gte?: InputMaybe<Scalars['ID']['input']>;\n  id_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  id_lt?: InputMaybe<Scalars['ID']['input']>;\n  id_lte?: InputMaybe<Scalars['ID']['input']>;\n  id_not?: InputMaybe<Scalars['ID']['input']>;\n  id_not_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  or?: InputMaybe<Array<InputMaybe<AffiliateUserToken_Filter>>>;\n  totalFreebetCount?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalFreebetCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalFreebetWagered?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetWagered_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetWagered_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetWagered_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalFreebetWagered_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetWagered_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetWagered_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetWagered_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalPayout?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalPayout_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalWagered?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWageredAfterFirstFreebet?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWageredAfterFirstFreebet_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWageredAfterFirstFreebet_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWageredAfterFirstFreebet_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalWageredAfterFirstFreebet_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWageredAfterFirstFreebet_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWageredAfterFirstFreebet_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWageredAfterFirstFreebet_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalWageredAfterLastFreebet?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWageredAfterLastFreebet_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWageredAfterLastFreebet_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWageredAfterLastFreebet_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalWageredAfterLastFreebet_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWageredAfterLastFreebet_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWageredAfterLastFreebet_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWageredAfterLastFreebet_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalWageredBeforeFirstFreebet?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWageredBeforeFirstFreebet_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWageredBeforeFirstFreebet_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWageredBeforeFirstFreebet_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalWageredBeforeFirstFreebet_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWageredBeforeFirstFreebet_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWageredBeforeFirstFreebet_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWageredBeforeFirstFreebet_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalWagered_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalWagered_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  winTxnCount?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  winTxnCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n};\n\nexport enum AffiliateUserToken_OrderBy {\n  Affiliate = 'affiliate',\n  AffiliateToken = 'affiliateToken',\n  AffiliateTokenBetCount = 'affiliateToken__betCount',\n  AffiliateTokenBetTxnCount = 'affiliateToken__betTxnCount',\n  AffiliateTokenId = 'affiliateToken__id',\n  AffiliateTokenTotalEarned = 'affiliateToken__totalEarned',\n  AffiliateTokenTotalFreebetCount = 'affiliateToken__totalFreebetCount',\n  AffiliateTokenTotalFreebetWagered = 'affiliateToken__totalFreebetWagered',\n  AffiliateTokenTotalPayout = 'affiliateToken__totalPayout',\n  AffiliateTokenTotalWagered = 'affiliateToken__totalWagered',\n  AffiliateTokenWinTxnCount = 'affiliateToken__winTxnCount',\n  AffiliateUser = 'affiliateUser',\n  AffiliateUserBetCount = 'affiliateUser__betCount',\n  AffiliateUserBetTxnCount = 'affiliateUser__betTxnCount',\n  AffiliateUserFirstBetTimestamp = 'affiliateUser__firstBetTimestamp',\n  AffiliateUserFirstFreebetTimestamp = 'affiliateUser__firstFreebetTimestamp',\n  AffiliateUserId = 'affiliateUser__id',\n  AffiliateUserIsFirstBetAFreebet = 'affiliateUser__isFirstBetAFreebet',\n  AffiliateUserLastBetTimestamp = 'affiliateUser__lastBetTimestamp',\n  AffiliateUserLastFreebetTimestamp = 'affiliateUser__lastFreebetTimestamp',\n  AffiliateUserSeatCount = 'affiliateUser__seatCount',\n  AffiliateUserTotalFreebetCount = 'affiliateUser__totalFreebetCount',\n  AffiliateUserWagerAndJoinTxnCount = 'affiliateUser__wagerAndJoinTxnCount',\n  AffiliateUserWinSeatCount = 'affiliateUser__winSeatCount',\n  AffiliateUserWinTxnCount = 'affiliateUser__winTxnCount',\n  AffiliateBetCount = 'affiliate__betCount',\n  AffiliateBetTxnCount = 'affiliate__betTxnCount',\n  AffiliateFirstBetTimestamp = 'affiliate__firstBetTimestamp',\n  AffiliateId = 'affiliate__id',\n  AffiliateLastBetTimestamp = 'affiliate__lastBetTimestamp',\n  AffiliateSeatCount = 'affiliate__seatCount',\n  AffiliateTotalFreebetCount = 'affiliate__totalFreebetCount',\n  AffiliateTotalLeaderboards = 'affiliate__totalLeaderboards',\n  AffiliateUserCount = 'affiliate__userCount',\n  AffiliateWagerAndJoinTxnCount = 'affiliate__wagerAndJoinTxnCount',\n  AffiliateWinSeatCount = 'affiliate__winSeatCount',\n  AffiliateWinTxnCount = 'affiliate__winTxnCount',\n  BetCount = 'betCount',\n  BetTxnCount = 'betTxnCount',\n  Id = 'id',\n  TotalFreebetCount = 'totalFreebetCount',\n  TotalFreebetWagered = 'totalFreebetWagered',\n  TotalPayout = 'totalPayout',\n  TotalWagered = 'totalWagered',\n  TotalWageredAfterFirstFreebet = 'totalWageredAfterFirstFreebet',\n  TotalWageredAfterLastFreebet = 'totalWageredAfterLastFreebet',\n  TotalWageredBeforeFirstFreebet = 'totalWageredBeforeFirstFreebet',\n  WinTxnCount = 'winTxnCount'\n}\n\nexport type AffiliateUser_Filter = {\n  /** Filter for the block changed event. */\n  _change_block?: InputMaybe<BlockChangedFilter>;\n  affiliate?: InputMaybe<Scalars['String']['input']>;\n  affiliateUserTokens_?: InputMaybe<AffiliateUserToken_Filter>;\n  affiliate_?: InputMaybe<Affiliate_Filter>;\n  affiliate_contains?: InputMaybe<Scalars['String']['input']>;\n  affiliate_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_ends_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_gt?: InputMaybe<Scalars['String']['input']>;\n  affiliate_gte?: InputMaybe<Scalars['String']['input']>;\n  affiliate_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  affiliate_lt?: InputMaybe<Scalars['String']['input']>;\n  affiliate_lte?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_contains?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  affiliate_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_starts_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  and?: InputMaybe<Array<InputMaybe<AffiliateUser_Filter>>>;\n  betCount?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betTxnCount?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betTxnCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  firstBetTimestamp?: InputMaybe<Scalars['BigInt']['input']>;\n  firstBetTimestamp_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  firstBetTimestamp_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  firstBetTimestamp_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  firstBetTimestamp_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  firstBetTimestamp_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  firstBetTimestamp_not?: InputMaybe<Scalars['BigInt']['input']>;\n  firstBetTimestamp_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  firstFreebetTimestamp?: InputMaybe<Scalars['BigInt']['input']>;\n  firstFreebetTimestamp_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  firstFreebetTimestamp_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  firstFreebetTimestamp_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  firstFreebetTimestamp_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  firstFreebetTimestamp_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  firstFreebetTimestamp_not?: InputMaybe<Scalars['BigInt']['input']>;\n  firstFreebetTimestamp_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  id?: InputMaybe<Scalars['ID']['input']>;\n  id_gt?: InputMaybe<Scalars['ID']['input']>;\n  id_gte?: InputMaybe<Scalars['ID']['input']>;\n  id_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  id_lt?: InputMaybe<Scalars['ID']['input']>;\n  id_lte?: InputMaybe<Scalars['ID']['input']>;\n  id_not?: InputMaybe<Scalars['ID']['input']>;\n  id_not_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  isFirstBetAFreebet?: InputMaybe<Scalars['Boolean']['input']>;\n  isFirstBetAFreebet_in?: InputMaybe<Array<Scalars['Boolean']['input']>>;\n  isFirstBetAFreebet_not?: InputMaybe<Scalars['Boolean']['input']>;\n  isFirstBetAFreebet_not_in?: InputMaybe<Array<Scalars['Boolean']['input']>>;\n  lastBetTimestamp?: InputMaybe<Scalars['BigInt']['input']>;\n  lastBetTimestamp_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  lastBetTimestamp_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  lastBetTimestamp_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  lastBetTimestamp_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  lastBetTimestamp_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  lastBetTimestamp_not?: InputMaybe<Scalars['BigInt']['input']>;\n  lastBetTimestamp_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  lastFreebetTimestamp?: InputMaybe<Scalars['BigInt']['input']>;\n  lastFreebetTimestamp_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  lastFreebetTimestamp_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  lastFreebetTimestamp_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  lastFreebetTimestamp_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  lastFreebetTimestamp_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  lastFreebetTimestamp_not?: InputMaybe<Scalars['BigInt']['input']>;\n  lastFreebetTimestamp_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  or?: InputMaybe<Array<InputMaybe<AffiliateUser_Filter>>>;\n  pvpAffiliateUserTokens_?: InputMaybe<PvPAffiliateUserToken_Filter>;\n  seatCount?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  seatCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalFreebetCount?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalFreebetCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  user?: InputMaybe<Scalars['String']['input']>;\n  user_?: InputMaybe<User_Filter>;\n  user_contains?: InputMaybe<Scalars['String']['input']>;\n  user_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_ends_with?: InputMaybe<Scalars['String']['input']>;\n  user_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_gt?: InputMaybe<Scalars['String']['input']>;\n  user_gte?: InputMaybe<Scalars['String']['input']>;\n  user_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  user_lt?: InputMaybe<Scalars['String']['input']>;\n  user_lte?: InputMaybe<Scalars['String']['input']>;\n  user_not?: InputMaybe<Scalars['String']['input']>;\n  user_not_contains?: InputMaybe<Scalars['String']['input']>;\n  user_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  user_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  user_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  user_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_starts_with?: InputMaybe<Scalars['String']['input']>;\n  user_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  wagerAndJoinTxnCount?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  wagerAndJoinTxnCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  winSeatCount?: InputMaybe<Scalars['BigInt']['input']>;\n  winSeatCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  winSeatCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  winSeatCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  winSeatCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  winSeatCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  winSeatCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  winSeatCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  winTxnCount?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  winTxnCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n};\n\nexport enum AffiliateUser_OrderBy {\n  Affiliate = 'affiliate',\n  AffiliateUserTokens = 'affiliateUserTokens',\n  AffiliateBetCount = 'affiliate__betCount',\n  AffiliateBetTxnCount = 'affiliate__betTxnCount',\n  AffiliateFirstBetTimestamp = 'affiliate__firstBetTimestamp',\n  AffiliateId = 'affiliate__id',\n  AffiliateLastBetTimestamp = 'affiliate__lastBetTimestamp',\n  AffiliateSeatCount = 'affiliate__seatCount',\n  AffiliateTotalFreebetCount = 'affiliate__totalFreebetCount',\n  AffiliateTotalLeaderboards = 'affiliate__totalLeaderboards',\n  AffiliateUserCount = 'affiliate__userCount',\n  AffiliateWagerAndJoinTxnCount = 'affiliate__wagerAndJoinTxnCount',\n  AffiliateWinSeatCount = 'affiliate__winSeatCount',\n  AffiliateWinTxnCount = 'affiliate__winTxnCount',\n  BetCount = 'betCount',\n  BetTxnCount = 'betTxnCount',\n  FirstBetTimestamp = 'firstBetTimestamp',\n  FirstFreebetTimestamp = 'firstFreebetTimestamp',\n  Id = 'id',\n  IsFirstBetAFreebet = 'isFirstBetAFreebet',\n  LastBetTimestamp = 'lastBetTimestamp',\n  LastFreebetTimestamp = 'lastFreebetTimestamp',\n  PvpAffiliateUserTokens = 'pvpAffiliateUserTokens',\n  SeatCount = 'seatCount',\n  TotalFreebetCount = 'totalFreebetCount',\n  User = 'user',\n  UserBetCount = 'user__betCount',\n  UserBetTxnCount = 'user__betTxnCount',\n  UserConsumedLinkVrfFees = 'user__consumedLinkVRFFees',\n  UserConsumedNativeVrfFees = 'user__consumedNativeVRFFees',\n  UserFirstBetTimestamp = 'user__firstBetTimestamp',\n  UserId = 'user__id',\n  UserLastBetTimestamp = 'user__lastBetTimestamp',\n  UserMaxMultiplier = 'user__maxMultiplier',\n  UserPvpMaxMultiplier = 'user__pvpMaxMultiplier',\n  UserSeatCount = 'user__seatCount',\n  UserTotalChargedVrfFees = 'user__totalChargedVRFFees',\n  UserWagerAndJoinTxnCount = 'user__wagerAndJoinTxnCount',\n  UserWinSeatCount = 'user__winSeatCount',\n  UserWinTxnCount = 'user__winTxnCount',\n  WagerAndJoinTxnCount = 'wagerAndJoinTxnCount',\n  WinSeatCount = 'winSeatCount',\n  WinTxnCount = 'winTxnCount'\n}\n\nexport type Affiliate_Filter = {\n  /** Filter for the block changed event. */\n  _change_block?: InputMaybe<BlockChangedFilter>;\n  affiliatedGameTokens_?: InputMaybe<AffiliateGameToken_Filter>;\n  affiliatedTokens_?: InputMaybe<AffiliateToken_Filter>;\n  affiliatedUserTokens_?: InputMaybe<AffiliateUserToken_Filter>;\n  affiliatedUsers_?: InputMaybe<AffiliateUser_Filter>;\n  and?: InputMaybe<Array<InputMaybe<Affiliate_Filter>>>;\n  betCount?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betTxnCount?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betTxnCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  bets_?: InputMaybe<Bet_Filter>;\n  firstBetTimestamp?: InputMaybe<Scalars['BigInt']['input']>;\n  firstBetTimestamp_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  firstBetTimestamp_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  firstBetTimestamp_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  firstBetTimestamp_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  firstBetTimestamp_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  firstBetTimestamp_not?: InputMaybe<Scalars['BigInt']['input']>;\n  firstBetTimestamp_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  id?: InputMaybe<Scalars['Bytes']['input']>;\n  id_contains?: InputMaybe<Scalars['Bytes']['input']>;\n  id_gt?: InputMaybe<Scalars['Bytes']['input']>;\n  id_gte?: InputMaybe<Scalars['Bytes']['input']>;\n  id_in?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  id_lt?: InputMaybe<Scalars['Bytes']['input']>;\n  id_lte?: InputMaybe<Scalars['Bytes']['input']>;\n  id_not?: InputMaybe<Scalars['Bytes']['input']>;\n  id_not_contains?: InputMaybe<Scalars['Bytes']['input']>;\n  id_not_in?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  lastBetTimestamp?: InputMaybe<Scalars['BigInt']['input']>;\n  lastBetTimestamp_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  lastBetTimestamp_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  lastBetTimestamp_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  lastBetTimestamp_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  lastBetTimestamp_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  lastBetTimestamp_not?: InputMaybe<Scalars['BigInt']['input']>;\n  lastBetTimestamp_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  leaderboardAffiliatedTokens_?: InputMaybe<LeaderboardAffiliateToken_Filter>;\n  leaderboardAffiliatedUserTokens_?: InputMaybe<LeaderboardAffiliateUserToken_Filter>;\n  leaderboardAffiliatedUsers_?: InputMaybe<LeaderboardAffiliateUser_Filter>;\n  leaderboards_?: InputMaybe<Leaderboard_Filter>;\n  or?: InputMaybe<Array<InputMaybe<Affiliate_Filter>>>;\n  pvpAffiliatedGameTokens_?: InputMaybe<PvPAffiliateGameToken_Filter>;\n  pvpAffiliatedTokens_?: InputMaybe<PvPAffiliateToken_Filter>;\n  pvpAffiliatedUserTokens_?: InputMaybe<PvPAffiliateUserToken_Filter>;\n  pvpBets_?: InputMaybe<PvPBet_Filter>;\n  seatCount?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  seatCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalFreebetCount?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalFreebetCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalFreebetCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalLeaderboards?: InputMaybe<Scalars['BigInt']['input']>;\n  totalLeaderboards_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalLeaderboards_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalLeaderboards_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalLeaderboards_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalLeaderboards_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalLeaderboards_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalLeaderboards_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  userCount?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  userCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  wagerAndJoinTxnCount?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  wagerAndJoinTxnCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  winSeatCount?: InputMaybe<Scalars['BigInt']['input']>;\n  winSeatCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  winSeatCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  winSeatCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  winSeatCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  winSeatCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  winSeatCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  winSeatCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  winTxnCount?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  winTxnCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n};\n\nexport enum Affiliate_OrderBy {\n  AffiliatedGameTokens = 'affiliatedGameTokens',\n  AffiliatedTokens = 'affiliatedTokens',\n  AffiliatedUserTokens = 'affiliatedUserTokens',\n  AffiliatedUsers = 'affiliatedUsers',\n  BetCount = 'betCount',\n  BetTxnCount = 'betTxnCount',\n  Bets = 'bets',\n  FirstBetTimestamp = 'firstBetTimestamp',\n  Id = 'id',\n  LastBetTimestamp = 'lastBetTimestamp',\n  LeaderboardAffiliatedTokens = 'leaderboardAffiliatedTokens',\n  LeaderboardAffiliatedUserTokens = 'leaderboardAffiliatedUserTokens',\n  LeaderboardAffiliatedUsers = 'leaderboardAffiliatedUsers',\n  Leaderboards = 'leaderboards',\n  PvpAffiliatedGameTokens = 'pvpAffiliatedGameTokens',\n  PvpAffiliatedTokens = 'pvpAffiliatedTokens',\n  PvpAffiliatedUserTokens = 'pvpAffiliatedUserTokens',\n  PvpBets = 'pvpBets',\n  SeatCount = 'seatCount',\n  TotalFreebetCount = 'totalFreebetCount',\n  TotalLeaderboards = 'totalLeaderboards',\n  UserCount = 'userCount',\n  WagerAndJoinTxnCount = 'wagerAndJoinTxnCount',\n  WinSeatCount = 'winSeatCount',\n  WinTxnCount = 'winTxnCount'\n}\n\nexport enum Aggregation_Interval {\n  Day = 'day',\n  Hour = 'hour'\n}\n\nexport type Bet = {\n  __typename?: 'Bet';\n  affiliate?: Maybe<Affiliate>;\n  betAmount?: Maybe<Scalars['BigInt']['output']>;\n  betCount: Scalars['BigInt']['output'];\n  betTimestamp: Scalars['BigInt']['output'];\n  betTxnHash: Scalars['Bytes']['output'];\n  chargedVRFFees: Scalars['BigInt']['output'];\n  consumedLinkVRFFees?: Maybe<Scalars['BigInt']['output']>;\n  consumedNativeVRFFees?: Maybe<Scalars['BigInt']['output']>;\n  freebetId?: Maybe<Scalars['BigInt']['output']>;\n  gameAddress: Scalars['Bytes']['output'];\n  gameId: Scalars['String']['output'];\n  gameToken: GameToken;\n  houseEdge: Scalars['Int']['output'];\n  id: Scalars['ID']['output'];\n  inputValue: Scalars['BigInt']['output'];\n  isFreebet: Scalars['Boolean']['output'];\n  kenoBet?: Maybe<KenoBet>;\n  payout?: Maybe<Scalars['BigInt']['output']>;\n  payoutMultiplier?: Maybe<Scalars['BigDecimal']['output']>;\n  refunded: Scalars['Boolean']['output'];\n  resolved: Scalars['Boolean']['output'];\n  rollTimestamp?: Maybe<Scalars['BigInt']['output']>;\n  rollTxnHash?: Maybe<Scalars['Bytes']['output']>;\n  rolled?: Maybe<Array<Scalars['BigInt']['output']>>;\n  stopGain: Scalars['BigInt']['output'];\n  stopLoss: Scalars['BigInt']['output'];\n  totalBetAmount?: Maybe<Scalars['BigInt']['output']>;\n  user: User;\n  weightedGameBet?: Maybe<WeightedGameBet>;\n};\n\nexport type Bet_Filter = {\n  /** Filter for the block changed event. */\n  _change_block?: InputMaybe<BlockChangedFilter>;\n  affiliate?: InputMaybe<Scalars['String']['input']>;\n  affiliate_?: InputMaybe<Affiliate_Filter>;\n  affiliate_contains?: InputMaybe<Scalars['String']['input']>;\n  affiliate_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_ends_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_gt?: InputMaybe<Scalars['String']['input']>;\n  affiliate_gte?: InputMaybe<Scalars['String']['input']>;\n  affiliate_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  affiliate_lt?: InputMaybe<Scalars['String']['input']>;\n  affiliate_lte?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_contains?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  affiliate_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_starts_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  and?: InputMaybe<Array<InputMaybe<Bet_Filter>>>;\n  betAmount?: InputMaybe<Scalars['BigInt']['input']>;\n  betAmount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  betAmount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  betAmount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betAmount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  betAmount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  betAmount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  betAmount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betCount?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betTimestamp?: InputMaybe<Scalars['BigInt']['input']>;\n  betTimestamp_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  betTimestamp_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  betTimestamp_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betTimestamp_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  betTimestamp_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  betTimestamp_not?: InputMaybe<Scalars['BigInt']['input']>;\n  betTimestamp_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betTxnHash?: InputMaybe<Scalars['Bytes']['input']>;\n  betTxnHash_contains?: InputMaybe<Scalars['Bytes']['input']>;\n  betTxnHash_gt?: InputMaybe<Scalars['Bytes']['input']>;\n  betTxnHash_gte?: InputMaybe<Scalars['Bytes']['input']>;\n  betTxnHash_in?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  betTxnHash_lt?: InputMaybe<Scalars['Bytes']['input']>;\n  betTxnHash_lte?: InputMaybe<Scalars['Bytes']['input']>;\n  betTxnHash_not?: InputMaybe<Scalars['Bytes']['input']>;\n  betTxnHash_not_contains?: InputMaybe<Scalars['Bytes']['input']>;\n  betTxnHash_not_in?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  chargedVRFFees?: InputMaybe<Scalars['BigInt']['input']>;\n  chargedVRFFees_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  chargedVRFFees_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  chargedVRFFees_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  chargedVRFFees_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  chargedVRFFees_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  chargedVRFFees_not?: InputMaybe<Scalars['BigInt']['input']>;\n  chargedVRFFees_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  consumedLinkVRFFees?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedLinkVRFFees_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedLinkVRFFees_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedLinkVRFFees_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  consumedLinkVRFFees_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedLinkVRFFees_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedLinkVRFFees_not?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedLinkVRFFees_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  consumedNativeVRFFees?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedNativeVRFFees_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedNativeVRFFees_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedNativeVRFFees_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  consumedNativeVRFFees_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedNativeVRFFees_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedNativeVRFFees_not?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedNativeVRFFees_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  freebetId?: InputMaybe<Scalars['BigInt']['input']>;\n  freebetId_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  freebetId_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  freebetId_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  freebetId_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  freebetId_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  freebetId_not?: InputMaybe<Scalars['BigInt']['input']>;\n  freebetId_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  gameAddress?: InputMaybe<Scalars['Bytes']['input']>;\n  gameAddress_contains?: InputMaybe<Scalars['Bytes']['input']>;\n  gameAddress_gt?: InputMaybe<Scalars['Bytes']['input']>;\n  gameAddress_gte?: InputMaybe<Scalars['Bytes']['input']>;\n  gameAddress_in?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  gameAddress_lt?: InputMaybe<Scalars['Bytes']['input']>;\n  gameAddress_lte?: InputMaybe<Scalars['Bytes']['input']>;\n  gameAddress_not?: InputMaybe<Scalars['Bytes']['input']>;\n  gameAddress_not_contains?: InputMaybe<Scalars['Bytes']['input']>;\n  gameAddress_not_in?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  gameId?: InputMaybe<Scalars['String']['input']>;\n  gameId_contains?: InputMaybe<Scalars['String']['input']>;\n  gameId_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameId_ends_with?: InputMaybe<Scalars['String']['input']>;\n  gameId_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameId_gt?: InputMaybe<Scalars['String']['input']>;\n  gameId_gte?: InputMaybe<Scalars['String']['input']>;\n  gameId_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  gameId_lt?: InputMaybe<Scalars['String']['input']>;\n  gameId_lte?: InputMaybe<Scalars['String']['input']>;\n  gameId_not?: InputMaybe<Scalars['String']['input']>;\n  gameId_not_contains?: InputMaybe<Scalars['String']['input']>;\n  gameId_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameId_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  gameId_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameId_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  gameId_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  gameId_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameId_starts_with?: InputMaybe<Scalars['String']['input']>;\n  gameId_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameToken?: InputMaybe<Scalars['String']['input']>;\n  gameToken_?: InputMaybe<GameToken_Filter>;\n  gameToken_contains?: InputMaybe<Scalars['String']['input']>;\n  gameToken_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameToken_ends_with?: InputMaybe<Scalars['String']['input']>;\n  gameToken_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameToken_gt?: InputMaybe<Scalars['String']['input']>;\n  gameToken_gte?: InputMaybe<Scalars['String']['input']>;\n  gameToken_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  gameToken_lt?: InputMaybe<Scalars['String']['input']>;\n  gameToken_lte?: InputMaybe<Scalars['String']['input']>;\n  gameToken_not?: InputMaybe<Scalars['String']['input']>;\n  gameToken_not_contains?: InputMaybe<Scalars['String']['input']>;\n  gameToken_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameToken_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  gameToken_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameToken_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  gameToken_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  gameToken_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameToken_starts_with?: InputMaybe<Scalars['String']['input']>;\n  gameToken_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  houseEdge?: InputMaybe<Scalars['Int']['input']>;\n  houseEdge_gt?: InputMaybe<Scalars['Int']['input']>;\n  houseEdge_gte?: InputMaybe<Scalars['Int']['input']>;\n  houseEdge_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  houseEdge_lt?: InputMaybe<Scalars['Int']['input']>;\n  houseEdge_lte?: InputMaybe<Scalars['Int']['input']>;\n  houseEdge_not?: InputMaybe<Scalars['Int']['input']>;\n  houseEdge_not_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  id?: InputMaybe<Scalars['ID']['input']>;\n  id_gt?: InputMaybe<Scalars['ID']['input']>;\n  id_gte?: InputMaybe<Scalars['ID']['input']>;\n  id_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  id_lt?: InputMaybe<Scalars['ID']['input']>;\n  id_lte?: InputMaybe<Scalars['ID']['input']>;\n  id_not?: InputMaybe<Scalars['ID']['input']>;\n  id_not_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  inputValue?: InputMaybe<Scalars['BigInt']['input']>;\n  inputValue_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  inputValue_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  inputValue_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  inputValue_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  inputValue_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  inputValue_not?: InputMaybe<Scalars['BigInt']['input']>;\n  inputValue_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  isFreebet?: InputMaybe<Scalars['Boolean']['input']>;\n  isFreebet_in?: InputMaybe<Array<Scalars['Boolean']['input']>>;\n  isFreebet_not?: InputMaybe<Scalars['Boolean']['input']>;\n  isFreebet_not_in?: InputMaybe<Array<Scalars['Boolean']['input']>>;\n  kenoBet_?: InputMaybe<KenoBet_Filter>;\n  or?: InputMaybe<Array<InputMaybe<Bet_Filter>>>;\n  payout?: InputMaybe<Scalars['BigInt']['input']>;\n  payoutMultiplier?: InputMaybe<Scalars['BigDecimal']['input']>;\n  payoutMultiplier_gt?: InputMaybe<Scalars['BigDecimal']['input']>;\n  payoutMultiplier_gte?: InputMaybe<Scalars['BigDecimal']['input']>;\n  payoutMultiplier_in?: InputMaybe<Array<Scalars['BigDecimal']['input']>>;\n  payoutMultiplier_lt?: InputMaybe<Scalars['BigDecimal']['input']>;\n  payoutMultiplier_lte?: InputMaybe<Scalars['BigDecimal']['input']>;\n  payoutMultiplier_not?: InputMaybe<Scalars['BigDecimal']['input']>;\n  payoutMultiplier_not_in?: InputMaybe<Array<Scalars['BigDecimal']['input']>>;\n  payout_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  payout_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  payout_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  payout_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  payout_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  payout_not?: InputMaybe<Scalars['BigInt']['input']>;\n  payout_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  refunded?: InputMaybe<Scalars['Boolean']['input']>;\n  refunded_in?: InputMaybe<Array<Scalars['Boolean']['input']>>;\n  refunded_not?: InputMaybe<Scalars['Boolean']['input']>;\n  refunded_not_in?: InputMaybe<Array<Scalars['Boolean']['input']>>;\n  resolved?: InputMaybe<Scalars['Boolean']['input']>;\n  resolved_in?: InputMaybe<Array<Scalars['Boolean']['input']>>;\n  resolved_not?: InputMaybe<Scalars['Boolean']['input']>;\n  resolved_not_in?: InputMaybe<Array<Scalars['Boolean']['input']>>;\n  rollTimestamp?: InputMaybe<Scalars['BigInt']['input']>;\n  rollTimestamp_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  rollTimestamp_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  rollTimestamp_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  rollTimestamp_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  rollTimestamp_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  rollTimestamp_not?: InputMaybe<Scalars['BigInt']['input']>;\n  rollTimestamp_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  rollTxnHash?: InputMaybe<Scalars['Bytes']['input']>;\n  rollTxnHash_contains?: InputMaybe<Scalars['Bytes']['input']>;\n  rollTxnHash_gt?: InputMaybe<Scalars['Bytes']['input']>;\n  rollTxnHash_gte?: InputMaybe<Scalars['Bytes']['input']>;\n  rollTxnHash_in?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  rollTxnHash_lt?: InputMaybe<Scalars['Bytes']['input']>;\n  rollTxnHash_lte?: InputMaybe<Scalars['Bytes']['input']>;\n  rollTxnHash_not?: InputMaybe<Scalars['Bytes']['input']>;\n  rollTxnHash_not_contains?: InputMaybe<Scalars['Bytes']['input']>;\n  rollTxnHash_not_in?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  rolled?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  rolled_contains?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  rolled_contains_nocase?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  rolled_not?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  rolled_not_contains?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  rolled_not_contains_nocase?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  stopGain?: InputMaybe<Scalars['BigInt']['input']>;\n  stopGain_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  stopGain_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  stopGain_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  stopGain_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  stopGain_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  stopGain_not?: InputMaybe<Scalars['BigInt']['input']>;\n  stopGain_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  stopLoss?: InputMaybe<Scalars['BigInt']['input']>;\n  stopLoss_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  stopLoss_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  stopLoss_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  stopLoss_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  stopLoss_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  stopLoss_not?: InputMaybe<Scalars['BigInt']['input']>;\n  stopLoss_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalBetAmount?: InputMaybe<Scalars['BigInt']['input']>;\n  totalBetAmount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalBetAmount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalBetAmount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalBetAmount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalBetAmount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalBetAmount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalBetAmount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  user?: InputMaybe<Scalars['String']['input']>;\n  user_?: InputMaybe<User_Filter>;\n  user_contains?: InputMaybe<Scalars['String']['input']>;\n  user_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_ends_with?: InputMaybe<Scalars['String']['input']>;\n  user_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_gt?: InputMaybe<Scalars['String']['input']>;\n  user_gte?: InputMaybe<Scalars['String']['input']>;\n  user_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  user_lt?: InputMaybe<Scalars['String']['input']>;\n  user_lte?: InputMaybe<Scalars['String']['input']>;\n  user_not?: InputMaybe<Scalars['String']['input']>;\n  user_not_contains?: InputMaybe<Scalars['String']['input']>;\n  user_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  user_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  user_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  user_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_starts_with?: InputMaybe<Scalars['String']['input']>;\n  user_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  weightedGameBet_?: InputMaybe<WeightedGameBet_Filter>;\n};\n\nexport enum Bet_OrderBy {\n  Affiliate = 'affiliate',\n  AffiliateBetCount = 'affiliate__betCount',\n  AffiliateBetTxnCount = 'affiliate__betTxnCount',\n  AffiliateFirstBetTimestamp = 'affiliate__firstBetTimestamp',\n  AffiliateId = 'affiliate__id',\n  AffiliateLastBetTimestamp = 'affiliate__lastBetTimestamp',\n  AffiliateSeatCount = 'affiliate__seatCount',\n  AffiliateTotalFreebetCount = 'affiliate__totalFreebetCount',\n  AffiliateTotalLeaderboards = 'affiliate__totalLeaderboards',\n  AffiliateUserCount = 'affiliate__userCount',\n  AffiliateWagerAndJoinTxnCount = 'affiliate__wagerAndJoinTxnCount',\n  AffiliateWinSeatCount = 'affiliate__winSeatCount',\n  AffiliateWinTxnCount = 'affiliate__winTxnCount',\n  BetAmount = 'betAmount',\n  BetCount = 'betCount',\n  BetTimestamp = 'betTimestamp',\n  BetTxnHash = 'betTxnHash',\n  ChargedVrfFees = 'chargedVRFFees',\n  ConsumedLinkVrfFees = 'consumedLinkVRFFees',\n  ConsumedNativeVrfFees = 'consumedNativeVRFFees',\n  FreebetId = 'freebetId',\n  GameAddress = 'gameAddress',\n  GameId = 'gameId',\n  GameToken = 'gameToken',\n  GameTokenBetCount = 'gameToken__betCount',\n  GameTokenBetTxnCount = 'gameToken__betTxnCount',\n  GameTokenDayDataLength = 'gameToken__dayDataLength',\n  GameTokenGame = 'gameToken__game',\n  GameTokenHouseEdge = 'gameToken__houseEdge',\n  GameTokenId = 'gameToken__id',\n  GameTokenTotalPayout = 'gameToken__totalPayout',\n  GameTokenTotalWagered = 'gameToken__totalWagered',\n  GameTokenUserCount = 'gameToken__userCount',\n  GameTokenWinTxnCount = 'gameToken__winTxnCount',\n  HouseEdge = 'houseEdge',\n  Id = 'id',\n  InputValue = 'inputValue',\n  IsFreebet = 'isFreebet',\n  KenoBet = 'kenoBet',\n  KenoBetId = 'kenoBet__id',\n  Payout = 'payout',\n  PayoutMultiplier = 'payoutMultiplier',\n  Refunded = 'refunded',\n  Resolved = 'resolved',\n  RollTimestamp = 'rollTimestamp',\n  RollTxnHash = 'rollTxnHash',\n  Rolled = 'rolled',\n  StopGain = 'stopGain',\n  StopLoss = 'stopLoss',\n  TotalBetAmount = 'totalBetAmount',\n  User = 'user',\n  UserBetCount = 'user__betCount',\n  UserBetTxnCount = 'user__betTxnCount',\n  UserConsumedLinkVrfFees = 'user__consumedLinkVRFFees',\n  UserConsumedNativeVrfFees = 'user__consumedNativeVRFFees',\n  UserFirstBetTimestamp = 'user__firstBetTimestamp',\n  UserId = 'user__id',\n  UserLastBetTimestamp = 'user__lastBetTimestamp',\n  UserMaxMultiplier = 'user__maxMultiplier',\n  UserPvpMaxMultiplier = 'user__pvpMaxMultiplier',\n  UserSeatCount = 'user__seatCount',\n  UserTotalChargedVrfFees = 'user__totalChargedVRFFees',\n  UserWagerAndJoinTxnCount = 'user__wagerAndJoinTxnCount',\n  UserWinSeatCount = 'user__winSeatCount',\n  UserWinTxnCount = 'user__winTxnCount',\n  WeightedGameBet = 'weightedGameBet',\n  WeightedGameBetId = 'weightedGameBet__id'\n}\n\nexport type BlockChangedFilter = {\n  number_gte: Scalars['Int']['input'];\n};\n\nexport type Block_Height = {\n  hash?: InputMaybe<Scalars['Bytes']['input']>;\n  number?: InputMaybe<Scalars['Int']['input']>;\n  number_gte?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type CoinTossBattleBet = {\n  __typename?: 'CoinTossBattleBet';\n  bet?: Maybe<PvPBet>;\n  face: Scalars['Boolean']['output'];\n  id: Scalars['ID']['output'];\n  rolled?: Maybe<Scalars['Boolean']['output']>;\n  winner?: Maybe<Scalars['Bytes']['output']>;\n};\n\nexport type CoinTossBattleBet_Filter = {\n  /** Filter for the block changed event. */\n  _change_block?: InputMaybe<BlockChangedFilter>;\n  and?: InputMaybe<Array<InputMaybe<CoinTossBattleBet_Filter>>>;\n  bet?: InputMaybe<Scalars['String']['input']>;\n  bet_?: InputMaybe<PvPBet_Filter>;\n  bet_contains?: InputMaybe<Scalars['String']['input']>;\n  bet_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  bet_ends_with?: InputMaybe<Scalars['String']['input']>;\n  bet_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  bet_gt?: InputMaybe<Scalars['String']['input']>;\n  bet_gte?: InputMaybe<Scalars['String']['input']>;\n  bet_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  bet_lt?: InputMaybe<Scalars['String']['input']>;\n  bet_lte?: InputMaybe<Scalars['String']['input']>;\n  bet_not?: InputMaybe<Scalars['String']['input']>;\n  bet_not_contains?: InputMaybe<Scalars['String']['input']>;\n  bet_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  bet_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  bet_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  bet_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  bet_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  bet_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  bet_starts_with?: InputMaybe<Scalars['String']['input']>;\n  bet_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  face?: InputMaybe<Scalars['Boolean']['input']>;\n  face_in?: InputMaybe<Array<Scalars['Boolean']['input']>>;\n  face_not?: InputMaybe<Scalars['Boolean']['input']>;\n  face_not_in?: InputMaybe<Array<Scalars['Boolean']['input']>>;\n  id?: InputMaybe<Scalars['ID']['input']>;\n  id_gt?: InputMaybe<Scalars['ID']['input']>;\n  id_gte?: InputMaybe<Scalars['ID']['input']>;\n  id_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  id_lt?: InputMaybe<Scalars['ID']['input']>;\n  id_lte?: InputMaybe<Scalars['ID']['input']>;\n  id_not?: InputMaybe<Scalars['ID']['input']>;\n  id_not_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  or?: InputMaybe<Array<InputMaybe<CoinTossBattleBet_Filter>>>;\n  rolled?: InputMaybe<Scalars['Boolean']['input']>;\n  rolled_in?: InputMaybe<Array<Scalars['Boolean']['input']>>;\n  rolled_not?: InputMaybe<Scalars['Boolean']['input']>;\n  rolled_not_in?: InputMaybe<Array<Scalars['Boolean']['input']>>;\n  winner?: InputMaybe<Scalars['Bytes']['input']>;\n  winner_contains?: InputMaybe<Scalars['Bytes']['input']>;\n  winner_gt?: InputMaybe<Scalars['Bytes']['input']>;\n  winner_gte?: InputMaybe<Scalars['Bytes']['input']>;\n  winner_in?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  winner_lt?: InputMaybe<Scalars['Bytes']['input']>;\n  winner_lte?: InputMaybe<Scalars['Bytes']['input']>;\n  winner_not?: InputMaybe<Scalars['Bytes']['input']>;\n  winner_not_contains?: InputMaybe<Scalars['Bytes']['input']>;\n  winner_not_in?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n};\n\nexport enum CoinTossBattleBet_OrderBy {\n  Bet = 'bet',\n  BetBetAmount = 'bet__betAmount',\n  BetBetId = 'bet__betId',\n  BetBetLaunchedTimestamp = 'bet__betLaunchedTimestamp',\n  BetBetLaunchedTxnHash = 'bet__betLaunchedTxnHash',\n  BetBetTimestamp = 'bet__betTimestamp',\n  BetCanceled = 'bet__canceled',\n  BetChargedVrfFees = 'bet__chargedVRFFees',\n  BetConsumedLinkVrfFees = 'bet__consumedLinkVRFFees',\n  BetConsumedNativeVrfFees = 'bet__consumedNativeVRFFees',\n  BetGameAddress = 'bet__gameAddress',\n  BetGameId = 'bet__gameId',\n  BetHouseEdge = 'bet__houseEdge',\n  BetId = 'bet__id',\n  BetPayout = 'bet__payout',\n  BetPot = 'bet__pot',\n  BetRefunded = 'bet__refunded',\n  BetResolved = 'bet__resolved',\n  BetRollTimestamp = 'bet__rollTimestamp',\n  BetRollTxnHash = 'bet__rollTxnHash',\n  Face = 'face',\n  Id = 'id',\n  Rolled = 'rolled',\n  Winner = 'winner'\n}\n\nexport type GameToken = {\n  __typename?: 'GameToken';\n  betCount: Scalars['BigInt']['output'];\n  betTxnCount: Scalars['BigInt']['output'];\n  dayData?: Maybe<Array<GameTokenDayData>>;\n  dayDataLength: Scalars['Int']['output'];\n  game: Scalars['String']['output'];\n  houseEdge: Scalars['Int']['output'];\n  id: Scalars['ID']['output'];\n  token: Token;\n  totalPayout: Scalars['BigInt']['output'];\n  totalWagered: Scalars['BigInt']['output'];\n  userCount: Scalars['BigInt']['output'];\n  winTxnCount: Scalars['BigInt']['output'];\n};\n\n\nexport type GameTokenDayDataArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<GameTokenDayData_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<GameTokenDayData_Filter>;\n};\n\nexport type GameTokenDayData = {\n  __typename?: 'GameTokenDayData';\n  betCount: Scalars['BigInt']['output'];\n  betTxnCount: Scalars['BigInt']['output'];\n  consumedLinkVRFFees: Scalars['BigInt']['output'];\n  consumedNativeVRFFees: Scalars['BigInt']['output'];\n  date: Scalars['Int']['output'];\n  gameToken: GameToken;\n  id: Scalars['ID']['output'];\n  totalChargedVRFFees: Scalars['BigInt']['output'];\n  totalPayout: Scalars['BigInt']['output'];\n  totalWagered: Scalars['BigInt']['output'];\n  userCount: Scalars['BigInt']['output'];\n  winTxnCount: Scalars['BigInt']['output'];\n};\n\nexport type GameTokenDayData_Filter = {\n  /** Filter for the block changed event. */\n  _change_block?: InputMaybe<BlockChangedFilter>;\n  and?: InputMaybe<Array<InputMaybe<GameTokenDayData_Filter>>>;\n  betCount?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betTxnCount?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betTxnCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  consumedLinkVRFFees?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedLinkVRFFees_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedLinkVRFFees_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedLinkVRFFees_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  consumedLinkVRFFees_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedLinkVRFFees_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedLinkVRFFees_not?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedLinkVRFFees_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  consumedNativeVRFFees?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedNativeVRFFees_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedNativeVRFFees_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedNativeVRFFees_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  consumedNativeVRFFees_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedNativeVRFFees_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedNativeVRFFees_not?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedNativeVRFFees_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  date?: InputMaybe<Scalars['Int']['input']>;\n  date_gt?: InputMaybe<Scalars['Int']['input']>;\n  date_gte?: InputMaybe<Scalars['Int']['input']>;\n  date_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  date_lt?: InputMaybe<Scalars['Int']['input']>;\n  date_lte?: InputMaybe<Scalars['Int']['input']>;\n  date_not?: InputMaybe<Scalars['Int']['input']>;\n  date_not_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  gameToken?: InputMaybe<Scalars['String']['input']>;\n  gameToken_?: InputMaybe<GameToken_Filter>;\n  gameToken_contains?: InputMaybe<Scalars['String']['input']>;\n  gameToken_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameToken_ends_with?: InputMaybe<Scalars['String']['input']>;\n  gameToken_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameToken_gt?: InputMaybe<Scalars['String']['input']>;\n  gameToken_gte?: InputMaybe<Scalars['String']['input']>;\n  gameToken_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  gameToken_lt?: InputMaybe<Scalars['String']['input']>;\n  gameToken_lte?: InputMaybe<Scalars['String']['input']>;\n  gameToken_not?: InputMaybe<Scalars['String']['input']>;\n  gameToken_not_contains?: InputMaybe<Scalars['String']['input']>;\n  gameToken_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameToken_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  gameToken_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameToken_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  gameToken_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  gameToken_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameToken_starts_with?: InputMaybe<Scalars['String']['input']>;\n  gameToken_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  id?: InputMaybe<Scalars['ID']['input']>;\n  id_gt?: InputMaybe<Scalars['ID']['input']>;\n  id_gte?: InputMaybe<Scalars['ID']['input']>;\n  id_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  id_lt?: InputMaybe<Scalars['ID']['input']>;\n  id_lte?: InputMaybe<Scalars['ID']['input']>;\n  id_not?: InputMaybe<Scalars['ID']['input']>;\n  id_not_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  or?: InputMaybe<Array<InputMaybe<GameTokenDayData_Filter>>>;\n  totalChargedVRFFees?: InputMaybe<Scalars['BigInt']['input']>;\n  totalChargedVRFFees_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalChargedVRFFees_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalChargedVRFFees_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalChargedVRFFees_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalChargedVRFFees_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalChargedVRFFees_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalChargedVRFFees_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalPayout?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalPayout_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalWagered?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalWagered_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  userCount?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  userCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  winTxnCount?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  winTxnCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n};\n\nexport enum GameTokenDayData_OrderBy {\n  BetCount = 'betCount',\n  BetTxnCount = 'betTxnCount',\n  ConsumedLinkVrfFees = 'consumedLinkVRFFees',\n  ConsumedNativeVrfFees = 'consumedNativeVRFFees',\n  Date = 'date',\n  GameToken = 'gameToken',\n  GameTokenBetCount = 'gameToken__betCount',\n  GameTokenBetTxnCount = 'gameToken__betTxnCount',\n  GameTokenDayDataLength = 'gameToken__dayDataLength',\n  GameTokenGame = 'gameToken__game',\n  GameTokenHouseEdge = 'gameToken__houseEdge',\n  GameTokenId = 'gameToken__id',\n  GameTokenTotalPayout = 'gameToken__totalPayout',\n  GameTokenTotalWagered = 'gameToken__totalWagered',\n  GameTokenUserCount = 'gameToken__userCount',\n  GameTokenWinTxnCount = 'gameToken__winTxnCount',\n  Id = 'id',\n  TotalChargedVrfFees = 'totalChargedVRFFees',\n  TotalPayout = 'totalPayout',\n  TotalWagered = 'totalWagered',\n  UserCount = 'userCount',\n  WinTxnCount = 'winTxnCount'\n}\n\nexport type GameToken_Filter = {\n  /** Filter for the block changed event. */\n  _change_block?: InputMaybe<BlockChangedFilter>;\n  and?: InputMaybe<Array<InputMaybe<GameToken_Filter>>>;\n  betCount?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betTxnCount?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betTxnCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  dayDataLength?: InputMaybe<Scalars['Int']['input']>;\n  dayDataLength_gt?: InputMaybe<Scalars['Int']['input']>;\n  dayDataLength_gte?: InputMaybe<Scalars['Int']['input']>;\n  dayDataLength_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  dayDataLength_lt?: InputMaybe<Scalars['Int']['input']>;\n  dayDataLength_lte?: InputMaybe<Scalars['Int']['input']>;\n  dayDataLength_not?: InputMaybe<Scalars['Int']['input']>;\n  dayDataLength_not_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  dayData_?: InputMaybe<GameTokenDayData_Filter>;\n  game?: InputMaybe<Scalars['String']['input']>;\n  game_contains?: InputMaybe<Scalars['String']['input']>;\n  game_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  game_ends_with?: InputMaybe<Scalars['String']['input']>;\n  game_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  game_gt?: InputMaybe<Scalars['String']['input']>;\n  game_gte?: InputMaybe<Scalars['String']['input']>;\n  game_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  game_lt?: InputMaybe<Scalars['String']['input']>;\n  game_lte?: InputMaybe<Scalars['String']['input']>;\n  game_not?: InputMaybe<Scalars['String']['input']>;\n  game_not_contains?: InputMaybe<Scalars['String']['input']>;\n  game_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  game_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  game_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  game_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  game_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  game_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  game_starts_with?: InputMaybe<Scalars['String']['input']>;\n  game_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  houseEdge?: InputMaybe<Scalars['Int']['input']>;\n  houseEdge_gt?: InputMaybe<Scalars['Int']['input']>;\n  houseEdge_gte?: InputMaybe<Scalars['Int']['input']>;\n  houseEdge_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  houseEdge_lt?: InputMaybe<Scalars['Int']['input']>;\n  houseEdge_lte?: InputMaybe<Scalars['Int']['input']>;\n  houseEdge_not?: InputMaybe<Scalars['Int']['input']>;\n  houseEdge_not_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  id?: InputMaybe<Scalars['ID']['input']>;\n  id_gt?: InputMaybe<Scalars['ID']['input']>;\n  id_gte?: InputMaybe<Scalars['ID']['input']>;\n  id_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  id_lt?: InputMaybe<Scalars['ID']['input']>;\n  id_lte?: InputMaybe<Scalars['ID']['input']>;\n  id_not?: InputMaybe<Scalars['ID']['input']>;\n  id_not_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  or?: InputMaybe<Array<InputMaybe<GameToken_Filter>>>;\n  token?: InputMaybe<Scalars['String']['input']>;\n  token_?: InputMaybe<Token_Filter>;\n  token_contains?: InputMaybe<Scalars['String']['input']>;\n  token_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_ends_with?: InputMaybe<Scalars['String']['input']>;\n  token_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_gt?: InputMaybe<Scalars['String']['input']>;\n  token_gte?: InputMaybe<Scalars['String']['input']>;\n  token_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  token_lt?: InputMaybe<Scalars['String']['input']>;\n  token_lte?: InputMaybe<Scalars['String']['input']>;\n  token_not?: InputMaybe<Scalars['String']['input']>;\n  token_not_contains?: InputMaybe<Scalars['String']['input']>;\n  token_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  token_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  token_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  token_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_starts_with?: InputMaybe<Scalars['String']['input']>;\n  token_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  totalPayout?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalPayout_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalWagered?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalWagered_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  userCount?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  userCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  winTxnCount?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  winTxnCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n};\n\nexport enum GameToken_OrderBy {\n  BetCount = 'betCount',\n  BetTxnCount = 'betTxnCount',\n  DayData = 'dayData',\n  DayDataLength = 'dayDataLength',\n  Game = 'game',\n  HouseEdge = 'houseEdge',\n  Id = 'id',\n  Token = 'token',\n  TokenAffiliateAmount = 'token__affiliateAmount',\n  TokenBalancesDayDataLength = 'token__balancesDayDataLength',\n  TokenBankAmount = 'token__bankAmount',\n  TokenBetCount = 'token__betCount',\n  TokenBetTxnCount = 'token__betTxnCount',\n  TokenDecimals = 'token__decimals',\n  TokenDividendAmount = 'token__dividendAmount',\n  TokenId = 'token__id',\n  TokenName = 'token__name',\n  TokenPartnerAmount = 'token__partnerAmount',\n  TokenSymbol = 'token__symbol',\n  TokenTeamAmount = 'token__teamAmount',\n  TokenTotalPayout = 'token__totalPayout',\n  TokenTotalWagered = 'token__totalWagered',\n  TokenTreasuryAmount = 'token__treasuryAmount',\n  TokenUserCount = 'token__userCount',\n  TokenWinTxnCount = 'token__winTxnCount',\n  TotalPayout = 'totalPayout',\n  TotalWagered = 'totalWagered',\n  UserCount = 'userCount',\n  WinTxnCount = 'winTxnCount'\n}\n\nexport type KenoBet = {\n  __typename?: 'KenoBet';\n  bet: Bet;\n  config: KenoConfig;\n  id: Scalars['ID']['output'];\n};\n\nexport type KenoBet_Filter = {\n  /** Filter for the block changed event. */\n  _change_block?: InputMaybe<BlockChangedFilter>;\n  and?: InputMaybe<Array<InputMaybe<KenoBet_Filter>>>;\n  bet?: InputMaybe<Scalars['String']['input']>;\n  bet_?: InputMaybe<Bet_Filter>;\n  bet_contains?: InputMaybe<Scalars['String']['input']>;\n  bet_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  bet_ends_with?: InputMaybe<Scalars['String']['input']>;\n  bet_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  bet_gt?: InputMaybe<Scalars['String']['input']>;\n  bet_gte?: InputMaybe<Scalars['String']['input']>;\n  bet_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  bet_lt?: InputMaybe<Scalars['String']['input']>;\n  bet_lte?: InputMaybe<Scalars['String']['input']>;\n  bet_not?: InputMaybe<Scalars['String']['input']>;\n  bet_not_contains?: InputMaybe<Scalars['String']['input']>;\n  bet_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  bet_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  bet_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  bet_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  bet_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  bet_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  bet_starts_with?: InputMaybe<Scalars['String']['input']>;\n  bet_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  config?: InputMaybe<Scalars['String']['input']>;\n  config_?: InputMaybe<KenoConfig_Filter>;\n  config_contains?: InputMaybe<Scalars['String']['input']>;\n  config_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  config_ends_with?: InputMaybe<Scalars['String']['input']>;\n  config_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  config_gt?: InputMaybe<Scalars['String']['input']>;\n  config_gte?: InputMaybe<Scalars['String']['input']>;\n  config_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  config_lt?: InputMaybe<Scalars['String']['input']>;\n  config_lte?: InputMaybe<Scalars['String']['input']>;\n  config_not?: InputMaybe<Scalars['String']['input']>;\n  config_not_contains?: InputMaybe<Scalars['String']['input']>;\n  config_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  config_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  config_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  config_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  config_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  config_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  config_starts_with?: InputMaybe<Scalars['String']['input']>;\n  config_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  id?: InputMaybe<Scalars['ID']['input']>;\n  id_gt?: InputMaybe<Scalars['ID']['input']>;\n  id_gte?: InputMaybe<Scalars['ID']['input']>;\n  id_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  id_lt?: InputMaybe<Scalars['ID']['input']>;\n  id_lte?: InputMaybe<Scalars['ID']['input']>;\n  id_not?: InputMaybe<Scalars['ID']['input']>;\n  id_not_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  or?: InputMaybe<Array<InputMaybe<KenoBet_Filter>>>;\n};\n\nexport enum KenoBet_OrderBy {\n  Bet = 'bet',\n  BetBetAmount = 'bet__betAmount',\n  BetBetCount = 'bet__betCount',\n  BetBetTimestamp = 'bet__betTimestamp',\n  BetBetTxnHash = 'bet__betTxnHash',\n  BetChargedVrfFees = 'bet__chargedVRFFees',\n  BetConsumedLinkVrfFees = 'bet__consumedLinkVRFFees',\n  BetConsumedNativeVrfFees = 'bet__consumedNativeVRFFees',\n  BetFreebetId = 'bet__freebetId',\n  BetGameAddress = 'bet__gameAddress',\n  BetGameId = 'bet__gameId',\n  BetHouseEdge = 'bet__houseEdge',\n  BetId = 'bet__id',\n  BetInputValue = 'bet__inputValue',\n  BetIsFreebet = 'bet__isFreebet',\n  BetPayout = 'bet__payout',\n  BetPayoutMultiplier = 'bet__payoutMultiplier',\n  BetRefunded = 'bet__refunded',\n  BetResolved = 'bet__resolved',\n  BetRollTimestamp = 'bet__rollTimestamp',\n  BetRollTxnHash = 'bet__rollTxnHash',\n  BetStopGain = 'bet__stopGain',\n  BetStopLoss = 'bet__stopLoss',\n  BetTotalBetAmount = 'bet__totalBetAmount',\n  Config = 'config',\n  ConfigBiggestNumber = 'config__biggestNumber',\n  ConfigCreationTimestamp = 'config__creationTimestamp',\n  ConfigId = 'config__id',\n  ConfigMaxNumbers = 'config__maxNumbers',\n  Id = 'id'\n}\n\nexport type KenoConfig = {\n  __typename?: 'KenoConfig';\n  biggestNumber: Scalars['BigInt']['output'];\n  configHub: KenoConfigHub;\n  creationTimestamp: Scalars['BigInt']['output'];\n  id: Scalars['ID']['output'];\n  maxNumbers: Scalars['BigInt']['output'];\n};\n\nexport type KenoConfigHub = {\n  __typename?: 'KenoConfigHub';\n  configCount: Scalars['Int']['output'];\n  configs: Array<KenoConfig>;\n  id: Scalars['Bytes']['output'];\n  token: Token;\n};\n\n\nexport type KenoConfigHubConfigsArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<KenoConfig_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<KenoConfig_Filter>;\n};\n\nexport type KenoConfigHub_Filter = {\n  /** Filter for the block changed event. */\n  _change_block?: InputMaybe<BlockChangedFilter>;\n  and?: InputMaybe<Array<InputMaybe<KenoConfigHub_Filter>>>;\n  configCount?: InputMaybe<Scalars['Int']['input']>;\n  configCount_gt?: InputMaybe<Scalars['Int']['input']>;\n  configCount_gte?: InputMaybe<Scalars['Int']['input']>;\n  configCount_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  configCount_lt?: InputMaybe<Scalars['Int']['input']>;\n  configCount_lte?: InputMaybe<Scalars['Int']['input']>;\n  configCount_not?: InputMaybe<Scalars['Int']['input']>;\n  configCount_not_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  configs_?: InputMaybe<KenoConfig_Filter>;\n  id?: InputMaybe<Scalars['Bytes']['input']>;\n  id_contains?: InputMaybe<Scalars['Bytes']['input']>;\n  id_gt?: InputMaybe<Scalars['Bytes']['input']>;\n  id_gte?: InputMaybe<Scalars['Bytes']['input']>;\n  id_in?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  id_lt?: InputMaybe<Scalars['Bytes']['input']>;\n  id_lte?: InputMaybe<Scalars['Bytes']['input']>;\n  id_not?: InputMaybe<Scalars['Bytes']['input']>;\n  id_not_contains?: InputMaybe<Scalars['Bytes']['input']>;\n  id_not_in?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  or?: InputMaybe<Array<InputMaybe<KenoConfigHub_Filter>>>;\n  token?: InputMaybe<Scalars['String']['input']>;\n  token_?: InputMaybe<Token_Filter>;\n  token_contains?: InputMaybe<Scalars['String']['input']>;\n  token_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_ends_with?: InputMaybe<Scalars['String']['input']>;\n  token_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_gt?: InputMaybe<Scalars['String']['input']>;\n  token_gte?: InputMaybe<Scalars['String']['input']>;\n  token_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  token_lt?: InputMaybe<Scalars['String']['input']>;\n  token_lte?: InputMaybe<Scalars['String']['input']>;\n  token_not?: InputMaybe<Scalars['String']['input']>;\n  token_not_contains?: InputMaybe<Scalars['String']['input']>;\n  token_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  token_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  token_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  token_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_starts_with?: InputMaybe<Scalars['String']['input']>;\n  token_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport enum KenoConfigHub_OrderBy {\n  ConfigCount = 'configCount',\n  Configs = 'configs',\n  Id = 'id',\n  Token = 'token',\n  TokenAffiliateAmount = 'token__affiliateAmount',\n  TokenBalancesDayDataLength = 'token__balancesDayDataLength',\n  TokenBankAmount = 'token__bankAmount',\n  TokenBetCount = 'token__betCount',\n  TokenBetTxnCount = 'token__betTxnCount',\n  TokenDecimals = 'token__decimals',\n  TokenDividendAmount = 'token__dividendAmount',\n  TokenId = 'token__id',\n  TokenName = 'token__name',\n  TokenPartnerAmount = 'token__partnerAmount',\n  TokenSymbol = 'token__symbol',\n  TokenTeamAmount = 'token__teamAmount',\n  TokenTotalPayout = 'token__totalPayout',\n  TokenTotalWagered = 'token__totalWagered',\n  TokenTreasuryAmount = 'token__treasuryAmount',\n  TokenUserCount = 'token__userCount',\n  TokenWinTxnCount = 'token__winTxnCount'\n}\n\nexport type KenoConfig_Filter = {\n  /** Filter for the block changed event. */\n  _change_block?: InputMaybe<BlockChangedFilter>;\n  and?: InputMaybe<Array<InputMaybe<KenoConfig_Filter>>>;\n  biggestNumber?: InputMaybe<Scalars['BigInt']['input']>;\n  biggestNumber_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  biggestNumber_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  biggestNumber_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  biggestNumber_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  biggestNumber_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  biggestNumber_not?: InputMaybe<Scalars['BigInt']['input']>;\n  biggestNumber_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  configHub?: InputMaybe<Scalars['String']['input']>;\n  configHub_?: InputMaybe<KenoConfigHub_Filter>;\n  configHub_contains?: InputMaybe<Scalars['String']['input']>;\n  configHub_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  configHub_ends_with?: InputMaybe<Scalars['String']['input']>;\n  configHub_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  configHub_gt?: InputMaybe<Scalars['String']['input']>;\n  configHub_gte?: InputMaybe<Scalars['String']['input']>;\n  configHub_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  configHub_lt?: InputMaybe<Scalars['String']['input']>;\n  configHub_lte?: InputMaybe<Scalars['String']['input']>;\n  configHub_not?: InputMaybe<Scalars['String']['input']>;\n  configHub_not_contains?: InputMaybe<Scalars['String']['input']>;\n  configHub_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  configHub_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  configHub_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  configHub_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  configHub_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  configHub_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  configHub_starts_with?: InputMaybe<Scalars['String']['input']>;\n  configHub_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  creationTimestamp?: InputMaybe<Scalars['BigInt']['input']>;\n  creationTimestamp_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  creationTimestamp_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  creationTimestamp_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  creationTimestamp_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  creationTimestamp_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  creationTimestamp_not?: InputMaybe<Scalars['BigInt']['input']>;\n  creationTimestamp_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  id?: InputMaybe<Scalars['ID']['input']>;\n  id_gt?: InputMaybe<Scalars['ID']['input']>;\n  id_gte?: InputMaybe<Scalars['ID']['input']>;\n  id_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  id_lt?: InputMaybe<Scalars['ID']['input']>;\n  id_lte?: InputMaybe<Scalars['ID']['input']>;\n  id_not?: InputMaybe<Scalars['ID']['input']>;\n  id_not_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  maxNumbers?: InputMaybe<Scalars['BigInt']['input']>;\n  maxNumbers_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  maxNumbers_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  maxNumbers_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  maxNumbers_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  maxNumbers_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  maxNumbers_not?: InputMaybe<Scalars['BigInt']['input']>;\n  maxNumbers_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  or?: InputMaybe<Array<InputMaybe<KenoConfig_Filter>>>;\n};\n\nexport enum KenoConfig_OrderBy {\n  BiggestNumber = 'biggestNumber',\n  ConfigHub = 'configHub',\n  ConfigHubConfigCount = 'configHub__configCount',\n  ConfigHubId = 'configHub__id',\n  CreationTimestamp = 'creationTimestamp',\n  Id = 'id',\n  MaxNumbers = 'maxNumbers'\n}\n\nexport type Leaderboard = {\n  __typename?: 'Leaderboard';\n  affiliate: Affiliate;\n  claimedShares: Array<Scalars['BigInt']['output']>;\n  endTimestamp: Scalars['BigInt']['output'];\n  expirationTime: Scalars['BigInt']['output'];\n  id: Scalars['ID']['output'];\n  leaderboardAffiliateToken: LeaderboardAffiliateToken;\n  shares: Array<Scalars['BigInt']['output']>;\n  status: LeaderboardStatus;\n  token: LeaderboardToken;\n  totalClaimedShares: Scalars['BigInt']['output'];\n  totalShares: Scalars['BigInt']['output'];\n  totalUnclaimedShares: Scalars['BigInt']['output'];\n  winners?: Maybe<Array<Scalars['Bytes']['output']>>;\n};\n\nexport type LeaderboardAffiliateToken = {\n  __typename?: 'LeaderboardAffiliateToken';\n  affiliate: Affiliate;\n  id: Scalars['ID']['output'];\n  leaderboardAffiliateUserTokens?: Maybe<Array<LeaderboardAffiliateUserToken>>;\n  leaderboards?: Maybe<Array<Leaderboard>>;\n  token: LeaderboardToken;\n  totalLeaderboards: Scalars['BigInt']['output'];\n  totalSharesClaimed: Scalars['BigInt']['output'];\n  totalSharesDistributed: Scalars['BigInt']['output'];\n};\n\n\nexport type LeaderboardAffiliateTokenLeaderboardAffiliateUserTokensArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<LeaderboardAffiliateUserToken_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<LeaderboardAffiliateUserToken_Filter>;\n};\n\n\nexport type LeaderboardAffiliateTokenLeaderboardsArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<Leaderboard_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<Leaderboard_Filter>;\n};\n\nexport type LeaderboardAffiliateToken_Filter = {\n  /** Filter for the block changed event. */\n  _change_block?: InputMaybe<BlockChangedFilter>;\n  affiliate?: InputMaybe<Scalars['String']['input']>;\n  affiliate_?: InputMaybe<Affiliate_Filter>;\n  affiliate_contains?: InputMaybe<Scalars['String']['input']>;\n  affiliate_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_ends_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_gt?: InputMaybe<Scalars['String']['input']>;\n  affiliate_gte?: InputMaybe<Scalars['String']['input']>;\n  affiliate_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  affiliate_lt?: InputMaybe<Scalars['String']['input']>;\n  affiliate_lte?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_contains?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  affiliate_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_starts_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  and?: InputMaybe<Array<InputMaybe<LeaderboardAffiliateToken_Filter>>>;\n  id?: InputMaybe<Scalars['ID']['input']>;\n  id_gt?: InputMaybe<Scalars['ID']['input']>;\n  id_gte?: InputMaybe<Scalars['ID']['input']>;\n  id_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  id_lt?: InputMaybe<Scalars['ID']['input']>;\n  id_lte?: InputMaybe<Scalars['ID']['input']>;\n  id_not?: InputMaybe<Scalars['ID']['input']>;\n  id_not_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  leaderboardAffiliateUserTokens_?: InputMaybe<LeaderboardAffiliateUserToken_Filter>;\n  leaderboards_?: InputMaybe<Leaderboard_Filter>;\n  or?: InputMaybe<Array<InputMaybe<LeaderboardAffiliateToken_Filter>>>;\n  token?: InputMaybe<Scalars['String']['input']>;\n  token_?: InputMaybe<LeaderboardToken_Filter>;\n  token_contains?: InputMaybe<Scalars['String']['input']>;\n  token_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_ends_with?: InputMaybe<Scalars['String']['input']>;\n  token_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_gt?: InputMaybe<Scalars['String']['input']>;\n  token_gte?: InputMaybe<Scalars['String']['input']>;\n  token_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  token_lt?: InputMaybe<Scalars['String']['input']>;\n  token_lte?: InputMaybe<Scalars['String']['input']>;\n  token_not?: InputMaybe<Scalars['String']['input']>;\n  token_not_contains?: InputMaybe<Scalars['String']['input']>;\n  token_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  token_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  token_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  token_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_starts_with?: InputMaybe<Scalars['String']['input']>;\n  token_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  totalLeaderboards?: InputMaybe<Scalars['BigInt']['input']>;\n  totalLeaderboards_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalLeaderboards_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalLeaderboards_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalLeaderboards_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalLeaderboards_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalLeaderboards_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalLeaderboards_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalSharesClaimed?: InputMaybe<Scalars['BigInt']['input']>;\n  totalSharesClaimed_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalSharesClaimed_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalSharesClaimed_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalSharesClaimed_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalSharesClaimed_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalSharesClaimed_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalSharesClaimed_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalSharesDistributed?: InputMaybe<Scalars['BigInt']['input']>;\n  totalSharesDistributed_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalSharesDistributed_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalSharesDistributed_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalSharesDistributed_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalSharesDistributed_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalSharesDistributed_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalSharesDistributed_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n};\n\nexport enum LeaderboardAffiliateToken_OrderBy {\n  Affiliate = 'affiliate',\n  AffiliateBetCount = 'affiliate__betCount',\n  AffiliateBetTxnCount = 'affiliate__betTxnCount',\n  AffiliateFirstBetTimestamp = 'affiliate__firstBetTimestamp',\n  AffiliateId = 'affiliate__id',\n  AffiliateLastBetTimestamp = 'affiliate__lastBetTimestamp',\n  AffiliateSeatCount = 'affiliate__seatCount',\n  AffiliateTotalFreebetCount = 'affiliate__totalFreebetCount',\n  AffiliateTotalLeaderboards = 'affiliate__totalLeaderboards',\n  AffiliateUserCount = 'affiliate__userCount',\n  AffiliateWagerAndJoinTxnCount = 'affiliate__wagerAndJoinTxnCount',\n  AffiliateWinSeatCount = 'affiliate__winSeatCount',\n  AffiliateWinTxnCount = 'affiliate__winTxnCount',\n  Id = 'id',\n  LeaderboardAffiliateUserTokens = 'leaderboardAffiliateUserTokens',\n  Leaderboards = 'leaderboards',\n  Token = 'token',\n  TokenDecimals = 'token__decimals',\n  TokenId = 'token__id',\n  TokenName = 'token__name',\n  TokenSymbol = 'token__symbol',\n  TotalLeaderboards = 'totalLeaderboards',\n  TotalSharesClaimed = 'totalSharesClaimed',\n  TotalSharesDistributed = 'totalSharesDistributed'\n}\n\nexport type LeaderboardAffiliateUser = {\n  __typename?: 'LeaderboardAffiliateUser';\n  affiliate: Affiliate;\n  id: Scalars['ID']['output'];\n  leaderboardAffiliateUserTokens?: Maybe<Array<LeaderboardAffiliateUserToken>>;\n  totalLeaderboardsWonCount: Scalars['BigInt']['output'];\n  user: User;\n};\n\n\nexport type LeaderboardAffiliateUserLeaderboardAffiliateUserTokensArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<LeaderboardAffiliateUserToken_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<LeaderboardAffiliateUserToken_Filter>;\n};\n\nexport type LeaderboardAffiliateUserToken = {\n  __typename?: 'LeaderboardAffiliateUserToken';\n  affiliate: Affiliate;\n  id: Scalars['ID']['output'];\n  leaderboardAffiliateToken: LeaderboardAffiliateToken;\n  leaderboardAffiliateUser: LeaderboardAffiliateUser;\n  totalLeaderboardSharesClaimed: Scalars['BigInt']['output'];\n  totalLeaderboardSharesWon: Scalars['BigInt']['output'];\n};\n\nexport type LeaderboardAffiliateUserToken_Filter = {\n  /** Filter for the block changed event. */\n  _change_block?: InputMaybe<BlockChangedFilter>;\n  affiliate?: InputMaybe<Scalars['String']['input']>;\n  affiliate_?: InputMaybe<Affiliate_Filter>;\n  affiliate_contains?: InputMaybe<Scalars['String']['input']>;\n  affiliate_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_ends_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_gt?: InputMaybe<Scalars['String']['input']>;\n  affiliate_gte?: InputMaybe<Scalars['String']['input']>;\n  affiliate_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  affiliate_lt?: InputMaybe<Scalars['String']['input']>;\n  affiliate_lte?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_contains?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  affiliate_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_starts_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  and?: InputMaybe<Array<InputMaybe<LeaderboardAffiliateUserToken_Filter>>>;\n  id?: InputMaybe<Scalars['ID']['input']>;\n  id_gt?: InputMaybe<Scalars['ID']['input']>;\n  id_gte?: InputMaybe<Scalars['ID']['input']>;\n  id_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  id_lt?: InputMaybe<Scalars['ID']['input']>;\n  id_lte?: InputMaybe<Scalars['ID']['input']>;\n  id_not?: InputMaybe<Scalars['ID']['input']>;\n  id_not_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  leaderboardAffiliateToken?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateToken_?: InputMaybe<LeaderboardAffiliateToken_Filter>;\n  leaderboardAffiliateToken_contains?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateToken_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateToken_ends_with?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateToken_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateToken_gt?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateToken_gte?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateToken_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  leaderboardAffiliateToken_lt?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateToken_lte?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateToken_not?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateToken_not_contains?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateToken_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateToken_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateToken_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateToken_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  leaderboardAffiliateToken_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateToken_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateToken_starts_with?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateToken_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateUser?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateUser_?: InputMaybe<LeaderboardAffiliateUser_Filter>;\n  leaderboardAffiliateUser_contains?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateUser_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateUser_ends_with?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateUser_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateUser_gt?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateUser_gte?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateUser_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  leaderboardAffiliateUser_lt?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateUser_lte?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateUser_not?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateUser_not_contains?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateUser_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateUser_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateUser_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateUser_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  leaderboardAffiliateUser_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateUser_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateUser_starts_with?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateUser_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  or?: InputMaybe<Array<InputMaybe<LeaderboardAffiliateUserToken_Filter>>>;\n  totalLeaderboardSharesClaimed?: InputMaybe<Scalars['BigInt']['input']>;\n  totalLeaderboardSharesClaimed_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalLeaderboardSharesClaimed_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalLeaderboardSharesClaimed_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalLeaderboardSharesClaimed_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalLeaderboardSharesClaimed_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalLeaderboardSharesClaimed_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalLeaderboardSharesClaimed_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalLeaderboardSharesWon?: InputMaybe<Scalars['BigInt']['input']>;\n  totalLeaderboardSharesWon_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalLeaderboardSharesWon_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalLeaderboardSharesWon_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalLeaderboardSharesWon_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalLeaderboardSharesWon_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalLeaderboardSharesWon_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalLeaderboardSharesWon_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n};\n\nexport enum LeaderboardAffiliateUserToken_OrderBy {\n  Affiliate = 'affiliate',\n  AffiliateBetCount = 'affiliate__betCount',\n  AffiliateBetTxnCount = 'affiliate__betTxnCount',\n  AffiliateFirstBetTimestamp = 'affiliate__firstBetTimestamp',\n  AffiliateId = 'affiliate__id',\n  AffiliateLastBetTimestamp = 'affiliate__lastBetTimestamp',\n  AffiliateSeatCount = 'affiliate__seatCount',\n  AffiliateTotalFreebetCount = 'affiliate__totalFreebetCount',\n  AffiliateTotalLeaderboards = 'affiliate__totalLeaderboards',\n  AffiliateUserCount = 'affiliate__userCount',\n  AffiliateWagerAndJoinTxnCount = 'affiliate__wagerAndJoinTxnCount',\n  AffiliateWinSeatCount = 'affiliate__winSeatCount',\n  AffiliateWinTxnCount = 'affiliate__winTxnCount',\n  Id = 'id',\n  LeaderboardAffiliateToken = 'leaderboardAffiliateToken',\n  LeaderboardAffiliateTokenId = 'leaderboardAffiliateToken__id',\n  LeaderboardAffiliateTokenTotalLeaderboards = 'leaderboardAffiliateToken__totalLeaderboards',\n  LeaderboardAffiliateTokenTotalSharesClaimed = 'leaderboardAffiliateToken__totalSharesClaimed',\n  LeaderboardAffiliateTokenTotalSharesDistributed = 'leaderboardAffiliateToken__totalSharesDistributed',\n  LeaderboardAffiliateUser = 'leaderboardAffiliateUser',\n  LeaderboardAffiliateUserId = 'leaderboardAffiliateUser__id',\n  LeaderboardAffiliateUserTotalLeaderboardsWonCount = 'leaderboardAffiliateUser__totalLeaderboardsWonCount',\n  TotalLeaderboardSharesClaimed = 'totalLeaderboardSharesClaimed',\n  TotalLeaderboardSharesWon = 'totalLeaderboardSharesWon'\n}\n\nexport type LeaderboardAffiliateUser_Filter = {\n  /** Filter for the block changed event. */\n  _change_block?: InputMaybe<BlockChangedFilter>;\n  affiliate?: InputMaybe<Scalars['String']['input']>;\n  affiliate_?: InputMaybe<Affiliate_Filter>;\n  affiliate_contains?: InputMaybe<Scalars['String']['input']>;\n  affiliate_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_ends_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_gt?: InputMaybe<Scalars['String']['input']>;\n  affiliate_gte?: InputMaybe<Scalars['String']['input']>;\n  affiliate_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  affiliate_lt?: InputMaybe<Scalars['String']['input']>;\n  affiliate_lte?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_contains?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  affiliate_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_starts_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  and?: InputMaybe<Array<InputMaybe<LeaderboardAffiliateUser_Filter>>>;\n  id?: InputMaybe<Scalars['ID']['input']>;\n  id_gt?: InputMaybe<Scalars['ID']['input']>;\n  id_gte?: InputMaybe<Scalars['ID']['input']>;\n  id_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  id_lt?: InputMaybe<Scalars['ID']['input']>;\n  id_lte?: InputMaybe<Scalars['ID']['input']>;\n  id_not?: InputMaybe<Scalars['ID']['input']>;\n  id_not_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  leaderboardAffiliateUserTokens_?: InputMaybe<LeaderboardAffiliateUserToken_Filter>;\n  or?: InputMaybe<Array<InputMaybe<LeaderboardAffiliateUser_Filter>>>;\n  totalLeaderboardsWonCount?: InputMaybe<Scalars['BigInt']['input']>;\n  totalLeaderboardsWonCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalLeaderboardsWonCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalLeaderboardsWonCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalLeaderboardsWonCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalLeaderboardsWonCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalLeaderboardsWonCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalLeaderboardsWonCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  user?: InputMaybe<Scalars['String']['input']>;\n  user_?: InputMaybe<User_Filter>;\n  user_contains?: InputMaybe<Scalars['String']['input']>;\n  user_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_ends_with?: InputMaybe<Scalars['String']['input']>;\n  user_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_gt?: InputMaybe<Scalars['String']['input']>;\n  user_gte?: InputMaybe<Scalars['String']['input']>;\n  user_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  user_lt?: InputMaybe<Scalars['String']['input']>;\n  user_lte?: InputMaybe<Scalars['String']['input']>;\n  user_not?: InputMaybe<Scalars['String']['input']>;\n  user_not_contains?: InputMaybe<Scalars['String']['input']>;\n  user_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  user_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  user_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  user_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_starts_with?: InputMaybe<Scalars['String']['input']>;\n  user_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport enum LeaderboardAffiliateUser_OrderBy {\n  Affiliate = 'affiliate',\n  AffiliateBetCount = 'affiliate__betCount',\n  AffiliateBetTxnCount = 'affiliate__betTxnCount',\n  AffiliateFirstBetTimestamp = 'affiliate__firstBetTimestamp',\n  AffiliateId = 'affiliate__id',\n  AffiliateLastBetTimestamp = 'affiliate__lastBetTimestamp',\n  AffiliateSeatCount = 'affiliate__seatCount',\n  AffiliateTotalFreebetCount = 'affiliate__totalFreebetCount',\n  AffiliateTotalLeaderboards = 'affiliate__totalLeaderboards',\n  AffiliateUserCount = 'affiliate__userCount',\n  AffiliateWagerAndJoinTxnCount = 'affiliate__wagerAndJoinTxnCount',\n  AffiliateWinSeatCount = 'affiliate__winSeatCount',\n  AffiliateWinTxnCount = 'affiliate__winTxnCount',\n  Id = 'id',\n  LeaderboardAffiliateUserTokens = 'leaderboardAffiliateUserTokens',\n  TotalLeaderboardsWonCount = 'totalLeaderboardsWonCount',\n  User = 'user',\n  UserBetCount = 'user__betCount',\n  UserBetTxnCount = 'user__betTxnCount',\n  UserConsumedLinkVrfFees = 'user__consumedLinkVRFFees',\n  UserConsumedNativeVrfFees = 'user__consumedNativeVRFFees',\n  UserFirstBetTimestamp = 'user__firstBetTimestamp',\n  UserId = 'user__id',\n  UserLastBetTimestamp = 'user__lastBetTimestamp',\n  UserMaxMultiplier = 'user__maxMultiplier',\n  UserPvpMaxMultiplier = 'user__pvpMaxMultiplier',\n  UserSeatCount = 'user__seatCount',\n  UserTotalChargedVrfFees = 'user__totalChargedVRFFees',\n  UserWagerAndJoinTxnCount = 'user__wagerAndJoinTxnCount',\n  UserWinSeatCount = 'user__winSeatCount',\n  UserWinTxnCount = 'user__winTxnCount'\n}\n\nexport enum LeaderboardStatus {\n  Canceled = 'Canceled',\n  Created = 'Created',\n  Finalized = 'Finalized'\n}\n\nexport type LeaderboardToken = {\n  __typename?: 'LeaderboardToken';\n  decimals: Scalars['Int']['output'];\n  id: Scalars['Bytes']['output'];\n  leaderboardAffiliatedTokens: Array<LeaderboardAffiliateToken>;\n  leaderboards: Array<Leaderboard>;\n  name: Scalars['String']['output'];\n  symbol: Scalars['String']['output'];\n};\n\n\nexport type LeaderboardTokenLeaderboardAffiliatedTokensArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<LeaderboardAffiliateToken_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<LeaderboardAffiliateToken_Filter>;\n};\n\n\nexport type LeaderboardTokenLeaderboardsArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<Leaderboard_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<Leaderboard_Filter>;\n};\n\nexport type LeaderboardToken_Filter = {\n  /** Filter for the block changed event. */\n  _change_block?: InputMaybe<BlockChangedFilter>;\n  and?: InputMaybe<Array<InputMaybe<LeaderboardToken_Filter>>>;\n  decimals?: InputMaybe<Scalars['Int']['input']>;\n  decimals_gt?: InputMaybe<Scalars['Int']['input']>;\n  decimals_gte?: InputMaybe<Scalars['Int']['input']>;\n  decimals_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  decimals_lt?: InputMaybe<Scalars['Int']['input']>;\n  decimals_lte?: InputMaybe<Scalars['Int']['input']>;\n  decimals_not?: InputMaybe<Scalars['Int']['input']>;\n  decimals_not_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  id?: InputMaybe<Scalars['Bytes']['input']>;\n  id_contains?: InputMaybe<Scalars['Bytes']['input']>;\n  id_gt?: InputMaybe<Scalars['Bytes']['input']>;\n  id_gte?: InputMaybe<Scalars['Bytes']['input']>;\n  id_in?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  id_lt?: InputMaybe<Scalars['Bytes']['input']>;\n  id_lte?: InputMaybe<Scalars['Bytes']['input']>;\n  id_not?: InputMaybe<Scalars['Bytes']['input']>;\n  id_not_contains?: InputMaybe<Scalars['Bytes']['input']>;\n  id_not_in?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  leaderboardAffiliatedTokens_?: InputMaybe<LeaderboardAffiliateToken_Filter>;\n  leaderboards_?: InputMaybe<Leaderboard_Filter>;\n  name?: InputMaybe<Scalars['String']['input']>;\n  name_contains?: InputMaybe<Scalars['String']['input']>;\n  name_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  name_ends_with?: InputMaybe<Scalars['String']['input']>;\n  name_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  name_gt?: InputMaybe<Scalars['String']['input']>;\n  name_gte?: InputMaybe<Scalars['String']['input']>;\n  name_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  name_lt?: InputMaybe<Scalars['String']['input']>;\n  name_lte?: InputMaybe<Scalars['String']['input']>;\n  name_not?: InputMaybe<Scalars['String']['input']>;\n  name_not_contains?: InputMaybe<Scalars['String']['input']>;\n  name_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  name_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  name_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  name_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  name_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  name_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  name_starts_with?: InputMaybe<Scalars['String']['input']>;\n  name_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  or?: InputMaybe<Array<InputMaybe<LeaderboardToken_Filter>>>;\n  symbol?: InputMaybe<Scalars['String']['input']>;\n  symbol_contains?: InputMaybe<Scalars['String']['input']>;\n  symbol_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  symbol_ends_with?: InputMaybe<Scalars['String']['input']>;\n  symbol_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  symbol_gt?: InputMaybe<Scalars['String']['input']>;\n  symbol_gte?: InputMaybe<Scalars['String']['input']>;\n  symbol_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  symbol_lt?: InputMaybe<Scalars['String']['input']>;\n  symbol_lte?: InputMaybe<Scalars['String']['input']>;\n  symbol_not?: InputMaybe<Scalars['String']['input']>;\n  symbol_not_contains?: InputMaybe<Scalars['String']['input']>;\n  symbol_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  symbol_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  symbol_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  symbol_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  symbol_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  symbol_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  symbol_starts_with?: InputMaybe<Scalars['String']['input']>;\n  symbol_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport enum LeaderboardToken_OrderBy {\n  Decimals = 'decimals',\n  Id = 'id',\n  LeaderboardAffiliatedTokens = 'leaderboardAffiliatedTokens',\n  Leaderboards = 'leaderboards',\n  Name = 'name',\n  Symbol = 'symbol'\n}\n\nexport type Leaderboard_Filter = {\n  /** Filter for the block changed event. */\n  _change_block?: InputMaybe<BlockChangedFilter>;\n  affiliate?: InputMaybe<Scalars['String']['input']>;\n  affiliate_?: InputMaybe<Affiliate_Filter>;\n  affiliate_contains?: InputMaybe<Scalars['String']['input']>;\n  affiliate_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_ends_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_gt?: InputMaybe<Scalars['String']['input']>;\n  affiliate_gte?: InputMaybe<Scalars['String']['input']>;\n  affiliate_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  affiliate_lt?: InputMaybe<Scalars['String']['input']>;\n  affiliate_lte?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_contains?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  affiliate_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_starts_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  and?: InputMaybe<Array<InputMaybe<Leaderboard_Filter>>>;\n  claimedShares?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  claimedShares_contains?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  claimedShares_contains_nocase?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  claimedShares_not?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  claimedShares_not_contains?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  claimedShares_not_contains_nocase?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  endTimestamp?: InputMaybe<Scalars['BigInt']['input']>;\n  endTimestamp_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  endTimestamp_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  endTimestamp_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  endTimestamp_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  endTimestamp_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  endTimestamp_not?: InputMaybe<Scalars['BigInt']['input']>;\n  endTimestamp_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  expirationTime?: InputMaybe<Scalars['BigInt']['input']>;\n  expirationTime_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  expirationTime_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  expirationTime_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  expirationTime_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  expirationTime_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  expirationTime_not?: InputMaybe<Scalars['BigInt']['input']>;\n  expirationTime_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  id?: InputMaybe<Scalars['ID']['input']>;\n  id_gt?: InputMaybe<Scalars['ID']['input']>;\n  id_gte?: InputMaybe<Scalars['ID']['input']>;\n  id_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  id_lt?: InputMaybe<Scalars['ID']['input']>;\n  id_lte?: InputMaybe<Scalars['ID']['input']>;\n  id_not?: InputMaybe<Scalars['ID']['input']>;\n  id_not_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  leaderboardAffiliateToken?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateToken_?: InputMaybe<LeaderboardAffiliateToken_Filter>;\n  leaderboardAffiliateToken_contains?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateToken_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateToken_ends_with?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateToken_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateToken_gt?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateToken_gte?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateToken_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  leaderboardAffiliateToken_lt?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateToken_lte?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateToken_not?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateToken_not_contains?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateToken_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateToken_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateToken_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateToken_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  leaderboardAffiliateToken_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateToken_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateToken_starts_with?: InputMaybe<Scalars['String']['input']>;\n  leaderboardAffiliateToken_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  or?: InputMaybe<Array<InputMaybe<Leaderboard_Filter>>>;\n  shares?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  shares_contains?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  shares_contains_nocase?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  shares_not?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  shares_not_contains?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  shares_not_contains_nocase?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  status?: InputMaybe<LeaderboardStatus>;\n  status_in?: InputMaybe<Array<LeaderboardStatus>>;\n  status_not?: InputMaybe<LeaderboardStatus>;\n  status_not_in?: InputMaybe<Array<LeaderboardStatus>>;\n  token?: InputMaybe<Scalars['String']['input']>;\n  token_?: InputMaybe<LeaderboardToken_Filter>;\n  token_contains?: InputMaybe<Scalars['String']['input']>;\n  token_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_ends_with?: InputMaybe<Scalars['String']['input']>;\n  token_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_gt?: InputMaybe<Scalars['String']['input']>;\n  token_gte?: InputMaybe<Scalars['String']['input']>;\n  token_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  token_lt?: InputMaybe<Scalars['String']['input']>;\n  token_lte?: InputMaybe<Scalars['String']['input']>;\n  token_not?: InputMaybe<Scalars['String']['input']>;\n  token_not_contains?: InputMaybe<Scalars['String']['input']>;\n  token_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  token_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  token_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  token_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_starts_with?: InputMaybe<Scalars['String']['input']>;\n  token_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  totalClaimedShares?: InputMaybe<Scalars['BigInt']['input']>;\n  totalClaimedShares_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalClaimedShares_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalClaimedShares_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalClaimedShares_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalClaimedShares_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalClaimedShares_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalClaimedShares_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalShares?: InputMaybe<Scalars['BigInt']['input']>;\n  totalShares_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalShares_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalShares_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalShares_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalShares_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalShares_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalShares_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalUnclaimedShares?: InputMaybe<Scalars['BigInt']['input']>;\n  totalUnclaimedShares_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalUnclaimedShares_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalUnclaimedShares_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalUnclaimedShares_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalUnclaimedShares_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalUnclaimedShares_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalUnclaimedShares_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  winners?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  winners_contains?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  winners_contains_nocase?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  winners_not?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  winners_not_contains?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  winners_not_contains_nocase?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n};\n\nexport enum Leaderboard_OrderBy {\n  Affiliate = 'affiliate',\n  AffiliateBetCount = 'affiliate__betCount',\n  AffiliateBetTxnCount = 'affiliate__betTxnCount',\n  AffiliateFirstBetTimestamp = 'affiliate__firstBetTimestamp',\n  AffiliateId = 'affiliate__id',\n  AffiliateLastBetTimestamp = 'affiliate__lastBetTimestamp',\n  AffiliateSeatCount = 'affiliate__seatCount',\n  AffiliateTotalFreebetCount = 'affiliate__totalFreebetCount',\n  AffiliateTotalLeaderboards = 'affiliate__totalLeaderboards',\n  AffiliateUserCount = 'affiliate__userCount',\n  AffiliateWagerAndJoinTxnCount = 'affiliate__wagerAndJoinTxnCount',\n  AffiliateWinSeatCount = 'affiliate__winSeatCount',\n  AffiliateWinTxnCount = 'affiliate__winTxnCount',\n  ClaimedShares = 'claimedShares',\n  EndTimestamp = 'endTimestamp',\n  ExpirationTime = 'expirationTime',\n  Id = 'id',\n  LeaderboardAffiliateToken = 'leaderboardAffiliateToken',\n  LeaderboardAffiliateTokenId = 'leaderboardAffiliateToken__id',\n  LeaderboardAffiliateTokenTotalLeaderboards = 'leaderboardAffiliateToken__totalLeaderboards',\n  LeaderboardAffiliateTokenTotalSharesClaimed = 'leaderboardAffiliateToken__totalSharesClaimed',\n  LeaderboardAffiliateTokenTotalSharesDistributed = 'leaderboardAffiliateToken__totalSharesDistributed',\n  Shares = 'shares',\n  Status = 'status',\n  Token = 'token',\n  TokenDecimals = 'token__decimals',\n  TokenId = 'token__id',\n  TokenName = 'token__name',\n  TokenSymbol = 'token__symbol',\n  TotalClaimedShares = 'totalClaimedShares',\n  TotalShares = 'totalShares',\n  TotalUnclaimedShares = 'totalUnclaimedShares',\n  Winners = 'winners'\n}\n\n/** Defines the order direction, either ascending or descending */\nexport enum OrderDirection {\n  Asc = 'asc',\n  Desc = 'desc'\n}\n\nexport type PvPAffiliateGameToken = {\n  __typename?: 'PvPAffiliateGameToken';\n  affiliate: Affiliate;\n  affiliateToken: PvPAffiliateToken;\n  game: Scalars['String']['output'];\n  houseEdge?: Maybe<Scalars['Int']['output']>;\n  id: Scalars['ID']['output'];\n  seatCount: Scalars['BigInt']['output'];\n  totalEarned: Scalars['BigInt']['output'];\n  totalPayout: Scalars['BigInt']['output'];\n  totalWagered: Scalars['BigInt']['output'];\n  wagerAndJoinTxnCount: Scalars['BigInt']['output'];\n  winSeatCount: Scalars['BigInt']['output'];\n};\n\nexport type PvPAffiliateGameToken_Filter = {\n  /** Filter for the block changed event. */\n  _change_block?: InputMaybe<BlockChangedFilter>;\n  affiliate?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_?: InputMaybe<PvPAffiliateToken_Filter>;\n  affiliateToken_contains?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_ends_with?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_gt?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_gte?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  affiliateToken_lt?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_lte?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_not?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_not_contains?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  affiliateToken_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_starts_with?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_?: InputMaybe<Affiliate_Filter>;\n  affiliate_contains?: InputMaybe<Scalars['String']['input']>;\n  affiliate_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_ends_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_gt?: InputMaybe<Scalars['String']['input']>;\n  affiliate_gte?: InputMaybe<Scalars['String']['input']>;\n  affiliate_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  affiliate_lt?: InputMaybe<Scalars['String']['input']>;\n  affiliate_lte?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_contains?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  affiliate_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_starts_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  and?: InputMaybe<Array<InputMaybe<PvPAffiliateGameToken_Filter>>>;\n  game?: InputMaybe<Scalars['String']['input']>;\n  game_contains?: InputMaybe<Scalars['String']['input']>;\n  game_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  game_ends_with?: InputMaybe<Scalars['String']['input']>;\n  game_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  game_gt?: InputMaybe<Scalars['String']['input']>;\n  game_gte?: InputMaybe<Scalars['String']['input']>;\n  game_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  game_lt?: InputMaybe<Scalars['String']['input']>;\n  game_lte?: InputMaybe<Scalars['String']['input']>;\n  game_not?: InputMaybe<Scalars['String']['input']>;\n  game_not_contains?: InputMaybe<Scalars['String']['input']>;\n  game_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  game_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  game_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  game_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  game_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  game_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  game_starts_with?: InputMaybe<Scalars['String']['input']>;\n  game_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  houseEdge?: InputMaybe<Scalars['Int']['input']>;\n  houseEdge_gt?: InputMaybe<Scalars['Int']['input']>;\n  houseEdge_gte?: InputMaybe<Scalars['Int']['input']>;\n  houseEdge_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  houseEdge_lt?: InputMaybe<Scalars['Int']['input']>;\n  houseEdge_lte?: InputMaybe<Scalars['Int']['input']>;\n  houseEdge_not?: InputMaybe<Scalars['Int']['input']>;\n  houseEdge_not_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  id?: InputMaybe<Scalars['ID']['input']>;\n  id_gt?: InputMaybe<Scalars['ID']['input']>;\n  id_gte?: InputMaybe<Scalars['ID']['input']>;\n  id_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  id_lt?: InputMaybe<Scalars['ID']['input']>;\n  id_lte?: InputMaybe<Scalars['ID']['input']>;\n  id_not?: InputMaybe<Scalars['ID']['input']>;\n  id_not_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  or?: InputMaybe<Array<InputMaybe<PvPAffiliateGameToken_Filter>>>;\n  seatCount?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  seatCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalEarned?: InputMaybe<Scalars['BigInt']['input']>;\n  totalEarned_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalEarned_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalEarned_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalEarned_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalEarned_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalEarned_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalEarned_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalPayout?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalPayout_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalWagered?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalWagered_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  wagerAndJoinTxnCount?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  wagerAndJoinTxnCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  winSeatCount?: InputMaybe<Scalars['BigInt']['input']>;\n  winSeatCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  winSeatCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  winSeatCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  winSeatCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  winSeatCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  winSeatCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  winSeatCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n};\n\nexport enum PvPAffiliateGameToken_OrderBy {\n  Affiliate = 'affiliate',\n  AffiliateToken = 'affiliateToken',\n  AffiliateTokenId = 'affiliateToken__id',\n  AffiliateTokenSeatCount = 'affiliateToken__seatCount',\n  AffiliateTokenTotalEarned = 'affiliateToken__totalEarned',\n  AffiliateTokenTotalPayout = 'affiliateToken__totalPayout',\n  AffiliateTokenTotalWagered = 'affiliateToken__totalWagered',\n  AffiliateTokenWagerAndJoinTxnCount = 'affiliateToken__wagerAndJoinTxnCount',\n  AffiliateTokenWinSeatCount = 'affiliateToken__winSeatCount',\n  AffiliateBetCount = 'affiliate__betCount',\n  AffiliateBetTxnCount = 'affiliate__betTxnCount',\n  AffiliateFirstBetTimestamp = 'affiliate__firstBetTimestamp',\n  AffiliateId = 'affiliate__id',\n  AffiliateLastBetTimestamp = 'affiliate__lastBetTimestamp',\n  AffiliateSeatCount = 'affiliate__seatCount',\n  AffiliateTotalFreebetCount = 'affiliate__totalFreebetCount',\n  AffiliateTotalLeaderboards = 'affiliate__totalLeaderboards',\n  AffiliateUserCount = 'affiliate__userCount',\n  AffiliateWagerAndJoinTxnCount = 'affiliate__wagerAndJoinTxnCount',\n  AffiliateWinSeatCount = 'affiliate__winSeatCount',\n  AffiliateWinTxnCount = 'affiliate__winTxnCount',\n  Game = 'game',\n  HouseEdge = 'houseEdge',\n  Id = 'id',\n  SeatCount = 'seatCount',\n  TotalEarned = 'totalEarned',\n  TotalPayout = 'totalPayout',\n  TotalWagered = 'totalWagered',\n  WagerAndJoinTxnCount = 'wagerAndJoinTxnCount',\n  WinSeatCount = 'winSeatCount'\n}\n\nexport type PvPAffiliateToken = {\n  __typename?: 'PvPAffiliateToken';\n  affiliate: Affiliate;\n  affiliateGameTokens: Array<PvPAffiliateGameToken>;\n  affiliateUserTokens: Array<PvPAffiliateUserToken>;\n  id: Scalars['ID']['output'];\n  seatCount: Scalars['BigInt']['output'];\n  token: PvPToken;\n  totalEarned: Scalars['BigInt']['output'];\n  totalPayout: Scalars['BigInt']['output'];\n  totalWagered: Scalars['BigInt']['output'];\n  wagerAndJoinTxnCount: Scalars['BigInt']['output'];\n  winSeatCount: Scalars['BigInt']['output'];\n};\n\n\nexport type PvPAffiliateTokenAffiliateGameTokensArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<PvPAffiliateGameToken_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<PvPAffiliateGameToken_Filter>;\n};\n\n\nexport type PvPAffiliateTokenAffiliateUserTokensArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<PvPAffiliateUserToken_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<PvPAffiliateUserToken_Filter>;\n};\n\nexport type PvPAffiliateToken_Filter = {\n  /** Filter for the block changed event. */\n  _change_block?: InputMaybe<BlockChangedFilter>;\n  affiliate?: InputMaybe<Scalars['String']['input']>;\n  affiliateGameTokens_?: InputMaybe<PvPAffiliateGameToken_Filter>;\n  affiliateUserTokens_?: InputMaybe<PvPAffiliateUserToken_Filter>;\n  affiliate_?: InputMaybe<Affiliate_Filter>;\n  affiliate_contains?: InputMaybe<Scalars['String']['input']>;\n  affiliate_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_ends_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_gt?: InputMaybe<Scalars['String']['input']>;\n  affiliate_gte?: InputMaybe<Scalars['String']['input']>;\n  affiliate_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  affiliate_lt?: InputMaybe<Scalars['String']['input']>;\n  affiliate_lte?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_contains?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  affiliate_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_starts_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  and?: InputMaybe<Array<InputMaybe<PvPAffiliateToken_Filter>>>;\n  id?: InputMaybe<Scalars['ID']['input']>;\n  id_gt?: InputMaybe<Scalars['ID']['input']>;\n  id_gte?: InputMaybe<Scalars['ID']['input']>;\n  id_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  id_lt?: InputMaybe<Scalars['ID']['input']>;\n  id_lte?: InputMaybe<Scalars['ID']['input']>;\n  id_not?: InputMaybe<Scalars['ID']['input']>;\n  id_not_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  or?: InputMaybe<Array<InputMaybe<PvPAffiliateToken_Filter>>>;\n  seatCount?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  seatCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  token?: InputMaybe<Scalars['String']['input']>;\n  token_?: InputMaybe<PvPToken_Filter>;\n  token_contains?: InputMaybe<Scalars['String']['input']>;\n  token_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_ends_with?: InputMaybe<Scalars['String']['input']>;\n  token_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_gt?: InputMaybe<Scalars['String']['input']>;\n  token_gte?: InputMaybe<Scalars['String']['input']>;\n  token_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  token_lt?: InputMaybe<Scalars['String']['input']>;\n  token_lte?: InputMaybe<Scalars['String']['input']>;\n  token_not?: InputMaybe<Scalars['String']['input']>;\n  token_not_contains?: InputMaybe<Scalars['String']['input']>;\n  token_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  token_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  token_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  token_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_starts_with?: InputMaybe<Scalars['String']['input']>;\n  token_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  totalEarned?: InputMaybe<Scalars['BigInt']['input']>;\n  totalEarned_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalEarned_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalEarned_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalEarned_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalEarned_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalEarned_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalEarned_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalPayout?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalPayout_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalWagered?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalWagered_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  wagerAndJoinTxnCount?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  wagerAndJoinTxnCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  winSeatCount?: InputMaybe<Scalars['BigInt']['input']>;\n  winSeatCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  winSeatCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  winSeatCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  winSeatCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  winSeatCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  winSeatCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  winSeatCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n};\n\nexport enum PvPAffiliateToken_OrderBy {\n  Affiliate = 'affiliate',\n  AffiliateGameTokens = 'affiliateGameTokens',\n  AffiliateUserTokens = 'affiliateUserTokens',\n  AffiliateBetCount = 'affiliate__betCount',\n  AffiliateBetTxnCount = 'affiliate__betTxnCount',\n  AffiliateFirstBetTimestamp = 'affiliate__firstBetTimestamp',\n  AffiliateId = 'affiliate__id',\n  AffiliateLastBetTimestamp = 'affiliate__lastBetTimestamp',\n  AffiliateSeatCount = 'affiliate__seatCount',\n  AffiliateTotalFreebetCount = 'affiliate__totalFreebetCount',\n  AffiliateTotalLeaderboards = 'affiliate__totalLeaderboards',\n  AffiliateUserCount = 'affiliate__userCount',\n  AffiliateWagerAndJoinTxnCount = 'affiliate__wagerAndJoinTxnCount',\n  AffiliateWinSeatCount = 'affiliate__winSeatCount',\n  AffiliateWinTxnCount = 'affiliate__winTxnCount',\n  Id = 'id',\n  SeatCount = 'seatCount',\n  Token = 'token',\n  TokenAffiliateAmount = 'token__affiliateAmount',\n  TokenDecimals = 'token__decimals',\n  TokenDividendAmount = 'token__dividendAmount',\n  TokenId = 'token__id',\n  TokenInitiatorAmount = 'token__initiatorAmount',\n  TokenName = 'token__name',\n  TokenSeatCount = 'token__seatCount',\n  TokenSymbol = 'token__symbol',\n  TokenTeamAmount = 'token__teamAmount',\n  TokenTotalPayout = 'token__totalPayout',\n  TokenTotalWagered = 'token__totalWagered',\n  TokenTreasuryAmount = 'token__treasuryAmount',\n  TokenUniqueBets = 'token__uniqueBets',\n  TokenUserCount = 'token__userCount',\n  TokenWagerAndJoinTxnCount = 'token__wagerAndJoinTxnCount',\n  TotalEarned = 'totalEarned',\n  TotalPayout = 'totalPayout',\n  TotalWagered = 'totalWagered',\n  WagerAndJoinTxnCount = 'wagerAndJoinTxnCount',\n  WinSeatCount = 'winSeatCount'\n}\n\nexport type PvPAffiliateUserToken = {\n  __typename?: 'PvPAffiliateUserToken';\n  affiliate: Affiliate;\n  affiliateToken: PvPAffiliateToken;\n  affiliateUser: AffiliateUser;\n  id: Scalars['ID']['output'];\n  seatCount: Scalars['BigInt']['output'];\n  totalPayout: Scalars['BigInt']['output'];\n  totalWagered: Scalars['BigInt']['output'];\n  wagerAndJoinTxnCount: Scalars['BigInt']['output'];\n  winSeatCount: Scalars['BigInt']['output'];\n};\n\nexport type PvPAffiliateUserToken_Filter = {\n  /** Filter for the block changed event. */\n  _change_block?: InputMaybe<BlockChangedFilter>;\n  affiliate?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_?: InputMaybe<PvPAffiliateToken_Filter>;\n  affiliateToken_contains?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_ends_with?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_gt?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_gte?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  affiliateToken_lt?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_lte?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_not?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_not_contains?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  affiliateToken_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_starts_with?: InputMaybe<Scalars['String']['input']>;\n  affiliateToken_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliateUser?: InputMaybe<Scalars['String']['input']>;\n  affiliateUser_?: InputMaybe<AffiliateUser_Filter>;\n  affiliateUser_contains?: InputMaybe<Scalars['String']['input']>;\n  affiliateUser_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliateUser_ends_with?: InputMaybe<Scalars['String']['input']>;\n  affiliateUser_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliateUser_gt?: InputMaybe<Scalars['String']['input']>;\n  affiliateUser_gte?: InputMaybe<Scalars['String']['input']>;\n  affiliateUser_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  affiliateUser_lt?: InputMaybe<Scalars['String']['input']>;\n  affiliateUser_lte?: InputMaybe<Scalars['String']['input']>;\n  affiliateUser_not?: InputMaybe<Scalars['String']['input']>;\n  affiliateUser_not_contains?: InputMaybe<Scalars['String']['input']>;\n  affiliateUser_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliateUser_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  affiliateUser_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliateUser_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  affiliateUser_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  affiliateUser_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliateUser_starts_with?: InputMaybe<Scalars['String']['input']>;\n  affiliateUser_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_?: InputMaybe<Affiliate_Filter>;\n  affiliate_contains?: InputMaybe<Scalars['String']['input']>;\n  affiliate_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_ends_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_gt?: InputMaybe<Scalars['String']['input']>;\n  affiliate_gte?: InputMaybe<Scalars['String']['input']>;\n  affiliate_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  affiliate_lt?: InputMaybe<Scalars['String']['input']>;\n  affiliate_lte?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_contains?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  affiliate_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_starts_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  and?: InputMaybe<Array<InputMaybe<PvPAffiliateUserToken_Filter>>>;\n  id?: InputMaybe<Scalars['ID']['input']>;\n  id_gt?: InputMaybe<Scalars['ID']['input']>;\n  id_gte?: InputMaybe<Scalars['ID']['input']>;\n  id_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  id_lt?: InputMaybe<Scalars['ID']['input']>;\n  id_lte?: InputMaybe<Scalars['ID']['input']>;\n  id_not?: InputMaybe<Scalars['ID']['input']>;\n  id_not_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  or?: InputMaybe<Array<InputMaybe<PvPAffiliateUserToken_Filter>>>;\n  seatCount?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  seatCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalPayout?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalPayout_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalWagered?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalWagered_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  wagerAndJoinTxnCount?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  wagerAndJoinTxnCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  winSeatCount?: InputMaybe<Scalars['BigInt']['input']>;\n  winSeatCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  winSeatCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  winSeatCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  winSeatCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  winSeatCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  winSeatCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  winSeatCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n};\n\nexport enum PvPAffiliateUserToken_OrderBy {\n  Affiliate = 'affiliate',\n  AffiliateToken = 'affiliateToken',\n  AffiliateTokenId = 'affiliateToken__id',\n  AffiliateTokenSeatCount = 'affiliateToken__seatCount',\n  AffiliateTokenTotalEarned = 'affiliateToken__totalEarned',\n  AffiliateTokenTotalPayout = 'affiliateToken__totalPayout',\n  AffiliateTokenTotalWagered = 'affiliateToken__totalWagered',\n  AffiliateTokenWagerAndJoinTxnCount = 'affiliateToken__wagerAndJoinTxnCount',\n  AffiliateTokenWinSeatCount = 'affiliateToken__winSeatCount',\n  AffiliateUser = 'affiliateUser',\n  AffiliateUserBetCount = 'affiliateUser__betCount',\n  AffiliateUserBetTxnCount = 'affiliateUser__betTxnCount',\n  AffiliateUserFirstBetTimestamp = 'affiliateUser__firstBetTimestamp',\n  AffiliateUserFirstFreebetTimestamp = 'affiliateUser__firstFreebetTimestamp',\n  AffiliateUserId = 'affiliateUser__id',\n  AffiliateUserIsFirstBetAFreebet = 'affiliateUser__isFirstBetAFreebet',\n  AffiliateUserLastBetTimestamp = 'affiliateUser__lastBetTimestamp',\n  AffiliateUserLastFreebetTimestamp = 'affiliateUser__lastFreebetTimestamp',\n  AffiliateUserSeatCount = 'affiliateUser__seatCount',\n  AffiliateUserTotalFreebetCount = 'affiliateUser__totalFreebetCount',\n  AffiliateUserWagerAndJoinTxnCount = 'affiliateUser__wagerAndJoinTxnCount',\n  AffiliateUserWinSeatCount = 'affiliateUser__winSeatCount',\n  AffiliateUserWinTxnCount = 'affiliateUser__winTxnCount',\n  AffiliateBetCount = 'affiliate__betCount',\n  AffiliateBetTxnCount = 'affiliate__betTxnCount',\n  AffiliateFirstBetTimestamp = 'affiliate__firstBetTimestamp',\n  AffiliateId = 'affiliate__id',\n  AffiliateLastBetTimestamp = 'affiliate__lastBetTimestamp',\n  AffiliateSeatCount = 'affiliate__seatCount',\n  AffiliateTotalFreebetCount = 'affiliate__totalFreebetCount',\n  AffiliateTotalLeaderboards = 'affiliate__totalLeaderboards',\n  AffiliateUserCount = 'affiliate__userCount',\n  AffiliateWagerAndJoinTxnCount = 'affiliate__wagerAndJoinTxnCount',\n  AffiliateWinSeatCount = 'affiliate__winSeatCount',\n  AffiliateWinTxnCount = 'affiliate__winTxnCount',\n  Id = 'id',\n  SeatCount = 'seatCount',\n  TotalPayout = 'totalPayout',\n  TotalWagered = 'totalWagered',\n  WagerAndJoinTxnCount = 'wagerAndJoinTxnCount',\n  WinSeatCount = 'winSeatCount'\n}\n\nexport type PvPBet = {\n  __typename?: 'PvPBet';\n  affiliate: Affiliate;\n  betAmount: Scalars['BigInt']['output'];\n  betId: Scalars['BigInt']['output'];\n  betLaunchedTimestamp?: Maybe<Scalars['BigInt']['output']>;\n  betLaunchedTxnHash?: Maybe<Scalars['Bytes']['output']>;\n  betTimestamp: Scalars['BigInt']['output'];\n  canceled: Scalars['Boolean']['output'];\n  chargedVRFFees: Scalars['BigInt']['output'];\n  consumedLinkVRFFees?: Maybe<Scalars['BigInt']['output']>;\n  consumedNativeVRFFees?: Maybe<Scalars['BigInt']['output']>;\n  gameAddress: Scalars['Bytes']['output'];\n  gameId: Scalars['String']['output'];\n  gameToken: PvPGameToken;\n  houseEdge: Scalars['Int']['output'];\n  id: Scalars['ID']['output'];\n  joinTxns: Array<PvPGameJoinTransaction>;\n  opponents: Array<Scalars['Bytes']['output']>;\n  payout?: Maybe<Scalars['BigInt']['output']>;\n  pot: Scalars['BigInt']['output'];\n  refunded: Scalars['Boolean']['output'];\n  resolved: Scalars['Boolean']['output'];\n  rollTimestamp?: Maybe<Scalars['BigInt']['output']>;\n  rollTxnHash?: Maybe<Scalars['Bytes']['output']>;\n  seats: Array<Scalars['Bytes']['output']>;\n  user: User;\n  vrfRequest?: Maybe<PvPvrfRequest>;\n};\n\n\nexport type PvPBetJoinTxnsArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<PvPGameJoinTransaction_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<PvPGameJoinTransaction_Filter>;\n};\n\nexport type PvPBet_Filter = {\n  /** Filter for the block changed event. */\n  _change_block?: InputMaybe<BlockChangedFilter>;\n  affiliate?: InputMaybe<Scalars['String']['input']>;\n  affiliate_?: InputMaybe<Affiliate_Filter>;\n  affiliate_contains?: InputMaybe<Scalars['String']['input']>;\n  affiliate_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_ends_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_gt?: InputMaybe<Scalars['String']['input']>;\n  affiliate_gte?: InputMaybe<Scalars['String']['input']>;\n  affiliate_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  affiliate_lt?: InputMaybe<Scalars['String']['input']>;\n  affiliate_lte?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_contains?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  affiliate_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  affiliate_starts_with?: InputMaybe<Scalars['String']['input']>;\n  affiliate_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  and?: InputMaybe<Array<InputMaybe<PvPBet_Filter>>>;\n  betAmount?: InputMaybe<Scalars['BigInt']['input']>;\n  betAmount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  betAmount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  betAmount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betAmount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  betAmount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  betAmount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  betAmount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betId?: InputMaybe<Scalars['BigInt']['input']>;\n  betId_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  betId_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  betId_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betId_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  betId_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  betId_not?: InputMaybe<Scalars['BigInt']['input']>;\n  betId_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betLaunchedTimestamp?: InputMaybe<Scalars['BigInt']['input']>;\n  betLaunchedTimestamp_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  betLaunchedTimestamp_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  betLaunchedTimestamp_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betLaunchedTimestamp_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  betLaunchedTimestamp_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  betLaunchedTimestamp_not?: InputMaybe<Scalars['BigInt']['input']>;\n  betLaunchedTimestamp_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betLaunchedTxnHash?: InputMaybe<Scalars['Bytes']['input']>;\n  betLaunchedTxnHash_contains?: InputMaybe<Scalars['Bytes']['input']>;\n  betLaunchedTxnHash_gt?: InputMaybe<Scalars['Bytes']['input']>;\n  betLaunchedTxnHash_gte?: InputMaybe<Scalars['Bytes']['input']>;\n  betLaunchedTxnHash_in?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  betLaunchedTxnHash_lt?: InputMaybe<Scalars['Bytes']['input']>;\n  betLaunchedTxnHash_lte?: InputMaybe<Scalars['Bytes']['input']>;\n  betLaunchedTxnHash_not?: InputMaybe<Scalars['Bytes']['input']>;\n  betLaunchedTxnHash_not_contains?: InputMaybe<Scalars['Bytes']['input']>;\n  betLaunchedTxnHash_not_in?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  betTimestamp?: InputMaybe<Scalars['BigInt']['input']>;\n  betTimestamp_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  betTimestamp_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  betTimestamp_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betTimestamp_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  betTimestamp_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  betTimestamp_not?: InputMaybe<Scalars['BigInt']['input']>;\n  betTimestamp_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  canceled?: InputMaybe<Scalars['Boolean']['input']>;\n  canceled_in?: InputMaybe<Array<Scalars['Boolean']['input']>>;\n  canceled_not?: InputMaybe<Scalars['Boolean']['input']>;\n  canceled_not_in?: InputMaybe<Array<Scalars['Boolean']['input']>>;\n  chargedVRFFees?: InputMaybe<Scalars['BigInt']['input']>;\n  chargedVRFFees_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  chargedVRFFees_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  chargedVRFFees_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  chargedVRFFees_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  chargedVRFFees_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  chargedVRFFees_not?: InputMaybe<Scalars['BigInt']['input']>;\n  chargedVRFFees_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  consumedLinkVRFFees?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedLinkVRFFees_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedLinkVRFFees_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedLinkVRFFees_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  consumedLinkVRFFees_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedLinkVRFFees_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedLinkVRFFees_not?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedLinkVRFFees_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  consumedNativeVRFFees?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedNativeVRFFees_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedNativeVRFFees_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedNativeVRFFees_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  consumedNativeVRFFees_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedNativeVRFFees_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedNativeVRFFees_not?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedNativeVRFFees_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  gameAddress?: InputMaybe<Scalars['Bytes']['input']>;\n  gameAddress_contains?: InputMaybe<Scalars['Bytes']['input']>;\n  gameAddress_gt?: InputMaybe<Scalars['Bytes']['input']>;\n  gameAddress_gte?: InputMaybe<Scalars['Bytes']['input']>;\n  gameAddress_in?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  gameAddress_lt?: InputMaybe<Scalars['Bytes']['input']>;\n  gameAddress_lte?: InputMaybe<Scalars['Bytes']['input']>;\n  gameAddress_not?: InputMaybe<Scalars['Bytes']['input']>;\n  gameAddress_not_contains?: InputMaybe<Scalars['Bytes']['input']>;\n  gameAddress_not_in?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  gameId?: InputMaybe<Scalars['String']['input']>;\n  gameId_contains?: InputMaybe<Scalars['String']['input']>;\n  gameId_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameId_ends_with?: InputMaybe<Scalars['String']['input']>;\n  gameId_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameId_gt?: InputMaybe<Scalars['String']['input']>;\n  gameId_gte?: InputMaybe<Scalars['String']['input']>;\n  gameId_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  gameId_lt?: InputMaybe<Scalars['String']['input']>;\n  gameId_lte?: InputMaybe<Scalars['String']['input']>;\n  gameId_not?: InputMaybe<Scalars['String']['input']>;\n  gameId_not_contains?: InputMaybe<Scalars['String']['input']>;\n  gameId_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameId_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  gameId_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameId_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  gameId_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  gameId_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameId_starts_with?: InputMaybe<Scalars['String']['input']>;\n  gameId_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameToken?: InputMaybe<Scalars['String']['input']>;\n  gameToken_?: InputMaybe<PvPGameToken_Filter>;\n  gameToken_contains?: InputMaybe<Scalars['String']['input']>;\n  gameToken_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameToken_ends_with?: InputMaybe<Scalars['String']['input']>;\n  gameToken_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameToken_gt?: InputMaybe<Scalars['String']['input']>;\n  gameToken_gte?: InputMaybe<Scalars['String']['input']>;\n  gameToken_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  gameToken_lt?: InputMaybe<Scalars['String']['input']>;\n  gameToken_lte?: InputMaybe<Scalars['String']['input']>;\n  gameToken_not?: InputMaybe<Scalars['String']['input']>;\n  gameToken_not_contains?: InputMaybe<Scalars['String']['input']>;\n  gameToken_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameToken_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  gameToken_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameToken_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  gameToken_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  gameToken_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameToken_starts_with?: InputMaybe<Scalars['String']['input']>;\n  gameToken_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  houseEdge?: InputMaybe<Scalars['Int']['input']>;\n  houseEdge_gt?: InputMaybe<Scalars['Int']['input']>;\n  houseEdge_gte?: InputMaybe<Scalars['Int']['input']>;\n  houseEdge_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  houseEdge_lt?: InputMaybe<Scalars['Int']['input']>;\n  houseEdge_lte?: InputMaybe<Scalars['Int']['input']>;\n  houseEdge_not?: InputMaybe<Scalars['Int']['input']>;\n  houseEdge_not_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  id?: InputMaybe<Scalars['ID']['input']>;\n  id_gt?: InputMaybe<Scalars['ID']['input']>;\n  id_gte?: InputMaybe<Scalars['ID']['input']>;\n  id_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  id_lt?: InputMaybe<Scalars['ID']['input']>;\n  id_lte?: InputMaybe<Scalars['ID']['input']>;\n  id_not?: InputMaybe<Scalars['ID']['input']>;\n  id_not_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  joinTxns_?: InputMaybe<PvPGameJoinTransaction_Filter>;\n  opponents?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  opponents_contains?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  opponents_contains_nocase?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  opponents_not?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  opponents_not_contains?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  opponents_not_contains_nocase?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  or?: InputMaybe<Array<InputMaybe<PvPBet_Filter>>>;\n  payout?: InputMaybe<Scalars['BigInt']['input']>;\n  payout_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  payout_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  payout_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  payout_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  payout_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  payout_not?: InputMaybe<Scalars['BigInt']['input']>;\n  payout_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  pot?: InputMaybe<Scalars['BigInt']['input']>;\n  pot_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  pot_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  pot_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  pot_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  pot_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  pot_not?: InputMaybe<Scalars['BigInt']['input']>;\n  pot_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  refunded?: InputMaybe<Scalars['Boolean']['input']>;\n  refunded_in?: InputMaybe<Array<Scalars['Boolean']['input']>>;\n  refunded_not?: InputMaybe<Scalars['Boolean']['input']>;\n  refunded_not_in?: InputMaybe<Array<Scalars['Boolean']['input']>>;\n  resolved?: InputMaybe<Scalars['Boolean']['input']>;\n  resolved_in?: InputMaybe<Array<Scalars['Boolean']['input']>>;\n  resolved_not?: InputMaybe<Scalars['Boolean']['input']>;\n  resolved_not_in?: InputMaybe<Array<Scalars['Boolean']['input']>>;\n  rollTimestamp?: InputMaybe<Scalars['BigInt']['input']>;\n  rollTimestamp_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  rollTimestamp_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  rollTimestamp_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  rollTimestamp_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  rollTimestamp_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  rollTimestamp_not?: InputMaybe<Scalars['BigInt']['input']>;\n  rollTimestamp_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  rollTxnHash?: InputMaybe<Scalars['Bytes']['input']>;\n  rollTxnHash_contains?: InputMaybe<Scalars['Bytes']['input']>;\n  rollTxnHash_gt?: InputMaybe<Scalars['Bytes']['input']>;\n  rollTxnHash_gte?: InputMaybe<Scalars['Bytes']['input']>;\n  rollTxnHash_in?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  rollTxnHash_lt?: InputMaybe<Scalars['Bytes']['input']>;\n  rollTxnHash_lte?: InputMaybe<Scalars['Bytes']['input']>;\n  rollTxnHash_not?: InputMaybe<Scalars['Bytes']['input']>;\n  rollTxnHash_not_contains?: InputMaybe<Scalars['Bytes']['input']>;\n  rollTxnHash_not_in?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  seats?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  seats_contains?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  seats_contains_nocase?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  seats_not?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  seats_not_contains?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  seats_not_contains_nocase?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  user?: InputMaybe<Scalars['String']['input']>;\n  user_?: InputMaybe<User_Filter>;\n  user_contains?: InputMaybe<Scalars['String']['input']>;\n  user_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_ends_with?: InputMaybe<Scalars['String']['input']>;\n  user_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_gt?: InputMaybe<Scalars['String']['input']>;\n  user_gte?: InputMaybe<Scalars['String']['input']>;\n  user_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  user_lt?: InputMaybe<Scalars['String']['input']>;\n  user_lte?: InputMaybe<Scalars['String']['input']>;\n  user_not?: InputMaybe<Scalars['String']['input']>;\n  user_not_contains?: InputMaybe<Scalars['String']['input']>;\n  user_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  user_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  user_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  user_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_starts_with?: InputMaybe<Scalars['String']['input']>;\n  user_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  vrfRequest?: InputMaybe<Scalars['String']['input']>;\n  vrfRequest_?: InputMaybe<PvPvrfRequest_Filter>;\n  vrfRequest_contains?: InputMaybe<Scalars['String']['input']>;\n  vrfRequest_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  vrfRequest_ends_with?: InputMaybe<Scalars['String']['input']>;\n  vrfRequest_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  vrfRequest_gt?: InputMaybe<Scalars['String']['input']>;\n  vrfRequest_gte?: InputMaybe<Scalars['String']['input']>;\n  vrfRequest_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  vrfRequest_lt?: InputMaybe<Scalars['String']['input']>;\n  vrfRequest_lte?: InputMaybe<Scalars['String']['input']>;\n  vrfRequest_not?: InputMaybe<Scalars['String']['input']>;\n  vrfRequest_not_contains?: InputMaybe<Scalars['String']['input']>;\n  vrfRequest_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  vrfRequest_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  vrfRequest_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  vrfRequest_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  vrfRequest_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  vrfRequest_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  vrfRequest_starts_with?: InputMaybe<Scalars['String']['input']>;\n  vrfRequest_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport enum PvPBet_OrderBy {\n  Affiliate = 'affiliate',\n  AffiliateBetCount = 'affiliate__betCount',\n  AffiliateBetTxnCount = 'affiliate__betTxnCount',\n  AffiliateFirstBetTimestamp = 'affiliate__firstBetTimestamp',\n  AffiliateId = 'affiliate__id',\n  AffiliateLastBetTimestamp = 'affiliate__lastBetTimestamp',\n  AffiliateSeatCount = 'affiliate__seatCount',\n  AffiliateTotalFreebetCount = 'affiliate__totalFreebetCount',\n  AffiliateTotalLeaderboards = 'affiliate__totalLeaderboards',\n  AffiliateUserCount = 'affiliate__userCount',\n  AffiliateWagerAndJoinTxnCount = 'affiliate__wagerAndJoinTxnCount',\n  AffiliateWinSeatCount = 'affiliate__winSeatCount',\n  AffiliateWinTxnCount = 'affiliate__winTxnCount',\n  BetAmount = 'betAmount',\n  BetId = 'betId',\n  BetLaunchedTimestamp = 'betLaunchedTimestamp',\n  BetLaunchedTxnHash = 'betLaunchedTxnHash',\n  BetTimestamp = 'betTimestamp',\n  Canceled = 'canceled',\n  ChargedVrfFees = 'chargedVRFFees',\n  ConsumedLinkVrfFees = 'consumedLinkVRFFees',\n  ConsumedNativeVrfFees = 'consumedNativeVRFFees',\n  GameAddress = 'gameAddress',\n  GameId = 'gameId',\n  GameToken = 'gameToken',\n  GameTokenDayDataLength = 'gameToken__dayDataLength',\n  GameTokenGame = 'gameToken__game',\n  GameTokenHouseEdge = 'gameToken__houseEdge',\n  GameTokenId = 'gameToken__id',\n  GameTokenSeatCount = 'gameToken__seatCount',\n  GameTokenTotalPayout = 'gameToken__totalPayout',\n  GameTokenTotalWagered = 'gameToken__totalWagered',\n  GameTokenUniqueBets = 'gameToken__uniqueBets',\n  GameTokenUserCount = 'gameToken__userCount',\n  GameTokenWagerAndJoinTxnCount = 'gameToken__wagerAndJoinTxnCount',\n  HouseEdge = 'houseEdge',\n  Id = 'id',\n  JoinTxns = 'joinTxns',\n  Opponents = 'opponents',\n  Payout = 'payout',\n  Pot = 'pot',\n  Refunded = 'refunded',\n  Resolved = 'resolved',\n  RollTimestamp = 'rollTimestamp',\n  RollTxnHash = 'rollTxnHash',\n  Seats = 'seats',\n  User = 'user',\n  UserBetCount = 'user__betCount',\n  UserBetTxnCount = 'user__betTxnCount',\n  UserConsumedLinkVrfFees = 'user__consumedLinkVRFFees',\n  UserConsumedNativeVrfFees = 'user__consumedNativeVRFFees',\n  UserFirstBetTimestamp = 'user__firstBetTimestamp',\n  UserId = 'user__id',\n  UserLastBetTimestamp = 'user__lastBetTimestamp',\n  UserMaxMultiplier = 'user__maxMultiplier',\n  UserPvpMaxMultiplier = 'user__pvpMaxMultiplier',\n  UserSeatCount = 'user__seatCount',\n  UserTotalChargedVrfFees = 'user__totalChargedVRFFees',\n  UserWagerAndJoinTxnCount = 'user__wagerAndJoinTxnCount',\n  UserWinSeatCount = 'user__winSeatCount',\n  UserWinTxnCount = 'user__winTxnCount',\n  VrfRequest = 'vrfRequest',\n  VrfRequestId = 'vrfRequest__id',\n  VrfRequestRequestTimestamp = 'vrfRequest__requestTimestamp'\n}\n\nexport type PvPGameJoinTransaction = {\n  __typename?: 'PvPGameJoinTransaction';\n  bet: PvPBet;\n  id: Scalars['Bytes']['output'];\n  seatCount: Scalars['Int']['output'];\n  user: User;\n};\n\nexport type PvPGameJoinTransaction_Filter = {\n  /** Filter for the block changed event. */\n  _change_block?: InputMaybe<BlockChangedFilter>;\n  and?: InputMaybe<Array<InputMaybe<PvPGameJoinTransaction_Filter>>>;\n  bet?: InputMaybe<Scalars['String']['input']>;\n  bet_?: InputMaybe<PvPBet_Filter>;\n  bet_contains?: InputMaybe<Scalars['String']['input']>;\n  bet_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  bet_ends_with?: InputMaybe<Scalars['String']['input']>;\n  bet_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  bet_gt?: InputMaybe<Scalars['String']['input']>;\n  bet_gte?: InputMaybe<Scalars['String']['input']>;\n  bet_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  bet_lt?: InputMaybe<Scalars['String']['input']>;\n  bet_lte?: InputMaybe<Scalars['String']['input']>;\n  bet_not?: InputMaybe<Scalars['String']['input']>;\n  bet_not_contains?: InputMaybe<Scalars['String']['input']>;\n  bet_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  bet_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  bet_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  bet_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  bet_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  bet_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  bet_starts_with?: InputMaybe<Scalars['String']['input']>;\n  bet_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  id?: InputMaybe<Scalars['Bytes']['input']>;\n  id_contains?: InputMaybe<Scalars['Bytes']['input']>;\n  id_gt?: InputMaybe<Scalars['Bytes']['input']>;\n  id_gte?: InputMaybe<Scalars['Bytes']['input']>;\n  id_in?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  id_lt?: InputMaybe<Scalars['Bytes']['input']>;\n  id_lte?: InputMaybe<Scalars['Bytes']['input']>;\n  id_not?: InputMaybe<Scalars['Bytes']['input']>;\n  id_not_contains?: InputMaybe<Scalars['Bytes']['input']>;\n  id_not_in?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  or?: InputMaybe<Array<InputMaybe<PvPGameJoinTransaction_Filter>>>;\n  seatCount?: InputMaybe<Scalars['Int']['input']>;\n  seatCount_gt?: InputMaybe<Scalars['Int']['input']>;\n  seatCount_gte?: InputMaybe<Scalars['Int']['input']>;\n  seatCount_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  seatCount_lt?: InputMaybe<Scalars['Int']['input']>;\n  seatCount_lte?: InputMaybe<Scalars['Int']['input']>;\n  seatCount_not?: InputMaybe<Scalars['Int']['input']>;\n  seatCount_not_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  user?: InputMaybe<Scalars['String']['input']>;\n  user_?: InputMaybe<User_Filter>;\n  user_contains?: InputMaybe<Scalars['String']['input']>;\n  user_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_ends_with?: InputMaybe<Scalars['String']['input']>;\n  user_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_gt?: InputMaybe<Scalars['String']['input']>;\n  user_gte?: InputMaybe<Scalars['String']['input']>;\n  user_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  user_lt?: InputMaybe<Scalars['String']['input']>;\n  user_lte?: InputMaybe<Scalars['String']['input']>;\n  user_not?: InputMaybe<Scalars['String']['input']>;\n  user_not_contains?: InputMaybe<Scalars['String']['input']>;\n  user_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  user_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  user_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  user_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_starts_with?: InputMaybe<Scalars['String']['input']>;\n  user_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport enum PvPGameJoinTransaction_OrderBy {\n  Bet = 'bet',\n  BetBetAmount = 'bet__betAmount',\n  BetBetId = 'bet__betId',\n  BetBetLaunchedTimestamp = 'bet__betLaunchedTimestamp',\n  BetBetLaunchedTxnHash = 'bet__betLaunchedTxnHash',\n  BetBetTimestamp = 'bet__betTimestamp',\n  BetCanceled = 'bet__canceled',\n  BetChargedVrfFees = 'bet__chargedVRFFees',\n  BetConsumedLinkVrfFees = 'bet__consumedLinkVRFFees',\n  BetConsumedNativeVrfFees = 'bet__consumedNativeVRFFees',\n  BetGameAddress = 'bet__gameAddress',\n  BetGameId = 'bet__gameId',\n  BetHouseEdge = 'bet__houseEdge',\n  BetId = 'bet__id',\n  BetPayout = 'bet__payout',\n  BetPot = 'bet__pot',\n  BetRefunded = 'bet__refunded',\n  BetResolved = 'bet__resolved',\n  BetRollTimestamp = 'bet__rollTimestamp',\n  BetRollTxnHash = 'bet__rollTxnHash',\n  Id = 'id',\n  SeatCount = 'seatCount',\n  User = 'user',\n  UserBetCount = 'user__betCount',\n  UserBetTxnCount = 'user__betTxnCount',\n  UserConsumedLinkVrfFees = 'user__consumedLinkVRFFees',\n  UserConsumedNativeVrfFees = 'user__consumedNativeVRFFees',\n  UserFirstBetTimestamp = 'user__firstBetTimestamp',\n  UserId = 'user__id',\n  UserLastBetTimestamp = 'user__lastBetTimestamp',\n  UserMaxMultiplier = 'user__maxMultiplier',\n  UserPvpMaxMultiplier = 'user__pvpMaxMultiplier',\n  UserSeatCount = 'user__seatCount',\n  UserTotalChargedVrfFees = 'user__totalChargedVRFFees',\n  UserWagerAndJoinTxnCount = 'user__wagerAndJoinTxnCount',\n  UserWinSeatCount = 'user__winSeatCount',\n  UserWinTxnCount = 'user__winTxnCount'\n}\n\nexport type PvPGameToken = {\n  __typename?: 'PvPGameToken';\n  dayData?: Maybe<Array<PvPGameTokenDayData>>;\n  dayDataLength: Scalars['Int']['output'];\n  game: Scalars['String']['output'];\n  houseEdge: Scalars['Int']['output'];\n  id: Scalars['ID']['output'];\n  pvpUserGameTokens?: Maybe<Array<PvPUserGameToken>>;\n  seatCount: Scalars['BigInt']['output'];\n  token: PvPToken;\n  totalPayout: Scalars['BigInt']['output'];\n  totalWagered: Scalars['BigInt']['output'];\n  uniqueBets: Scalars['BigInt']['output'];\n  userCount: Scalars['BigInt']['output'];\n  wagerAndJoinTxnCount: Scalars['BigInt']['output'];\n};\n\n\nexport type PvPGameTokenDayDataArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<PvPGameTokenDayData_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<PvPGameTokenDayData_Filter>;\n};\n\n\nexport type PvPGameTokenPvpUserGameTokensArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<PvPUserGameToken_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<PvPUserGameToken_Filter>;\n};\n\nexport type PvPGameTokenDayData = {\n  __typename?: 'PvPGameTokenDayData';\n  consumedLinkVRFFees: Scalars['BigInt']['output'];\n  consumedNativeVRFFees: Scalars['BigInt']['output'];\n  date: Scalars['Int']['output'];\n  gameToken: PvPGameToken;\n  id: Scalars['ID']['output'];\n  seatCount: Scalars['BigInt']['output'];\n  totalChargedVRFFees: Scalars['BigInt']['output'];\n  totalPayout: Scalars['BigInt']['output'];\n  totalWagered: Scalars['BigInt']['output'];\n  userCount: Scalars['BigInt']['output'];\n  wagerAndJoinTxnCount: Scalars['BigInt']['output'];\n};\n\nexport type PvPGameTokenDayData_Filter = {\n  /** Filter for the block changed event. */\n  _change_block?: InputMaybe<BlockChangedFilter>;\n  and?: InputMaybe<Array<InputMaybe<PvPGameTokenDayData_Filter>>>;\n  consumedLinkVRFFees?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedLinkVRFFees_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedLinkVRFFees_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedLinkVRFFees_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  consumedLinkVRFFees_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedLinkVRFFees_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedLinkVRFFees_not?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedLinkVRFFees_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  consumedNativeVRFFees?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedNativeVRFFees_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedNativeVRFFees_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedNativeVRFFees_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  consumedNativeVRFFees_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedNativeVRFFees_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedNativeVRFFees_not?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedNativeVRFFees_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  date?: InputMaybe<Scalars['Int']['input']>;\n  date_gt?: InputMaybe<Scalars['Int']['input']>;\n  date_gte?: InputMaybe<Scalars['Int']['input']>;\n  date_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  date_lt?: InputMaybe<Scalars['Int']['input']>;\n  date_lte?: InputMaybe<Scalars['Int']['input']>;\n  date_not?: InputMaybe<Scalars['Int']['input']>;\n  date_not_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  gameToken?: InputMaybe<Scalars['String']['input']>;\n  gameToken_?: InputMaybe<PvPGameToken_Filter>;\n  gameToken_contains?: InputMaybe<Scalars['String']['input']>;\n  gameToken_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameToken_ends_with?: InputMaybe<Scalars['String']['input']>;\n  gameToken_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameToken_gt?: InputMaybe<Scalars['String']['input']>;\n  gameToken_gte?: InputMaybe<Scalars['String']['input']>;\n  gameToken_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  gameToken_lt?: InputMaybe<Scalars['String']['input']>;\n  gameToken_lte?: InputMaybe<Scalars['String']['input']>;\n  gameToken_not?: InputMaybe<Scalars['String']['input']>;\n  gameToken_not_contains?: InputMaybe<Scalars['String']['input']>;\n  gameToken_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameToken_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  gameToken_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameToken_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  gameToken_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  gameToken_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameToken_starts_with?: InputMaybe<Scalars['String']['input']>;\n  gameToken_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  id?: InputMaybe<Scalars['ID']['input']>;\n  id_gt?: InputMaybe<Scalars['ID']['input']>;\n  id_gte?: InputMaybe<Scalars['ID']['input']>;\n  id_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  id_lt?: InputMaybe<Scalars['ID']['input']>;\n  id_lte?: InputMaybe<Scalars['ID']['input']>;\n  id_not?: InputMaybe<Scalars['ID']['input']>;\n  id_not_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  or?: InputMaybe<Array<InputMaybe<PvPGameTokenDayData_Filter>>>;\n  seatCount?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  seatCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalChargedVRFFees?: InputMaybe<Scalars['BigInt']['input']>;\n  totalChargedVRFFees_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalChargedVRFFees_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalChargedVRFFees_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalChargedVRFFees_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalChargedVRFFees_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalChargedVRFFees_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalChargedVRFFees_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalPayout?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalPayout_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalWagered?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalWagered_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  userCount?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  userCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  wagerAndJoinTxnCount?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  wagerAndJoinTxnCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n};\n\nexport enum PvPGameTokenDayData_OrderBy {\n  ConsumedLinkVrfFees = 'consumedLinkVRFFees',\n  ConsumedNativeVrfFees = 'consumedNativeVRFFees',\n  Date = 'date',\n  GameToken = 'gameToken',\n  GameTokenDayDataLength = 'gameToken__dayDataLength',\n  GameTokenGame = 'gameToken__game',\n  GameTokenHouseEdge = 'gameToken__houseEdge',\n  GameTokenId = 'gameToken__id',\n  GameTokenSeatCount = 'gameToken__seatCount',\n  GameTokenTotalPayout = 'gameToken__totalPayout',\n  GameTokenTotalWagered = 'gameToken__totalWagered',\n  GameTokenUniqueBets = 'gameToken__uniqueBets',\n  GameTokenUserCount = 'gameToken__userCount',\n  GameTokenWagerAndJoinTxnCount = 'gameToken__wagerAndJoinTxnCount',\n  Id = 'id',\n  SeatCount = 'seatCount',\n  TotalChargedVrfFees = 'totalChargedVRFFees',\n  TotalPayout = 'totalPayout',\n  TotalWagered = 'totalWagered',\n  UserCount = 'userCount',\n  WagerAndJoinTxnCount = 'wagerAndJoinTxnCount'\n}\n\nexport type PvPGameToken_Filter = {\n  /** Filter for the block changed event. */\n  _change_block?: InputMaybe<BlockChangedFilter>;\n  and?: InputMaybe<Array<InputMaybe<PvPGameToken_Filter>>>;\n  dayDataLength?: InputMaybe<Scalars['Int']['input']>;\n  dayDataLength_gt?: InputMaybe<Scalars['Int']['input']>;\n  dayDataLength_gte?: InputMaybe<Scalars['Int']['input']>;\n  dayDataLength_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  dayDataLength_lt?: InputMaybe<Scalars['Int']['input']>;\n  dayDataLength_lte?: InputMaybe<Scalars['Int']['input']>;\n  dayDataLength_not?: InputMaybe<Scalars['Int']['input']>;\n  dayDataLength_not_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  dayData_?: InputMaybe<PvPGameTokenDayData_Filter>;\n  game?: InputMaybe<Scalars['String']['input']>;\n  game_contains?: InputMaybe<Scalars['String']['input']>;\n  game_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  game_ends_with?: InputMaybe<Scalars['String']['input']>;\n  game_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  game_gt?: InputMaybe<Scalars['String']['input']>;\n  game_gte?: InputMaybe<Scalars['String']['input']>;\n  game_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  game_lt?: InputMaybe<Scalars['String']['input']>;\n  game_lte?: InputMaybe<Scalars['String']['input']>;\n  game_not?: InputMaybe<Scalars['String']['input']>;\n  game_not_contains?: InputMaybe<Scalars['String']['input']>;\n  game_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  game_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  game_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  game_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  game_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  game_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  game_starts_with?: InputMaybe<Scalars['String']['input']>;\n  game_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  houseEdge?: InputMaybe<Scalars['Int']['input']>;\n  houseEdge_gt?: InputMaybe<Scalars['Int']['input']>;\n  houseEdge_gte?: InputMaybe<Scalars['Int']['input']>;\n  houseEdge_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  houseEdge_lt?: InputMaybe<Scalars['Int']['input']>;\n  houseEdge_lte?: InputMaybe<Scalars['Int']['input']>;\n  houseEdge_not?: InputMaybe<Scalars['Int']['input']>;\n  houseEdge_not_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  id?: InputMaybe<Scalars['ID']['input']>;\n  id_gt?: InputMaybe<Scalars['ID']['input']>;\n  id_gte?: InputMaybe<Scalars['ID']['input']>;\n  id_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  id_lt?: InputMaybe<Scalars['ID']['input']>;\n  id_lte?: InputMaybe<Scalars['ID']['input']>;\n  id_not?: InputMaybe<Scalars['ID']['input']>;\n  id_not_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  or?: InputMaybe<Array<InputMaybe<PvPGameToken_Filter>>>;\n  pvpUserGameTokens_?: InputMaybe<PvPUserGameToken_Filter>;\n  seatCount?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  seatCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  token?: InputMaybe<Scalars['String']['input']>;\n  token_?: InputMaybe<PvPToken_Filter>;\n  token_contains?: InputMaybe<Scalars['String']['input']>;\n  token_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_ends_with?: InputMaybe<Scalars['String']['input']>;\n  token_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_gt?: InputMaybe<Scalars['String']['input']>;\n  token_gte?: InputMaybe<Scalars['String']['input']>;\n  token_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  token_lt?: InputMaybe<Scalars['String']['input']>;\n  token_lte?: InputMaybe<Scalars['String']['input']>;\n  token_not?: InputMaybe<Scalars['String']['input']>;\n  token_not_contains?: InputMaybe<Scalars['String']['input']>;\n  token_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  token_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  token_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  token_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_starts_with?: InputMaybe<Scalars['String']['input']>;\n  token_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  totalPayout?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalPayout_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalWagered?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalWagered_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  uniqueBets?: InputMaybe<Scalars['BigInt']['input']>;\n  uniqueBets_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  uniqueBets_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  uniqueBets_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  uniqueBets_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  uniqueBets_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  uniqueBets_not?: InputMaybe<Scalars['BigInt']['input']>;\n  uniqueBets_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  userCount?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  userCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  wagerAndJoinTxnCount?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  wagerAndJoinTxnCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n};\n\nexport enum PvPGameToken_OrderBy {\n  DayData = 'dayData',\n  DayDataLength = 'dayDataLength',\n  Game = 'game',\n  HouseEdge = 'houseEdge',\n  Id = 'id',\n  PvpUserGameTokens = 'pvpUserGameTokens',\n  SeatCount = 'seatCount',\n  Token = 'token',\n  TokenAffiliateAmount = 'token__affiliateAmount',\n  TokenDecimals = 'token__decimals',\n  TokenDividendAmount = 'token__dividendAmount',\n  TokenId = 'token__id',\n  TokenInitiatorAmount = 'token__initiatorAmount',\n  TokenName = 'token__name',\n  TokenSeatCount = 'token__seatCount',\n  TokenSymbol = 'token__symbol',\n  TokenTeamAmount = 'token__teamAmount',\n  TokenTotalPayout = 'token__totalPayout',\n  TokenTotalWagered = 'token__totalWagered',\n  TokenTreasuryAmount = 'token__treasuryAmount',\n  TokenUniqueBets = 'token__uniqueBets',\n  TokenUserCount = 'token__userCount',\n  TokenWagerAndJoinTxnCount = 'token__wagerAndJoinTxnCount',\n  TotalPayout = 'totalPayout',\n  TotalWagered = 'totalWagered',\n  UniqueBets = 'uniqueBets',\n  UserCount = 'userCount',\n  WagerAndJoinTxnCount = 'wagerAndJoinTxnCount'\n}\n\nexport type PvPToken = {\n  __typename?: 'PvPToken';\n  affiliateAmount: Scalars['BigInt']['output'];\n  decimals: Scalars['Int']['output'];\n  dividendAmount: Scalars['BigInt']['output'];\n  id: Scalars['Bytes']['output'];\n  initiatorAmount: Scalars['BigInt']['output'];\n  name: Scalars['String']['output'];\n  seatCount: Scalars['BigInt']['output'];\n  symbol: Scalars['String']['output'];\n  teamAmount: Scalars['BigInt']['output'];\n  totalPayout: Scalars['BigInt']['output'];\n  totalWagered: Scalars['BigInt']['output'];\n  treasuryAmount: Scalars['BigInt']['output'];\n  uniqueBets: Scalars['BigInt']['output'];\n  userCount: Scalars['BigInt']['output'];\n  wagerAndJoinTxnCount: Scalars['BigInt']['output'];\n};\n\nexport type PvPToken_Filter = {\n  /** Filter for the block changed event. */\n  _change_block?: InputMaybe<BlockChangedFilter>;\n  affiliateAmount?: InputMaybe<Scalars['BigInt']['input']>;\n  affiliateAmount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  affiliateAmount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  affiliateAmount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  affiliateAmount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  affiliateAmount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  affiliateAmount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  affiliateAmount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  and?: InputMaybe<Array<InputMaybe<PvPToken_Filter>>>;\n  decimals?: InputMaybe<Scalars['Int']['input']>;\n  decimals_gt?: InputMaybe<Scalars['Int']['input']>;\n  decimals_gte?: InputMaybe<Scalars['Int']['input']>;\n  decimals_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  decimals_lt?: InputMaybe<Scalars['Int']['input']>;\n  decimals_lte?: InputMaybe<Scalars['Int']['input']>;\n  decimals_not?: InputMaybe<Scalars['Int']['input']>;\n  decimals_not_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  dividendAmount?: InputMaybe<Scalars['BigInt']['input']>;\n  dividendAmount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  dividendAmount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  dividendAmount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  dividendAmount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  dividendAmount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  dividendAmount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  dividendAmount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  id?: InputMaybe<Scalars['Bytes']['input']>;\n  id_contains?: InputMaybe<Scalars['Bytes']['input']>;\n  id_gt?: InputMaybe<Scalars['Bytes']['input']>;\n  id_gte?: InputMaybe<Scalars['Bytes']['input']>;\n  id_in?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  id_lt?: InputMaybe<Scalars['Bytes']['input']>;\n  id_lte?: InputMaybe<Scalars['Bytes']['input']>;\n  id_not?: InputMaybe<Scalars['Bytes']['input']>;\n  id_not_contains?: InputMaybe<Scalars['Bytes']['input']>;\n  id_not_in?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  initiatorAmount?: InputMaybe<Scalars['BigInt']['input']>;\n  initiatorAmount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  initiatorAmount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  initiatorAmount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  initiatorAmount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  initiatorAmount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  initiatorAmount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  initiatorAmount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  name?: InputMaybe<Scalars['String']['input']>;\n  name_contains?: InputMaybe<Scalars['String']['input']>;\n  name_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  name_ends_with?: InputMaybe<Scalars['String']['input']>;\n  name_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  name_gt?: InputMaybe<Scalars['String']['input']>;\n  name_gte?: InputMaybe<Scalars['String']['input']>;\n  name_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  name_lt?: InputMaybe<Scalars['String']['input']>;\n  name_lte?: InputMaybe<Scalars['String']['input']>;\n  name_not?: InputMaybe<Scalars['String']['input']>;\n  name_not_contains?: InputMaybe<Scalars['String']['input']>;\n  name_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  name_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  name_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  name_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  name_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  name_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  name_starts_with?: InputMaybe<Scalars['String']['input']>;\n  name_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  or?: InputMaybe<Array<InputMaybe<PvPToken_Filter>>>;\n  seatCount?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  seatCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  symbol?: InputMaybe<Scalars['String']['input']>;\n  symbol_contains?: InputMaybe<Scalars['String']['input']>;\n  symbol_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  symbol_ends_with?: InputMaybe<Scalars['String']['input']>;\n  symbol_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  symbol_gt?: InputMaybe<Scalars['String']['input']>;\n  symbol_gte?: InputMaybe<Scalars['String']['input']>;\n  symbol_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  symbol_lt?: InputMaybe<Scalars['String']['input']>;\n  symbol_lte?: InputMaybe<Scalars['String']['input']>;\n  symbol_not?: InputMaybe<Scalars['String']['input']>;\n  symbol_not_contains?: InputMaybe<Scalars['String']['input']>;\n  symbol_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  symbol_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  symbol_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  symbol_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  symbol_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  symbol_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  symbol_starts_with?: InputMaybe<Scalars['String']['input']>;\n  symbol_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  teamAmount?: InputMaybe<Scalars['BigInt']['input']>;\n  teamAmount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  teamAmount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  teamAmount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  teamAmount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  teamAmount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  teamAmount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  teamAmount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalPayout?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalPayout_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalWagered?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalWagered_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  treasuryAmount?: InputMaybe<Scalars['BigInt']['input']>;\n  treasuryAmount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  treasuryAmount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  treasuryAmount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  treasuryAmount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  treasuryAmount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  treasuryAmount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  treasuryAmount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  uniqueBets?: InputMaybe<Scalars['BigInt']['input']>;\n  uniqueBets_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  uniqueBets_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  uniqueBets_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  uniqueBets_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  uniqueBets_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  uniqueBets_not?: InputMaybe<Scalars['BigInt']['input']>;\n  uniqueBets_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  userCount?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  userCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  wagerAndJoinTxnCount?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  wagerAndJoinTxnCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n};\n\nexport enum PvPToken_OrderBy {\n  AffiliateAmount = 'affiliateAmount',\n  Decimals = 'decimals',\n  DividendAmount = 'dividendAmount',\n  Id = 'id',\n  InitiatorAmount = 'initiatorAmount',\n  Name = 'name',\n  SeatCount = 'seatCount',\n  Symbol = 'symbol',\n  TeamAmount = 'teamAmount',\n  TotalPayout = 'totalPayout',\n  TotalWagered = 'totalWagered',\n  TreasuryAmount = 'treasuryAmount',\n  UniqueBets = 'uniqueBets',\n  UserCount = 'userCount',\n  WagerAndJoinTxnCount = 'wagerAndJoinTxnCount'\n}\n\nexport type PvPUserGameToken = {\n  __typename?: 'PvPUserGameToken';\n  dayData?: Maybe<Array<PvPUserGameTokenDayData>>;\n  dayDataLength: Scalars['Int']['output'];\n  gameToken: PvPGameToken;\n  id: Scalars['ID']['output'];\n  seatCount: Scalars['BigInt']['output'];\n  totalPayout: Scalars['BigInt']['output'];\n  totalWagered: Scalars['BigInt']['output'];\n  uniqueBets: Scalars['BigInt']['output'];\n  user: User;\n  wagerAndJoinTxnCount: Scalars['BigInt']['output'];\n};\n\n\nexport type PvPUserGameTokenDayDataArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<PvPUserGameTokenDayData_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<PvPUserGameTokenDayData_Filter>;\n};\n\nexport type PvPUserGameTokenDayData = {\n  __typename?: 'PvPUserGameTokenDayData';\n  date: Scalars['Int']['output'];\n  id: Scalars['ID']['output'];\n  userGameToken: PvPUserGameToken;\n  wagerAndJoinTxnCount: Scalars['BigInt']['output'];\n};\n\nexport type PvPUserGameTokenDayData_Filter = {\n  /** Filter for the block changed event. */\n  _change_block?: InputMaybe<BlockChangedFilter>;\n  and?: InputMaybe<Array<InputMaybe<PvPUserGameTokenDayData_Filter>>>;\n  date?: InputMaybe<Scalars['Int']['input']>;\n  date_gt?: InputMaybe<Scalars['Int']['input']>;\n  date_gte?: InputMaybe<Scalars['Int']['input']>;\n  date_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  date_lt?: InputMaybe<Scalars['Int']['input']>;\n  date_lte?: InputMaybe<Scalars['Int']['input']>;\n  date_not?: InputMaybe<Scalars['Int']['input']>;\n  date_not_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  id?: InputMaybe<Scalars['ID']['input']>;\n  id_gt?: InputMaybe<Scalars['ID']['input']>;\n  id_gte?: InputMaybe<Scalars['ID']['input']>;\n  id_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  id_lt?: InputMaybe<Scalars['ID']['input']>;\n  id_lte?: InputMaybe<Scalars['ID']['input']>;\n  id_not?: InputMaybe<Scalars['ID']['input']>;\n  id_not_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  or?: InputMaybe<Array<InputMaybe<PvPUserGameTokenDayData_Filter>>>;\n  userGameToken?: InputMaybe<Scalars['String']['input']>;\n  userGameToken_?: InputMaybe<PvPUserGameToken_Filter>;\n  userGameToken_contains?: InputMaybe<Scalars['String']['input']>;\n  userGameToken_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  userGameToken_ends_with?: InputMaybe<Scalars['String']['input']>;\n  userGameToken_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  userGameToken_gt?: InputMaybe<Scalars['String']['input']>;\n  userGameToken_gte?: InputMaybe<Scalars['String']['input']>;\n  userGameToken_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  userGameToken_lt?: InputMaybe<Scalars['String']['input']>;\n  userGameToken_lte?: InputMaybe<Scalars['String']['input']>;\n  userGameToken_not?: InputMaybe<Scalars['String']['input']>;\n  userGameToken_not_contains?: InputMaybe<Scalars['String']['input']>;\n  userGameToken_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  userGameToken_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  userGameToken_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  userGameToken_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  userGameToken_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  userGameToken_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  userGameToken_starts_with?: InputMaybe<Scalars['String']['input']>;\n  userGameToken_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  wagerAndJoinTxnCount?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  wagerAndJoinTxnCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n};\n\nexport enum PvPUserGameTokenDayData_OrderBy {\n  Date = 'date',\n  Id = 'id',\n  UserGameToken = 'userGameToken',\n  UserGameTokenDayDataLength = 'userGameToken__dayDataLength',\n  UserGameTokenId = 'userGameToken__id',\n  UserGameTokenSeatCount = 'userGameToken__seatCount',\n  UserGameTokenTotalPayout = 'userGameToken__totalPayout',\n  UserGameTokenTotalWagered = 'userGameToken__totalWagered',\n  UserGameTokenUniqueBets = 'userGameToken__uniqueBets',\n  UserGameTokenWagerAndJoinTxnCount = 'userGameToken__wagerAndJoinTxnCount',\n  WagerAndJoinTxnCount = 'wagerAndJoinTxnCount'\n}\n\nexport type PvPUserGameToken_Filter = {\n  /** Filter for the block changed event. */\n  _change_block?: InputMaybe<BlockChangedFilter>;\n  and?: InputMaybe<Array<InputMaybe<PvPUserGameToken_Filter>>>;\n  dayDataLength?: InputMaybe<Scalars['Int']['input']>;\n  dayDataLength_gt?: InputMaybe<Scalars['Int']['input']>;\n  dayDataLength_gte?: InputMaybe<Scalars['Int']['input']>;\n  dayDataLength_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  dayDataLength_lt?: InputMaybe<Scalars['Int']['input']>;\n  dayDataLength_lte?: InputMaybe<Scalars['Int']['input']>;\n  dayDataLength_not?: InputMaybe<Scalars['Int']['input']>;\n  dayDataLength_not_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  dayData_?: InputMaybe<PvPUserGameTokenDayData_Filter>;\n  gameToken?: InputMaybe<Scalars['String']['input']>;\n  gameToken_?: InputMaybe<PvPGameToken_Filter>;\n  gameToken_contains?: InputMaybe<Scalars['String']['input']>;\n  gameToken_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameToken_ends_with?: InputMaybe<Scalars['String']['input']>;\n  gameToken_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameToken_gt?: InputMaybe<Scalars['String']['input']>;\n  gameToken_gte?: InputMaybe<Scalars['String']['input']>;\n  gameToken_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  gameToken_lt?: InputMaybe<Scalars['String']['input']>;\n  gameToken_lte?: InputMaybe<Scalars['String']['input']>;\n  gameToken_not?: InputMaybe<Scalars['String']['input']>;\n  gameToken_not_contains?: InputMaybe<Scalars['String']['input']>;\n  gameToken_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameToken_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  gameToken_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameToken_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  gameToken_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  gameToken_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameToken_starts_with?: InputMaybe<Scalars['String']['input']>;\n  gameToken_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  id?: InputMaybe<Scalars['ID']['input']>;\n  id_gt?: InputMaybe<Scalars['ID']['input']>;\n  id_gte?: InputMaybe<Scalars['ID']['input']>;\n  id_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  id_lt?: InputMaybe<Scalars['ID']['input']>;\n  id_lte?: InputMaybe<Scalars['ID']['input']>;\n  id_not?: InputMaybe<Scalars['ID']['input']>;\n  id_not_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  or?: InputMaybe<Array<InputMaybe<PvPUserGameToken_Filter>>>;\n  seatCount?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  seatCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalPayout?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalPayout_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalWagered?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalWagered_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  uniqueBets?: InputMaybe<Scalars['BigInt']['input']>;\n  uniqueBets_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  uniqueBets_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  uniqueBets_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  uniqueBets_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  uniqueBets_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  uniqueBets_not?: InputMaybe<Scalars['BigInt']['input']>;\n  uniqueBets_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  user?: InputMaybe<Scalars['String']['input']>;\n  user_?: InputMaybe<User_Filter>;\n  user_contains?: InputMaybe<Scalars['String']['input']>;\n  user_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_ends_with?: InputMaybe<Scalars['String']['input']>;\n  user_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_gt?: InputMaybe<Scalars['String']['input']>;\n  user_gte?: InputMaybe<Scalars['String']['input']>;\n  user_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  user_lt?: InputMaybe<Scalars['String']['input']>;\n  user_lte?: InputMaybe<Scalars['String']['input']>;\n  user_not?: InputMaybe<Scalars['String']['input']>;\n  user_not_contains?: InputMaybe<Scalars['String']['input']>;\n  user_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  user_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  user_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  user_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_starts_with?: InputMaybe<Scalars['String']['input']>;\n  user_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  wagerAndJoinTxnCount?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  wagerAndJoinTxnCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n};\n\nexport enum PvPUserGameToken_OrderBy {\n  DayData = 'dayData',\n  DayDataLength = 'dayDataLength',\n  GameToken = 'gameToken',\n  GameTokenDayDataLength = 'gameToken__dayDataLength',\n  GameTokenGame = 'gameToken__game',\n  GameTokenHouseEdge = 'gameToken__houseEdge',\n  GameTokenId = 'gameToken__id',\n  GameTokenSeatCount = 'gameToken__seatCount',\n  GameTokenTotalPayout = 'gameToken__totalPayout',\n  GameTokenTotalWagered = 'gameToken__totalWagered',\n  GameTokenUniqueBets = 'gameToken__uniqueBets',\n  GameTokenUserCount = 'gameToken__userCount',\n  GameTokenWagerAndJoinTxnCount = 'gameToken__wagerAndJoinTxnCount',\n  Id = 'id',\n  SeatCount = 'seatCount',\n  TotalPayout = 'totalPayout',\n  TotalWagered = 'totalWagered',\n  UniqueBets = 'uniqueBets',\n  User = 'user',\n  UserBetCount = 'user__betCount',\n  UserBetTxnCount = 'user__betTxnCount',\n  UserConsumedLinkVrfFees = 'user__consumedLinkVRFFees',\n  UserConsumedNativeVrfFees = 'user__consumedNativeVRFFees',\n  UserFirstBetTimestamp = 'user__firstBetTimestamp',\n  UserId = 'user__id',\n  UserLastBetTimestamp = 'user__lastBetTimestamp',\n  UserMaxMultiplier = 'user__maxMultiplier',\n  UserPvpMaxMultiplier = 'user__pvpMaxMultiplier',\n  UserSeatCount = 'user__seatCount',\n  UserTotalChargedVrfFees = 'user__totalChargedVRFFees',\n  UserWagerAndJoinTxnCount = 'user__wagerAndJoinTxnCount',\n  UserWinSeatCount = 'user__winSeatCount',\n  UserWinTxnCount = 'user__winTxnCount',\n  WagerAndJoinTxnCount = 'wagerAndJoinTxnCount'\n}\n\nexport type PvPUserToken = {\n  __typename?: 'PvPUserToken';\n  id: Scalars['ID']['output'];\n  maxPayout: Scalars['BigInt']['output'];\n  seatCount: Scalars['BigInt']['output'];\n  token: PvPToken;\n  totalPayout: Scalars['BigInt']['output'];\n  totalWagered: Scalars['BigInt']['output'];\n  user: User;\n  wagerAndJoinTxnCount: Scalars['BigInt']['output'];\n};\n\nexport type PvPUserToken_Filter = {\n  /** Filter for the block changed event. */\n  _change_block?: InputMaybe<BlockChangedFilter>;\n  and?: InputMaybe<Array<InputMaybe<PvPUserToken_Filter>>>;\n  id?: InputMaybe<Scalars['ID']['input']>;\n  id_gt?: InputMaybe<Scalars['ID']['input']>;\n  id_gte?: InputMaybe<Scalars['ID']['input']>;\n  id_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  id_lt?: InputMaybe<Scalars['ID']['input']>;\n  id_lte?: InputMaybe<Scalars['ID']['input']>;\n  id_not?: InputMaybe<Scalars['ID']['input']>;\n  id_not_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  maxPayout?: InputMaybe<Scalars['BigInt']['input']>;\n  maxPayout_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  maxPayout_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  maxPayout_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  maxPayout_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  maxPayout_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  maxPayout_not?: InputMaybe<Scalars['BigInt']['input']>;\n  maxPayout_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  or?: InputMaybe<Array<InputMaybe<PvPUserToken_Filter>>>;\n  seatCount?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  seatCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  token?: InputMaybe<Scalars['String']['input']>;\n  token_?: InputMaybe<PvPToken_Filter>;\n  token_contains?: InputMaybe<Scalars['String']['input']>;\n  token_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_ends_with?: InputMaybe<Scalars['String']['input']>;\n  token_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_gt?: InputMaybe<Scalars['String']['input']>;\n  token_gte?: InputMaybe<Scalars['String']['input']>;\n  token_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  token_lt?: InputMaybe<Scalars['String']['input']>;\n  token_lte?: InputMaybe<Scalars['String']['input']>;\n  token_not?: InputMaybe<Scalars['String']['input']>;\n  token_not_contains?: InputMaybe<Scalars['String']['input']>;\n  token_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  token_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  token_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  token_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_starts_with?: InputMaybe<Scalars['String']['input']>;\n  token_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  totalPayout?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalPayout_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalWagered?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalWagered_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  user?: InputMaybe<Scalars['String']['input']>;\n  user_?: InputMaybe<User_Filter>;\n  user_contains?: InputMaybe<Scalars['String']['input']>;\n  user_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_ends_with?: InputMaybe<Scalars['String']['input']>;\n  user_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_gt?: InputMaybe<Scalars['String']['input']>;\n  user_gte?: InputMaybe<Scalars['String']['input']>;\n  user_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  user_lt?: InputMaybe<Scalars['String']['input']>;\n  user_lte?: InputMaybe<Scalars['String']['input']>;\n  user_not?: InputMaybe<Scalars['String']['input']>;\n  user_not_contains?: InputMaybe<Scalars['String']['input']>;\n  user_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  user_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  user_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  user_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_starts_with?: InputMaybe<Scalars['String']['input']>;\n  user_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  wagerAndJoinTxnCount?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  wagerAndJoinTxnCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n};\n\nexport enum PvPUserToken_OrderBy {\n  Id = 'id',\n  MaxPayout = 'maxPayout',\n  SeatCount = 'seatCount',\n  Token = 'token',\n  TokenAffiliateAmount = 'token__affiliateAmount',\n  TokenDecimals = 'token__decimals',\n  TokenDividendAmount = 'token__dividendAmount',\n  TokenId = 'token__id',\n  TokenInitiatorAmount = 'token__initiatorAmount',\n  TokenName = 'token__name',\n  TokenSeatCount = 'token__seatCount',\n  TokenSymbol = 'token__symbol',\n  TokenTeamAmount = 'token__teamAmount',\n  TokenTotalPayout = 'token__totalPayout',\n  TokenTotalWagered = 'token__totalWagered',\n  TokenTreasuryAmount = 'token__treasuryAmount',\n  TokenUniqueBets = 'token__uniqueBets',\n  TokenUserCount = 'token__userCount',\n  TokenWagerAndJoinTxnCount = 'token__wagerAndJoinTxnCount',\n  TotalPayout = 'totalPayout',\n  TotalWagered = 'totalWagered',\n  User = 'user',\n  UserBetCount = 'user__betCount',\n  UserBetTxnCount = 'user__betTxnCount',\n  UserConsumedLinkVrfFees = 'user__consumedLinkVRFFees',\n  UserConsumedNativeVrfFees = 'user__consumedNativeVRFFees',\n  UserFirstBetTimestamp = 'user__firstBetTimestamp',\n  UserId = 'user__id',\n  UserLastBetTimestamp = 'user__lastBetTimestamp',\n  UserMaxMultiplier = 'user__maxMultiplier',\n  UserPvpMaxMultiplier = 'user__pvpMaxMultiplier',\n  UserSeatCount = 'user__seatCount',\n  UserTotalChargedVrfFees = 'user__totalChargedVRFFees',\n  UserWagerAndJoinTxnCount = 'user__wagerAndJoinTxnCount',\n  UserWinSeatCount = 'user__winSeatCount',\n  UserWinTxnCount = 'user__winTxnCount',\n  WagerAndJoinTxnCount = 'wagerAndJoinTxnCount'\n}\n\nexport type PvPvrfRequest = {\n  __typename?: 'PvPVRFRequest';\n  bet: PvPBet;\n  id: Scalars['ID']['output'];\n  requestTimestamp: Scalars['BigInt']['output'];\n};\n\nexport type PvPvrfRequest_Filter = {\n  /** Filter for the block changed event. */\n  _change_block?: InputMaybe<BlockChangedFilter>;\n  and?: InputMaybe<Array<InputMaybe<PvPvrfRequest_Filter>>>;\n  bet?: InputMaybe<Scalars['String']['input']>;\n  bet_?: InputMaybe<PvPBet_Filter>;\n  bet_contains?: InputMaybe<Scalars['String']['input']>;\n  bet_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  bet_ends_with?: InputMaybe<Scalars['String']['input']>;\n  bet_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  bet_gt?: InputMaybe<Scalars['String']['input']>;\n  bet_gte?: InputMaybe<Scalars['String']['input']>;\n  bet_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  bet_lt?: InputMaybe<Scalars['String']['input']>;\n  bet_lte?: InputMaybe<Scalars['String']['input']>;\n  bet_not?: InputMaybe<Scalars['String']['input']>;\n  bet_not_contains?: InputMaybe<Scalars['String']['input']>;\n  bet_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  bet_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  bet_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  bet_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  bet_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  bet_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  bet_starts_with?: InputMaybe<Scalars['String']['input']>;\n  bet_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  id?: InputMaybe<Scalars['ID']['input']>;\n  id_gt?: InputMaybe<Scalars['ID']['input']>;\n  id_gte?: InputMaybe<Scalars['ID']['input']>;\n  id_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  id_lt?: InputMaybe<Scalars['ID']['input']>;\n  id_lte?: InputMaybe<Scalars['ID']['input']>;\n  id_not?: InputMaybe<Scalars['ID']['input']>;\n  id_not_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  or?: InputMaybe<Array<InputMaybe<PvPvrfRequest_Filter>>>;\n  requestTimestamp?: InputMaybe<Scalars['BigInt']['input']>;\n  requestTimestamp_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  requestTimestamp_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  requestTimestamp_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  requestTimestamp_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  requestTimestamp_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  requestTimestamp_not?: InputMaybe<Scalars['BigInt']['input']>;\n  requestTimestamp_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n};\n\nexport enum PvPvrfRequest_OrderBy {\n  Bet = 'bet',\n  BetBetAmount = 'bet__betAmount',\n  BetBetId = 'bet__betId',\n  BetBetLaunchedTimestamp = 'bet__betLaunchedTimestamp',\n  BetBetLaunchedTxnHash = 'bet__betLaunchedTxnHash',\n  BetBetTimestamp = 'bet__betTimestamp',\n  BetCanceled = 'bet__canceled',\n  BetChargedVrfFees = 'bet__chargedVRFFees',\n  BetConsumedLinkVrfFees = 'bet__consumedLinkVRFFees',\n  BetConsumedNativeVrfFees = 'bet__consumedNativeVRFFees',\n  BetGameAddress = 'bet__gameAddress',\n  BetGameId = 'bet__gameId',\n  BetHouseEdge = 'bet__houseEdge',\n  BetId = 'bet__id',\n  BetPayout = 'bet__payout',\n  BetPot = 'bet__pot',\n  BetRefunded = 'bet__refunded',\n  BetResolved = 'bet__resolved',\n  BetRollTimestamp = 'bet__rollTimestamp',\n  BetRollTxnHash = 'bet__rollTxnHash',\n  Id = 'id',\n  RequestTimestamp = 'requestTimestamp'\n}\n\nexport type Query = {\n  __typename?: 'Query';\n  /** Access to subgraph metadata */\n  _meta?: Maybe<_Meta_>;\n  affiliate?: Maybe<Affiliate>;\n  affiliateGameToken?: Maybe<AffiliateGameToken>;\n  affiliateGameTokens: Array<AffiliateGameToken>;\n  affiliateToken?: Maybe<AffiliateToken>;\n  affiliateTokens: Array<AffiliateToken>;\n  affiliateUser?: Maybe<AffiliateUser>;\n  affiliateUserToken?: Maybe<AffiliateUserToken>;\n  affiliateUserTokens: Array<AffiliateUserToken>;\n  affiliateUsers: Array<AffiliateUser>;\n  affiliates: Array<Affiliate>;\n  bet?: Maybe<Bet>;\n  bets: Array<Bet>;\n  coinTossBattleBet?: Maybe<CoinTossBattleBet>;\n  coinTossBattleBets: Array<CoinTossBattleBet>;\n  gameToken?: Maybe<GameToken>;\n  gameTokenDayData?: Maybe<GameTokenDayData>;\n  gameTokenDayDatas: Array<GameTokenDayData>;\n  gameTokens: Array<GameToken>;\n  kenoBet?: Maybe<KenoBet>;\n  kenoBets: Array<KenoBet>;\n  kenoConfig?: Maybe<KenoConfig>;\n  kenoConfigHub?: Maybe<KenoConfigHub>;\n  kenoConfigHubs: Array<KenoConfigHub>;\n  kenoConfigs: Array<KenoConfig>;\n  leaderboard?: Maybe<Leaderboard>;\n  leaderboardAffiliateToken?: Maybe<LeaderboardAffiliateToken>;\n  leaderboardAffiliateTokens: Array<LeaderboardAffiliateToken>;\n  leaderboardAffiliateUser?: Maybe<LeaderboardAffiliateUser>;\n  leaderboardAffiliateUserToken?: Maybe<LeaderboardAffiliateUserToken>;\n  leaderboardAffiliateUserTokens: Array<LeaderboardAffiliateUserToken>;\n  leaderboardAffiliateUsers: Array<LeaderboardAffiliateUser>;\n  leaderboardToken?: Maybe<LeaderboardToken>;\n  leaderboardTokens: Array<LeaderboardToken>;\n  leaderboards: Array<Leaderboard>;\n  pvPAffiliateGameToken?: Maybe<PvPAffiliateGameToken>;\n  pvPAffiliateGameTokens: Array<PvPAffiliateGameToken>;\n  pvPAffiliateToken?: Maybe<PvPAffiliateToken>;\n  pvPAffiliateTokens: Array<PvPAffiliateToken>;\n  pvPAffiliateUserToken?: Maybe<PvPAffiliateUserToken>;\n  pvPAffiliateUserTokens: Array<PvPAffiliateUserToken>;\n  pvPBet?: Maybe<PvPBet>;\n  pvPBets: Array<PvPBet>;\n  pvPGameJoinTransaction?: Maybe<PvPGameJoinTransaction>;\n  pvPGameJoinTransactions: Array<PvPGameJoinTransaction>;\n  pvPGameToken?: Maybe<PvPGameToken>;\n  pvPGameTokenDayData?: Maybe<PvPGameTokenDayData>;\n  pvPGameTokenDayDatas: Array<PvPGameTokenDayData>;\n  pvPGameTokens: Array<PvPGameToken>;\n  pvPToken?: Maybe<PvPToken>;\n  pvPTokens: Array<PvPToken>;\n  pvPUserGameToken?: Maybe<PvPUserGameToken>;\n  pvPUserGameTokenDayData?: Maybe<PvPUserGameTokenDayData>;\n  pvPUserGameTokenDayDatas: Array<PvPUserGameTokenDayData>;\n  pvPUserGameTokens: Array<PvPUserGameToken>;\n  pvPUserToken?: Maybe<PvPUserToken>;\n  pvPUserTokens: Array<PvPUserToken>;\n  pvPVRFRequest?: Maybe<PvPvrfRequest>;\n  pvPVRFRequests: Array<PvPvrfRequest>;\n  russianRouletteBet?: Maybe<RussianRouletteBet>;\n  russianRouletteBets: Array<RussianRouletteBet>;\n  store?: Maybe<Store>;\n  stores: Array<Store>;\n  token?: Maybe<Token>;\n  tokenBalancesDayData?: Maybe<TokenBalancesDayData>;\n  tokenBalancesDayDatas: Array<TokenBalancesDayData>;\n  tokens: Array<Token>;\n  user?: Maybe<User>;\n  userGameToken?: Maybe<UserGameToken>;\n  userGameTokenDayData?: Maybe<UserGameTokenDayData>;\n  userGameTokenDayDatas: Array<UserGameTokenDayData>;\n  userGameTokens: Array<UserGameToken>;\n  userToken?: Maybe<UserToken>;\n  userTokens: Array<UserToken>;\n  users: Array<User>;\n  weightedGameBet?: Maybe<WeightedGameBet>;\n  weightedGameBets: Array<WeightedGameBet>;\n  weightedGameConfig?: Maybe<WeightedGameConfig>;\n  weightedGameConfigs: Array<WeightedGameConfig>;\n};\n\n\nexport type Query_MetaArgs = {\n  block?: InputMaybe<Block_Height>;\n};\n\n\nexport type QueryAffiliateArgs = {\n  block?: InputMaybe<Block_Height>;\n  id: Scalars['ID']['input'];\n  subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryAffiliateGameTokenArgs = {\n  block?: InputMaybe<Block_Height>;\n  id: Scalars['ID']['input'];\n  subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryAffiliateGameTokensArgs = {\n  block?: InputMaybe<Block_Height>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<AffiliateGameToken_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  subgraphError?: _SubgraphErrorPolicy_;\n  where?: InputMaybe<AffiliateGameToken_Filter>;\n};\n\n\nexport type QueryAffiliateTokenArgs = {\n  block?: InputMaybe<Block_Height>;\n  id: Scalars['ID']['input'];\n  subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryAffiliateTokensArgs = {\n  block?: InputMaybe<Block_Height>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<AffiliateToken_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  subgraphError?: _SubgraphErrorPolicy_;\n  where?: InputMaybe<AffiliateToken_Filter>;\n};\n\n\nexport type QueryAffiliateUserArgs = {\n  block?: InputMaybe<Block_Height>;\n  id: Scalars['ID']['input'];\n  subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryAffiliateUserTokenArgs = {\n  block?: InputMaybe<Block_Height>;\n  id: Scalars['ID']['input'];\n  subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryAffiliateUserTokensArgs = {\n  block?: InputMaybe<Block_Height>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<AffiliateUserToken_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  subgraphError?: _SubgraphErrorPolicy_;\n  where?: InputMaybe<AffiliateUserToken_Filter>;\n};\n\n\nexport type QueryAffiliateUsersArgs = {\n  block?: InputMaybe<Block_Height>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<AffiliateUser_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  subgraphError?: _SubgraphErrorPolicy_;\n  where?: InputMaybe<AffiliateUser_Filter>;\n};\n\n\nexport type QueryAffiliatesArgs = {\n  block?: InputMaybe<Block_Height>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<Affiliate_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  subgraphError?: _SubgraphErrorPolicy_;\n  where?: InputMaybe<Affiliate_Filter>;\n};\n\n\nexport type QueryBetArgs = {\n  block?: InputMaybe<Block_Height>;\n  id: Scalars['ID']['input'];\n  subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryBetsArgs = {\n  block?: InputMaybe<Block_Height>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<Bet_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  subgraphError?: _SubgraphErrorPolicy_;\n  where?: InputMaybe<Bet_Filter>;\n};\n\n\nexport type QueryCoinTossBattleBetArgs = {\n  block?: InputMaybe<Block_Height>;\n  id: Scalars['ID']['input'];\n  subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryCoinTossBattleBetsArgs = {\n  block?: InputMaybe<Block_Height>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<CoinTossBattleBet_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  subgraphError?: _SubgraphErrorPolicy_;\n  where?: InputMaybe<CoinTossBattleBet_Filter>;\n};\n\n\nexport type QueryGameTokenArgs = {\n  block?: InputMaybe<Block_Height>;\n  id: Scalars['ID']['input'];\n  subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryGameTokenDayDataArgs = {\n  block?: InputMaybe<Block_Height>;\n  id: Scalars['ID']['input'];\n  subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryGameTokenDayDatasArgs = {\n  block?: InputMaybe<Block_Height>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<GameTokenDayData_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  subgraphError?: _SubgraphErrorPolicy_;\n  where?: InputMaybe<GameTokenDayData_Filter>;\n};\n\n\nexport type QueryGameTokensArgs = {\n  block?: InputMaybe<Block_Height>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<GameToken_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  subgraphError?: _SubgraphErrorPolicy_;\n  where?: InputMaybe<GameToken_Filter>;\n};\n\n\nexport type QueryKenoBetArgs = {\n  block?: InputMaybe<Block_Height>;\n  id: Scalars['ID']['input'];\n  subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryKenoBetsArgs = {\n  block?: InputMaybe<Block_Height>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<KenoBet_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  subgraphError?: _SubgraphErrorPolicy_;\n  where?: InputMaybe<KenoBet_Filter>;\n};\n\n\nexport type QueryKenoConfigArgs = {\n  block?: InputMaybe<Block_Height>;\n  id: Scalars['ID']['input'];\n  subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryKenoConfigHubArgs = {\n  block?: InputMaybe<Block_Height>;\n  id: Scalars['ID']['input'];\n  subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryKenoConfigHubsArgs = {\n  block?: InputMaybe<Block_Height>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<KenoConfigHub_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  subgraphError?: _SubgraphErrorPolicy_;\n  where?: InputMaybe<KenoConfigHub_Filter>;\n};\n\n\nexport type QueryKenoConfigsArgs = {\n  block?: InputMaybe<Block_Height>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<KenoConfig_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  subgraphError?: _SubgraphErrorPolicy_;\n  where?: InputMaybe<KenoConfig_Filter>;\n};\n\n\nexport type QueryLeaderboardArgs = {\n  block?: InputMaybe<Block_Height>;\n  id: Scalars['ID']['input'];\n  subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryLeaderboardAffiliateTokenArgs = {\n  block?: InputMaybe<Block_Height>;\n  id: Scalars['ID']['input'];\n  subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryLeaderboardAffiliateTokensArgs = {\n  block?: InputMaybe<Block_Height>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<LeaderboardAffiliateToken_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  subgraphError?: _SubgraphErrorPolicy_;\n  where?: InputMaybe<LeaderboardAffiliateToken_Filter>;\n};\n\n\nexport type QueryLeaderboardAffiliateUserArgs = {\n  block?: InputMaybe<Block_Height>;\n  id: Scalars['ID']['input'];\n  subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryLeaderboardAffiliateUserTokenArgs = {\n  block?: InputMaybe<Block_Height>;\n  id: Scalars['ID']['input'];\n  subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryLeaderboardAffiliateUserTokensArgs = {\n  block?: InputMaybe<Block_Height>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<LeaderboardAffiliateUserToken_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  subgraphError?: _SubgraphErrorPolicy_;\n  where?: InputMaybe<LeaderboardAffiliateUserToken_Filter>;\n};\n\n\nexport type QueryLeaderboardAffiliateUsersArgs = {\n  block?: InputMaybe<Block_Height>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<LeaderboardAffiliateUser_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  subgraphError?: _SubgraphErrorPolicy_;\n  where?: InputMaybe<LeaderboardAffiliateUser_Filter>;\n};\n\n\nexport type QueryLeaderboardTokenArgs = {\n  block?: InputMaybe<Block_Height>;\n  id: Scalars['ID']['input'];\n  subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryLeaderboardTokensArgs = {\n  block?: InputMaybe<Block_Height>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<LeaderboardToken_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  subgraphError?: _SubgraphErrorPolicy_;\n  where?: InputMaybe<LeaderboardToken_Filter>;\n};\n\n\nexport type QueryLeaderboardsArgs = {\n  block?: InputMaybe<Block_Height>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<Leaderboard_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  subgraphError?: _SubgraphErrorPolicy_;\n  where?: InputMaybe<Leaderboard_Filter>;\n};\n\n\nexport type QueryPvPAffiliateGameTokenArgs = {\n  block?: InputMaybe<Block_Height>;\n  id: Scalars['ID']['input'];\n  subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryPvPAffiliateGameTokensArgs = {\n  block?: InputMaybe<Block_Height>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<PvPAffiliateGameToken_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  subgraphError?: _SubgraphErrorPolicy_;\n  where?: InputMaybe<PvPAffiliateGameToken_Filter>;\n};\n\n\nexport type QueryPvPAffiliateTokenArgs = {\n  block?: InputMaybe<Block_Height>;\n  id: Scalars['ID']['input'];\n  subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryPvPAffiliateTokensArgs = {\n  block?: InputMaybe<Block_Height>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<PvPAffiliateToken_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  subgraphError?: _SubgraphErrorPolicy_;\n  where?: InputMaybe<PvPAffiliateToken_Filter>;\n};\n\n\nexport type QueryPvPAffiliateUserTokenArgs = {\n  block?: InputMaybe<Block_Height>;\n  id: Scalars['ID']['input'];\n  subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryPvPAffiliateUserTokensArgs = {\n  block?: InputMaybe<Block_Height>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<PvPAffiliateUserToken_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  subgraphError?: _SubgraphErrorPolicy_;\n  where?: InputMaybe<PvPAffiliateUserToken_Filter>;\n};\n\n\nexport type QueryPvPBetArgs = {\n  block?: InputMaybe<Block_Height>;\n  id: Scalars['ID']['input'];\n  subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryPvPBetsArgs = {\n  block?: InputMaybe<Block_Height>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<PvPBet_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  subgraphError?: _SubgraphErrorPolicy_;\n  where?: InputMaybe<PvPBet_Filter>;\n};\n\n\nexport type QueryPvPGameJoinTransactionArgs = {\n  block?: InputMaybe<Block_Height>;\n  id: Scalars['ID']['input'];\n  subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryPvPGameJoinTransactionsArgs = {\n  block?: InputMaybe<Block_Height>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<PvPGameJoinTransaction_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  subgraphError?: _SubgraphErrorPolicy_;\n  where?: InputMaybe<PvPGameJoinTransaction_Filter>;\n};\n\n\nexport type QueryPvPGameTokenArgs = {\n  block?: InputMaybe<Block_Height>;\n  id: Scalars['ID']['input'];\n  subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryPvPGameTokenDayDataArgs = {\n  block?: InputMaybe<Block_Height>;\n  id: Scalars['ID']['input'];\n  subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryPvPGameTokenDayDatasArgs = {\n  block?: InputMaybe<Block_Height>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<PvPGameTokenDayData_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  subgraphError?: _SubgraphErrorPolicy_;\n  where?: InputMaybe<PvPGameTokenDayData_Filter>;\n};\n\n\nexport type QueryPvPGameTokensArgs = {\n  block?: InputMaybe<Block_Height>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<PvPGameToken_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  subgraphError?: _SubgraphErrorPolicy_;\n  where?: InputMaybe<PvPGameToken_Filter>;\n};\n\n\nexport type QueryPvPTokenArgs = {\n  block?: InputMaybe<Block_Height>;\n  id: Scalars['ID']['input'];\n  subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryPvPTokensArgs = {\n  block?: InputMaybe<Block_Height>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<PvPToken_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  subgraphError?: _SubgraphErrorPolicy_;\n  where?: InputMaybe<PvPToken_Filter>;\n};\n\n\nexport type QueryPvPUserGameTokenArgs = {\n  block?: InputMaybe<Block_Height>;\n  id: Scalars['ID']['input'];\n  subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryPvPUserGameTokenDayDataArgs = {\n  block?: InputMaybe<Block_Height>;\n  id: Scalars['ID']['input'];\n  subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryPvPUserGameTokenDayDatasArgs = {\n  block?: InputMaybe<Block_Height>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<PvPUserGameTokenDayData_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  subgraphError?: _SubgraphErrorPolicy_;\n  where?: InputMaybe<PvPUserGameTokenDayData_Filter>;\n};\n\n\nexport type QueryPvPUserGameTokensArgs = {\n  block?: InputMaybe<Block_Height>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<PvPUserGameToken_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  subgraphError?: _SubgraphErrorPolicy_;\n  where?: InputMaybe<PvPUserGameToken_Filter>;\n};\n\n\nexport type QueryPvPUserTokenArgs = {\n  block?: InputMaybe<Block_Height>;\n  id: Scalars['ID']['input'];\n  subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryPvPUserTokensArgs = {\n  block?: InputMaybe<Block_Height>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<PvPUserToken_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  subgraphError?: _SubgraphErrorPolicy_;\n  where?: InputMaybe<PvPUserToken_Filter>;\n};\n\n\nexport type QueryPvPvrfRequestArgs = {\n  block?: InputMaybe<Block_Height>;\n  id: Scalars['ID']['input'];\n  subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryPvPvrfRequestsArgs = {\n  block?: InputMaybe<Block_Height>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<PvPvrfRequest_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  subgraphError?: _SubgraphErrorPolicy_;\n  where?: InputMaybe<PvPvrfRequest_Filter>;\n};\n\n\nexport type QueryRussianRouletteBetArgs = {\n  block?: InputMaybe<Block_Height>;\n  id: Scalars['ID']['input'];\n  subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryRussianRouletteBetsArgs = {\n  block?: InputMaybe<Block_Height>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<RussianRouletteBet_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  subgraphError?: _SubgraphErrorPolicy_;\n  where?: InputMaybe<RussianRouletteBet_Filter>;\n};\n\n\nexport type QueryStoreArgs = {\n  block?: InputMaybe<Block_Height>;\n  id: Scalars['ID']['input'];\n  subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryStoresArgs = {\n  block?: InputMaybe<Block_Height>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<Store_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  subgraphError?: _SubgraphErrorPolicy_;\n  where?: InputMaybe<Store_Filter>;\n};\n\n\nexport type QueryTokenArgs = {\n  block?: InputMaybe<Block_Height>;\n  id: Scalars['ID']['input'];\n  subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryTokenBalancesDayDataArgs = {\n  block?: InputMaybe<Block_Height>;\n  id: Scalars['ID']['input'];\n  subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryTokenBalancesDayDatasArgs = {\n  block?: InputMaybe<Block_Height>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<TokenBalancesDayData_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  subgraphError?: _SubgraphErrorPolicy_;\n  where?: InputMaybe<TokenBalancesDayData_Filter>;\n};\n\n\nexport type QueryTokensArgs = {\n  block?: InputMaybe<Block_Height>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<Token_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  subgraphError?: _SubgraphErrorPolicy_;\n  where?: InputMaybe<Token_Filter>;\n};\n\n\nexport type QueryUserArgs = {\n  block?: InputMaybe<Block_Height>;\n  id: Scalars['ID']['input'];\n  subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryUserGameTokenArgs = {\n  block?: InputMaybe<Block_Height>;\n  id: Scalars['ID']['input'];\n  subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryUserGameTokenDayDataArgs = {\n  block?: InputMaybe<Block_Height>;\n  id: Scalars['ID']['input'];\n  subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryUserGameTokenDayDatasArgs = {\n  block?: InputMaybe<Block_Height>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<UserGameTokenDayData_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  subgraphError?: _SubgraphErrorPolicy_;\n  where?: InputMaybe<UserGameTokenDayData_Filter>;\n};\n\n\nexport type QueryUserGameTokensArgs = {\n  block?: InputMaybe<Block_Height>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<UserGameToken_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  subgraphError?: _SubgraphErrorPolicy_;\n  where?: InputMaybe<UserGameToken_Filter>;\n};\n\n\nexport type QueryUserTokenArgs = {\n  block?: InputMaybe<Block_Height>;\n  id: Scalars['ID']['input'];\n  subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryUserTokensArgs = {\n  block?: InputMaybe<Block_Height>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<UserToken_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  subgraphError?: _SubgraphErrorPolicy_;\n  where?: InputMaybe<UserToken_Filter>;\n};\n\n\nexport type QueryUsersArgs = {\n  block?: InputMaybe<Block_Height>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<User_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  subgraphError?: _SubgraphErrorPolicy_;\n  where?: InputMaybe<User_Filter>;\n};\n\n\nexport type QueryWeightedGameBetArgs = {\n  block?: InputMaybe<Block_Height>;\n  id: Scalars['ID']['input'];\n  subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryWeightedGameBetsArgs = {\n  block?: InputMaybe<Block_Height>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<WeightedGameBet_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  subgraphError?: _SubgraphErrorPolicy_;\n  where?: InputMaybe<WeightedGameBet_Filter>;\n};\n\n\nexport type QueryWeightedGameConfigArgs = {\n  block?: InputMaybe<Block_Height>;\n  id: Scalars['ID']['input'];\n  subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryWeightedGameConfigsArgs = {\n  block?: InputMaybe<Block_Height>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<WeightedGameConfig_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  subgraphError?: _SubgraphErrorPolicy_;\n  where?: InputMaybe<WeightedGameConfig_Filter>;\n};\n\nexport type RussianRouletteBet = {\n  __typename?: 'RussianRouletteBet';\n  bet?: Maybe<PvPBet>;\n  deathRatio: Scalars['Int']['output'];\n  gameResolvedTxnHash?: Maybe<Scalars['Bytes']['output']>;\n  id: Scalars['ID']['output'];\n  killedSeats?: Maybe<Array<Scalars['Bytes']['output']>>;\n  killedSeatsCount?: Maybe<Scalars['Int']['output']>;\n  maxSeats: Scalars['Int']['output'];\n  startsAt: Scalars['BigInt']['output'];\n};\n\nexport type RussianRouletteBet_Filter = {\n  /** Filter for the block changed event. */\n  _change_block?: InputMaybe<BlockChangedFilter>;\n  and?: InputMaybe<Array<InputMaybe<RussianRouletteBet_Filter>>>;\n  bet?: InputMaybe<Scalars['String']['input']>;\n  bet_?: InputMaybe<PvPBet_Filter>;\n  bet_contains?: InputMaybe<Scalars['String']['input']>;\n  bet_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  bet_ends_with?: InputMaybe<Scalars['String']['input']>;\n  bet_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  bet_gt?: InputMaybe<Scalars['String']['input']>;\n  bet_gte?: InputMaybe<Scalars['String']['input']>;\n  bet_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  bet_lt?: InputMaybe<Scalars['String']['input']>;\n  bet_lte?: InputMaybe<Scalars['String']['input']>;\n  bet_not?: InputMaybe<Scalars['String']['input']>;\n  bet_not_contains?: InputMaybe<Scalars['String']['input']>;\n  bet_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  bet_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  bet_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  bet_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  bet_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  bet_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  bet_starts_with?: InputMaybe<Scalars['String']['input']>;\n  bet_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  deathRatio?: InputMaybe<Scalars['Int']['input']>;\n  deathRatio_gt?: InputMaybe<Scalars['Int']['input']>;\n  deathRatio_gte?: InputMaybe<Scalars['Int']['input']>;\n  deathRatio_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  deathRatio_lt?: InputMaybe<Scalars['Int']['input']>;\n  deathRatio_lte?: InputMaybe<Scalars['Int']['input']>;\n  deathRatio_not?: InputMaybe<Scalars['Int']['input']>;\n  deathRatio_not_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  gameResolvedTxnHash?: InputMaybe<Scalars['Bytes']['input']>;\n  gameResolvedTxnHash_contains?: InputMaybe<Scalars['Bytes']['input']>;\n  gameResolvedTxnHash_gt?: InputMaybe<Scalars['Bytes']['input']>;\n  gameResolvedTxnHash_gte?: InputMaybe<Scalars['Bytes']['input']>;\n  gameResolvedTxnHash_in?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  gameResolvedTxnHash_lt?: InputMaybe<Scalars['Bytes']['input']>;\n  gameResolvedTxnHash_lte?: InputMaybe<Scalars['Bytes']['input']>;\n  gameResolvedTxnHash_not?: InputMaybe<Scalars['Bytes']['input']>;\n  gameResolvedTxnHash_not_contains?: InputMaybe<Scalars['Bytes']['input']>;\n  gameResolvedTxnHash_not_in?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  id?: InputMaybe<Scalars['ID']['input']>;\n  id_gt?: InputMaybe<Scalars['ID']['input']>;\n  id_gte?: InputMaybe<Scalars['ID']['input']>;\n  id_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  id_lt?: InputMaybe<Scalars['ID']['input']>;\n  id_lte?: InputMaybe<Scalars['ID']['input']>;\n  id_not?: InputMaybe<Scalars['ID']['input']>;\n  id_not_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  killedSeats?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  killedSeatsCount?: InputMaybe<Scalars['Int']['input']>;\n  killedSeatsCount_gt?: InputMaybe<Scalars['Int']['input']>;\n  killedSeatsCount_gte?: InputMaybe<Scalars['Int']['input']>;\n  killedSeatsCount_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  killedSeatsCount_lt?: InputMaybe<Scalars['Int']['input']>;\n  killedSeatsCount_lte?: InputMaybe<Scalars['Int']['input']>;\n  killedSeatsCount_not?: InputMaybe<Scalars['Int']['input']>;\n  killedSeatsCount_not_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  killedSeats_contains?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  killedSeats_contains_nocase?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  killedSeats_not?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  killedSeats_not_contains?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  killedSeats_not_contains_nocase?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  maxSeats?: InputMaybe<Scalars['Int']['input']>;\n  maxSeats_gt?: InputMaybe<Scalars['Int']['input']>;\n  maxSeats_gte?: InputMaybe<Scalars['Int']['input']>;\n  maxSeats_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  maxSeats_lt?: InputMaybe<Scalars['Int']['input']>;\n  maxSeats_lte?: InputMaybe<Scalars['Int']['input']>;\n  maxSeats_not?: InputMaybe<Scalars['Int']['input']>;\n  maxSeats_not_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  or?: InputMaybe<Array<InputMaybe<RussianRouletteBet_Filter>>>;\n  startsAt?: InputMaybe<Scalars['BigInt']['input']>;\n  startsAt_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  startsAt_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  startsAt_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  startsAt_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  startsAt_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  startsAt_not?: InputMaybe<Scalars['BigInt']['input']>;\n  startsAt_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n};\n\nexport enum RussianRouletteBet_OrderBy {\n  Bet = 'bet',\n  BetBetAmount = 'bet__betAmount',\n  BetBetId = 'bet__betId',\n  BetBetLaunchedTimestamp = 'bet__betLaunchedTimestamp',\n  BetBetLaunchedTxnHash = 'bet__betLaunchedTxnHash',\n  BetBetTimestamp = 'bet__betTimestamp',\n  BetCanceled = 'bet__canceled',\n  BetChargedVrfFees = 'bet__chargedVRFFees',\n  BetConsumedLinkVrfFees = 'bet__consumedLinkVRFFees',\n  BetConsumedNativeVrfFees = 'bet__consumedNativeVRFFees',\n  BetGameAddress = 'bet__gameAddress',\n  BetGameId = 'bet__gameId',\n  BetHouseEdge = 'bet__houseEdge',\n  BetId = 'bet__id',\n  BetPayout = 'bet__payout',\n  BetPot = 'bet__pot',\n  BetRefunded = 'bet__refunded',\n  BetResolved = 'bet__resolved',\n  BetRollTimestamp = 'bet__rollTimestamp',\n  BetRollTxnHash = 'bet__rollTxnHash',\n  DeathRatio = 'deathRatio',\n  GameResolvedTxnHash = 'gameResolvedTxnHash',\n  Id = 'id',\n  KilledSeats = 'killedSeats',\n  KilledSeatsCount = 'killedSeatsCount',\n  MaxSeats = 'maxSeats',\n  StartsAt = 'startsAt'\n}\n\nexport type Store = {\n  __typename?: 'Store';\n  affiliateCount: Scalars['BigInt']['output'];\n  betCount: Scalars['BigInt']['output'];\n  betTxnCount: Scalars['BigInt']['output'];\n  id: Scalars['ID']['output'];\n  seatCount: Scalars['BigInt']['output'];\n  userCount: Scalars['BigInt']['output'];\n  wagerAndJoinTxnCount: Scalars['BigInt']['output'];\n};\n\nexport type Store_Filter = {\n  /** Filter for the block changed event. */\n  _change_block?: InputMaybe<BlockChangedFilter>;\n  affiliateCount?: InputMaybe<Scalars['BigInt']['input']>;\n  affiliateCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  affiliateCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  affiliateCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  affiliateCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  affiliateCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  affiliateCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  affiliateCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  and?: InputMaybe<Array<InputMaybe<Store_Filter>>>;\n  betCount?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betTxnCount?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betTxnCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  id?: InputMaybe<Scalars['ID']['input']>;\n  id_gt?: InputMaybe<Scalars['ID']['input']>;\n  id_gte?: InputMaybe<Scalars['ID']['input']>;\n  id_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  id_lt?: InputMaybe<Scalars['ID']['input']>;\n  id_lte?: InputMaybe<Scalars['ID']['input']>;\n  id_not?: InputMaybe<Scalars['ID']['input']>;\n  id_not_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  or?: InputMaybe<Array<InputMaybe<Store_Filter>>>;\n  seatCount?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  seatCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  userCount?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  userCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  wagerAndJoinTxnCount?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  wagerAndJoinTxnCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n};\n\nexport enum Store_OrderBy {\n  AffiliateCount = 'affiliateCount',\n  BetCount = 'betCount',\n  BetTxnCount = 'betTxnCount',\n  Id = 'id',\n  SeatCount = 'seatCount',\n  UserCount = 'userCount',\n  WagerAndJoinTxnCount = 'wagerAndJoinTxnCount'\n}\n\nexport type Token = {\n  __typename?: 'Token';\n  affiliateAmount: Scalars['BigInt']['output'];\n  balancesDayData?: Maybe<Array<TokenBalancesDayData>>;\n  balancesDayDataLength: Scalars['Int']['output'];\n  bankAmount: Scalars['BigInt']['output'];\n  betCount: Scalars['BigInt']['output'];\n  betTxnCount: Scalars['BigInt']['output'];\n  decimals: Scalars['Int']['output'];\n  dividendAmount: Scalars['BigInt']['output'];\n  id: Scalars['Bytes']['output'];\n  name: Scalars['String']['output'];\n  partnerAmount: Scalars['BigInt']['output'];\n  symbol: Scalars['String']['output'];\n  teamAmount: Scalars['BigInt']['output'];\n  totalPayout: Scalars['BigInt']['output'];\n  totalWagered: Scalars['BigInt']['output'];\n  treasuryAmount: Scalars['BigInt']['output'];\n  userCount: Scalars['BigInt']['output'];\n  usersTokens: Array<UserToken>;\n  winTxnCount: Scalars['BigInt']['output'];\n};\n\n\nexport type TokenBalancesDayDataArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<TokenBalancesDayData_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<TokenBalancesDayData_Filter>;\n};\n\n\nexport type TokenUsersTokensArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<UserToken_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<UserToken_Filter>;\n};\n\nexport type TokenBalancesDayData = {\n  __typename?: 'TokenBalancesDayData';\n  balance: Scalars['BigInt']['output'];\n  date: Scalars['Int']['output'];\n  id: Scalars['ID']['output'];\n  token: Token;\n};\n\nexport type TokenBalancesDayData_Filter = {\n  /** Filter for the block changed event. */\n  _change_block?: InputMaybe<BlockChangedFilter>;\n  and?: InputMaybe<Array<InputMaybe<TokenBalancesDayData_Filter>>>;\n  balance?: InputMaybe<Scalars['BigInt']['input']>;\n  balance_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  balance_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  balance_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  balance_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  balance_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  balance_not?: InputMaybe<Scalars['BigInt']['input']>;\n  balance_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  date?: InputMaybe<Scalars['Int']['input']>;\n  date_gt?: InputMaybe<Scalars['Int']['input']>;\n  date_gte?: InputMaybe<Scalars['Int']['input']>;\n  date_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  date_lt?: InputMaybe<Scalars['Int']['input']>;\n  date_lte?: InputMaybe<Scalars['Int']['input']>;\n  date_not?: InputMaybe<Scalars['Int']['input']>;\n  date_not_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  id?: InputMaybe<Scalars['ID']['input']>;\n  id_gt?: InputMaybe<Scalars['ID']['input']>;\n  id_gte?: InputMaybe<Scalars['ID']['input']>;\n  id_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  id_lt?: InputMaybe<Scalars['ID']['input']>;\n  id_lte?: InputMaybe<Scalars['ID']['input']>;\n  id_not?: InputMaybe<Scalars['ID']['input']>;\n  id_not_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  or?: InputMaybe<Array<InputMaybe<TokenBalancesDayData_Filter>>>;\n  token?: InputMaybe<Scalars['String']['input']>;\n  token_?: InputMaybe<Token_Filter>;\n  token_contains?: InputMaybe<Scalars['String']['input']>;\n  token_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_ends_with?: InputMaybe<Scalars['String']['input']>;\n  token_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_gt?: InputMaybe<Scalars['String']['input']>;\n  token_gte?: InputMaybe<Scalars['String']['input']>;\n  token_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  token_lt?: InputMaybe<Scalars['String']['input']>;\n  token_lte?: InputMaybe<Scalars['String']['input']>;\n  token_not?: InputMaybe<Scalars['String']['input']>;\n  token_not_contains?: InputMaybe<Scalars['String']['input']>;\n  token_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  token_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  token_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  token_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_starts_with?: InputMaybe<Scalars['String']['input']>;\n  token_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport enum TokenBalancesDayData_OrderBy {\n  Balance = 'balance',\n  Date = 'date',\n  Id = 'id',\n  Token = 'token',\n  TokenAffiliateAmount = 'token__affiliateAmount',\n  TokenBalancesDayDataLength = 'token__balancesDayDataLength',\n  TokenBankAmount = 'token__bankAmount',\n  TokenBetCount = 'token__betCount',\n  TokenBetTxnCount = 'token__betTxnCount',\n  TokenDecimals = 'token__decimals',\n  TokenDividendAmount = 'token__dividendAmount',\n  TokenId = 'token__id',\n  TokenName = 'token__name',\n  TokenPartnerAmount = 'token__partnerAmount',\n  TokenSymbol = 'token__symbol',\n  TokenTeamAmount = 'token__teamAmount',\n  TokenTotalPayout = 'token__totalPayout',\n  TokenTotalWagered = 'token__totalWagered',\n  TokenTreasuryAmount = 'token__treasuryAmount',\n  TokenUserCount = 'token__userCount',\n  TokenWinTxnCount = 'token__winTxnCount'\n}\n\nexport type Token_Filter = {\n  /** Filter for the block changed event. */\n  _change_block?: InputMaybe<BlockChangedFilter>;\n  affiliateAmount?: InputMaybe<Scalars['BigInt']['input']>;\n  affiliateAmount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  affiliateAmount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  affiliateAmount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  affiliateAmount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  affiliateAmount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  affiliateAmount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  affiliateAmount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  and?: InputMaybe<Array<InputMaybe<Token_Filter>>>;\n  balancesDayDataLength?: InputMaybe<Scalars['Int']['input']>;\n  balancesDayDataLength_gt?: InputMaybe<Scalars['Int']['input']>;\n  balancesDayDataLength_gte?: InputMaybe<Scalars['Int']['input']>;\n  balancesDayDataLength_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  balancesDayDataLength_lt?: InputMaybe<Scalars['Int']['input']>;\n  balancesDayDataLength_lte?: InputMaybe<Scalars['Int']['input']>;\n  balancesDayDataLength_not?: InputMaybe<Scalars['Int']['input']>;\n  balancesDayDataLength_not_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  balancesDayData_?: InputMaybe<TokenBalancesDayData_Filter>;\n  bankAmount?: InputMaybe<Scalars['BigInt']['input']>;\n  bankAmount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  bankAmount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  bankAmount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  bankAmount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  bankAmount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  bankAmount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  bankAmount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betCount?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betTxnCount?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betTxnCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  decimals?: InputMaybe<Scalars['Int']['input']>;\n  decimals_gt?: InputMaybe<Scalars['Int']['input']>;\n  decimals_gte?: InputMaybe<Scalars['Int']['input']>;\n  decimals_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  decimals_lt?: InputMaybe<Scalars['Int']['input']>;\n  decimals_lte?: InputMaybe<Scalars['Int']['input']>;\n  decimals_not?: InputMaybe<Scalars['Int']['input']>;\n  decimals_not_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  dividendAmount?: InputMaybe<Scalars['BigInt']['input']>;\n  dividendAmount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  dividendAmount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  dividendAmount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  dividendAmount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  dividendAmount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  dividendAmount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  dividendAmount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  id?: InputMaybe<Scalars['Bytes']['input']>;\n  id_contains?: InputMaybe<Scalars['Bytes']['input']>;\n  id_gt?: InputMaybe<Scalars['Bytes']['input']>;\n  id_gte?: InputMaybe<Scalars['Bytes']['input']>;\n  id_in?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  id_lt?: InputMaybe<Scalars['Bytes']['input']>;\n  id_lte?: InputMaybe<Scalars['Bytes']['input']>;\n  id_not?: InputMaybe<Scalars['Bytes']['input']>;\n  id_not_contains?: InputMaybe<Scalars['Bytes']['input']>;\n  id_not_in?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  name?: InputMaybe<Scalars['String']['input']>;\n  name_contains?: InputMaybe<Scalars['String']['input']>;\n  name_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  name_ends_with?: InputMaybe<Scalars['String']['input']>;\n  name_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  name_gt?: InputMaybe<Scalars['String']['input']>;\n  name_gte?: InputMaybe<Scalars['String']['input']>;\n  name_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  name_lt?: InputMaybe<Scalars['String']['input']>;\n  name_lte?: InputMaybe<Scalars['String']['input']>;\n  name_not?: InputMaybe<Scalars['String']['input']>;\n  name_not_contains?: InputMaybe<Scalars['String']['input']>;\n  name_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  name_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  name_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  name_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  name_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  name_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  name_starts_with?: InputMaybe<Scalars['String']['input']>;\n  name_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  or?: InputMaybe<Array<InputMaybe<Token_Filter>>>;\n  partnerAmount?: InputMaybe<Scalars['BigInt']['input']>;\n  partnerAmount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  partnerAmount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  partnerAmount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  partnerAmount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  partnerAmount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  partnerAmount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  partnerAmount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  symbol?: InputMaybe<Scalars['String']['input']>;\n  symbol_contains?: InputMaybe<Scalars['String']['input']>;\n  symbol_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  symbol_ends_with?: InputMaybe<Scalars['String']['input']>;\n  symbol_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  symbol_gt?: InputMaybe<Scalars['String']['input']>;\n  symbol_gte?: InputMaybe<Scalars['String']['input']>;\n  symbol_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  symbol_lt?: InputMaybe<Scalars['String']['input']>;\n  symbol_lte?: InputMaybe<Scalars['String']['input']>;\n  symbol_not?: InputMaybe<Scalars['String']['input']>;\n  symbol_not_contains?: InputMaybe<Scalars['String']['input']>;\n  symbol_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  symbol_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  symbol_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  symbol_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  symbol_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  symbol_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  symbol_starts_with?: InputMaybe<Scalars['String']['input']>;\n  symbol_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  teamAmount?: InputMaybe<Scalars['BigInt']['input']>;\n  teamAmount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  teamAmount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  teamAmount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  teamAmount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  teamAmount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  teamAmount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  teamAmount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalPayout?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalPayout_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalWagered?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalWagered_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  treasuryAmount?: InputMaybe<Scalars['BigInt']['input']>;\n  treasuryAmount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  treasuryAmount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  treasuryAmount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  treasuryAmount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  treasuryAmount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  treasuryAmount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  treasuryAmount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  userCount?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  userCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  userCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  usersTokens_?: InputMaybe<UserToken_Filter>;\n  winTxnCount?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  winTxnCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n};\n\nexport enum Token_OrderBy {\n  AffiliateAmount = 'affiliateAmount',\n  BalancesDayData = 'balancesDayData',\n  BalancesDayDataLength = 'balancesDayDataLength',\n  BankAmount = 'bankAmount',\n  BetCount = 'betCount',\n  BetTxnCount = 'betTxnCount',\n  Decimals = 'decimals',\n  DividendAmount = 'dividendAmount',\n  Id = 'id',\n  Name = 'name',\n  PartnerAmount = 'partnerAmount',\n  Symbol = 'symbol',\n  TeamAmount = 'teamAmount',\n  TotalPayout = 'totalPayout',\n  TotalWagered = 'totalWagered',\n  TreasuryAmount = 'treasuryAmount',\n  UserCount = 'userCount',\n  UsersTokens = 'usersTokens',\n  WinTxnCount = 'winTxnCount'\n}\n\nexport type User = {\n  __typename?: 'User';\n  betCount: Scalars['BigInt']['output'];\n  betTxnCount: Scalars['BigInt']['output'];\n  bets: Array<Bet>;\n  consumedLinkVRFFees: Scalars['BigInt']['output'];\n  consumedNativeVRFFees: Scalars['BigInt']['output'];\n  firstBetTimestamp?: Maybe<Scalars['BigInt']['output']>;\n  id: Scalars['Bytes']['output'];\n  lastBetTimestamp?: Maybe<Scalars['BigInt']['output']>;\n  leaderboardAffiliatedUsers: Array<LeaderboardAffiliateUser>;\n  maxMultiplier: Scalars['BigDecimal']['output'];\n  pvpBets: Array<PvPBet>;\n  pvpMaxMultiplier: Scalars['BigDecimal']['output'];\n  pvpUserGameTokens: Array<PvPUserGameToken>;\n  pvpUserTokens: Array<PvPUserToken>;\n  seatCount: Scalars['BigInt']['output'];\n  totalChargedVRFFees: Scalars['BigInt']['output'];\n  userGameTokens: Array<UserGameToken>;\n  userTokens: Array<UserToken>;\n  wagerAndJoinTxnCount: Scalars['BigInt']['output'];\n  winSeatCount: Scalars['BigInt']['output'];\n  winTxnCount: Scalars['BigInt']['output'];\n};\n\n\nexport type UserBetsArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<Bet_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<Bet_Filter>;\n};\n\n\nexport type UserLeaderboardAffiliatedUsersArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<LeaderboardAffiliateUser_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<LeaderboardAffiliateUser_Filter>;\n};\n\n\nexport type UserPvpBetsArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<PvPBet_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<PvPBet_Filter>;\n};\n\n\nexport type UserPvpUserGameTokensArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<PvPUserGameToken_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<PvPUserGameToken_Filter>;\n};\n\n\nexport type UserPvpUserTokensArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<PvPUserToken_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<PvPUserToken_Filter>;\n};\n\n\nexport type UserUserGameTokensArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<UserGameToken_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<UserGameToken_Filter>;\n};\n\n\nexport type UserUserTokensArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<UserToken_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<UserToken_Filter>;\n};\n\nexport type UserGameToken = {\n  __typename?: 'UserGameToken';\n  betCount: Scalars['BigInt']['output'];\n  betTxnCount: Scalars['BigInt']['output'];\n  dayData?: Maybe<Array<UserGameTokenDayData>>;\n  dayDataLength: Scalars['Int']['output'];\n  game: Scalars['String']['output'];\n  id: Scalars['ID']['output'];\n  token: Token;\n  totalPayout: Scalars['BigInt']['output'];\n  totalWagered: Scalars['BigInt']['output'];\n  user: User;\n  winTxnCount: Scalars['BigInt']['output'];\n};\n\n\nexport type UserGameTokenDayDataArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<UserGameTokenDayData_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<UserGameTokenDayData_Filter>;\n};\n\nexport type UserGameTokenDayData = {\n  __typename?: 'UserGameTokenDayData';\n  betTxnCount: Scalars['BigInt']['output'];\n  date: Scalars['Int']['output'];\n  id: Scalars['ID']['output'];\n  userGameToken: UserGameToken;\n};\n\nexport type UserGameTokenDayData_Filter = {\n  /** Filter for the block changed event. */\n  _change_block?: InputMaybe<BlockChangedFilter>;\n  and?: InputMaybe<Array<InputMaybe<UserGameTokenDayData_Filter>>>;\n  betTxnCount?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betTxnCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  date?: InputMaybe<Scalars['Int']['input']>;\n  date_gt?: InputMaybe<Scalars['Int']['input']>;\n  date_gte?: InputMaybe<Scalars['Int']['input']>;\n  date_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  date_lt?: InputMaybe<Scalars['Int']['input']>;\n  date_lte?: InputMaybe<Scalars['Int']['input']>;\n  date_not?: InputMaybe<Scalars['Int']['input']>;\n  date_not_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  id?: InputMaybe<Scalars['ID']['input']>;\n  id_gt?: InputMaybe<Scalars['ID']['input']>;\n  id_gte?: InputMaybe<Scalars['ID']['input']>;\n  id_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  id_lt?: InputMaybe<Scalars['ID']['input']>;\n  id_lte?: InputMaybe<Scalars['ID']['input']>;\n  id_not?: InputMaybe<Scalars['ID']['input']>;\n  id_not_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  or?: InputMaybe<Array<InputMaybe<UserGameTokenDayData_Filter>>>;\n  userGameToken?: InputMaybe<Scalars['String']['input']>;\n  userGameToken_?: InputMaybe<UserGameToken_Filter>;\n  userGameToken_contains?: InputMaybe<Scalars['String']['input']>;\n  userGameToken_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  userGameToken_ends_with?: InputMaybe<Scalars['String']['input']>;\n  userGameToken_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  userGameToken_gt?: InputMaybe<Scalars['String']['input']>;\n  userGameToken_gte?: InputMaybe<Scalars['String']['input']>;\n  userGameToken_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  userGameToken_lt?: InputMaybe<Scalars['String']['input']>;\n  userGameToken_lte?: InputMaybe<Scalars['String']['input']>;\n  userGameToken_not?: InputMaybe<Scalars['String']['input']>;\n  userGameToken_not_contains?: InputMaybe<Scalars['String']['input']>;\n  userGameToken_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  userGameToken_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  userGameToken_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  userGameToken_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  userGameToken_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  userGameToken_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  userGameToken_starts_with?: InputMaybe<Scalars['String']['input']>;\n  userGameToken_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport enum UserGameTokenDayData_OrderBy {\n  BetTxnCount = 'betTxnCount',\n  Date = 'date',\n  Id = 'id',\n  UserGameToken = 'userGameToken',\n  UserGameTokenBetCount = 'userGameToken__betCount',\n  UserGameTokenBetTxnCount = 'userGameToken__betTxnCount',\n  UserGameTokenDayDataLength = 'userGameToken__dayDataLength',\n  UserGameTokenGame = 'userGameToken__game',\n  UserGameTokenId = 'userGameToken__id',\n  UserGameTokenTotalPayout = 'userGameToken__totalPayout',\n  UserGameTokenTotalWagered = 'userGameToken__totalWagered',\n  UserGameTokenWinTxnCount = 'userGameToken__winTxnCount'\n}\n\nexport type UserGameToken_Filter = {\n  /** Filter for the block changed event. */\n  _change_block?: InputMaybe<BlockChangedFilter>;\n  and?: InputMaybe<Array<InputMaybe<UserGameToken_Filter>>>;\n  betCount?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betTxnCount?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betTxnCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  dayDataLength?: InputMaybe<Scalars['Int']['input']>;\n  dayDataLength_gt?: InputMaybe<Scalars['Int']['input']>;\n  dayDataLength_gte?: InputMaybe<Scalars['Int']['input']>;\n  dayDataLength_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  dayDataLength_lt?: InputMaybe<Scalars['Int']['input']>;\n  dayDataLength_lte?: InputMaybe<Scalars['Int']['input']>;\n  dayDataLength_not?: InputMaybe<Scalars['Int']['input']>;\n  dayDataLength_not_in?: InputMaybe<Array<Scalars['Int']['input']>>;\n  dayData_?: InputMaybe<UserGameTokenDayData_Filter>;\n  game?: InputMaybe<Scalars['String']['input']>;\n  game_contains?: InputMaybe<Scalars['String']['input']>;\n  game_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  game_ends_with?: InputMaybe<Scalars['String']['input']>;\n  game_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  game_gt?: InputMaybe<Scalars['String']['input']>;\n  game_gte?: InputMaybe<Scalars['String']['input']>;\n  game_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  game_lt?: InputMaybe<Scalars['String']['input']>;\n  game_lte?: InputMaybe<Scalars['String']['input']>;\n  game_not?: InputMaybe<Scalars['String']['input']>;\n  game_not_contains?: InputMaybe<Scalars['String']['input']>;\n  game_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  game_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  game_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  game_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  game_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  game_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  game_starts_with?: InputMaybe<Scalars['String']['input']>;\n  game_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  id?: InputMaybe<Scalars['ID']['input']>;\n  id_gt?: InputMaybe<Scalars['ID']['input']>;\n  id_gte?: InputMaybe<Scalars['ID']['input']>;\n  id_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  id_lt?: InputMaybe<Scalars['ID']['input']>;\n  id_lte?: InputMaybe<Scalars['ID']['input']>;\n  id_not?: InputMaybe<Scalars['ID']['input']>;\n  id_not_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  or?: InputMaybe<Array<InputMaybe<UserGameToken_Filter>>>;\n  token?: InputMaybe<Scalars['String']['input']>;\n  token_?: InputMaybe<Token_Filter>;\n  token_contains?: InputMaybe<Scalars['String']['input']>;\n  token_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_ends_with?: InputMaybe<Scalars['String']['input']>;\n  token_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_gt?: InputMaybe<Scalars['String']['input']>;\n  token_gte?: InputMaybe<Scalars['String']['input']>;\n  token_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  token_lt?: InputMaybe<Scalars['String']['input']>;\n  token_lte?: InputMaybe<Scalars['String']['input']>;\n  token_not?: InputMaybe<Scalars['String']['input']>;\n  token_not_contains?: InputMaybe<Scalars['String']['input']>;\n  token_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  token_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  token_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  token_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_starts_with?: InputMaybe<Scalars['String']['input']>;\n  token_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  totalPayout?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalPayout_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalWagered?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalWagered_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  user?: InputMaybe<Scalars['String']['input']>;\n  user_?: InputMaybe<User_Filter>;\n  user_contains?: InputMaybe<Scalars['String']['input']>;\n  user_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_ends_with?: InputMaybe<Scalars['String']['input']>;\n  user_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_gt?: InputMaybe<Scalars['String']['input']>;\n  user_gte?: InputMaybe<Scalars['String']['input']>;\n  user_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  user_lt?: InputMaybe<Scalars['String']['input']>;\n  user_lte?: InputMaybe<Scalars['String']['input']>;\n  user_not?: InputMaybe<Scalars['String']['input']>;\n  user_not_contains?: InputMaybe<Scalars['String']['input']>;\n  user_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  user_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  user_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  user_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_starts_with?: InputMaybe<Scalars['String']['input']>;\n  user_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  winTxnCount?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  winTxnCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n};\n\nexport enum UserGameToken_OrderBy {\n  BetCount = 'betCount',\n  BetTxnCount = 'betTxnCount',\n  DayData = 'dayData',\n  DayDataLength = 'dayDataLength',\n  Game = 'game',\n  Id = 'id',\n  Token = 'token',\n  TokenAffiliateAmount = 'token__affiliateAmount',\n  TokenBalancesDayDataLength = 'token__balancesDayDataLength',\n  TokenBankAmount = 'token__bankAmount',\n  TokenBetCount = 'token__betCount',\n  TokenBetTxnCount = 'token__betTxnCount',\n  TokenDecimals = 'token__decimals',\n  TokenDividendAmount = 'token__dividendAmount',\n  TokenId = 'token__id',\n  TokenName = 'token__name',\n  TokenPartnerAmount = 'token__partnerAmount',\n  TokenSymbol = 'token__symbol',\n  TokenTeamAmount = 'token__teamAmount',\n  TokenTotalPayout = 'token__totalPayout',\n  TokenTotalWagered = 'token__totalWagered',\n  TokenTreasuryAmount = 'token__treasuryAmount',\n  TokenUserCount = 'token__userCount',\n  TokenWinTxnCount = 'token__winTxnCount',\n  TotalPayout = 'totalPayout',\n  TotalWagered = 'totalWagered',\n  User = 'user',\n  UserBetCount = 'user__betCount',\n  UserBetTxnCount = 'user__betTxnCount',\n  UserConsumedLinkVrfFees = 'user__consumedLinkVRFFees',\n  UserConsumedNativeVrfFees = 'user__consumedNativeVRFFees',\n  UserFirstBetTimestamp = 'user__firstBetTimestamp',\n  UserId = 'user__id',\n  UserLastBetTimestamp = 'user__lastBetTimestamp',\n  UserMaxMultiplier = 'user__maxMultiplier',\n  UserPvpMaxMultiplier = 'user__pvpMaxMultiplier',\n  UserSeatCount = 'user__seatCount',\n  UserTotalChargedVrfFees = 'user__totalChargedVRFFees',\n  UserWagerAndJoinTxnCount = 'user__wagerAndJoinTxnCount',\n  UserWinSeatCount = 'user__winSeatCount',\n  UserWinTxnCount = 'user__winTxnCount',\n  WinTxnCount = 'winTxnCount'\n}\n\nexport type UserToken = {\n  __typename?: 'UserToken';\n  betCount: Scalars['BigInt']['output'];\n  betTxnCount: Scalars['BigInt']['output'];\n  id: Scalars['ID']['output'];\n  maxPayout: Scalars['BigInt']['output'];\n  token: Token;\n  totalPayout: Scalars['BigInt']['output'];\n  totalWagered: Scalars['BigInt']['output'];\n  user: User;\n  winTxnCount: Scalars['BigInt']['output'];\n};\n\nexport type UserToken_Filter = {\n  /** Filter for the block changed event. */\n  _change_block?: InputMaybe<BlockChangedFilter>;\n  and?: InputMaybe<Array<InputMaybe<UserToken_Filter>>>;\n  betCount?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betTxnCount?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betTxnCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  id?: InputMaybe<Scalars['ID']['input']>;\n  id_gt?: InputMaybe<Scalars['ID']['input']>;\n  id_gte?: InputMaybe<Scalars['ID']['input']>;\n  id_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  id_lt?: InputMaybe<Scalars['ID']['input']>;\n  id_lte?: InputMaybe<Scalars['ID']['input']>;\n  id_not?: InputMaybe<Scalars['ID']['input']>;\n  id_not_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  maxPayout?: InputMaybe<Scalars['BigInt']['input']>;\n  maxPayout_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  maxPayout_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  maxPayout_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  maxPayout_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  maxPayout_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  maxPayout_not?: InputMaybe<Scalars['BigInt']['input']>;\n  maxPayout_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  or?: InputMaybe<Array<InputMaybe<UserToken_Filter>>>;\n  token?: InputMaybe<Scalars['String']['input']>;\n  token_?: InputMaybe<Token_Filter>;\n  token_contains?: InputMaybe<Scalars['String']['input']>;\n  token_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_ends_with?: InputMaybe<Scalars['String']['input']>;\n  token_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_gt?: InputMaybe<Scalars['String']['input']>;\n  token_gte?: InputMaybe<Scalars['String']['input']>;\n  token_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  token_lt?: InputMaybe<Scalars['String']['input']>;\n  token_lte?: InputMaybe<Scalars['String']['input']>;\n  token_not?: InputMaybe<Scalars['String']['input']>;\n  token_not_contains?: InputMaybe<Scalars['String']['input']>;\n  token_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  token_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  token_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  token_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  token_starts_with?: InputMaybe<Scalars['String']['input']>;\n  token_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  totalPayout?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalPayout_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalPayout_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalWagered?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalWagered_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalWagered_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  user?: InputMaybe<Scalars['String']['input']>;\n  user_?: InputMaybe<User_Filter>;\n  user_contains?: InputMaybe<Scalars['String']['input']>;\n  user_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_ends_with?: InputMaybe<Scalars['String']['input']>;\n  user_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_gt?: InputMaybe<Scalars['String']['input']>;\n  user_gte?: InputMaybe<Scalars['String']['input']>;\n  user_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  user_lt?: InputMaybe<Scalars['String']['input']>;\n  user_lte?: InputMaybe<Scalars['String']['input']>;\n  user_not?: InputMaybe<Scalars['String']['input']>;\n  user_not_contains?: InputMaybe<Scalars['String']['input']>;\n  user_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  user_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  user_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  user_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  user_starts_with?: InputMaybe<Scalars['String']['input']>;\n  user_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  winTxnCount?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  winTxnCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n};\n\nexport enum UserToken_OrderBy {\n  BetCount = 'betCount',\n  BetTxnCount = 'betTxnCount',\n  Id = 'id',\n  MaxPayout = 'maxPayout',\n  Token = 'token',\n  TokenAffiliateAmount = 'token__affiliateAmount',\n  TokenBalancesDayDataLength = 'token__balancesDayDataLength',\n  TokenBankAmount = 'token__bankAmount',\n  TokenBetCount = 'token__betCount',\n  TokenBetTxnCount = 'token__betTxnCount',\n  TokenDecimals = 'token__decimals',\n  TokenDividendAmount = 'token__dividendAmount',\n  TokenId = 'token__id',\n  TokenName = 'token__name',\n  TokenPartnerAmount = 'token__partnerAmount',\n  TokenSymbol = 'token__symbol',\n  TokenTeamAmount = 'token__teamAmount',\n  TokenTotalPayout = 'token__totalPayout',\n  TokenTotalWagered = 'token__totalWagered',\n  TokenTreasuryAmount = 'token__treasuryAmount',\n  TokenUserCount = 'token__userCount',\n  TokenWinTxnCount = 'token__winTxnCount',\n  TotalPayout = 'totalPayout',\n  TotalWagered = 'totalWagered',\n  User = 'user',\n  UserBetCount = 'user__betCount',\n  UserBetTxnCount = 'user__betTxnCount',\n  UserConsumedLinkVrfFees = 'user__consumedLinkVRFFees',\n  UserConsumedNativeVrfFees = 'user__consumedNativeVRFFees',\n  UserFirstBetTimestamp = 'user__firstBetTimestamp',\n  UserId = 'user__id',\n  UserLastBetTimestamp = 'user__lastBetTimestamp',\n  UserMaxMultiplier = 'user__maxMultiplier',\n  UserPvpMaxMultiplier = 'user__pvpMaxMultiplier',\n  UserSeatCount = 'user__seatCount',\n  UserTotalChargedVrfFees = 'user__totalChargedVRFFees',\n  UserWagerAndJoinTxnCount = 'user__wagerAndJoinTxnCount',\n  UserWinSeatCount = 'user__winSeatCount',\n  UserWinTxnCount = 'user__winTxnCount',\n  WinTxnCount = 'winTxnCount'\n}\n\nexport type User_Filter = {\n  /** Filter for the block changed event. */\n  _change_block?: InputMaybe<BlockChangedFilter>;\n  and?: InputMaybe<Array<InputMaybe<User_Filter>>>;\n  betCount?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  betCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betTxnCount?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  betTxnCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  betTxnCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  bets_?: InputMaybe<Bet_Filter>;\n  consumedLinkVRFFees?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedLinkVRFFees_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedLinkVRFFees_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedLinkVRFFees_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  consumedLinkVRFFees_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedLinkVRFFees_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedLinkVRFFees_not?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedLinkVRFFees_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  consumedNativeVRFFees?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedNativeVRFFees_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedNativeVRFFees_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedNativeVRFFees_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  consumedNativeVRFFees_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedNativeVRFFees_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedNativeVRFFees_not?: InputMaybe<Scalars['BigInt']['input']>;\n  consumedNativeVRFFees_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  firstBetTimestamp?: InputMaybe<Scalars['BigInt']['input']>;\n  firstBetTimestamp_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  firstBetTimestamp_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  firstBetTimestamp_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  firstBetTimestamp_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  firstBetTimestamp_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  firstBetTimestamp_not?: InputMaybe<Scalars['BigInt']['input']>;\n  firstBetTimestamp_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  id?: InputMaybe<Scalars['Bytes']['input']>;\n  id_contains?: InputMaybe<Scalars['Bytes']['input']>;\n  id_gt?: InputMaybe<Scalars['Bytes']['input']>;\n  id_gte?: InputMaybe<Scalars['Bytes']['input']>;\n  id_in?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  id_lt?: InputMaybe<Scalars['Bytes']['input']>;\n  id_lte?: InputMaybe<Scalars['Bytes']['input']>;\n  id_not?: InputMaybe<Scalars['Bytes']['input']>;\n  id_not_contains?: InputMaybe<Scalars['Bytes']['input']>;\n  id_not_in?: InputMaybe<Array<Scalars['Bytes']['input']>>;\n  lastBetTimestamp?: InputMaybe<Scalars['BigInt']['input']>;\n  lastBetTimestamp_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  lastBetTimestamp_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  lastBetTimestamp_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  lastBetTimestamp_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  lastBetTimestamp_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  lastBetTimestamp_not?: InputMaybe<Scalars['BigInt']['input']>;\n  lastBetTimestamp_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  leaderboardAffiliatedUsers_?: InputMaybe<LeaderboardAffiliateUser_Filter>;\n  maxMultiplier?: InputMaybe<Scalars['BigDecimal']['input']>;\n  maxMultiplier_gt?: InputMaybe<Scalars['BigDecimal']['input']>;\n  maxMultiplier_gte?: InputMaybe<Scalars['BigDecimal']['input']>;\n  maxMultiplier_in?: InputMaybe<Array<Scalars['BigDecimal']['input']>>;\n  maxMultiplier_lt?: InputMaybe<Scalars['BigDecimal']['input']>;\n  maxMultiplier_lte?: InputMaybe<Scalars['BigDecimal']['input']>;\n  maxMultiplier_not?: InputMaybe<Scalars['BigDecimal']['input']>;\n  maxMultiplier_not_in?: InputMaybe<Array<Scalars['BigDecimal']['input']>>;\n  or?: InputMaybe<Array<InputMaybe<User_Filter>>>;\n  pvpBets_?: InputMaybe<PvPBet_Filter>;\n  pvpMaxMultiplier?: InputMaybe<Scalars['BigDecimal']['input']>;\n  pvpMaxMultiplier_gt?: InputMaybe<Scalars['BigDecimal']['input']>;\n  pvpMaxMultiplier_gte?: InputMaybe<Scalars['BigDecimal']['input']>;\n  pvpMaxMultiplier_in?: InputMaybe<Array<Scalars['BigDecimal']['input']>>;\n  pvpMaxMultiplier_lt?: InputMaybe<Scalars['BigDecimal']['input']>;\n  pvpMaxMultiplier_lte?: InputMaybe<Scalars['BigDecimal']['input']>;\n  pvpMaxMultiplier_not?: InputMaybe<Scalars['BigDecimal']['input']>;\n  pvpMaxMultiplier_not_in?: InputMaybe<Array<Scalars['BigDecimal']['input']>>;\n  pvpUserGameTokens_?: InputMaybe<PvPUserGameToken_Filter>;\n  pvpUserTokens_?: InputMaybe<PvPUserToken_Filter>;\n  seatCount?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  seatCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  seatCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalChargedVRFFees?: InputMaybe<Scalars['BigInt']['input']>;\n  totalChargedVRFFees_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalChargedVRFFees_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalChargedVRFFees_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  totalChargedVRFFees_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  totalChargedVRFFees_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  totalChargedVRFFees_not?: InputMaybe<Scalars['BigInt']['input']>;\n  totalChargedVRFFees_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  userGameTokens_?: InputMaybe<UserGameToken_Filter>;\n  userTokens_?: InputMaybe<UserToken_Filter>;\n  wagerAndJoinTxnCount?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  wagerAndJoinTxnCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  wagerAndJoinTxnCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  winSeatCount?: InputMaybe<Scalars['BigInt']['input']>;\n  winSeatCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  winSeatCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  winSeatCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  winSeatCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  winSeatCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  winSeatCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  winSeatCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  winTxnCount?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  winTxnCount_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_not?: InputMaybe<Scalars['BigInt']['input']>;\n  winTxnCount_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n};\n\nexport enum User_OrderBy {\n  BetCount = 'betCount',\n  BetTxnCount = 'betTxnCount',\n  Bets = 'bets',\n  ConsumedLinkVrfFees = 'consumedLinkVRFFees',\n  ConsumedNativeVrfFees = 'consumedNativeVRFFees',\n  FirstBetTimestamp = 'firstBetTimestamp',\n  Id = 'id',\n  LastBetTimestamp = 'lastBetTimestamp',\n  LeaderboardAffiliatedUsers = 'leaderboardAffiliatedUsers',\n  MaxMultiplier = 'maxMultiplier',\n  PvpBets = 'pvpBets',\n  PvpMaxMultiplier = 'pvpMaxMultiplier',\n  PvpUserGameTokens = 'pvpUserGameTokens',\n  PvpUserTokens = 'pvpUserTokens',\n  SeatCount = 'seatCount',\n  TotalChargedVrfFees = 'totalChargedVRFFees',\n  UserGameTokens = 'userGameTokens',\n  UserTokens = 'userTokens',\n  WagerAndJoinTxnCount = 'wagerAndJoinTxnCount',\n  WinSeatCount = 'winSeatCount',\n  WinTxnCount = 'winTxnCount'\n}\n\nexport type WeightedGameBet = {\n  __typename?: 'WeightedGameBet';\n  bet: Bet;\n  config: WeightedGameConfig;\n  id: Scalars['ID']['output'];\n};\n\nexport type WeightedGameBet_Filter = {\n  /** Filter for the block changed event. */\n  _change_block?: InputMaybe<BlockChangedFilter>;\n  and?: InputMaybe<Array<InputMaybe<WeightedGameBet_Filter>>>;\n  bet?: InputMaybe<Scalars['String']['input']>;\n  bet_?: InputMaybe<Bet_Filter>;\n  bet_contains?: InputMaybe<Scalars['String']['input']>;\n  bet_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  bet_ends_with?: InputMaybe<Scalars['String']['input']>;\n  bet_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  bet_gt?: InputMaybe<Scalars['String']['input']>;\n  bet_gte?: InputMaybe<Scalars['String']['input']>;\n  bet_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  bet_lt?: InputMaybe<Scalars['String']['input']>;\n  bet_lte?: InputMaybe<Scalars['String']['input']>;\n  bet_not?: InputMaybe<Scalars['String']['input']>;\n  bet_not_contains?: InputMaybe<Scalars['String']['input']>;\n  bet_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  bet_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  bet_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  bet_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  bet_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  bet_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  bet_starts_with?: InputMaybe<Scalars['String']['input']>;\n  bet_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  config?: InputMaybe<Scalars['String']['input']>;\n  config_?: InputMaybe<WeightedGameConfig_Filter>;\n  config_contains?: InputMaybe<Scalars['String']['input']>;\n  config_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  config_ends_with?: InputMaybe<Scalars['String']['input']>;\n  config_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  config_gt?: InputMaybe<Scalars['String']['input']>;\n  config_gte?: InputMaybe<Scalars['String']['input']>;\n  config_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  config_lt?: InputMaybe<Scalars['String']['input']>;\n  config_lte?: InputMaybe<Scalars['String']['input']>;\n  config_not?: InputMaybe<Scalars['String']['input']>;\n  config_not_contains?: InputMaybe<Scalars['String']['input']>;\n  config_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  config_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  config_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  config_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  config_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  config_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  config_starts_with?: InputMaybe<Scalars['String']['input']>;\n  config_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  id?: InputMaybe<Scalars['ID']['input']>;\n  id_gt?: InputMaybe<Scalars['ID']['input']>;\n  id_gte?: InputMaybe<Scalars['ID']['input']>;\n  id_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  id_lt?: InputMaybe<Scalars['ID']['input']>;\n  id_lte?: InputMaybe<Scalars['ID']['input']>;\n  id_not?: InputMaybe<Scalars['ID']['input']>;\n  id_not_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  or?: InputMaybe<Array<InputMaybe<WeightedGameBet_Filter>>>;\n};\n\nexport enum WeightedGameBet_OrderBy {\n  Bet = 'bet',\n  BetBetAmount = 'bet__betAmount',\n  BetBetCount = 'bet__betCount',\n  BetBetTimestamp = 'bet__betTimestamp',\n  BetBetTxnHash = 'bet__betTxnHash',\n  BetChargedVrfFees = 'bet__chargedVRFFees',\n  BetConsumedLinkVrfFees = 'bet__consumedLinkVRFFees',\n  BetConsumedNativeVrfFees = 'bet__consumedNativeVRFFees',\n  BetFreebetId = 'bet__freebetId',\n  BetGameAddress = 'bet__gameAddress',\n  BetGameId = 'bet__gameId',\n  BetHouseEdge = 'bet__houseEdge',\n  BetId = 'bet__id',\n  BetInputValue = 'bet__inputValue',\n  BetIsFreebet = 'bet__isFreebet',\n  BetPayout = 'bet__payout',\n  BetPayoutMultiplier = 'bet__payoutMultiplier',\n  BetRefunded = 'bet__refunded',\n  BetResolved = 'bet__resolved',\n  BetRollTimestamp = 'bet__rollTimestamp',\n  BetRollTxnHash = 'bet__rollTxnHash',\n  BetStopGain = 'bet__stopGain',\n  BetStopLoss = 'bet__stopLoss',\n  BetTotalBetAmount = 'bet__totalBetAmount',\n  Config = 'config',\n  ConfigEv = 'config__EV',\n  ConfigCreationTimestamp = 'config__creationTimestamp',\n  ConfigGameId = 'config__gameId',\n  ConfigId = 'config__id',\n  ConfigWeightedGameId = 'config__weightedGameId',\n  Id = 'id'\n}\n\nexport type WeightedGameConfig = {\n  __typename?: 'WeightedGameConfig';\n  EV: Scalars['BigDecimal']['output'];\n  bets: Array<WeightedGameBet>;\n  creationTimestamp: Scalars['BigInt']['output'];\n  creator: User;\n  gameId: Scalars['String']['output'];\n  id: Scalars['ID']['output'];\n  multipliers: Array<Scalars['BigInt']['output']>;\n  weightedGameId: Scalars['BigInt']['output'];\n  weights: Array<Scalars['BigInt']['output']>;\n};\n\n\nexport type WeightedGameConfigBetsArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<WeightedGameBet_OrderBy>;\n  orderDirection?: InputMaybe<OrderDirection>;\n  skip?: InputMaybe<Scalars['Int']['input']>;\n  where?: InputMaybe<WeightedGameBet_Filter>;\n};\n\nexport type WeightedGameConfig_Filter = {\n  EV?: InputMaybe<Scalars['BigDecimal']['input']>;\n  EV_gt?: InputMaybe<Scalars['BigDecimal']['input']>;\n  EV_gte?: InputMaybe<Scalars['BigDecimal']['input']>;\n  EV_in?: InputMaybe<Array<Scalars['BigDecimal']['input']>>;\n  EV_lt?: InputMaybe<Scalars['BigDecimal']['input']>;\n  EV_lte?: InputMaybe<Scalars['BigDecimal']['input']>;\n  EV_not?: InputMaybe<Scalars['BigDecimal']['input']>;\n  EV_not_in?: InputMaybe<Array<Scalars['BigDecimal']['input']>>;\n  /** Filter for the block changed event. */\n  _change_block?: InputMaybe<BlockChangedFilter>;\n  and?: InputMaybe<Array<InputMaybe<WeightedGameConfig_Filter>>>;\n  bets_?: InputMaybe<WeightedGameBet_Filter>;\n  creationTimestamp?: InputMaybe<Scalars['BigInt']['input']>;\n  creationTimestamp_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  creationTimestamp_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  creationTimestamp_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  creationTimestamp_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  creationTimestamp_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  creationTimestamp_not?: InputMaybe<Scalars['BigInt']['input']>;\n  creationTimestamp_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  creator?: InputMaybe<Scalars['String']['input']>;\n  creator_?: InputMaybe<User_Filter>;\n  creator_contains?: InputMaybe<Scalars['String']['input']>;\n  creator_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  creator_ends_with?: InputMaybe<Scalars['String']['input']>;\n  creator_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  creator_gt?: InputMaybe<Scalars['String']['input']>;\n  creator_gte?: InputMaybe<Scalars['String']['input']>;\n  creator_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  creator_lt?: InputMaybe<Scalars['String']['input']>;\n  creator_lte?: InputMaybe<Scalars['String']['input']>;\n  creator_not?: InputMaybe<Scalars['String']['input']>;\n  creator_not_contains?: InputMaybe<Scalars['String']['input']>;\n  creator_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  creator_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  creator_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  creator_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  creator_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  creator_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  creator_starts_with?: InputMaybe<Scalars['String']['input']>;\n  creator_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameId?: InputMaybe<Scalars['String']['input']>;\n  gameId_contains?: InputMaybe<Scalars['String']['input']>;\n  gameId_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameId_ends_with?: InputMaybe<Scalars['String']['input']>;\n  gameId_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameId_gt?: InputMaybe<Scalars['String']['input']>;\n  gameId_gte?: InputMaybe<Scalars['String']['input']>;\n  gameId_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  gameId_lt?: InputMaybe<Scalars['String']['input']>;\n  gameId_lte?: InputMaybe<Scalars['String']['input']>;\n  gameId_not?: InputMaybe<Scalars['String']['input']>;\n  gameId_not_contains?: InputMaybe<Scalars['String']['input']>;\n  gameId_not_contains_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameId_not_ends_with?: InputMaybe<Scalars['String']['input']>;\n  gameId_not_ends_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameId_not_in?: InputMaybe<Array<Scalars['String']['input']>>;\n  gameId_not_starts_with?: InputMaybe<Scalars['String']['input']>;\n  gameId_not_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  gameId_starts_with?: InputMaybe<Scalars['String']['input']>;\n  gameId_starts_with_nocase?: InputMaybe<Scalars['String']['input']>;\n  id?: InputMaybe<Scalars['ID']['input']>;\n  id_gt?: InputMaybe<Scalars['ID']['input']>;\n  id_gte?: InputMaybe<Scalars['ID']['input']>;\n  id_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  id_lt?: InputMaybe<Scalars['ID']['input']>;\n  id_lte?: InputMaybe<Scalars['ID']['input']>;\n  id_not?: InputMaybe<Scalars['ID']['input']>;\n  id_not_in?: InputMaybe<Array<Scalars['ID']['input']>>;\n  multipliers?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  multipliers_contains?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  multipliers_contains_nocase?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  multipliers_not?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  multipliers_not_contains?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  multipliers_not_contains_nocase?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  or?: InputMaybe<Array<InputMaybe<WeightedGameConfig_Filter>>>;\n  weightedGameId?: InputMaybe<Scalars['BigInt']['input']>;\n  weightedGameId_gt?: InputMaybe<Scalars['BigInt']['input']>;\n  weightedGameId_gte?: InputMaybe<Scalars['BigInt']['input']>;\n  weightedGameId_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  weightedGameId_lt?: InputMaybe<Scalars['BigInt']['input']>;\n  weightedGameId_lte?: InputMaybe<Scalars['BigInt']['input']>;\n  weightedGameId_not?: InputMaybe<Scalars['BigInt']['input']>;\n  weightedGameId_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  weights?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  weights_contains?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  weights_contains_nocase?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  weights_not?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  weights_not_contains?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n  weights_not_contains_nocase?: InputMaybe<Array<Scalars['BigInt']['input']>>;\n};\n\nexport enum WeightedGameConfig_OrderBy {\n  Ev = 'EV',\n  Bets = 'bets',\n  CreationTimestamp = 'creationTimestamp',\n  Creator = 'creator',\n  CreatorBetCount = 'creator__betCount',\n  CreatorBetTxnCount = 'creator__betTxnCount',\n  CreatorConsumedLinkVrfFees = 'creator__consumedLinkVRFFees',\n  CreatorConsumedNativeVrfFees = 'creator__consumedNativeVRFFees',\n  CreatorFirstBetTimestamp = 'creator__firstBetTimestamp',\n  CreatorId = 'creator__id',\n  CreatorLastBetTimestamp = 'creator__lastBetTimestamp',\n  CreatorMaxMultiplier = 'creator__maxMultiplier',\n  CreatorPvpMaxMultiplier = 'creator__pvpMaxMultiplier',\n  CreatorSeatCount = 'creator__seatCount',\n  CreatorTotalChargedVrfFees = 'creator__totalChargedVRFFees',\n  CreatorWagerAndJoinTxnCount = 'creator__wagerAndJoinTxnCount',\n  CreatorWinSeatCount = 'creator__winSeatCount',\n  CreatorWinTxnCount = 'creator__winTxnCount',\n  GameId = 'gameId',\n  Id = 'id',\n  Multipliers = 'multipliers',\n  WeightedGameId = 'weightedGameId',\n  Weights = 'weights'\n}\n\nexport type _Block_ = {\n  __typename?: '_Block_';\n  /** The hash of the block */\n  hash?: Maybe<Scalars['Bytes']['output']>;\n  /** The block number */\n  number: Scalars['Int']['output'];\n  /** The hash of the parent block */\n  parentHash?: Maybe<Scalars['Bytes']['output']>;\n  /** Integer representation of the timestamp stored in blocks for the chain */\n  timestamp?: Maybe<Scalars['Int']['output']>;\n};\n\n/** The type for the top-level _meta field */\nexport type _Meta_ = {\n  __typename?: '_Meta_';\n  /**\n   * Information about a specific subgraph block. The hash of the block\n   * will be null if the _meta field has a block constraint that asks for\n   * a block number. It will be filled if the _meta field has no block constraint\n   * and therefore asks for the latest  block\n   */\n  block: _Block_;\n  /** The deployment ID */\n  deployment: Scalars['String']['output'];\n  /** If `true`, the subgraph encountered indexing errors at some past block */\n  hasIndexingErrors: Scalars['Boolean']['output'];\n};\n\nexport enum _SubgraphErrorPolicy_ {\n  /** Data will be returned even if the subgraph has indexing errors */\n  Allow = 'allow',\n  /** If the subgraph has indexing errors, data will be omitted. The default. */\n  Deny = 'deny'\n}\n","import * as Types from '../types';\n\nimport gql from 'graphql-tag';\nexport type BetFragment = { __typename?: 'Bet', id: string, gameId: string, gameAddress: any, betAmount?: string | null, betCount: string, stopLoss: string, stopGain: string, houseEdge: number, betTimestamp: string, chargedVRFFees: string, betTxnHash: any, payout?: string | null, payoutMultiplier?: string | null, rollTxnHash?: any | null, rollTimestamp?: string | null, encodedInput: string, isResolved: boolean, isRefunded: boolean, rollTotalBetAmount?: string | null, encodedRolled?: Array<string> | null, user: { __typename?: 'User', address: any }, gameToken: { __typename?: 'GameToken', id: string, token: { __typename?: 'Token', symbol: string, name: string, decimals: number, address: any } }, affiliate?: { __typename?: 'Affiliate', address: any } | null, weightedGameBet?: { __typename?: 'WeightedGameBet', config: { __typename?: 'WeightedGameConfig', id: string, multipliers: Array<string>, weights: Array<string> } } | null };\n\nexport const BetFragmentDoc = gql`\n    fragment Bet on Bet {\n  id\n  gameId\n  gameAddress\n  user {\n    address: id\n  }\n  gameToken {\n    id\n    token {\n      address: id\n      symbol\n      name\n      decimals\n    }\n  }\n  affiliate {\n    address: id\n  }\n  encodedInput: inputValue\n  betAmount\n  betCount\n  stopLoss\n  stopGain\n  houseEdge\n  betTimestamp\n  isResolved: resolved\n  isRefunded: refunded\n  chargedVRFFees\n  betTxnHash\n  rollTotalBetAmount: totalBetAmount\n  payout\n  payoutMultiplier\n  rollTxnHash\n  encodedRolled: rolled\n  rollTimestamp\n  weightedGameBet {\n    config {\n      id\n      multipliers\n      weights\n    }\n  }\n}\n    `;","import * as Types from './types';\n\nimport gql from 'graphql-tag';\nimport { BetFragmentDoc } from './fragments/bet';\nexport type BetQueryVariables = Types.Exact<{\n  id: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type BetQuery = { __typename?: 'Query', bet?: { __typename?: 'Bet', id: string, gameId: string, gameAddress: any, betAmount?: string | null, betCount: string, stopLoss: string, stopGain: string, houseEdge: number, betTimestamp: string, chargedVRFFees: string, betTxnHash: any, payout?: string | null, payoutMultiplier?: string | null, rollTxnHash?: any | null, rollTimestamp?: string | null, encodedInput: string, isResolved: boolean, isRefunded: boolean, rollTotalBetAmount?: string | null, encodedRolled?: Array<string> | null, user: { __typename?: 'User', address: any }, gameToken: { __typename?: 'GameToken', id: string, token: { __typename?: 'Token', symbol: string, name: string, decimals: number, address: any } }, affiliate?: { __typename?: 'Affiliate', address: any } | null, weightedGameBet?: { __typename?: 'WeightedGameBet', config: { __typename?: 'WeightedGameConfig', id: string, multipliers: Array<string>, weights: Array<string> } } | null } | null };\n\n\nexport const BetDocument = gql`\n    query Bet($id: ID!) {\n  bet(id: $id, subgraphError: allow) {\n    ...Bet\n  }\n}\n    ${BetFragmentDoc}`;","import * as Types from './types';\n\nimport gql from 'graphql-tag';\nimport { BetFragmentDoc } from './fragments/bet';\nexport type BetsQueryVariables = Types.Exact<{\n  first?: Types.InputMaybe<Types.Scalars['Int']['input']>;\n  skip?: Types.InputMaybe<Types.Scalars['Int']['input']>;\n  where?: Types.InputMaybe<Types.Bet_Filter>;\n  orderBy?: Types.InputMaybe<Types.Bet_OrderBy>;\n  orderDirection?: Types.InputMaybe<Types.OrderDirection>;\n}>;\n\n\nexport type BetsQuery = { __typename?: 'Query', bets: Array<{ __typename?: 'Bet', id: string, gameId: string, gameAddress: any, betAmount?: string | null, betCount: string, stopLoss: string, stopGain: string, houseEdge: number, betTimestamp: string, chargedVRFFees: string, betTxnHash: any, payout?: string | null, payoutMultiplier?: string | null, rollTxnHash?: any | null, rollTimestamp?: string | null, encodedInput: string, isResolved: boolean, isRefunded: boolean, rollTotalBetAmount?: string | null, encodedRolled?: Array<string> | null, user: { __typename?: 'User', address: any }, gameToken: { __typename?: 'GameToken', id: string, token: { __typename?: 'Token', symbol: string, name: string, decimals: number, address: any } }, affiliate?: { __typename?: 'Affiliate', address: any } | null, weightedGameBet?: { __typename?: 'WeightedGameBet', config: { __typename?: 'WeightedGameConfig', id: string, multipliers: Array<string>, weights: Array<string> } } | null }> };\n\n\nexport const BetsDocument = gql`\n    query Bets($first: Int, $skip: Int, $where: Bet_filter, $orderBy: Bet_orderBy, $orderDirection: OrderDirection) {\n  bets(\n    first: $first\n    skip: $skip\n    where: $where\n    orderBy: $orderBy\n    orderDirection: $orderDirection\n    subgraphError: allow\n  ) {\n    ...Bet\n  }\n}\n    ${BetFragmentDoc}`;","export const replaceGraphQlKey = (endpoint: string, key: string) => {\n  const updatedEndpoint = endpoint.includes(\"{key}\") ? endpoint.replace(\"{key}\", key) : endpoint;\n  return updatedEndpoint;\n};\n","import { type ApolloCache, ApolloClient, type FetchPolicy, InMemoryCache } from \"@apollo/client\";\nimport { FORMAT_TYPE } from \"../../../../utils/format\";\nimport { replaceGraphQlKey } from \"../../../../utils/subgraphs\";\nimport { type CasinoChainId, casinoChainById } from \"../../../casino\";\n\nexport interface SubgraphCasinoClient {\n  chainId: CasinoChainId;\n  theGraphKey?: string;\n  cache?: ApolloCache;\n  defaultOptions?: ApolloClient.DefaultOptions;\n  formatType?: FORMAT_TYPE;\n}\n\nexport const defaultSubgraphCasinoClient = {\n  cache: new InMemoryCache(),\n  defaultOptions: {\n    query: {\n      fetchPolicy: \"network-only\" as FetchPolicy,\n    },\n  },\n  formatType: FORMAT_TYPE.STANDARD,\n};\n\nexport function getGraphqlEndpoint(subgraphClient: SubgraphCasinoClient) {\n  const casinoChain = casinoChainById[subgraphClient.chainId];\n  const graphQlKey = subgraphClient.theGraphKey;\n  if (graphQlKey) {\n    return replaceGraphQlKey(casinoChain.graphql.endpoint, graphQlKey);\n  }\n  return casinoChain.graphql.defaultEndpoint;\n}\n","import { ApolloClient, HttpLink } from \"@apollo/client\";\nimport { type Address, getAddress, type Hash, zeroAddress } from \"viem\";\nimport type { NORMAL_CASINO_GAME_TYPE, WeightedGameConfiguration } from \"../../../..\";\nimport { DEFAULT_ITEMS_PER_PAGE, DEFAULT_PAGE } from \"../../../../constants\";\nimport { ERROR_CODES } from \"../../../../errors\";\nimport { SubgraphError } from \"../../../../errors/types\";\nimport type { CasinoBet, Token } from \"../../../../interfaces\";\nimport {\n  chainNativeCurrencyToToken,\n  decodeNormalCasinoInput,\n  decodeNormalCasinoRolled,\n  decodeWeightedCasinoInput,\n  decodeWeightedCasinoRolled,\n} from \"../../../../utils\";\nimport { FORMAT_TYPE, formatRawAmount } from \"../../../../utils/format\";\nimport {\n  CASINO_GAME_SUBGRAPH_TYPE,\n  CASINO_GAME_TYPE,\n  type CasinoChainId,\n  casinoChainById,\n  subgraphGameByType,\n  typeBySubgraphCasinoGame,\n} from \"../../../casino\";\nimport { BetDocument, type BetQuery, type BetQueryVariables } from \"../documents/bet\";\nimport { BetsDocument, type BetsQuery, type BetsQueryVariables } from \"../documents/bets\";\nimport type { BetFragment } from \"../documents/fragments/bet\";\nimport { Bet_OrderBy, OrderDirection } from \"../documents/types\";\nimport {\n  defaultSubgraphCasinoClient,\n  getGraphqlEndpoint,\n  type SubgraphCasinoClient,\n} from \"./common\";\n\nexport function formatCasinoBet(\n  bet: BetFragment,\n  chainId: CasinoChainId,\n  formatType: FORMAT_TYPE = FORMAT_TYPE.STANDARD,\n): CasinoBet {\n  const casinoChain = casinoChainById[chainId];\n  const betAmount = bet.betAmount ? BigInt(bet.betAmount) : 0n;\n  const nativeCurrency = casinoChain.viemChain.nativeCurrency;\n  const token =\n    bet.gameToken.token.address === zeroAddress\n      ? chainNativeCurrencyToToken(nativeCurrency)\n      : {\n          address: getAddress(bet.gameToken.token.address),\n          symbol: bet.gameToken.token.symbol,\n          decimals: bet.gameToken.token.decimals,\n        };\n  const game = typeBySubgraphCasinoGame[bet.gameId as CASINO_GAME_SUBGRAPH_TYPE];\n  const totalBetAmount = betAmount * BigInt(bet.betCount);\n  const rollTotalBetAmount = bet.rollTotalBetAmount ? BigInt(bet.rollTotalBetAmount) : undefined;\n  const benefit =\n    rollTotalBetAmount && bet.payout ? BigInt(bet.payout) - BigInt(rollTotalBetAmount) : undefined;\n  const encodedRolled = bet.encodedRolled ? bet.encodedRolled : undefined;\n  const isWin =\n    rollTotalBetAmount && bet.payout ? BigInt(bet.payout) >= rollTotalBetAmount : undefined;\n  const isStopTriggered = encodedRolled ? encodedRolled.length !== Number(bet.betCount) : undefined;\n\n  const weightedGameConfiguration: WeightedGameConfiguration | undefined = bet.weightedGameBet\n    ? {\n        configId: Number(bet.weightedGameBet.config.id),\n        multipliers: bet.weightedGameBet.config.multipliers.map((multiplier) => BigInt(multiplier)),\n        weights: bet.weightedGameBet.config.weights.map((weight) => BigInt(weight)),\n        game,\n        chainId,\n      }\n    : undefined;\n  return {\n    id: BigInt(bet.id),\n    token,\n    nativeCurrency: chainNativeCurrencyToToken(nativeCurrency),\n    chainId,\n    game,\n    gameAddress: getAddress(bet.gameAddress),\n    bettor: getAddress(bet.user.address),\n    betAmount,\n    formattedBetAmount: formatRawAmount(betAmount, token.decimals, formatType),\n    betCount: Number(bet.betCount),\n    totalBetAmount: totalBetAmount,\n    formattedTotalBetAmount: formatRawAmount(totalBetAmount, token.decimals, formatType),\n    stopLoss: BigInt(bet.stopLoss),\n    formattedStopLoss: formatRawAmount(BigInt(bet.stopLoss), token.decimals, formatType),\n    stopGain: BigInt(bet.stopGain),\n    formattedStopGain: formatRawAmount(BigInt(bet.stopGain), token.decimals, formatType),\n    houseEdge: bet.houseEdge, // BP\n    betTimestampSecs: Number(bet.betTimestamp), // secs\n    betDate: new Date(Math.round(Number(bet.betTimestamp) * 1000)),\n    chargedVRFFees: BigInt(bet.chargedVRFFees),\n    formattedChargedVRFFees: formatRawAmount(\n      BigInt(bet.chargedVRFFees),\n      nativeCurrency.decimals,\n      formatType,\n    ),\n    betTxnHash: bet.betTxnHash,\n    encodedInput: bet.encodedInput,\n    decodedInput: weightedGameConfiguration\n      ? decodeWeightedCasinoInput(bet.encodedInput, weightedGameConfiguration, bet.houseEdge)\n      : decodeNormalCasinoInput(bet.encodedInput, game as NORMAL_CASINO_GAME_TYPE),\n    payout: bet.payout ? BigInt(bet.payout) : undefined,\n    formattedPayout: bet.payout\n      ? formatRawAmount(BigInt(bet.payout), token.decimals, formatType)\n      : undefined,\n    formattedPayoutMultiplier: bet.payoutMultiplier ? Number(bet.payoutMultiplier) : undefined,\n    benefit,\n    formattedBenefit: benefit ? formatRawAmount(benefit, token.decimals, formatType) : undefined,\n    rollTxnHash: bet.rollTxnHash,\n    rollTimestampSecs: bet.rollTimestamp ? Number(bet.rollTimestamp) : undefined, // secs\n    rollDate: bet.rollTimestamp\n      ? new Date(Math.round(Number(bet.rollTimestamp) * 1000))\n      : undefined,\n    isResolved: bet.isResolved,\n    isRefunded: bet.isRefunded,\n    rollTotalBetAmount,\n    fomattedRollTotalBetAmount: rollTotalBetAmount\n      ? formatRawAmount(rollTotalBetAmount, token.decimals, formatType)\n      : undefined,\n    rollBetCount: encodedRolled?.length,\n    encodedRolled,\n    decodedRolled: encodedRolled?.map((encoded) =>\n      weightedGameConfiguration\n        ? decodeWeightedCasinoRolled(encoded, weightedGameConfiguration, bet.houseEdge)\n        : decodeNormalCasinoRolled(encoded, game as NORMAL_CASINO_GAME_TYPE),\n    ),\n    affiliate: bet.affiliate?.address ? bet.affiliate.address : undefined,\n    isWin,\n    isLost: isWin === undefined ? undefined : !isWin,\n    isStopLossTriggered: isStopTriggered === undefined ? undefined : isStopTriggered && !isWin,\n    isStopGainTriggered: isStopTriggered === undefined ? undefined : isStopTriggered && isWin,\n  };\n}\n\nexport enum CasinoBetFilterStatus {\n  RESOLVED = \"RESOLVED\",\n  PENDING = \"PENDING\",\n}\n\nexport async function fetchBets(\n  client: SubgraphCasinoClient,\n  filter?: {\n    bettor?: Address;\n    game?: CASINO_GAME_TYPE;\n    token?: Token;\n    status?: CasinoBetFilterStatus;\n    affiliates?: Address[];\n  },\n  page = DEFAULT_PAGE,\n  itemsPerPage = DEFAULT_ITEMS_PER_PAGE,\n  sortBy: { key: Bet_OrderBy; order: OrderDirection } = {\n    key: Bet_OrderBy.BetTimestamp,\n    order: OrderDirection.Desc,\n  },\n): Promise<{ bets: CasinoBet[]; error: SubgraphError | undefined }> {\n  const apolloClient = new ApolloClient({\n    link: new HttpLink({ uri: getGraphqlEndpoint(client) }),\n    cache: client.cache ?? defaultSubgraphCasinoClient.cache,\n    defaultOptions: client.defaultOptions ?? defaultSubgraphCasinoClient.defaultOptions,\n  });\n\n  const variables: BetsQueryVariables = {\n    first: itemsPerPage,\n    skip: itemsPerPage * (page - 1),\n    where: {\n      ...(filter?.bettor && { user: filter.bettor.toLowerCase() }),\n      ...(filter?.game && { gameId: subgraphGameByType[filter.game] }),\n      ...(filter?.token && {\n        gameToken_: { token: filter.token.address.toLowerCase() },\n      }),\n      ...(filter?.status !== undefined && {\n        resolved: filter.status === CasinoBetFilterStatus.RESOLVED,\n      }),\n      ...(filter?.affiliates?.length && {\n        affiliate_in: filter.affiliates.map((a) => a.toLowerCase()),\n      }),\n    },\n    orderBy: sortBy?.key,\n    orderDirection: sortBy?.order,\n  };\n\n  const { data, error } = await apolloClient.query<BetsQuery, BetsQueryVariables>({\n    query: BetsDocument,\n    variables,\n  });\n\n  return {\n    bets:\n      data?.bets.map((bet) =>\n        formatCasinoBet(\n          bet,\n          client.chainId,\n          client.formatType ?? defaultSubgraphCasinoClient.formatType,\n        ),\n      ) ?? [],\n    error: error\n      ? new SubgraphError(\"Error fetching bets\", ERROR_CODES.SUBGRAPH.FETCH_BETS_ERROR, error)\n      : undefined,\n  };\n}\n\nexport async function fetchBet(\n  id: string | bigint,\n  client: SubgraphCasinoClient,\n): Promise<{ bet: CasinoBet | undefined; error: SubgraphError | undefined }> {\n  const apolloClient = new ApolloClient({\n    link: new HttpLink({ uri: getGraphqlEndpoint(client) }),\n    cache: client.cache ?? defaultSubgraphCasinoClient.cache,\n  });\n\n  const { data, error } = await apolloClient.query<BetQuery, BetQueryVariables>({\n    query: BetDocument,\n    variables: {\n      id: id.toString(),\n    },\n  });\n\n  return {\n    bet: data?.bet\n      ? formatCasinoBet(\n          data.bet,\n          client.chainId,\n          client.formatType ?? defaultSubgraphCasinoClient.formatType,\n        )\n      : undefined,\n    error: error\n      ? new SubgraphError(\"Error fetching bet\", ERROR_CODES.SUBGRAPH.FETCH_BET_ERROR, error)\n      : undefined,\n  };\n}\n\nexport async function fetchBetByHash(\n  placeBetHash: Hash,\n  client: SubgraphCasinoClient,\n): Promise<{ bet: CasinoBet | undefined; error: SubgraphError | undefined }> {\n  const apolloClient = new ApolloClient({\n    link: new HttpLink({ uri: getGraphqlEndpoint(client) }),\n    cache: client.cache ?? defaultSubgraphCasinoClient.cache,\n    defaultOptions: client.defaultOptions ?? defaultSubgraphCasinoClient.defaultOptions,\n  });\n\n  const variables: BetsQueryVariables = {\n    first: 1,\n    where: {\n      betTxnHash: placeBetHash.toLowerCase(),\n    },\n  };\n\n  const { data, error } = await apolloClient.query<BetsQuery, BetsQueryVariables>({\n    query: BetsDocument,\n    variables,\n  });\n  return {\n    bet: data?.bets[0]\n      ? formatCasinoBet(\n          data.bets[0],\n          client.chainId,\n          client.formatType ?? defaultSubgraphCasinoClient.formatType,\n        )\n      : undefined,\n    error: error\n      ? new SubgraphError(\"Error fetching bet\", ERROR_CODES.SUBGRAPH.FETCH_BET_ERROR, error)\n      : undefined,\n  };\n}\n","import * as Types from '../types';\n\nimport gql from 'graphql-tag';\nexport type TokenFragment = { __typename?: 'Token', id: any, symbol: string, name: string, decimals: number, betTxnCount: string, betCount: string, winTxnCount: string, userCount: string, totalWagered: string, totalPayout: string, dividendAmount: string, bankAmount: string, partnerAmount: string, affiliateAmount: string, treasuryAmount: string, teamAmount: string, address: any };\n\nexport const TokenFragmentDoc = gql`\n    fragment Token on Token {\n  id\n  address: id\n  symbol\n  name\n  decimals\n  betTxnCount\n  betCount\n  winTxnCount\n  userCount\n  totalWagered\n  totalPayout\n  dividendAmount\n  bankAmount\n  partnerAmount\n  affiliateAmount\n  treasuryAmount\n  teamAmount\n}\n    `;","import * as Types from './types';\n\nimport gql from 'graphql-tag';\nimport { TokenFragmentDoc } from './fragments/token';\nexport type TokenQueryVariables = Types.Exact<{\n  id: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type TokenQuery = { __typename?: 'Query', token?: { __typename?: 'Token', id: any, symbol: string, name: string, decimals: number, betTxnCount: string, betCount: string, winTxnCount: string, userCount: string, totalWagered: string, totalPayout: string, dividendAmount: string, bankAmount: string, partnerAmount: string, affiliateAmount: string, treasuryAmount: string, teamAmount: string, address: any } | null };\n\n\nexport const TokenDocument = gql`\n    query Token($id: ID!) {\n  token(id: $id, subgraphError: allow) {\n    ...Token\n  }\n}\n    ${TokenFragmentDoc}`;","import * as Types from './types';\n\nimport gql from 'graphql-tag';\nimport { TokenFragmentDoc } from './fragments/token';\nexport type TokensQueryVariables = Types.Exact<{\n  first?: Types.InputMaybe<Types.Scalars['Int']['input']>;\n  skip?: Types.InputMaybe<Types.Scalars['Int']['input']>;\n  where?: Types.InputMaybe<Types.Token_Filter>;\n  orderBy?: Types.InputMaybe<Types.Token_OrderBy>;\n  orderDirection?: Types.InputMaybe<Types.OrderDirection>;\n}>;\n\n\nexport type TokensQuery = { __typename?: 'Query', tokens: Array<{ __typename?: 'Token', id: any, symbol: string, name: string, decimals: number, betTxnCount: string, betCount: string, winTxnCount: string, userCount: string, totalWagered: string, totalPayout: string, dividendAmount: string, bankAmount: string, partnerAmount: string, affiliateAmount: string, treasuryAmount: string, teamAmount: string, address: any }> };\n\n\nexport const TokensDocument = gql`\n    query Tokens($first: Int, $skip: Int, $where: Token_filter, $orderBy: Token_orderBy, $orderDirection: OrderDirection) {\n  tokens(\n    first: $first\n    skip: $skip\n    where: $where\n    orderBy: $orderBy\n    orderDirection: $orderDirection\n    subgraphError: allow\n  ) {\n    ...Token\n  }\n}\n    ${TokenFragmentDoc}`;","import { ApolloClient, HttpLink } from \"@apollo/client\";\nimport { type Address } from \"viem\";\nimport { DEFAULT_ITEMS_PER_PAGE, SubgraphError } from \"../../../..\";\nimport { DEFAULT_PAGE } from \"../../../../constants\";\nimport { ERROR_CODES } from \"../../../../errors\";\nimport type { SubgraphToken } from \"../../../../interfaces\";\nimport { FORMAT_TYPE, formatRawAmount } from \"../../../../utils/format\";\nimport { type CasinoChainId } from \"../../../casino\";\nimport type { TokenFragment } from \"../documents/fragments/token\";\nimport { TokenDocument, type TokenQuery, type TokenQueryVariables } from \"../documents/token\";\nimport { TokensDocument, type TokensQuery, type TokensQueryVariables } from \"../documents/tokens\";\nimport { OrderDirection, Token_OrderBy } from \"../documents/types\";\nimport type { SubgraphCasinoClient } from \"./common\";\nimport { defaultSubgraphCasinoClient, getGraphqlEndpoint } from \"./common\";\n\nexport function formatToken(\n  token: TokenFragment,\n  chainId: CasinoChainId,\n  formatType: FORMAT_TYPE = FORMAT_TYPE.STANDARD,\n): SubgraphToken {\n  return {\n    id: token.id as Address,\n    address: token.address as Address,\n    chainId,\n    symbol: token.symbol,\n    name: token.name,\n    decimals: token.decimals,\n    betTxnCount: Number(token.betTxnCount),\n    betCount: Number(token.betCount),\n    winTxnCount: Number(token.winTxnCount),\n    userCount: Number(token.userCount),\n    totalWagered: BigInt(token.totalWagered),\n    formattedTotalWagered: formatRawAmount(BigInt(token.totalWagered), token.decimals, formatType),\n    totalPayout: BigInt(token.totalPayout),\n    formattedTotalPayout: formatRawAmount(BigInt(token.totalPayout), token.decimals, formatType),\n    dividendAmount: BigInt(token.dividendAmount),\n    formattedDividendAmount: formatRawAmount(\n      BigInt(token.dividendAmount),\n      token.decimals,\n      formatType,\n    ),\n    bankAmount: BigInt(token.bankAmount),\n    formattedBankAmount: formatRawAmount(BigInt(token.bankAmount), token.decimals, formatType),\n    affiliateAmount: BigInt(token.affiliateAmount),\n    formattedAffiliateAmount: formatRawAmount(\n      BigInt(token.affiliateAmount),\n      token.decimals,\n      formatType,\n    ),\n    treasuryAmount: BigInt(token.treasuryAmount),\n    formattedTreasuryAmount: formatRawAmount(\n      BigInt(token.treasuryAmount),\n      token.decimals,\n      formatType,\n    ),\n    teamAmount: BigInt(token.teamAmount),\n    formattedTeamAmount: formatRawAmount(BigInt(token.teamAmount), token.decimals, formatType),\n  };\n}\n\nexport async function fetchTokens(\n  client: SubgraphCasinoClient,\n  page = DEFAULT_PAGE,\n  itemsPerPage = DEFAULT_ITEMS_PER_PAGE,\n  sortBy: { key: Token_OrderBy; order: OrderDirection } = {\n    key: Token_OrderBy.Symbol,\n    order: OrderDirection.Asc,\n  },\n): Promise<{ tokens: SubgraphToken[]; error: SubgraphError | undefined }> {\n  const apolloClient = new ApolloClient({\n    link: new HttpLink({ uri: getGraphqlEndpoint(client) }),\n    cache: client.cache ?? defaultSubgraphCasinoClient.cache,\n    defaultOptions: client.defaultOptions ?? defaultSubgraphCasinoClient.defaultOptions,\n  });\n\n  const variables: TokensQueryVariables = {\n    first: itemsPerPage,\n    skip: itemsPerPage * (page - 1),\n    //where: {},\n    orderBy: sortBy?.key,\n    orderDirection: sortBy?.order,\n  };\n\n  const { data, error } = await apolloClient.query<TokensQuery, TokensQueryVariables>({\n    query: TokensDocument,\n    variables,\n  });\n\n  return {\n    tokens:\n      data?.tokens.map((token) =>\n        formatToken(\n          token,\n          client.chainId,\n          client.formatType ?? defaultSubgraphCasinoClient.formatType,\n        ),\n      ) ?? [],\n    error: error\n      ? new SubgraphError(\"Error fetching tokens\", ERROR_CODES.SUBGRAPH.FETCH_TOKENS_ERROR, error)\n      : undefined,\n  };\n}\n\nexport async function fetchToken(\n  address: Address,\n  client: SubgraphCasinoClient,\n): Promise<{ token: SubgraphToken | undefined; error: SubgraphError | undefined }> {\n  const apolloClient = new ApolloClient({\n    link: new HttpLink({ uri: getGraphqlEndpoint(client) }),\n    cache: client.cache ?? defaultSubgraphCasinoClient.cache,\n  });\n\n  const { data, error } = await apolloClient.query<TokenQuery, TokenQueryVariables>({\n    query: TokenDocument,\n    variables: {\n      id: address.toLowerCase(),\n    },\n  });\n\n  return {\n    token: data?.token\n      ? formatToken(\n          data.token,\n          client.chainId,\n          client.formatType ?? defaultSubgraphCasinoClient.formatType,\n        )\n      : undefined,\n    error: error\n      ? new SubgraphError(\"Error fetching token\", ERROR_CODES.SUBGRAPH.FETCH_TOKEN_ERROR, error)\n      : undefined,\n  };\n}\n","import type { Hex } from \"viem\";\n\nexport const BETS_ADDRESS = \"0x94025780a1aB58868D9B2dBBB775f44b32e8E6e5\" as Hex;\n","import { type Address, zeroAddress } from \"viem\";\nimport { GAS_TOKEN_ADDRESS } from \"../constants\";\nimport type { CasinoChainId, ChainId } from \"../data\";\nimport { casinoChainById, chainById } from \"../data\";\nimport type { RawToken, Token } from \"../interfaces\";\n\ntype ChainNativeCurrency = {\n  name: string;\n  symbol: string;\n  decimals: number;\n};\nexport function chainNativeCurrencyToToken(nativeCurrency: ChainNativeCurrency): Token {\n  return {\n    symbol: nativeCurrency.symbol,\n    address: zeroAddress,\n    decimals: nativeCurrency.decimals,\n  };\n}\n\nexport function formatTokenUrl(tokenAddress: Address, chainId: ChainId) {\n  const chain = chainById[chainId];\n  return `${chain.blockExplorers?.default.url}/token/${tokenAddress}`;\n}\n\nexport function rawTokenToToken(rawToken: RawToken, casinoChainId: CasinoChainId): Token {\n  const casinoChain = casinoChainById[casinoChainId];\n  return {\n    address: rawToken.tokenAddress,\n    symbol:\n      rawToken.tokenAddress === GAS_TOKEN_ADDRESS\n        ? casinoChain.viemChain.nativeCurrency.symbol\n        : rawToken.symbol,\n    decimals: rawToken.decimals,\n  };\n}\n","import {\n  type Address,\n  encodeFunctionData,\n  erc20Abi,\n  getAddress,\n  type Hex,\n  zeroAddress,\n} from \"viem\";\nimport { type ChainId, chainById } from \"../../data/chains\";\nimport { ERROR_CODES } from \"../../errors/codes\";\nimport { TransactionError } from \"../../errors/types\";\nimport type { BetSwirlFunctionData, Token } from \"../../interfaces\";\nimport type { BetSwirlWallet } from \"../../provider\";\nimport { chainNativeCurrencyToToken } from \"../../utils/tokens\";\n\nexport type RawTokenSymbol = string;\nexport type RawTokenDecimals = number;\nexport async function getTokenMetadata(\n  wallet: BetSwirlWallet,\n  tokenAddress: Hex,\n  chainId: ChainId,\n): Promise<Token> {\n  if (tokenAddress === zeroAddress) {\n    return chainNativeCurrencyToToken(chainById[chainId].nativeCurrency);\n  }\n\n  try {\n    const functionDatas = [\n      getTokenDecimalsFunctionData(tokenAddress),\n      getTokenSymbolFunctionData(tokenAddress),\n    ];\n    const tokenMetadata = await wallet.readContracts<\n      typeof functionDatas,\n      [RawTokenDecimals, RawTokenSymbol]\n    >(functionDatas);\n\n    return {\n      address: getAddress(tokenAddress),\n      decimals: tokenMetadata[0],\n      symbol: tokenMetadata[1] || \"UNKNOWN\",\n    };\n  } catch (_error) {\n    throw new TransactionError(\n      `Error checking metdata of ${tokenAddress} on chain ${chainId}`,\n      ERROR_CODES.TRANSACTION.TOKEN_METADATA_ERROR,\n      {\n        chainId,\n        tokenAddress,\n      },\n    );\n  }\n}\n\nexport function getTokenDecimalsFunctionData(\n  tokenAddress: Address,\n): BetSwirlFunctionData<typeof erc20Abi, \"decimals\", readonly []> {\n  const abi = erc20Abi;\n  const functionName = \"decimals\" as const;\n  const args = [] as const;\n  return {\n    data: { to: tokenAddress, abi, functionName, args },\n    encodedData: encodeFunctionData({\n      abi,\n      functionName,\n      args,\n    }),\n  };\n}\n\nexport function getTokenSymbolFunctionData(\n  tokenAddress: Address,\n): BetSwirlFunctionData<typeof erc20Abi, \"symbol\", readonly []> {\n  const abi = erc20Abi;\n  const functionName = \"symbol\" as const;\n  const args = [] as const;\n  return {\n    data: { to: tokenAddress, abi, functionName, args },\n    encodedData: encodeFunctionData({\n      abi,\n      functionName,\n      args,\n    }),\n  };\n}\n","import type { Hash } from \"viem\";\nimport type { CasinoChainId } from \"../../../data/casino\";\nimport { bigIntFormatter, getBetSwirlApiUrl } from \"../../../utils\";\nimport type { ClaimFreebetCodeTypedData } from \"../..\";\n\nexport interface ClaimFreebetCodeRequest {\n  signature: Hash;\n  typedData: ClaimFreebetCodeTypedData;\n  chainId: number;\n}\n\nexport interface ClaimFreebetCodeResponse {\n  success: boolean;\n  error?: string;\n}\n\n/**\n * Claims a freebet code by sending the signature and typed data to the API\n * @param signature - The EIP712 signature\n * @param typedData - The typed data used for signing\n * @param chainId - The chain ID\n * @returns Promise with success status and optional error message\n */\nexport async function claimFreebetCode(\n  signature: Hash,\n  typedData: ClaimFreebetCodeTypedData,\n  chainId: CasinoChainId,\n  testMode = false,\n): Promise<ClaimFreebetCodeResponse> {\n  try {\n    const response = await fetch(\n      `${getBetSwirlApiUrl(testMode)}/public/v1/freebet/code-campaigns/claim`,\n      {\n        method: \"POST\",\n        body: JSON.stringify(\n          {\n            user_signature: signature,\n            chain_id: chainId,\n            ...typedData.message,\n          },\n          bigIntFormatter,\n        ),\n      },\n    );\n\n    if (response.ok) {\n      return { success: true };\n    }\n    const errorData = await response.json();\n    return {\n      success: false,\n      error: errorData.error || \"Failed to claim freebet code\",\n    };\n  } catch (error) {\n    return {\n      success: false,\n      error: error instanceof Error ? error.message : \"Unknown error occurred\",\n    };\n  }\n}\n","import type { ChainId, LEADERBOARD_TYPE } from \"../../../data\";\nimport { BetSwirlError, ERROR_CODES } from \"../../../errors\";\nimport { getBetSwirlApiUrl } from \"../../../utils\";\n\nconst MAX_BET_IDS = 100;\n\n/**\n * Refreshes leaderboards by adding the specified bet IDs.\n * It allows to avoid waiting up to 1h to take into account the bets in the leaderboards ranks.\n * If bets are not added to the leaderboards, they will be considered for the next automatic refresh (refreshed once per hour).\n *\n * This function sends a POST request to the BetSwirl API to add the given bet IDs to the leaderboards\n * for a specific chain and bet type. It returns true if the operation was successful, otherwise false.\n *\n * @param betIds - An array of bet IDs to add to the leaderboards.\n * @param chainId - The chain ID on which the bets were placed.\n * @param betType - The type of leaderboard (casino or sports).\n * @param testMode - Whether to use test mode API endpoint (default: false)\n *\n * @returns A promise that resolves to true if the refresh was successful, or false otherwise.\n */\nexport const refreshLeaderboardsWithBets = async (\n  betIds: string[],\n  chainId: ChainId,\n  betType: LEADERBOARD_TYPE,\n  testMode = false,\n): Promise<boolean> => {\n  try {\n    if (betIds.length > MAX_BET_IDS) {\n      throw new BetSwirlError(\"Too many bet ids\", ERROR_CODES.LEADERBOARD.TOO_MANY_BETS, {\n        betIdsCount: betIds.length,\n        maxBetIdsCount: MAX_BET_IDS,\n      });\n    }\n    const res = await fetch(`${getBetSwirlApiUrl(testMode)}/public/v1/leaderboards/add-bets`, {\n      method: \"POST\",\n      body: JSON.stringify({\n        bet_ids: betIds,\n        chain_id: chainId.toString(),\n        bet_type: betType,\n      }),\n    });\n    if (res.status === 200) {\n      return true;\n    }\n    console.error(`${res.status} ${res.statusText} - ${JSON.stringify(await res.json())}`);\n    return false;\n  } catch (error) {\n    console.error(error);\n    return false;\n  }\n};\n","export const freebetAbi = [\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"manager_\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"bank_\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"nonpayable\",\n    type: \"constructor\",\n  },\n  {\n    inputs: [],\n    name: \"BalanceTooLow\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"BetAlreadyWagered\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"BetExpired\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidAddress\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidAmount\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidSignature\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidValue\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"UnauthorizedGame\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"WagerDenied\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"WrongChainId\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"WrongFreebetAddress\",\n    type: \"error\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"previousBank\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"bank\",\n        type: \"address\",\n      },\n    ],\n    name: \"BankSet\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"Deposit\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"previousManager\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"manager\",\n        type: \"address\",\n      },\n    ],\n    name: \"ManagerSet\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"previousOwner\",\n        type: \"address\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"newOwner\",\n        type: \"address\",\n      },\n    ],\n    name: \"OwnershipTransferred\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"uint256\",\n        name: \"freeBetId\",\n        type: \"uint256\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"player\",\n        type: \"address\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"betId\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"game\",\n        type: \"address\",\n      },\n    ],\n    name: \"PlaceFreeBet\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n    ],\n    name: \"Withdraw\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"WithdrawStuckFunds\",\n    type: \"event\",\n  },\n  {\n    inputs: [],\n    name: \"GAME_ROLE\",\n    outputs: [\n      {\n        internalType: \"bytes32\",\n        name: \"\",\n        type: \"bytes32\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    name: \"affiliateBalances\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"bank\",\n    outputs: [\n      {\n        internalType: \"contract IBank\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"deposit\",\n    outputs: [],\n    stateMutability: \"payable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"freeBets\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"freeBetId\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"address\",\n        name: \"player\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"betId\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"game\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"manager\",\n    outputs: [\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"owner\",\n    outputs: [\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"renounceOwnership\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"bank_\",\n        type: \"address\",\n      },\n    ],\n    name: \"setBank\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"manager_\",\n        type: \"address\",\n      },\n    ],\n    name: \"setManager\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    name: \"totalAffiliateBalance\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"newOwner\",\n        type: \"address\",\n      },\n    ],\n    name: \"transferOwnership\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"game\",\n        type: \"address\",\n      },\n      {\n        internalType: \"bytes\",\n        name: \"input\",\n        type: \"bytes\",\n      },\n      {\n        components: [\n          {\n            internalType: \"uint256\",\n            name: \"chainId\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"freeBetId\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"address\",\n            name: \"player\",\n            type: \"address\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"amount\",\n            type: \"uint256\",\n          },\n          {\n            internalType: \"address\",\n            name: \"token\",\n            type: \"address\",\n          },\n          {\n            internalType: \"uint64\",\n            name: \"expiresAt\",\n            type: \"uint64\",\n          },\n          {\n            internalType: \"address\",\n            name: \"affiliate\",\n            type: \"address\",\n          },\n          {\n            internalType: \"address\",\n            name: \"freebetAddress\",\n            type: \"address\",\n          },\n        ],\n        internalType: \"struct IFreeBetPlayer.FreeBetData\",\n        name: \"freeBetData\",\n        type: \"tuple\",\n      },\n      {\n        internalType: \"bytes\",\n        name: \"signature\",\n        type: \"bytes\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"maxHouseEdge\",\n        type: \"uint16\",\n      },\n    ],\n    name: \"wager\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"betId\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"payable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n    ],\n    name: \"withdraw\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n    ],\n    name: \"withdrawStuckFunds\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    stateMutability: \"payable\",\n    type: \"receive\",\n  },\n] as const;\n","import type { BetSwirlWallet } from \"../../provider\";\n\nexport enum GAS_PRICE_TYPE {\n  NORMAL = \"NORMAL\",\n  FAST = \"FAST\",\n  INSTANT = \"INSTANT\",\n}\n\nexport interface RETURN_TYPE_GAS_PRICES {\n  [GAS_PRICE_TYPE.NORMAL]: bigint;\n  [GAS_PRICE_TYPE.FAST]: bigint;\n  [GAS_PRICE_TYPE.INSTANT]: bigint;\n}\n\nexport async function getGasPrices(\n  wallet: BetSwirlWallet,\n  chainId?: number,\n): Promise<RETURN_TYPE_GAS_PRICES> {\n  const gasPrice = await wallet.getPublicClient(chainId).getGasPrice();\n  const basePrice = gasPrice ? BigInt(gasPrice) : BigInt(1000000000);\n\n  return {\n    [GAS_PRICE_TYPE.NORMAL]: basePrice,\n    [GAS_PRICE_TYPE.FAST]: (basePrice * 120n) / 100n, // 20%\n    [GAS_PRICE_TYPE.INSTANT]: (basePrice * 150n) / 100n, // 50%\n  };\n}\n","import { encodeFunctionData, type Hex } from \"viem\";\nimport { casinoGameAbi } from \"../../abis/v2/casino/game\";\nimport { defaultCasinoPlaceBetOptions } from \"../../actions\";\nimport { type CASINO_GAME_TYPE, type CasinoChainId, casinoChainById } from \"../../data/casino\";\nimport { ERROR_CODES } from \"../../errors/codes\";\nimport { ChainError, TransactionError } from \"../../errors/types\";\nimport type { BetSwirlFunctionData } from \"../../interfaces\";\nimport type { BetSwirlWallet } from \"../../provider\";\nimport { getCasinoChainId } from \"../../utils\";\nimport { GAS_PRICE_TYPE, getGasPrices } from \"./gasPrice\";\n\nexport type RawChainlinkVrfCost = bigint;\n\nexport async function getChainlinkVrfCost(\n  wallet: BetSwirlWallet,\n  game: CASINO_GAME_TYPE, // TODO allow to pass PVP_GAME_TYPE\n  tokenAddress: Hex,\n  betCount: number,\n  gasPrice?: bigint,\n  gasPriceType?: GAS_PRICE_TYPE,\n): Promise<bigint> {\n  const casinoChainId = getCasinoChainId(wallet);\n\n  // Get default gas price if gas price is not passed\n  const effectiveGasPrice =\n    gasPrice ||\n    (await getGasPrices(wallet, casinoChainId))[\n      gasPriceType || defaultCasinoPlaceBetOptions.gasPriceType\n    ];\n  const functionData = getChainlinkVrfCostFunctionData(game, tokenAddress, betCount, casinoChainId);\n  const gameAddress = functionData.data.to;\n  try {\n    const { data: vrfCost } = await wallet.readContract<typeof functionData>(\n      functionData,\n      effectiveGasPrice,\n    );\n\n    if (!vrfCost) {\n      console.warn(\n        `[getChainlinkVrfCost] vrfCost is 0 for tokenAddress: ${tokenAddress}, betCount: ${betCount}, gameAddress: ${gameAddress}, chainId: ${casinoChainId}`,\n      );\n      return 0n;\n    }\n    return BigInt(vrfCost || 0n);\n  } catch (error) {\n    throw new TransactionError(\n      `An error occured while getting the chainlink vrf cost: ${error}`,\n      ERROR_CODES.READ.CHAINLINK_VRF_COST_ERROR,\n      {\n        gameAddress,\n        tokenAddress,\n        betCount,\n        chainId: casinoChainId,\n        gasPrice: effectiveGasPrice,\n      },\n    );\n  }\n}\n\nexport function getChainlinkVrfCostFunctionData(\n  game: CASINO_GAME_TYPE,\n  tokenAddress: Hex,\n  betCount: number,\n  casinoChainId: CasinoChainId,\n): BetSwirlFunctionData<typeof casinoGameAbi, \"getChainlinkVRFCost\", readonly [Hex, number]> {\n  const casinoChain = casinoChainById[casinoChainId];\n  const gameAddress = casinoChain.contracts.games[game]?.address;\n\n  if (!gameAddress) {\n    throw new ChainError(\n      `${game} is not available for chain ${casinoChain.viemChain.name} (${casinoChainId})`,\n      ERROR_CODES.CHAIN.UNSUPPORTED_GAME,\n      {\n        chainId: casinoChainId,\n        supportedChains: Object.keys(casinoChainById),\n      },\n    );\n  }\n  const abi = casinoGameAbi;\n  const functionName = \"getChainlinkVRFCost\";\n  const args = [tokenAddress, betCount] as const;\n  return {\n    data: { to: gameAddress, abi, functionName, args },\n    encodedData: encodeFunctionData({\n      abi,\n      functionName,\n      args,\n    }),\n  };\n}\n","import type { Hash, Hex } from \"viem\";\nimport { encodeFunctionData, erc20Abi } from \"viem\";\nimport { GAS_TOKEN_ADDRESS } from \"../../constants\";\nimport { ERROR_CODES } from \"../../errors/codes\";\nimport { TransactionError } from \"../../errors/types\";\nimport type { BetSwirlFunctionData } from \"../../interfaces\";\nimport type { BetSwirlWallet } from \"../../provider\";\n\nexport enum ALLOWANCE_TYPE {\n  ALWAYS = \"ALWAYS\",\n  AUTO = \"AUTO\",\n  NONE = \"NONE\",\n}\n\nexport interface ApproveResult {\n  approvedAmount: bigint;\n  tokenAddress: Hex;\n  allower: Hex;\n  spender: Hex;\n}\n\nexport type RawAllowance = bigint;\n\nexport async function approve(\n  wallet: BetSwirlWallet,\n  tokenAddress: Hex,\n  allower: Hex,\n  spender: Hex,\n  amount: bigint,\n  gasPrice?: bigint,\n  pollingInterval?: number,\n  allowanceType: ALLOWANCE_TYPE = ALLOWANCE_TYPE.AUTO,\n  onApprovePending?: (tx: Hash, result: ApproveResult) => void | Promise<void>,\n) {\n  try {\n    if (tokenAddress === GAS_TOKEN_ADDRESS || allowanceType === ALLOWANCE_TYPE.NONE)\n      return { receipt: null, result: null };\n    let allowance: null | bigint = null;\n    if (allowanceType === ALLOWANCE_TYPE.AUTO) {\n      const functionData = getAllowanceFunctionData(tokenAddress, allower, spender);\n      allowance = await wallet.readContract<typeof functionData, RawAllowance>(functionData);\n    }\n\n    if (!allowance || allowance < amount) {\n      const amountToApprove = amount - (allowance || 0n);\n      const functionData = getApproveFunctionData(tokenAddress, spender, amountToApprove);\n      const tx = await wallet.writeContract(functionData, undefined, gasPrice);\n      const result: ApproveResult = {\n        approvedAmount: amountToApprove,\n        tokenAddress,\n        allower,\n        spender,\n      };\n      await onApprovePending?.(tx, result);\n      const receipt = await wallet.waitTransaction(tx, pollingInterval);\n      return { receipt, result };\n    }\n\n    return { receipt: null, result: null };\n  } catch (_error) {\n    throw new TransactionError(\n      `Error checking and approving token ${tokenAddress} on chain ${wallet.getChainId()}`,\n      ERROR_CODES.TRANSACTION.TOKEN_APPROVAL_ERROR,\n      {\n        chainId: wallet.getChainId(),\n        tokenAddress,\n        spender,\n        amount,\n        allower,\n      },\n    );\n  }\n}\n\nexport function getAllowanceFunctionData(\n  tokenAddress: Hex,\n  allower: Hex,\n  spender: Hex,\n): BetSwirlFunctionData<typeof erc20Abi, \"allowance\", readonly [Hex, Hex]> {\n  const abi = erc20Abi;\n  const functionName = \"allowance\" as const;\n  const args = [allower, spender] as const;\n  return {\n    data: { to: tokenAddress, abi, functionName, args },\n    encodedData: encodeFunctionData({\n      abi,\n      functionName,\n      args,\n    }),\n  };\n}\n\nexport function getApproveFunctionData(\n  tokenAddress: Hex,\n  spender: Hex,\n  amount: bigint,\n): BetSwirlFunctionData<typeof erc20Abi, \"approve\", readonly [Hex, bigint]> {\n  const abi = erc20Abi;\n  const functionName = \"approve\" as const;\n  const args = [spender, amount] as const;\n  return {\n    data: { to: tokenAddress, abi, functionName, args },\n    encodedData: encodeFunctionData({\n      abi,\n      functionName,\n      args,\n    }),\n  };\n}\n","import {\n  type Address,\n  decodeEventLog,\n  type EncodeAbiParametersReturnType,\n  encodeFunctionData,\n  type Hash,\n  type Hex,\n  type TransactionReceipt,\n} from \"viem\";\nimport { coinTossAbi } from \"../../abis/v2/casino/cointoss\";\nimport { freebetAbi } from \"../../abis/v2/casino/freebet\";\nimport { GAS_TOKEN_ADDRESS } from \"../../constants\";\nimport type { SignedFreebet } from \"../../data\";\nimport {\n  CASINO_GAME_PLACE_BET_ABI,\n  CASINO_GAME_TYPE,\n  type CasinoChainId,\n  casinoChainById,\n  MAX_SDK_HOUSE_EGDE,\n  type NORMAL_CASINO_GAME_TYPE,\n  type WEIGHTED_CASINO_GAME_TYPE,\n} from \"../../data/casino\";\nimport type { KenoEncodedInput, WeightedGameEncodedInput } from \"../../entities\";\nimport type { CoinTossEncodedInput } from \"../../entities/casino/cointoss\";\nimport type { DiceEncodedInput } from \"../../entities/casino/dice\";\nimport type { RouletteEncodedInput } from \"../../entities/casino/roulette\";\nimport { ERROR_CODES } from \"../../errors/codes\";\nimport { ChainError, ConfigurationError, TransactionError } from \"../../errors/types\";\nimport type { BetSwirlEventData, BetSwirlFunctionData, GameAbi, Token } from \"../../interfaces\";\nimport type { BetSwirlWallet } from \"../../provider\";\nimport { getChainlinkVrfCost } from \"../../read/common/chainlinkVrfCost\";\nimport { GAS_PRICE_TYPE, getGasPrices } from \"../../read/common/gasPrice\";\nimport { getTokenMetadata } from \"../../read/common/tokenMetadata\";\nimport { getCasinoChainId } from \"../../utils\";\nimport { ALLOWANCE_TYPE, type ApproveResult, approve } from \"../common/approve\";\n\nexport interface CasinoBetParams {\n  betAmount: bigint;\n  betCount?: number;\n  tokenAddress?: Address;\n  stopGain?: bigint;\n  stopLoss?: bigint;\n  vrfFees?: bigint;\n  receiver?: Hex;\n  affiliate?: Hex;\n}\n\nexport const defaultCasinoGameParams = {\n  betCount: 1,\n  //token: zeroAddress, => chain.nativeCurrency\n  stopGain: 0n,\n  stopLoss: 0n,\n  vrfFees: 0n, // When 0, VRF fees are calculated on the fly\n  //pollingInterval: => data in casino.ts\n};\n\nexport interface CasinoPlaceBetOptions {\n  gasPriceType?: GAS_PRICE_TYPE;\n  gasPrice?: bigint; // wei\n  allowanceType?: ALLOWANCE_TYPE;\n  pollingInterval?: number;\n}\n\nexport const defaultCasinoPlaceBetOptions = {\n  gasPriceType: GAS_PRICE_TYPE.NORMAL,\n  gasPrice: 0n,\n  allowanceType: ALLOWANCE_TYPE.AUTO,\n};\n// Game should not know the game implementation details, but well..  it helps developers\nexport type GameEncodedInput =\n  | CoinTossEncodedInput\n  | DiceEncodedInput\n  | RouletteEncodedInput\n  | KenoEncodedInput\n  | WeightedGameEncodedInput;\nexport interface GenericCasinoBetParams extends CasinoBetParams {\n  game: CASINO_GAME_TYPE;\n  gameEncodedInput: GameEncodedInput;\n}\n\ninterface CommonCasinoPlacedBet {\n  id: bigint;\n  betAmount: bigint;\n  betCount: number;\n  totalBetAmount: bigint;\n  chargedVRFCost: bigint;\n  token: Token;\n  affiliate: Hex;\n  receiver: Hex;\n  stopGain: bigint;\n  stopLoss: bigint;\n  betTxnHash: Hash;\n  betBlock: bigint;\n  chainId: CasinoChainId;\n}\nexport interface NormalCasinoPlacedBet extends CommonCasinoPlacedBet {\n  game: NORMAL_CASINO_GAME_TYPE;\n}\nexport interface WeightedCasinoPlacedBet extends CommonCasinoPlacedBet {\n  game: WEIGHTED_CASINO_GAME_TYPE;\n}\n\nexport type CasinoPlacedBet = NormalCasinoPlacedBet | WeightedCasinoPlacedBet;\n\nexport interface PlaceBetCallbacks {\n  onApprovePending?: (tx: Hash, result: ApproveResult) => void | Promise<void>;\n  onApproved?: (receipt: TransactionReceipt, result: ApproveResult) => void | Promise<void>;\n  onBetPlacedPending?: (tx: Hash) => void | Promise<void>;\n}\n\nexport async function placeBet(\n  wallet: BetSwirlWallet,\n  betParams: GenericCasinoBetParams,\n  options?: CasinoPlaceBetOptions,\n  callbacks?: PlaceBetCallbacks,\n): Promise<{ placedBet: CasinoPlacedBet; receipt: TransactionReceipt }> {\n  const casinoChainId = getCasinoChainId(wallet);\n  const casinoChain = casinoChainById[casinoChainId];\n  const game = casinoChain.contracts.games[betParams.game];\n\n  if (!game) {\n    throw new ChainError(\n      `${betParams.game} is not available for chain ${casinoChain.viemChain.name} (${casinoChainId})`,\n      ERROR_CODES.CHAIN.UNSUPPORTED_GAME,\n      {\n        chainId: casinoChainId,\n        supportedChains: Object.keys(casinoChainById),\n      },\n    );\n  }\n\n  const accountAddress = betParams.receiver || wallet.getAccount(casinoChainId)?.address;\n  if (!accountAddress) {\n    throw new ConfigurationError(\n      `No configured account in the wallet for chain ${casinoChain.viemChain.name} (${casinoChainId})`,\n      ERROR_CODES.WALLET.ACCOUNT_MISSING,\n      {\n        chainId: casinoChainId,\n      },\n    );\n  }\n  try {\n    // Get gas price if needed\n    const gasPrice =\n      options?.gasPrice ||\n      (await getGasPrices(wallet, casinoChainId))[\n        options?.gasPriceType || defaultCasinoPlaceBetOptions.gasPriceType\n      ];\n    const tokenAddress = betParams.tokenAddress || GAS_TOKEN_ADDRESS;\n\n    // Generate function data\n    const receiver = betParams.receiver || accountAddress;\n    const functionData = getPlaceBetFunctionData({ ...betParams, receiver }, casinoChainId);\n\n    // Approve if needed\n\n    const allowanceType = options?.allowanceType || defaultCasinoPlaceBetOptions.allowanceType;\n    const pollingInterval = options?.pollingInterval || casinoChain.options.pollingInterval;\n\n    const { receipt: approveReceipt, result: approveResult } = await approve(\n      wallet,\n      tokenAddress,\n      accountAddress,\n      game.address,\n      functionData.extraData.totalBetAmount,\n      gasPrice,\n      pollingInterval,\n      allowanceType,\n      callbacks?.onApprovePending,\n    );\n\n    if (approveReceipt) await callbacks?.onApproved?.(approveReceipt, approveResult);\n\n    // Get VRF fees\n    const vrfFees =\n      betParams.vrfFees ||\n      (await getChainlinkVrfCost(\n        wallet,\n        betParams.game,\n        tokenAddress,\n        functionData.extraData.betCount,\n        gasPrice,\n      ));\n    // Execute place bet tx\n    const hash = await wallet.writeContract(\n      functionData,\n      functionData.extraData.getValue(vrfFees),\n      gasPrice,\n    );\n    await callbacks?.onBetPlacedPending?.(hash);\n    const receipt = await wallet.waitTransaction(hash, pollingInterval);\n\n    const placedBet = await getPlacedBetFromReceipt(wallet, receipt, betParams.game);\n    if (!placedBet) {\n      throw new TransactionError(\n        \"PlaceBet event not found\",\n        ERROR_CODES.GAME.PLACE_BET_EVENT_NOT_FOUND,\n        {\n          gameAddress: game.address,\n          gameType: betParams.game,\n          chainId: casinoChainId,\n          tokenAddress,\n        },\n      );\n    }\n\n    return { placedBet, receipt };\n  } catch (error) {\n    throw new TransactionError(\n      `An error occured while placing the bet: ${error}`,\n      ERROR_CODES.GAME.PLACE_BET_ERROR,\n      {\n        gameAddress: game.address,\n        gameType: betParams.game,\n        chainId: casinoChainId,\n        tokenAddress: betParams.tokenAddress,\n        betAmount: betParams.betAmount,\n        betCount: betParams.betCount,\n        stopGain: betParams.stopGain,\n        stopLoss: betParams.stopLoss,\n      },\n    );\n  }\n}\n\n/* Previously was Omit<GenericCasinoBetParams, \"receiver\" | \"vrfFees\" | \"token\"> & {\n    receiver: Hex;\n    tokenAddress?: Hex;\n  } */\nexport interface PlaceBetFunctionDataGameParams {\n  receiver: Address;\n  game: CASINO_GAME_TYPE;\n  gameEncodedInput: GameEncodedInput;\n  betAmount: bigint;\n  tokenAddress?: Address;\n  betCount?: number;\n  stopGain?: bigint;\n  stopLoss?: bigint;\n  affiliate?: Address;\n}\n\nexport interface PlaceBetExtraData {\n  totalBetAmount: bigint;\n  tokenAddress: Address;\n  betCount: number;\n  stopGain: bigint;\n  stopLoss: bigint;\n  maxHouseEdge: number;\n  affiliate: Address;\n  getValue: (vrfFees: bigint) => bigint;\n}\n\nexport function getPlaceBetFunctionData(\n  gameParams: PlaceBetFunctionDataGameParams,\n  chainId: CasinoChainId,\n): BetSwirlFunctionData<\n  GameAbi<typeof gameParams.game>,\n  \"wager\",\n  readonly [\n    ...GameEncodedInput[],\n    Hex,\n    Hex,\n    {\n      readonly token: Hex;\n      readonly betAmount: bigint;\n      readonly betCount: number;\n      readonly stopGain: bigint;\n      readonly stopLoss: bigint;\n      readonly maxHouseEdge: number;\n    },\n  ]\n> & {\n  extraData: PlaceBetExtraData;\n} {\n  const casinoChain = casinoChainById[chainId];\n  const game = casinoChain.contracts.games[gameParams.game];\n\n  if (!game) {\n    throw new ChainError(\n      `${gameParams.game} is not available for chain ${casinoChain.viemChain.name} (${chainId})`,\n      ERROR_CODES.CHAIN.UNSUPPORTED_GAME,\n      {\n        chainId,\n        supportedChains: Object.keys(casinoChainById),\n      },\n    );\n  }\n\n  const affiliate = gameParams.affiliate || casinoChain.defaultAffiliate;\n  const tokenAddress = gameParams.tokenAddress || GAS_TOKEN_ADDRESS;\n  const betCount = gameParams.betCount || defaultCasinoGameParams.betCount;\n  const stopGain = gameParams.stopGain || defaultCasinoGameParams.stopGain;\n  const stopLoss = gameParams.stopLoss || defaultCasinoGameParams.stopLoss;\n  const maxHouseEdge = MAX_SDK_HOUSE_EGDE;\n\n  const abi = game.abi;\n  const functionName = \"wager\" as const;\n  const args = [\n    ...(Array.isArray(gameParams.gameEncodedInput)\n      ? gameParams.gameEncodedInput\n      : [gameParams.gameEncodedInput]),\n    gameParams.receiver,\n    affiliate,\n    {\n      token: tokenAddress,\n      betAmount: gameParams.betAmount,\n      betCount,\n      stopGain,\n      stopLoss,\n      maxHouseEdge,\n    },\n  ] as const;\n\n  const totalBetAmount = gameParams.betAmount * BigInt(betCount);\n  return {\n    data: { to: game.address, abi, functionName, args },\n    encodedData: encodeFunctionData({ abi, functionName, args }),\n    extraData: {\n      totalBetAmount,\n      tokenAddress,\n      betCount,\n      stopGain,\n      stopLoss,\n      maxHouseEdge,\n      affiliate,\n      getValue: (vrfFees: bigint) =>\n        tokenAddress === GAS_TOKEN_ADDRESS ? totalBetAmount + vrfFees : vrfFees,\n    },\n  };\n}\n\n/* Freebet section */\n\nexport interface CasinoFreebetParams {\n  freebet: SignedFreebet;\n  vrfFees?: bigint;\n}\n\nexport interface GenericCasinoFreebetParams extends CasinoFreebetParams {\n  game: CASINO_GAME_TYPE;\n  gameEncodedAbiParametersInput: EncodeAbiParametersReturnType;\n}\n\nexport type CasinoPlacedFreebet = CasinoPlacedBet;\n\nexport interface PlaceFreebetCallbacks {\n  onBetPlacedPending?: (tx: Hash) => void | Promise<void>;\n}\n\nexport async function placeFreebet(\n  wallet: BetSwirlWallet,\n  freebetParams: GenericCasinoFreebetParams,\n  options?: CasinoPlaceBetOptions,\n  callbacks?: PlaceFreebetCallbacks,\n): Promise<{ placedFreebet: CasinoPlacedFreebet; receipt: TransactionReceipt }> {\n  const casinoChainId = getCasinoChainId(wallet);\n  if (casinoChainId !== freebetParams.freebet.chainId) {\n    throw new ChainError(\n      `Chain id mismatch: ${casinoChainId} (wallet) !== ${freebetParams.freebet.chainId} (freebet)`,\n      ERROR_CODES.CHAIN.CHAIN_ID_MISMATCH,\n    );\n  }\n  const casinoChain = casinoChainById[casinoChainId];\n  const game = casinoChain.contracts.games[freebetParams.game];\n\n  if (!game) {\n    throw new ChainError(\n      `${freebetParams.game} is not available for chain ${casinoChain.viemChain.name} (${casinoChainId})`,\n      ERROR_CODES.CHAIN.UNSUPPORTED_GAME,\n      {\n        chainId: casinoChainId,\n        supportedChains: Object.keys(casinoChainById),\n      },\n    );\n  }\n\n  try {\n    // Get gas price if needed\n    const gasPrice =\n      options?.gasPrice ||\n      (await getGasPrices(wallet, casinoChainId))[\n        options?.gasPriceType || defaultCasinoPlaceBetOptions.gasPriceType\n      ];\n    const token = freebetParams.freebet.token;\n\n    // Generate function data\n    const functionData = getPlaceFreebetFunctionData(freebetParams, casinoChainId);\n\n    // Get VRF fees\n    const vrfFees =\n      freebetParams.vrfFees ||\n      (await getChainlinkVrfCost(\n        wallet,\n        freebetParams.game,\n        token.address,\n        functionData.extraData.betCount,\n        gasPrice,\n      ));\n    // Execute place bet tx\n    const hash = await wallet.writeContract(\n      functionData,\n      functionData.extraData.getValue(vrfFees),\n      gasPrice,\n    );\n    await callbacks?.onBetPlacedPending?.(hash);\n    const pollingInterval = options?.pollingInterval || casinoChain.options.pollingInterval;\n    const receipt = await wallet.waitTransaction(hash, pollingInterval);\n\n    const placedFreebet = await getPlacedBetFromReceipt(wallet, receipt, freebetParams.game);\n    if (!placedFreebet) {\n      throw new TransactionError(\n        \"PlaceBet event not found\",\n        ERROR_CODES.GAME.PLACE_BET_EVENT_NOT_FOUND,\n        {\n          gameAddress: game.address,\n          gameType: freebetParams.game,\n          chainId: casinoChainId,\n          token,\n        },\n      );\n    }\n\n    return { placedFreebet, receipt };\n  } catch (error) {\n    throw new TransactionError(\n      `An error occured while placing the freebet: ${error}`,\n      ERROR_CODES.GAME.PLACE_FREEBET_ERROR,\n      {\n        gameAddress: game.address,\n        gameType: freebetParams.game,\n        chainId: casinoChainId,\n        token: freebetParams.freebet.token,\n        input: freebetParams.gameEncodedAbiParametersInput,\n        freebetId: freebetParams.freebet.id,\n        playerAddress: freebetParams.freebet.playerAddress,\n        amount: freebetParams.freebet.amount,\n        tokenAddress: freebetParams.freebet.token.address,\n        expiresAt: freebetParams.freebet.expirationDate,\n        affiliateAddress: freebetParams.freebet.affiliateAddress,\n        freebetAddress: freebetParams.freebet.freebetAddress,\n      },\n    );\n  }\n}\n\nexport interface PlaceFreebetFunctionDataGameParams {\n  freebet: SignedFreebet;\n  game: CASINO_GAME_TYPE;\n  gameEncodedAbiParametersInput: EncodeAbiParametersReturnType;\n}\n\nexport interface PlaceFreebetExtraData extends PlaceBetExtraData {}\n\nexport function getPlaceFreebetFunctionData(\n  gameParams: PlaceFreebetFunctionDataGameParams,\n  chainId: CasinoChainId,\n): BetSwirlFunctionData<\n  typeof freebetAbi,\n  \"wager\",\n  readonly [\n    Hex,\n    EncodeAbiParametersReturnType,\n    {\n      readonly chainId: bigint;\n      readonly freeBetId: bigint;\n      readonly player: Address;\n      readonly amount: bigint;\n      readonly token: Address;\n      readonly expiresAt: bigint;\n      readonly affiliate: Address;\n      readonly freebetAddress: Address;\n    },\n    Hex, // signature\n    number,\n  ]\n> & {\n  extraData: PlaceFreebetExtraData;\n} {\n  const casinoChain = casinoChainById[chainId];\n  const game = casinoChain.contracts.games[gameParams.game];\n\n  if (!game) {\n    throw new ChainError(\n      `${gameParams.game} is not available for chain ${casinoChain.viemChain.name} (${chainId})`,\n      ERROR_CODES.CHAIN.UNSUPPORTED_GAME,\n      {\n        chainId,\n        supportedChains: Object.keys(casinoChainById),\n      },\n    );\n  }\n\n  const affiliate = gameParams.freebet.affiliateAddress;\n  const tokenAddress = gameParams.freebet.token.address;\n  const betCount = 1; // freebet is always 1 bet\n  const stopGain = 0n;\n  const stopLoss = 0n;\n  const maxHouseEdge = MAX_SDK_HOUSE_EGDE;\n\n  const abi = freebetAbi;\n  const functionName = \"wager\" as const;\n  const args = [\n    game.address,\n    gameParams.gameEncodedAbiParametersInput,\n    {\n      chainId: BigInt(gameParams.freebet.chainId),\n      freeBetId: BigInt(gameParams.freebet.id),\n      player: gameParams.freebet.playerAddress,\n      amount: gameParams.freebet.amount,\n      token: gameParams.freebet.token.address,\n      expiresAt: BigInt(Math.floor(gameParams.freebet.expirationDate.getTime() / 1000)),\n      affiliate: gameParams.freebet.affiliateAddress,\n      freebetAddress: gameParams.freebet.freebetAddress,\n    },\n    gameParams.freebet.signature,\n    maxHouseEdge,\n  ] as const;\n\n  const totalBetAmount = gameParams.freebet.amount;\n  return {\n    data: { to: gameParams.freebet.freebetAddress, abi, functionName, args },\n    encodedData: encodeFunctionData({ abi, functionName, args }),\n    extraData: {\n      totalBetAmount,\n      tokenAddress,\n      betCount,\n      stopGain,\n      stopLoss,\n      maxHouseEdge,\n      affiliate,\n      getValue: (vrfFees: bigint) =>\n        tokenAddress === GAS_TOKEN_ADDRESS ? totalBetAmount + vrfFees : vrfFees,\n    },\n  };\n}\n\nexport async function getPlacedBetFromReceipt(\n  wallet: BetSwirlWallet,\n  receipt: TransactionReceipt,\n  game: CASINO_GAME_TYPE,\n  chainId?: CasinoChainId,\n  usedToken?: Token, // to avoid to fetch the token metadata from the chain if the token used is already known\n): Promise<CasinoPlacedBet | null> {\n  const casinoChainId = getCasinoChainId(wallet, chainId);\n  const casinoChain = casinoChainById[casinoChainId];\n  // Read the Placedbet event from logs\n  const decodedPlaceBetEvent = receipt.logs\n    .map((log) => {\n      try {\n        return decodeEventLog<typeof coinTossAbi>({\n          //@ts-expect-error coinTossAbi is used because PlaceBet event is the same for all games (expect input param)\n          abi: casinoChain.contracts.games[game]?.abi!,\n          //@ts-expect-error\n          data: log.data,\n          topics: log.topics,\n        });\n      } catch {\n        return null;\n      }\n    })\n    .find((log) => log?.eventName === \"PlaceBet\");\n\n  if (!decodedPlaceBetEvent) {\n    return null;\n  }\n\n  const { args } = decodedPlaceBetEvent;\n\n  let token = usedToken;\n  if (!token) {\n    token = await getTokenMetadata(wallet, args.token!, casinoChainId);\n  }\n  return {\n    id: args.id,\n    betAmount: args.amount,\n    betCount: args.betCount,\n    totalBetAmount: args.amount * BigInt(args.betCount),\n    chargedVRFCost: args.chargedVRFCost,\n    token,\n    affiliate: args.affiliate,\n    receiver: args.receiver,\n    stopGain: args.stopGain,\n    stopLoss: args.stopLoss,\n    betTxnHash: receipt.transactionHash,\n    betBlock: receipt.blockNumber,\n    chainId: casinoChainId,\n    game,\n  };\n}\n\nexport function getPlaceBetEventData(\n  game: CASINO_GAME_TYPE,\n  casinoChainId: CasinoChainId,\n  receiver: Address,\n): BetSwirlEventData<GameAbi<typeof game>, \"PlaceBet\", { receiver: Address }> & {\n  event: { abiEvent: (typeof CASINO_GAME_PLACE_BET_ABI)[typeof game][number] };\n} {\n  const casinoChain = casinoChainById[casinoChainId];\n\n  const gameData = casinoChain.contracts.games[game];\n  if (!gameData) {\n    throw new ChainError(\n      `Game ${game} not found for chain ${casinoChainId}`,\n      ERROR_CODES.CHAIN.UNSUPPORTED_GAME,\n    );\n  }\n\n  const abi = CASINO_GAME_PLACE_BET_ABI[game];\n  const eventName = \"PlaceBet\" as const;\n  const args = { receiver: receiver } as const;\n\n  const placeBetEvent = CASINO_GAME_PLACE_BET_ABI[game]![0];\n\n  return {\n    data: { to: gameData.address, abi, eventName, args },\n    event: {\n      abiEvent: placeBetEvent,\n    },\n  };\n}\n","import { decodeEventLog, type TransactionReceipt } from \"viem\";\nimport { coinTossAbi } from \"../../abis/v2/casino/cointoss\";\nimport { CASINO_GAME_TYPE, type CasinoChainId } from \"../../data/casino\";\nimport {\n  type COINTOSS_FACE,\n  CoinToss,\n  type CoinTossEncodedInput,\n} from \"../../entities/casino/cointoss\";\nimport { ERROR_CODES } from \"../../errors/codes\";\nimport { TransactionError } from \"../../errors/types\";\nimport type { Token } from \"../../interfaces\";\nimport type { BetSwirlWallet } from \"../../provider\";\nimport {\n  type CasinoBetParams,\n  type CasinoFreebetParams,\n  type CasinoPlaceBetOptions,\n  getPlacedBetFromReceipt,\n  type NormalCasinoPlacedBet,\n  type PlaceBetCallbacks,\n  type PlaceFreebetCallbacks,\n  placeBet,\n  placeFreebet,\n} from \"./game\";\n\nexport interface CoinTossBetParams extends CasinoBetParams {\n  face: COINTOSS_FACE;\n}\n\nexport interface CoinTossFreebetParams extends CasinoFreebetParams {\n  face: COINTOSS_FACE;\n}\n\nexport interface CoinTossPlacedBet extends NormalCasinoPlacedBet {\n  face: COINTOSS_FACE;\n  encodedFace: CoinTossEncodedInput;\n  game: CASINO_GAME_TYPE.COINTOSS;\n}\n\nexport async function placeCoinTossBet(\n  wallet: BetSwirlWallet,\n  coinTossParams: CoinTossBetParams,\n  options?: CasinoPlaceBetOptions,\n  callbacks?: PlaceBetCallbacks,\n): Promise<{ placedBet: CoinTossPlacedBet; receipt: TransactionReceipt }> {\n  const { placedBet, receipt } = await placeBet(\n    wallet,\n    {\n      game: CASINO_GAME_TYPE.COINTOSS,\n      gameEncodedInput: CoinToss.encodeInput(coinTossParams.face),\n      ...coinTossParams,\n    },\n    options,\n    callbacks,\n  );\n  const coinTossPlacedBet = await getCoinTossPlacedBetFromReceipt(\n    wallet,\n    receipt,\n    placedBet.chainId,\n    placedBet.token,\n  );\n  if (!coinTossPlacedBet) {\n    throw new TransactionError(\n      \"CoinToss PlaceBet event not found\",\n      ERROR_CODES.GAME.PLACE_BET_EVENT_NOT_FOUND,\n      {\n        hash: receipt.transactionHash,\n        chainId: placedBet.chainId,\n      },\n    );\n  }\n  return { placedBet: coinTossPlacedBet, receipt };\n}\n\nexport async function placeCoinTossFreebet(\n  wallet: BetSwirlWallet,\n  coinTossParams: CoinTossFreebetParams,\n  options?: CasinoPlaceBetOptions,\n  callbacks?: PlaceFreebetCallbacks,\n): Promise<{ placedFreebet: CoinTossPlacedBet; receipt: TransactionReceipt }> {\n  const { placedFreebet, receipt } = await placeFreebet(\n    wallet,\n    {\n      game: CASINO_GAME_TYPE.COINTOSS,\n      gameEncodedAbiParametersInput: CoinToss.encodeAbiParametersInput(coinTossParams.face),\n      ...coinTossParams,\n    },\n    options,\n    callbacks,\n  );\n  const coinTossPlacedFreebet = await getCoinTossPlacedBetFromReceipt(\n    wallet,\n    receipt,\n    placedFreebet.chainId,\n    placedFreebet.token,\n  );\n  if (!coinTossPlacedFreebet) {\n    throw new TransactionError(\n      \"CoinToss PlaceBet event not found\",\n      ERROR_CODES.GAME.PLACE_BET_EVENT_NOT_FOUND,\n      {\n        hash: receipt.transactionHash,\n        chainId: placedFreebet.chainId,\n      },\n    );\n  }\n  return { placedFreebet: coinTossPlacedFreebet, receipt };\n}\n\nexport async function getCoinTossPlacedBetFromReceipt(\n  wallet: BetSwirlWallet,\n  receipt: TransactionReceipt,\n  chainId: CasinoChainId,\n  usedToken?: Token,\n): Promise<CoinTossPlacedBet | null> {\n  const gamePlacedBet = await getPlacedBetFromReceipt(\n    wallet,\n    receipt,\n    CASINO_GAME_TYPE.COINTOSS,\n    chainId,\n    usedToken,\n  );\n  if (!gamePlacedBet) {\n    return null;\n  }\n\n  // Read the CoinToss PlaceBet event from logs\n  const decodedCoinTossPlaceBetEvent = receipt.logs\n    .map((log) => {\n      try {\n        return decodeEventLog({\n          abi: coinTossAbi,\n          data: log.data,\n          topics: log.topics,\n        });\n      } catch {\n        return null;\n      }\n    })\n    .find((log) => log?.eventName === \"PlaceBet\");\n\n  if (!decodedCoinTossPlaceBetEvent) {\n    return null;\n  }\n\n  const { args } = decodedCoinTossPlaceBetEvent;\n  return {\n    ...gamePlacedBet,\n    game: CASINO_GAME_TYPE.COINTOSS,\n    encodedFace: args.face,\n    face: CoinToss.decodeInput(args.face),\n  };\n}\n","import { decodeEventLog, type TransactionReceipt } from \"viem\";\nimport { diceAbi } from \"../../abis/v2/casino/dice\";\nimport { CASINO_GAME_TYPE, type CasinoChainId } from \"../../data/casino\";\nimport { Dice, type DiceEncodedInput, type DiceNumber } from \"../../entities/casino/dice\";\nimport { ERROR_CODES } from \"../../errors/codes\";\nimport { TransactionError } from \"../../errors/types\";\nimport type { Token } from \"../../interfaces\";\nimport type { BetSwirlWallet } from \"../../provider\";\nimport {\n  type CasinoBetParams,\n  type CasinoFreebetParams,\n  type CasinoPlaceBetOptions,\n  getPlacedBetFromReceipt,\n  type NormalCasinoPlacedBet,\n  type PlaceBetCallbacks,\n  type PlaceFreebetCallbacks,\n  placeBet,\n  placeFreebet,\n} from \"./game\";\n\nexport interface DiceBetParams extends CasinoBetParams {\n  cap: DiceNumber;\n}\n\nexport interface DiceFreebetParams extends CasinoFreebetParams {\n  cap: DiceNumber;\n}\n\nexport interface DicePlacedBet extends NormalCasinoPlacedBet {\n  cap: DiceNumber;\n  encodedCap: DiceEncodedInput;\n  game: CASINO_GAME_TYPE.DICE;\n}\n\nexport async function placeDiceBet(\n  wallet: BetSwirlWallet,\n  diceParams: DiceBetParams,\n  options?: CasinoPlaceBetOptions,\n  callbacks?: PlaceBetCallbacks,\n): Promise<{ placedBet: DicePlacedBet; receipt: TransactionReceipt }> {\n  const { placedBet, receipt } = await placeBet(\n    wallet,\n    {\n      game: CASINO_GAME_TYPE.DICE,\n      gameEncodedInput: Dice.encodeInput(diceParams.cap),\n      ...diceParams,\n    },\n    options,\n    callbacks,\n  );\n  const dicePlacedBet = await getDicePlacedBetFromReceipt(\n    wallet,\n    receipt,\n    placedBet.chainId,\n    placedBet.token,\n  );\n  if (!dicePlacedBet) {\n    throw new TransactionError(\n      \"Dice PlaceBet event not found\",\n      ERROR_CODES.GAME.PLACE_BET_EVENT_NOT_FOUND,\n      {\n        hash: receipt.transactionHash,\n        chainId: placedBet.chainId,\n      },\n    );\n  }\n\n  return { placedBet: dicePlacedBet, receipt };\n}\n\nexport async function placeDiceFreebet(\n  wallet: BetSwirlWallet,\n  diceParams: DiceFreebetParams,\n  options?: CasinoPlaceBetOptions,\n  callbacks?: PlaceFreebetCallbacks,\n): Promise<{ placedFreebet: DicePlacedBet; receipt: TransactionReceipt }> {\n  const { placedFreebet, receipt } = await placeFreebet(\n    wallet,\n    {\n      game: CASINO_GAME_TYPE.DICE,\n      gameEncodedAbiParametersInput: Dice.encodeAbiParametersInput(diceParams.cap),\n      ...diceParams,\n    },\n    options,\n    callbacks,\n  );\n  const dicePlacedFreebet = await getDicePlacedBetFromReceipt(\n    wallet,\n    receipt,\n    placedFreebet.chainId,\n    placedFreebet.token,\n  );\n  if (!dicePlacedFreebet) {\n    throw new TransactionError(\n      \"Dice PlaceBet event not found\",\n      ERROR_CODES.GAME.PLACE_BET_EVENT_NOT_FOUND,\n      {\n        hash: receipt.transactionHash,\n        chainId: placedFreebet.chainId,\n      },\n    );\n  }\n  return { placedFreebet: dicePlacedFreebet, receipt };\n}\n\nexport async function getDicePlacedBetFromReceipt(\n  wallet: BetSwirlWallet,\n  receipt: TransactionReceipt,\n  chainId: CasinoChainId,\n  usedToken?: Token,\n): Promise<DicePlacedBet | null> {\n  const gamePlacedBet = await getPlacedBetFromReceipt(\n    wallet,\n    receipt,\n    CASINO_GAME_TYPE.DICE,\n    chainId,\n    usedToken,\n  );\n  if (!gamePlacedBet) {\n    return null;\n  }\n  // Read the Dice PlaceBet event from logs\n  const decodedDicePlaceBetEvent = receipt.logs\n    .map((log) => {\n      try {\n        return decodeEventLog({\n          abi: diceAbi,\n          data: log.data,\n          topics: log.topics,\n        });\n      } catch {\n        return null;\n      }\n    })\n    .find((log) => log?.eventName === \"PlaceBet\");\n\n  if (!decodedDicePlaceBetEvent) {\n    return null;\n  }\n\n  const { args } = decodedDicePlaceBetEvent;\n  return {\n    ...gamePlacedBet,\n    game: CASINO_GAME_TYPE.DICE,\n    encodedCap: args.cap,\n    cap: Dice.decodeInput(args.cap),\n  };\n}\n","import { decodeEventLog, type TransactionReceipt } from \"viem\";\nimport { kenoAbi } from \"../../abis/v2/casino/keno\";\nimport { CASINO_GAME_TYPE, type CasinoChainId } from \"../../data/casino\";\nimport { Keno, type KenoBall, type KenoEncodedInput } from \"../../entities/casino/keno\";\nimport { ERROR_CODES } from \"../../errors/codes\";\nimport { TransactionError } from \"../../errors/types\";\nimport type { Token } from \"../../interfaces\";\nimport type { BetSwirlWallet } from \"../../provider\";\nimport type { KenoConfiguration } from \"../../read\";\nimport {\n  type CasinoBetParams,\n  type CasinoFreebetParams,\n  type CasinoPlaceBetOptions,\n  getPlacedBetFromReceipt,\n  type NormalCasinoPlacedBet,\n  type PlaceBetCallbacks,\n  type PlaceFreebetCallbacks,\n  placeBet,\n  placeFreebet,\n} from \"./game\";\n\nexport interface KenoBetParams extends CasinoBetParams {\n  balls: KenoBall[];\n  kenoConfig: KenoConfiguration;\n}\n\nexport interface KenoFreebetParams extends CasinoFreebetParams {\n  balls: KenoBall[];\n  kenoConfig: KenoConfiguration;\n}\n\nexport interface KenoPlacedBet extends NormalCasinoPlacedBet {\n  balls: KenoBall[];\n  encodedBalls: KenoEncodedInput;\n  game: CASINO_GAME_TYPE.KENO;\n}\n\nexport async function placeKenoBet(\n  wallet: BetSwirlWallet,\n  kenoParams: KenoBetParams,\n  options?: CasinoPlaceBetOptions,\n  callbacks?: PlaceBetCallbacks,\n): Promise<{ placedBet: KenoPlacedBet; receipt: TransactionReceipt }> {\n  const { placedBet, receipt } = await placeBet(\n    wallet,\n    {\n      game: CASINO_GAME_TYPE.KENO,\n      gameEncodedInput: Keno.encodeInput(kenoParams.balls, kenoParams.kenoConfig),\n      ...kenoParams,\n    },\n    options,\n    callbacks,\n  );\n  const kenoPlacedBet = await getKenoPlacedBetFromReceipt(\n    wallet,\n    receipt,\n    placedBet.chainId,\n    placedBet.token,\n  );\n  if (!kenoPlacedBet) {\n    throw new TransactionError(\n      \"Keno PlaceBet event not found\",\n      ERROR_CODES.GAME.PLACE_BET_EVENT_NOT_FOUND,\n      {\n        hash: receipt.transactionHash,\n        chainId: placedBet.chainId,\n      },\n    );\n  }\n  return { placedBet: kenoPlacedBet, receipt };\n}\n\nexport async function placeKenoFreebet(\n  wallet: BetSwirlWallet,\n  kenoParams: KenoFreebetParams,\n  options?: CasinoPlaceBetOptions,\n  callbacks?: PlaceFreebetCallbacks,\n): Promise<{ placedFreebet: KenoPlacedBet; receipt: TransactionReceipt }> {\n  const { placedFreebet, receipt } = await placeFreebet(\n    wallet,\n    {\n      game: CASINO_GAME_TYPE.KENO,\n      gameEncodedAbiParametersInput: Keno.encodeAbiParametersInput(\n        kenoParams.balls,\n        kenoParams.kenoConfig,\n      ),\n      ...kenoParams,\n    },\n    options,\n    callbacks,\n  );\n  const kenoPlacedFreebet = await getKenoPlacedBetFromReceipt(\n    wallet,\n    receipt,\n    placedFreebet.chainId,\n    placedFreebet.token,\n  );\n  if (!kenoPlacedFreebet) {\n    throw new TransactionError(\n      \"Keno PlaceBet event not found\",\n      ERROR_CODES.GAME.PLACE_BET_EVENT_NOT_FOUND,\n      {\n        hash: receipt.transactionHash,\n        chainId: placedFreebet.chainId,\n      },\n    );\n  }\n  return { placedFreebet: kenoPlacedFreebet, receipt };\n}\n\nexport async function getKenoPlacedBetFromReceipt(\n  wallet: BetSwirlWallet,\n  receipt: TransactionReceipt,\n  chainId: CasinoChainId,\n  usedToken?: Token,\n): Promise<KenoPlacedBet | null> {\n  const gamePlacedBet = await getPlacedBetFromReceipt(\n    wallet,\n    receipt,\n    CASINO_GAME_TYPE.KENO,\n    chainId,\n    usedToken,\n  );\n  if (!gamePlacedBet) {\n    return null;\n  }\n\n  // Read the Keno PlaceBet event from logs\n  const decodedKenoPlaceBetEvent = receipt.logs\n    .map((log) => {\n      try {\n        return decodeEventLog({\n          abi: kenoAbi,\n          data: log.data,\n          topics: log.topics,\n        });\n      } catch {\n        return null;\n      }\n    })\n    .find((log) => log?.eventName === \"PlaceBet\");\n\n  if (!decodedKenoPlaceBetEvent) {\n    return null;\n  }\n\n  const { args } = decodedKenoPlaceBetEvent;\n  return {\n    ...gamePlacedBet,\n    game: CASINO_GAME_TYPE.KENO,\n    encodedBalls: args.numbers,\n    balls: Keno.decodeInput(args.numbers),\n  };\n}\n","import type { BP, WeightedGameConfiguration } from \"../..\";\nimport { getNetMultiplier } from \"../..\";\nimport { generateRandomHexColor } from \"../../utils\";\nimport { WeightedGame, type WeightedGameChoiceInput } from \"./weightedGame\";\n\nexport interface PlinkoChoiceInput extends WeightedGameChoiceInput {}\n\nexport class Plinko extends WeightedGame {\n  // Plinko utilities\n\n  /**\n   * Generates a bell-shaped sorted list of Plinko game segments from the provided configuration.\n   *\n   * This function takes all entries from the weighted game configuration without deduplication,\n   * computes the effective multiplier (after applying the house edge), and sorts the segments\n   * such that the entry with the highest weight appears in the center. Lighter weights are\n   * symmetrically positioned toward the edges, creating a \"bell curve\" effect in the layout.\n   *\n   * @param weightedGameConfig - The full game configuration including multipliers, weights, and optional colors.\n   * @param houseEdge - The house edge to apply to each raw multiplier.\n   *\n   * @returns An array of game segments sorted in a bell-shaped order, where each segment contains:\n   *   - multiplier: the raw multiplier (before house edge, BP)\n   *   - formattedMultiplier: the raw multiplier formatted (rounded to 3 decimals)\n   *   - netMultiplier: the net multiplier (after house edge, BP)\n   *   - formattedNetMultiplier: the net multiplier formatted (rounded to 3 decimals)\n   *   - chanceToWin: the probability of landing on this multiplier (in %)\n   *   - color: the color associated with this segment\n   */\n  static getSortedPlinkoOutputs(\n    weightedGameConfig: WeightedGameConfiguration,\n    houseEdge: number,\n  ): {\n    multiplier: BP;\n    formattedMultiplier: number;\n    netMultiplier: BP;\n    formattedNetMultiplier: number;\n    chanceToWin: number;\n    color: string;\n  }[] {\n    const totalWeight = weightedGameConfig.weights.reduce((acc, curr) => acc + curr, 0n);\n\n    const entries = weightedGameConfig.multipliers.map((_, index) => {\n      const multiplier = WeightedGame.getMultiplier(weightedGameConfig, index);\n\n      const weight = weightedGameConfig.weights[index]!;\n      const color = weightedGameConfig.colors?.[index] || generateRandomHexColor();\n\n      return {\n        multiplier: multiplier,\n        formattedMultiplier: WeightedGame._formatMultiplier(multiplier),\n        netMultiplier: getNetMultiplier(multiplier, houseEdge),\n        formattedNetMultiplier: WeightedGame._formatMultiplier(\n          getNetMultiplier(multiplier, houseEdge),\n        ),\n        chanceToWin: Number(((Number(weight) / Number(totalWeight)) * 100).toFixed(2)),\n        color,\n        weight,\n      };\n    });\n\n    // Sort by weight DESC\n    const sortedByWeight = entries.sort((a, b) => Number(b.weight - a.weight));\n\n    // Bell shape arrangement (centre = heaviest weight)\n    const bellShapedOrder: typeof entries = [];\n    sortedByWeight.forEach((item, index) => {\n      if (index % 2 === 0) {\n        bellShapedOrder.push(item); // right\n      } else {\n        bellShapedOrder.unshift(item); // left\n      }\n    });\n\n    return bellShapedOrder;\n  }\n}\n","import { WeightedGame, type WeightedGameChoiceInput } from \"./weightedGame\";\n\nexport interface WheelChoiceInput extends WeightedGameChoiceInput {}\n\nexport class Wheel extends WeightedGame {\n  // Wheel utilities\n}\n","import { decodeEventLog, type TransactionReceipt } from \"viem\";\nimport { weightedGameAbi } from \"../../abis/v2/casino/weightedGame\";\nimport {\n  type CasinoChainId,\n  labelCasinoGameByType,\n  type WEIGHTED_CASINO_GAME_TYPE,\n} from \"../../data/casino\";\nimport {\n  WeightedGame,\n  type WeightedGameConfigId,\n  type WeightedGameEncodedInput,\n} from \"../../entities\";\nimport { ERROR_CODES } from \"../../errors/codes\";\nimport { TransactionError } from \"../../errors/types\";\nimport type { Token } from \"../../interfaces\";\nimport type { BetSwirlWallet } from \"../../provider\";\nimport type { WeightedGameConfiguration } from \"../../read\";\nimport {\n  type CasinoBetParams,\n  type CasinoFreebetParams,\n  type CasinoPlaceBetOptions,\n  getPlacedBetFromReceipt,\n  type PlaceBetCallbacks,\n  type PlaceFreebetCallbacks,\n  placeBet,\n  placeFreebet,\n  type WeightedCasinoPlacedBet,\n} from \"./game\";\n\nexport interface WeightedGameBetParams extends CasinoBetParams {\n  weightedGameConfig: WeightedGameConfiguration;\n  game: WEIGHTED_CASINO_GAME_TYPE;\n}\n\nexport interface WeightedGameFreebetParams extends CasinoFreebetParams {\n  weightedGameConfig: WeightedGameConfiguration;\n  game: WEIGHTED_CASINO_GAME_TYPE;\n}\n\nexport interface WeightedGamePlacedBet extends WeightedCasinoPlacedBet {\n  configId: WeightedGameConfigId;\n  configLabel: string;\n  encodedConfigId: WeightedGameEncodedInput;\n}\n\nexport async function placeWeightedGameBet(\n  wallet: BetSwirlWallet,\n  weightedGameParams: WeightedGameBetParams,\n  options?: CasinoPlaceBetOptions,\n  callbacks?: PlaceBetCallbacks,\n): Promise<{ placedBet: WeightedGamePlacedBet; receipt: TransactionReceipt }> {\n  const { placedBet, receipt } = await placeBet(\n    wallet,\n    {\n      gameEncodedInput: WeightedGame.encodeInput(weightedGameParams.weightedGameConfig.configId),\n      ...weightedGameParams,\n    },\n    options,\n    callbacks,\n  );\n  const weightedGamePlacedBet = await getWeightedGamePlacedBetFromReceipt(\n    wallet,\n    receipt,\n    placedBet.chainId,\n    weightedGameParams.game,\n    placedBet.token,\n  );\n  if (!weightedGamePlacedBet) {\n    throw new TransactionError(\n      `${labelCasinoGameByType[weightedGameParams.game]} PlaceBet event not found`,\n      ERROR_CODES.GAME.PLACE_BET_EVENT_NOT_FOUND,\n      {\n        hash: receipt.transactionHash,\n        chainId: placedBet.chainId,\n      },\n    );\n  }\n  return { placedBet: weightedGamePlacedBet, receipt };\n}\n\nexport async function placeWeightedGameFreebet(\n  wallet: BetSwirlWallet,\n  weightedGameParams: WeightedGameFreebetParams,\n  options?: CasinoPlaceBetOptions,\n  callbacks?: PlaceFreebetCallbacks,\n): Promise<{ placedFreebet: WeightedGamePlacedBet; receipt: TransactionReceipt }> {\n  const { placedFreebet, receipt } = await placeFreebet(\n    wallet,\n    {\n      gameEncodedAbiParametersInput: WeightedGame.encodeAbiParametersInput(\n        weightedGameParams.weightedGameConfig.configId,\n      ),\n      ...weightedGameParams,\n    },\n    options,\n    callbacks,\n  );\n  const weightedGamePlacedFreebet = await getWeightedGamePlacedBetFromReceipt(\n    wallet,\n    receipt,\n    placedFreebet.chainId,\n    weightedGameParams.game,\n    placedFreebet.token,\n  );\n  if (!weightedGamePlacedFreebet) {\n    throw new TransactionError(\n      `${labelCasinoGameByType[weightedGameParams.game]} PlaceBet event not found`,\n      ERROR_CODES.GAME.PLACE_BET_EVENT_NOT_FOUND,\n      {\n        hash: receipt.transactionHash,\n        chainId: placedFreebet.chainId,\n      },\n    );\n  }\n  return { placedFreebet: weightedGamePlacedFreebet, receipt };\n}\n\nexport async function getWeightedGamePlacedBetFromReceipt(\n  wallet: BetSwirlWallet,\n  receipt: TransactionReceipt,\n  chainId: CasinoChainId,\n  game: WEIGHTED_CASINO_GAME_TYPE,\n  usedToken?: Token,\n  customWeightedGameConfigs?: WeightedGameConfiguration[],\n): Promise<WeightedGamePlacedBet | null> {\n  const gamePlacedBet = await getPlacedBetFromReceipt(wallet, receipt, game, chainId, usedToken);\n  if (!gamePlacedBet) {\n    return null;\n  }\n\n  // Read the Weighted game PlaceBet event from logs\n  const decodedWeightedGamePlaceBetEvent = receipt.logs\n    .map((log) => {\n      try {\n        return decodeEventLog({\n          abi: weightedGameAbi,\n          data: log.data,\n          topics: log.topics,\n        });\n      } catch {\n        return null;\n      }\n    })\n    .find((log) => log?.eventName === \"PlaceBet\");\n\n  if (!decodedWeightedGamePlaceBetEvent) {\n    return null;\n  }\n\n  const { args } = decodedWeightedGamePlaceBetEvent;\n  return {\n    ...gamePlacedBet,\n    game,\n    encodedConfigId: args.configId,\n    configId: WeightedGame.decodeInput(args.configId),\n    configLabel: WeightedGame.getWeightedGameConfigLabel(\n      WeightedGame.decodeInput(args.configId),\n      chainId,\n      customWeightedGameConfigs,\n    ),\n  };\n}\n","import { type TransactionReceipt } from \"viem\";\nimport { CASINO_GAME_TYPE, type CasinoChainId } from \"../../data/casino\";\nimport type { Token } from \"../../interfaces\";\nimport type { BetSwirlWallet } from \"../../provider\";\nimport type { WeightedGameConfiguration } from \"../../read\";\nimport { type CasinoPlaceBetOptions, type PlaceBetCallbacks } from \"./game\";\nimport {\n  getWeightedGamePlacedBetFromReceipt,\n  placeWeightedGameBet,\n  placeWeightedGameFreebet,\n  type WeightedGameBetParams,\n  type WeightedGameFreebetParams,\n  type WeightedGamePlacedBet,\n} from \"./weightedGame\";\n\nexport interface PlinkoBetParams extends Omit<WeightedGameBetParams, \"game\"> {}\n\nexport interface PlinkoFreebetParams extends Omit<WeightedGameFreebetParams, \"game\"> {}\n\nexport interface PlinkoPlacedBet extends WeightedGamePlacedBet {}\n\nexport async function placePlinkoBet(\n  wallet: BetSwirlWallet,\n  plinkoParams: PlinkoBetParams,\n  options?: CasinoPlaceBetOptions,\n  callbacks?: PlaceBetCallbacks,\n): Promise<{ placedBet: PlinkoPlacedBet; receipt: TransactionReceipt }> {\n  return await placeWeightedGameBet(\n    wallet,\n    {\n      ...plinkoParams,\n      game: CASINO_GAME_TYPE.PLINKO,\n    },\n    options,\n    callbacks,\n  );\n}\n\nexport async function placePlinkoFreebet(\n  wallet: BetSwirlWallet,\n  plinkoParams: PlinkoFreebetParams,\n  options?: CasinoPlaceBetOptions,\n  callbacks?: PlaceBetCallbacks,\n): Promise<{ placedFreebet: PlinkoPlacedBet; receipt: TransactionReceipt }> {\n  return await placeWeightedGameFreebet(\n    wallet,\n    {\n      ...plinkoParams,\n      game: CASINO_GAME_TYPE.PLINKO,\n    },\n    options,\n    callbacks,\n  );\n}\n\nexport async function getPlinkoPlacedBetFromReceipt(\n  wallet: BetSwirlWallet,\n  receipt: TransactionReceipt,\n  chainId: CasinoChainId,\n  usedToken?: Token,\n  customPlinkoConfigs?: WeightedGameConfiguration[],\n): Promise<PlinkoPlacedBet | null> {\n  return await getWeightedGamePlacedBetFromReceipt(\n    wallet,\n    receipt,\n    chainId,\n    CASINO_GAME_TYPE.PLINKO,\n    usedToken,\n    customPlinkoConfigs,\n  );\n}\n","import { decodeEventLog, type TransactionReceipt } from \"viem\";\nimport { rouletteAbi } from \"../../abis/v2/casino/roulette\";\nimport { CASINO_GAME_TYPE, type CasinoChainId } from \"../../data/casino\";\nimport {\n  Roulette,\n  type RouletteEncodedInput,\n  type RouletteNumber,\n} from \"../../entities/casino/roulette\";\nimport { ERROR_CODES } from \"../../errors/codes\";\nimport { TransactionError } from \"../../errors/types\";\nimport type { Token } from \"../../interfaces\";\nimport type { BetSwirlWallet } from \"../../provider\";\nimport {\n  type CasinoBetParams,\n  type CasinoFreebetParams,\n  type CasinoPlaceBetOptions,\n  getPlacedBetFromReceipt,\n  type NormalCasinoPlacedBet,\n  type PlaceBetCallbacks,\n  type PlaceFreebetCallbacks,\n  placeBet,\n  placeFreebet,\n} from \"./game\";\n\nexport interface RouletteBetParams extends CasinoBetParams {\n  numbers: RouletteNumber[];\n}\n\nexport interface RouletteFreebetParams extends CasinoFreebetParams {\n  numbers: RouletteNumber[];\n}\n\nexport interface RoulettePlacedBet extends NormalCasinoPlacedBet {\n  numbers: RouletteNumber[];\n  encodedNumbers: RouletteEncodedInput;\n  game: CASINO_GAME_TYPE.ROULETTE;\n}\n\nexport async function placeRouletteBet(\n  wallet: BetSwirlWallet,\n  rouletteParams: RouletteBetParams,\n  options?: CasinoPlaceBetOptions,\n  callbacks?: PlaceBetCallbacks,\n): Promise<{ placedBet: RoulettePlacedBet; receipt: TransactionReceipt }> {\n  const { placedBet, receipt } = await placeBet(\n    wallet,\n    {\n      game: CASINO_GAME_TYPE.ROULETTE,\n      gameEncodedInput: Roulette.encodeInput(rouletteParams.numbers),\n      ...rouletteParams,\n    },\n    options,\n    callbacks,\n  );\n  const roulettePlacedBet = await getRoulettePlacedBetFromReceipt(\n    wallet,\n    receipt,\n    placedBet.chainId,\n    placedBet.token,\n  );\n  if (!roulettePlacedBet) {\n    throw new TransactionError(\n      \"Roulette PlaceBet event not found\",\n      ERROR_CODES.GAME.PLACE_BET_EVENT_NOT_FOUND,\n      {\n        hash: receipt.transactionHash,\n        chainId: placedBet.chainId,\n      },\n    );\n  }\n  return { placedBet: roulettePlacedBet, receipt };\n}\n\nexport async function placeRouletteFreebet(\n  wallet: BetSwirlWallet,\n  rouletteParams: RouletteFreebetParams,\n  options?: CasinoPlaceBetOptions,\n  callbacks?: PlaceFreebetCallbacks,\n): Promise<{ placedFreebet: RoulettePlacedBet; receipt: TransactionReceipt }> {\n  const { placedFreebet, receipt } = await placeFreebet(\n    wallet,\n    {\n      game: CASINO_GAME_TYPE.ROULETTE,\n      gameEncodedAbiParametersInput: Roulette.encodeAbiParametersInput(rouletteParams.numbers),\n      ...rouletteParams,\n    },\n    options,\n    callbacks,\n  );\n  const roulettePlacedFreebet = await getRoulettePlacedBetFromReceipt(\n    wallet,\n    receipt,\n    placedFreebet.chainId,\n    placedFreebet.token,\n  );\n  if (!roulettePlacedFreebet) {\n    throw new TransactionError(\n      \"Roulette PlaceBet event not found\",\n      ERROR_CODES.GAME.PLACE_BET_EVENT_NOT_FOUND,\n      {\n        hash: receipt.transactionHash,\n        chainId: placedFreebet.chainId,\n      },\n    );\n  }\n  return { placedFreebet: roulettePlacedFreebet, receipt };\n}\n\nexport async function getRoulettePlacedBetFromReceipt(\n  wallet: BetSwirlWallet,\n  receipt: TransactionReceipt,\n  chainId: CasinoChainId,\n  usedToken?: Token,\n): Promise<RoulettePlacedBet | null> {\n  const gamePlacedBet = await getPlacedBetFromReceipt(\n    wallet,\n    receipt,\n    CASINO_GAME_TYPE.ROULETTE,\n    chainId,\n    usedToken,\n  );\n  if (!gamePlacedBet) {\n    return null;\n  }\n\n  // Read the Roulette PlaceBet event from logs\n  const decodedRoulettePlaceBetEvent = receipt.logs\n    .map((log) => {\n      try {\n        return decodeEventLog({\n          abi: rouletteAbi,\n          data: log.data,\n          topics: log.topics,\n        });\n      } catch {\n        return null;\n      }\n    })\n    .find((log) => log?.eventName === \"PlaceBet\");\n\n  if (!decodedRoulettePlaceBetEvent) {\n    return null;\n  }\n\n  const { args } = decodedRoulettePlaceBetEvent;\n  return {\n    ...gamePlacedBet,\n    game: CASINO_GAME_TYPE.ROULETTE,\n    encodedNumbers: args.numbers,\n    numbers: Roulette.decodeInput(args.numbers),\n  };\n}\n","import { type TransactionReceipt } from \"viem\";\nimport { CASINO_GAME_TYPE, type CasinoChainId } from \"../../data/casino\";\nimport type { Token } from \"../../interfaces\";\nimport type { BetSwirlWallet } from \"../../provider\";\nimport type { WeightedGameConfiguration } from \"../../read\";\nimport { type CasinoPlaceBetOptions, type PlaceBetCallbacks } from \"./game\";\nimport {\n  getWeightedGamePlacedBetFromReceipt,\n  placeWeightedGameBet,\n  placeWeightedGameFreebet,\n  type WeightedGameBetParams,\n  type WeightedGameFreebetParams,\n  type WeightedGamePlacedBet,\n} from \"./weightedGame\";\n\nexport interface WheelBetParams extends Omit<WeightedGameBetParams, \"game\"> {}\n\nexport interface WheelFreebetParams extends Omit<WeightedGameFreebetParams, \"game\"> {}\n\nexport interface WheelPlacedBet extends WeightedGamePlacedBet {}\n\nexport async function placeWheelBet(\n  wallet: BetSwirlWallet,\n  wheelParams: WheelBetParams,\n  options?: CasinoPlaceBetOptions,\n  callbacks?: PlaceBetCallbacks,\n): Promise<{ placedBet: WheelPlacedBet; receipt: TransactionReceipt }> {\n  return await placeWeightedGameBet(\n    wallet,\n    {\n      ...wheelParams,\n      game: CASINO_GAME_TYPE.WHEEL,\n    },\n    options,\n    callbacks,\n  );\n}\n\nexport async function placeWheelFreebet(\n  wallet: BetSwirlWallet,\n  wheelParams: WheelFreebetParams,\n  options?: CasinoPlaceBetOptions,\n  callbacks?: PlaceBetCallbacks,\n): Promise<{ placedFreebet: WheelPlacedBet; receipt: TransactionReceipt }> {\n  return await placeWeightedGameFreebet(\n    wallet,\n    {\n      ...wheelParams,\n      game: CASINO_GAME_TYPE.WHEEL,\n    },\n    options,\n    callbacks,\n  );\n}\n\nexport async function getWheelPlacedBetFromReceipt(\n  wallet: BetSwirlWallet,\n  receipt: TransactionReceipt,\n  chainId: CasinoChainId,\n  usedToken?: Token,\n  customWheelConfigs?: WeightedGameConfiguration[],\n): Promise<WheelPlacedBet | null> {\n  return await getWeightedGamePlacedBetFromReceipt(\n    wallet,\n    receipt,\n    chainId,\n    CASINO_GAME_TYPE.WHEEL,\n    usedToken,\n    customWheelConfigs,\n  );\n}\n","import type { Address, Hash, TypedDataDomain } from \"viem\";\nimport type { BetSwirlWallet } from \"../../provider/wallet\";\n\nexport interface ClaimFreebetCodeData extends Record<string, unknown> {\n  code: string;\n  user_address: `0x${string}`;\n  claim_timestamp: number;\n}\n\nexport interface ClaimFreebetCodeTypedData {\n  domain: TypedDataDomain;\n  types: {\n    ClaimFreebetCode: [\n      { name: \"code\"; type: \"string\" },\n      { name: \"user_address\"; type: \"address\" },\n      { name: \"claim_timestamp\"; type: \"uint32\" },\n    ];\n  };\n  primaryType: \"ClaimFreebetCode\";\n  message: ClaimFreebetCodeData;\n}\n\n/**\n * Generates EIP712 data for claiming a freebet code\n * @param code - The freebet code (string)\n * @param userAddress - The user's wallet address (Hex)\n * @returns Typed EIP712 data for signing\n */\nexport function getClaimFreebetCodeTypedData(\n  code: string,\n  userAddress: Address,\n): ClaimFreebetCodeTypedData {\n  const data: ClaimFreebetCodeData = {\n    code: code.toLowerCase(),\n    user_address: userAddress,\n    claim_timestamp: Math.floor(Date.now() / 1000),\n  };\n\n  return {\n    types: {\n      ClaimFreebetCode: [\n        { name: \"code\", type: \"string\" },\n        { name: \"user_address\", type: \"address\" },\n        { name: \"claim_timestamp\", type: \"uint32\" },\n      ],\n    },\n    primaryType: \"ClaimFreebetCode\",\n    message: data,\n    domain: {\n      name: \"BetSwirl Freebet Code\",\n    },\n  };\n}\n\n/**\n * Signs EIP712 data for claiming a freebet code\n * @param wallet - The BetSwirl wallet (Viem or Wagmi)\n * @param code - The freebet code (string)\n * @returns The EIP712 signature and typed data for the claim\n */\nexport async function signFreebetCode(\n  wallet: BetSwirlWallet,\n  code: string,\n): Promise<{ signature: Hash; typedData: ClaimFreebetCodeTypedData }> {\n  const account = wallet.getAccount();\n  if (!account) {\n    throw new Error(\"Account is not initialized\");\n  }\n\n  const typedData = getClaimFreebetCodeTypedData(code, account.address);\n  const signature = await wallet.signTypedData(typedData);\n\n  return { signature, typedData };\n}\n","export const leaderboardAbi = [\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"chainlinkCoordinatorAddress\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint32\",\n        name: \"maxRandomNFTs\",\n        type: \"uint32\",\n      },\n      {\n        internalType: \"uint32\",\n        name: \"minExpirationTime_\",\n        type: \"uint32\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"fee_\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"nonpayable\",\n    type: \"constructor\",\n  },\n  {\n    inputs: [],\n    name: \"AccessDenied\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"AlreadyFinalized\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"EmptyShares\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"EndDateTooSmall\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"ExpirationTimeTooHigh\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"ExpirationTimeTooLow\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"Expired\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidAddress\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidChainlinkConfig\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidPosition\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidValueSent\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"InvalidWinner\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"MinExpirationTimeTooLow\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"NotEnded\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"NotExpired\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"NotFinalized\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"NothingToClaim\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"have\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"want\",\n        type: \"address\",\n      },\n    ],\n    name: \"OnlyCoordinatorCanFulfill\",\n    type: \"error\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"have\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"owner\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"coordinator\",\n        type: \"address\",\n      },\n    ],\n    name: \"OnlyOwnerOrCoordinator\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"RandomNftLengthExceedsLimit\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"SharesCountTooHigh\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"TaxedTokenNotTakenInCharge\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"WinnerCountTooHigh\",\n    type: \"error\",\n  },\n  {\n    inputs: [],\n    name: \"ZeroAddress\",\n    type: \"error\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"uint64\",\n        name: \"leaderboardId\",\n        type: \"uint64\",\n      },\n    ],\n    name: \"Canceled\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"bool\",\n        name: \"nativePayment\",\n        type: \"bool\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"requestConfirmations\",\n        type: \"uint16\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint32\",\n        name: \"callbackGasBase\",\n        type: \"uint32\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint32\",\n        name: \"callbackGasExtraNFT\",\n        type: \"uint32\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"vrfSubId\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"bytes32\",\n        name: \"keyHash\",\n        type: \"bytes32\",\n      },\n    ],\n    name: \"ChainlinkConfigSet\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"uint256\",\n        name: \"leaderboardId\",\n        type: \"uint256\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"player\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"Claimed\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"vrfCoordinator\",\n        type: \"address\",\n      },\n    ],\n    name: \"CoordinatorSet\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"previousFeeAmount\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"feeAmount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"FeeSet\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"receiver\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"fees\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"FeesWithdrawn\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"uint64\",\n        name: \"leaderboardId\",\n        type: \"uint64\",\n      },\n      {\n        indexed: false,\n        internalType: \"address[]\",\n        name: \"winners\",\n        type: \"address[]\",\n      },\n    ],\n    name: \"Finalized\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"uint64\",\n        name: \"leaderboardId\",\n        type: \"uint64\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint32\",\n        name: \"endsAt\",\n        type: \"uint32\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint32\",\n        name: \"expirationTime\",\n        type: \"uint32\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"totalShares\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256[]\",\n        name: \"shares\",\n        type: \"uint256[]\",\n      },\n    ],\n    name: \"LeaderboardCreated\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"uint32\",\n        name: \"previousMinExpirationTime\",\n        type: \"uint32\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint32\",\n        name: \"minExpirationTime\",\n        type: \"uint32\",\n      },\n    ],\n    name: \"MinExpirationTimeSet\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"uint256\",\n        name: \"leaderboardId\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"position\",\n        type: \"uint16\",\n      },\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"collection\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"NFTClaimed\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"uint256\",\n        name: \"leaderboardId\",\n        type: \"uint256\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"player\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"collection\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"NFTRewarded\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"uint256\",\n        name: \"leaderboardId\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint16\",\n        name: \"position\",\n        type: \"uint16\",\n      },\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"collection\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"NFTUnclaimed\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"from\",\n        type: \"address\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n    ],\n    name: \"OwnershipTransferRequested\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"from\",\n        type: \"address\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n    ],\n    name: \"OwnershipTransferred\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: false,\n        internalType: \"uint32\",\n        name: \"previousMaxRandomNFTs\",\n        type: \"uint32\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint32\",\n        name: \"maxRandomNFTs\",\n        type: \"uint32\",\n      },\n    ],\n    name: \"RandomNFTsLimitSet\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"bytes32\",\n        name: \"role\",\n        type: \"bytes32\",\n      },\n      {\n        indexed: true,\n        internalType: \"bytes32\",\n        name: \"previousAdminRole\",\n        type: \"bytes32\",\n      },\n      {\n        indexed: true,\n        internalType: \"bytes32\",\n        name: \"newAdminRole\",\n        type: \"bytes32\",\n      },\n    ],\n    name: \"RoleAdminChanged\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"bytes32\",\n        name: \"role\",\n        type: \"bytes32\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"account\",\n        type: \"address\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"sender\",\n        type: \"address\",\n      },\n    ],\n    name: \"RoleGranted\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"bytes32\",\n        name: \"role\",\n        type: \"bytes32\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"account\",\n        type: \"address\",\n      },\n      {\n        indexed: true,\n        internalType: \"address\",\n        name: \"sender\",\n        type: \"address\",\n      },\n    ],\n    name: \"RoleRevoked\",\n    type: \"event\",\n  },\n  {\n    anonymous: false,\n    inputs: [\n      {\n        indexed: true,\n        internalType: \"uint256\",\n        name: \"leaderboardId\",\n        type: \"uint256\",\n      },\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"receiver\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        indexed: false,\n        internalType: \"uint256\",\n        name: \"amount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"Unclaimed\",\n    type: \"event\",\n  },\n  {\n    inputs: [],\n    name: \"DEFAULT_ADMIN_ROLE\",\n    outputs: [\n      {\n        internalType: \"bytes32\",\n        name: \"\",\n        type: \"bytes32\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"LEADERBOARD_MANAGER\",\n    outputs: [\n      {\n        internalType: \"bytes32\",\n        name: \"\",\n        type: \"bytes32\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"acceptOwnership\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"accumulatedFees\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint64\",\n        name: \"leaderboardId\",\n        type: \"uint64\",\n      },\n    ],\n    name: \"cancelLeaderboard\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint64\",\n        name: \"leaderboardId\",\n        type: \"uint64\",\n      },\n      {\n        internalType: \"address\",\n        name: \"collection\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n    ],\n    name: \"claimNFT\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint64\",\n        name: \"leaderboardId\",\n        type: \"uint64\",\n      },\n      {\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n    ],\n    name: \"claimNFTs\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint64\",\n        name: \"leaderboardId\",\n        type: \"uint64\",\n      },\n      {\n        internalType: \"address payable\",\n        name: \"to\",\n        type: \"address\",\n      },\n    ],\n    name: \"claimTokens\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint64\",\n        name: \"leaderboardId\",\n        type: \"uint64\",\n      },\n      {\n        internalType: \"address\",\n        name: \"account\",\n        type: \"address\",\n      },\n    ],\n    name: \"claimable\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint32\",\n        name: \"endsAt\",\n        type: \"uint32\",\n      },\n      {\n        internalType: \"uint32\",\n        name: \"expirationTime\",\n        type: \"uint32\",\n      },\n      {\n        internalType: \"uint256[]\",\n        name: \"shares_\",\n        type: \"uint256[]\",\n      },\n      {\n        components: [\n          {\n            internalType: \"address\",\n            name: \"collection\",\n            type: \"address\",\n          },\n          {\n            internalType: \"uint16\",\n            name: \"position\",\n            type: \"uint16\",\n          },\n          {\n            internalType: \"uint256\",\n            name: \"id\",\n            type: \"uint256\",\n          },\n        ],\n        internalType: \"struct ILeaderboardHubCommon.NFTReward[]\",\n        name: \"staticNfts_\",\n        type: \"tuple[]\",\n      },\n      {\n        components: [\n          {\n            internalType: \"address\",\n            name: \"collection\",\n            type: \"address\",\n          },\n          {\n            internalType: \"uint256[]\",\n            name: \"ids\",\n            type: \"uint256[]\",\n          },\n        ],\n        internalType: \"struct ILeaderboardHubAffiliate.RandomNFTRewards[]\",\n        name: \"randomNfts_\",\n        type: \"tuple[]\",\n      },\n    ],\n    name: \"createLeaderboard\",\n    outputs: [],\n    stateMutability: \"payable\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"fee\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint64\",\n        name: \"leaderboardId\",\n        type: \"uint64\",\n      },\n      {\n        internalType: \"address[]\",\n        name: \"winners_\",\n        type: \"address[]\",\n      },\n    ],\n    name: \"finalizeLeaderboard\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"bytes32\",\n        name: \"role\",\n        type: \"bytes32\",\n      },\n    ],\n    name: \"getRoleAdmin\",\n    outputs: [\n      {\n        internalType: \"bytes32\",\n        name: \"\",\n        type: \"bytes32\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"bytes32\",\n        name: \"role\",\n        type: \"bytes32\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"index\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"getRoleMember\",\n    outputs: [\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"bytes32\",\n        name: \"role\",\n        type: \"bytes32\",\n      },\n    ],\n    name: \"getRoleMemberCount\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"bytes32\",\n        name: \"role\",\n        type: \"bytes32\",\n      },\n      {\n        internalType: \"address\",\n        name: \"account\",\n        type: \"address\",\n      },\n    ],\n    name: \"grantRole\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"bytes32\",\n        name: \"role\",\n        type: \"bytes32\",\n      },\n      {\n        internalType: \"address\",\n        name: \"account\",\n        type: \"address\",\n      },\n    ],\n    name: \"hasRole\",\n    outputs: [\n      {\n        internalType: \"bool\",\n        name: \"\",\n        type: \"bool\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint64\",\n        name: \"\",\n        type: \"uint64\",\n      },\n    ],\n    name: \"leaderboards\",\n    outputs: [\n      {\n        internalType: \"address\",\n        name: \"affiliate\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"token\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint32\",\n        name: \"endsAt\",\n        type: \"uint32\",\n      },\n      {\n        internalType: \"uint32\",\n        name: \"expirationTime\",\n        type: \"uint32\",\n      },\n      {\n        internalType: \"uint40\",\n        name: \"expiresAt\",\n        type: \"uint40\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"remaining\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"totalShares\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"leaderboardsCount\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"minExpirationTime\",\n    outputs: [\n      {\n        internalType: \"uint32\",\n        name: \"\",\n        type: \"uint32\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint64\",\n        name: \"\",\n        type: \"uint64\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"nftAvailable\",\n    outputs: [\n      {\n        internalType: \"bool\",\n        name: \"\",\n        type: \"bool\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"owner\",\n    outputs: [\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint64\",\n        name: \"leaderboardId\",\n        type: \"uint64\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"position\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"address\",\n        name: \"collection\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n    ],\n    name: \"pullUnclaimedNFT\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint64\",\n        name: \"leaderboardId\",\n        type: \"uint64\",\n      },\n      {\n        internalType: \"address\",\n        name: \"winner\",\n        type: \"address\",\n      },\n      {\n        internalType: \"address\",\n        name: \"collection\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n    ],\n    name: \"pullUnclaimedNFTFromWinner\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint64\",\n        name: \"leaderboardId\",\n        type: \"uint64\",\n      },\n      {\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n    ],\n    name: \"pullUnclaimedNFTs\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint64\",\n        name: \"leaderboardId\",\n        type: \"uint64\",\n      },\n      {\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n    ],\n    name: \"pullUnclaimedTokens\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint64\",\n        name: \"\",\n        type: \"uint64\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"randomNFTs\",\n    outputs: [\n      {\n        internalType: \"address\",\n        name: \"collection\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"position\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"randomNFTsLimit\",\n    outputs: [\n      {\n        internalType: \"uint32\",\n        name: \"\",\n        type: \"uint32\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"requestId\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"uint256[]\",\n        name: \"randomWords\",\n        type: \"uint256[]\",\n      },\n    ],\n    name: \"rawFulfillRandomWords\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"bytes32\",\n        name: \"role\",\n        type: \"bytes32\",\n      },\n      {\n        internalType: \"address\",\n        name: \"account\",\n        type: \"address\",\n      },\n    ],\n    name: \"renounceRole\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"bytes32\",\n        name: \"role\",\n        type: \"bytes32\",\n      },\n      {\n        internalType: \"address\",\n        name: \"account\",\n        type: \"address\",\n      },\n    ],\n    name: \"revokeRole\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"s_vrfCoordinator\",\n    outputs: [\n      {\n        internalType: \"contract IVRFCoordinatorV2Plus\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"bool\",\n        name: \"nativePayment\",\n        type: \"bool\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"requestConfirmations\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"uint32\",\n        name: \"callbackGasBase\",\n        type: \"uint32\",\n      },\n      {\n        internalType: \"uint32\",\n        name: \"callbackGasExtraNFT\",\n        type: \"uint32\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"vrfSubId\",\n        type: \"uint256\",\n      },\n      {\n        internalType: \"bytes32\",\n        name: \"keyHash\",\n        type: \"bytes32\",\n      },\n    ],\n    name: \"setChainlinkConfig\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"_vrfCoordinator\",\n        type: \"address\",\n      },\n    ],\n    name: \"setCoordinator\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint256\",\n        name: \"feeAmount\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"setFee\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint32\",\n        name: \"minExpirationTime_\",\n        type: \"uint32\",\n      },\n    ],\n    name: \"setMinExpirationTime\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint32\",\n        name: \"maxRandomNFTs\",\n        type: \"uint32\",\n      },\n    ],\n    name: \"setRandomNFTsLimit\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint64\",\n        name: \"leaderboardId\",\n        type: \"uint64\",\n      },\n    ],\n    name: \"shares\",\n    outputs: [\n      {\n        internalType: \"uint256[]\",\n        name: \"\",\n        type: \"uint256[]\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint64\",\n        name: \"\",\n        type: \"uint64\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    name: \"staticNFTs\",\n    outputs: [\n      {\n        internalType: \"address\",\n        name: \"collection\",\n        type: \"address\",\n      },\n      {\n        internalType: \"uint16\",\n        name: \"position\",\n        type: \"uint16\",\n      },\n      {\n        internalType: \"uint256\",\n        name: \"id\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"bytes4\",\n        name: \"interfaceId\",\n        type: \"bytes4\",\n      },\n    ],\n    name: \"supportsInterface\",\n    outputs: [\n      {\n        internalType: \"bool\",\n        name: \"\",\n        type: \"bool\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint64\",\n        name: \"\",\n        type: \"uint64\",\n      },\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    name: \"tokensClaimed\",\n    outputs: [\n      {\n        internalType: \"uint256\",\n        name: \"\",\n        type: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n    ],\n    name: \"transferOwnership\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint64\",\n        name: \"\",\n        type: \"uint64\",\n      },\n      {\n        internalType: \"address\",\n        name: \"\",\n        type: \"address\",\n      },\n    ],\n    name: \"winnerPositions\",\n    outputs: [\n      {\n        internalType: \"uint16\",\n        name: \"\",\n        type: \"uint16\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"uint64\",\n        name: \"leaderboardId\",\n        type: \"uint64\",\n      },\n    ],\n    name: \"winners\",\n    outputs: [\n      {\n        internalType: \"address[]\",\n        name: \"\",\n        type: \"address[]\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"to\",\n        type: \"address\",\n      },\n    ],\n    name: \"withdrawFees\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n] as const;\n","import { encodeFunctionData, type Hex } from \"viem\";\nimport { bankAbi } from \"../../abis/v2/casino/bank\";\nimport type { CASINO_GAME_TYPE, CasinoChainId } from \"../../data/casino\";\nimport { casinoChainById, maxGameBetCountByType } from \"../../data/casino\";\nimport { ERROR_CODES } from \"../../errors/codes\";\nimport { TransactionError } from \"../../errors/types\";\nimport type {\n  BetRequirements,\n  BetSwirlFunctionData,\n  BP,\n  CasinoToken,\n  Token,\n} from \"../../interfaces\";\nimport type { BetSwirlWallet } from \"../../provider\";\nimport { getCasinoChainId } from \"../../utils/chains\";\nimport { rawTokenToToken } from \"../../utils/tokens\";\n\nexport type RawCasinoToken = {\n  decimals: number;\n  tokenAddress: `0x${string}`;\n  name: string;\n  symbol: string;\n  token: {\n    allowed: boolean;\n    paused: boolean;\n    balanceRisk: number;\n    bankrollProvider: `0x${string}`;\n    pendingBankrollProvider: `0x${string}`;\n    houseEdgeSplitAndAllocation: {\n      bank: number;\n      dividend: number;\n      affiliate: number;\n      treasury: number;\n      team: number;\n      dividendAmount: bigint;\n      affiliateAmount: bigint;\n      treasuryAmount: bigint;\n      teamAmount: bigint;\n    };\n  };\n};\n\nexport function parseRawCasinoToken(\n  rawToken: RawCasinoToken,\n  casinoChainId: CasinoChainId,\n): CasinoToken {\n  return {\n    ...rawTokenToToken(rawToken, casinoChainId),\n    paused: !rawToken.token.allowed || rawToken.token.paused,\n    balanceRisk: rawToken.token.balanceRisk,\n    balanceRiskPercent: rawToken.token.balanceRisk / 100,\n    bankrollProvider: rawToken.token.bankrollProvider,\n    chainId: casinoChainId,\n    houseEdgeSplit: {\n      bank: rawToken.token.houseEdgeSplitAndAllocation.bank,\n      bankPercent: rawToken.token.houseEdgeSplitAndAllocation.bank / 100,\n      dividend: rawToken.token.houseEdgeSplitAndAllocation.dividend,\n      dividendPercent: rawToken.token.houseEdgeSplitAndAllocation.dividend / 100,\n      affiliate: rawToken.token.houseEdgeSplitAndAllocation.affiliate,\n      affiliatePercent: rawToken.token.houseEdgeSplitAndAllocation.affiliate / 100,\n      treasury: rawToken.token.houseEdgeSplitAndAllocation.treasury,\n      treasuryPercent: rawToken.token.houseEdgeSplitAndAllocation.treasury / 100,\n      team: rawToken.token.houseEdgeSplitAndAllocation.team,\n      teamPercent: rawToken.token.houseEdgeSplitAndAllocation.team / 100,\n    },\n  };\n}\n\nexport async function getCasinoTokens(\n  wallet: BetSwirlWallet,\n  onlyActive = false,\n): Promise<CasinoToken[]> {\n  const casinoChainId = getCasinoChainId(wallet);\n  try {\n    const functionData = getCasinoTokensFunctionData(casinoChainId);\n    const rawTokens = await wallet.readContract<typeof functionData, RawCasinoToken[]>(\n      functionData,\n    );\n\n    return rawTokens\n      .map((rawToken) => parseRawCasinoToken(rawToken, casinoChainId))\n      .filter((token) => !onlyActive || !token.paused);\n  } catch (error) {\n    throw new TransactionError(\"Error getting tokens\", ERROR_CODES.BANK.GET_TOKENS_ERROR, {\n      chainId: casinoChainId,\n      cause: error,\n    });\n  }\n}\n\nexport function getCasinoTokensFunctionData(\n  casinoChainId: CasinoChainId,\n): BetSwirlFunctionData<typeof bankAbi, \"getTokens\", readonly []> {\n  const casinoChain = casinoChainById[casinoChainId];\n\n  const abi = bankAbi;\n  const functionName = \"getTokens\" as const;\n  const args = [] as const;\n  return {\n    data: { to: casinoChain.contracts.bank, abi, functionName, args },\n    encodedData: encodeFunctionData({\n      abi,\n      functionName,\n      args,\n    }),\n  };\n}\n\n/**\n * Raw bet requirements data returned by the smart contract\n * [0] - isAllowed: Indicates if the token is allowed for betting\n * [1] - maxBetAmount: Maximum amount allowed per bet\n * [2] - maxBetCount: Maximum number of simultaneous bets allowed\n */\nexport type RawBetRequirements = [boolean, bigint, bigint];\n\nexport function parseRawBetRequirements(\n  rawBetRequirements: RawBetRequirements,\n  token: Token,\n  multiplier: BP,\n  game: CASINO_GAME_TYPE,\n  casinoChainId: CasinoChainId,\n): BetRequirements {\n  return {\n    token,\n    multiplier,\n    chainId: casinoChainId,\n    maxBetAmount: rawBetRequirements[1],\n    maxBetCount: Math.min(Number(rawBetRequirements[2]), maxGameBetCountByType[game]),\n    isAllowed: rawBetRequirements[0],\n  };\n}\n\nexport async function getBetRequirements(\n  wallet: BetSwirlWallet,\n  token: Token,\n  multiplier: BP | BP[],\n  game: CASINO_GAME_TYPE,\n): Promise<BetRequirements> {\n  const casinoChainId = getCasinoChainId(wallet);\n\n  const biggestMultiplier = Math.max(...(Array.isArray(multiplier) ? multiplier : [multiplier]));\n  try {\n    const functionData = getBetRequirementsFunctionData(\n      token.address,\n      biggestMultiplier,\n      casinoChainId,\n    );\n    const rawBetRequirements = await wallet.readContract<typeof functionData, RawBetRequirements>(\n      functionData,\n    );\n\n    return parseRawBetRequirements(\n      rawBetRequirements,\n      token,\n      biggestMultiplier,\n      game,\n      casinoChainId,\n    );\n  } catch (error) {\n    throw new TransactionError(\n      \"Error getting bet requirements\",\n      ERROR_CODES.BANK.GET_BET_REQUIREMENTS_ERROR,\n      {\n        chainId: casinoChainId,\n        cause: error,\n      },\n    );\n  }\n}\nexport function getBetRequirementsFunctionData(\n  tokenAddress: Hex,\n  multiplier: BP,\n  casinoChainId: CasinoChainId,\n): BetSwirlFunctionData<typeof bankAbi, \"getBetRequirements\", readonly [Hex, bigint]> {\n  const casinoChain = casinoChainById[casinoChainId];\n\n  const abi = bankAbi;\n  const functionName = \"getBetRequirements\" as const;\n  const args = [tokenAddress, BigInt(multiplier)] as const;\n  return {\n    data: { to: casinoChain.contracts.bank, abi, functionName, args },\n    encodedData: encodeFunctionData({\n      abi,\n      functionName,\n      args,\n    }),\n  };\n}\n","import {\n  type Address,\n  encodeFunctionData,\n  formatUnits,\n  type Hash,\n  type Hex,\n  type TransactionReceipt,\n} from \"viem\";\n\nimport { getLogs } from \"viem/actions\";\nimport { casinoGameAbi } from \"../../abis/v2/casino/game\";\nimport type {\n  CasinoPlacedBet,\n  NormalCasinoPlacedBet,\n  WeightedCasinoPlacedBet,\n} from \"../../actions/casino/game\";\nimport {\n  CASINO_GAME_ROLL_ABI,\n  CASINO_GAME_TYPE,\n  type CasinoChainId,\n  casinoChainById,\n  labelCasinoGameByType,\n  type NORMAL_CASINO_GAME_TYPE,\n  type WEIGHTED_CASINO_GAME_TYPE,\n} from \"../../data/casino\";\nimport { ERROR_CODES } from \"../../errors/codes\";\nimport { ChainError, TransactionError } from \"../../errors/types\";\nimport type {\n  BetSwirlEventData,\n  BetSwirlFunctionData,\n  CasinoGame,\n  CasinoGameToken,\n  CasinoToken,\n  GameAbi,\n  Token,\n} from \"../../interfaces\";\nimport type { BetSwirlWallet } from \"../../provider\";\nimport {\n  chainNativeCurrencyToToken,\n  decodeNormalCasinoRolled,\n  decodeWeightedCasinoRolled,\n} from \"../../utils\";\nimport { getCasinoChainId } from \"../../utils/chains\";\nimport { FORMAT_TYPE, formatRawAmount } from \"../../utils/format\";\nimport { getTransactionReceiptWithRetry } from \"../../utils/wallet\";\nimport type { WeightedGameConfiguration } from \"./weightedGame\";\n\nexport type CasinoRolledBet = CasinoPlacedBet & {\n  isWin: boolean;\n  isLost: boolean;\n  isStopLossTriggered: boolean;\n  isStopGainTriggered: boolean;\n  rollBetCount: number;\n  rollTotalBetAmount: bigint;\n  formattedRollTotalBetAmount: string;\n  payout: bigint;\n  formattedPayout: string;\n  benefit: bigint;\n  formattedBenefit: string;\n  formattedPayoutMultiplier: string;\n  rollTxnHash: Hash;\n  encodedRolled: any[];\n  decodedRolled: any[];\n  nativeCurrency: Token;\n  // Placed bet formatted properties\n  formattedBetAmount: string;\n  formattedTotalBetAmount: string;\n  formattedStopLoss: string;\n  formattedStopGain: string;\n  formattedChargedVRFFees: string;\n};\n\nexport interface CasinoWaitRollOptions {\n  pollingInterval?: number;\n  timeout?: number;\n  formatType?: FORMAT_TYPE;\n}\n\nexport const defaultCasinoWaiRollOptions = {\n  timeout: 120000, // 2 mins\n  //pollingInterval: => data in casino.ts\n};\n\ninterface RollEventArgs {\n  id?: bigint;\n  payout?: bigint;\n  totalBetAmount?: bigint;\n  rolled?: any[];\n}\n\ninterface RollEvent {\n  args: RollEventArgs;\n  transactionHash: Hash;\n}\n\n// Normal game\nexport function formatCasinoRolledBet(\n  placedBet: NormalCasinoPlacedBet,\n  rollEvent: RollEvent,\n  formatType?: FORMAT_TYPE,\n): CasinoRolledBet;\n\n// Weighted game\nexport function formatCasinoRolledBet(\n  placedBet: WeightedCasinoPlacedBet,\n  rollEvent: RollEvent,\n  formatType: FORMAT_TYPE | undefined,\n  weightedGameConfiguration: WeightedGameConfiguration,\n  houseEdge: number,\n): CasinoRolledBet;\n\nexport function formatCasinoRolledBet(\n  placedBet: CasinoPlacedBet,\n  rollEvent: RollEvent,\n  formatType: FORMAT_TYPE = FORMAT_TYPE.STANDARD,\n  weightedGameConfiguration?: WeightedGameConfiguration,\n  houseEdge?: number,\n): CasinoRolledBet {\n  const args = rollEvent.args;\n  const isWin = args.payout! >= args.totalBetAmount!;\n  const isStopTriggered = args.rolled!.length !== placedBet.betCount;\n  const casinoChain = casinoChainById[placedBet.chainId];\n  const nativeCurrency = chainNativeCurrencyToToken(casinoChain.viemChain.nativeCurrency);\n  const tokenDecimals = placedBet.token.decimals;\n\n  return {\n    ...placedBet,\n    isWin,\n    isLost: !isWin,\n    isStopGainTriggered: isStopTriggered && isWin,\n    isStopLossTriggered: isStopTriggered && !isWin,\n    rollBetCount: args.rolled!.length,\n    rollTotalBetAmount: args.totalBetAmount!,\n    formattedRollTotalBetAmount: formatRawAmount(\n      args.totalBetAmount!,\n      placedBet.token.decimals,\n      formatType,\n    ),\n    payout: args.payout!,\n    formattedPayout: formatRawAmount(args.payout!, placedBet.token.decimals, formatType),\n    benefit: args.payout! - args.totalBetAmount!,\n    formattedBenefit: formatRawAmount(\n      args.payout! - args.totalBetAmount!,\n      placedBet.token.decimals,\n      formatType,\n    ),\n    formattedPayoutMultiplier: (\n      Number(formatUnits(BigInt(args.payout!), tokenDecimals)) /\n      Number(formatUnits(BigInt(args.totalBetAmount!), tokenDecimals))\n    ).toFixed(3),\n    rollTxnHash: rollEvent.transactionHash,\n    encodedRolled: args.rolled! as any[],\n    decodedRolled: args.rolled!.map((r) =>\n      weightedGameConfiguration\n        ? decodeWeightedCasinoRolled(r, weightedGameConfiguration, houseEdge)\n        : decodeNormalCasinoRolled(r, placedBet.game as NORMAL_CASINO_GAME_TYPE),\n    ),\n    nativeCurrency,\n    // Placed bet formatted properties\n    formattedBetAmount: formatRawAmount(placedBet.betAmount, tokenDecimals, formatType),\n    formattedTotalBetAmount: formatRawAmount(placedBet.totalBetAmount, tokenDecimals, formatType),\n    formattedStopLoss: formatRawAmount(placedBet.stopLoss, tokenDecimals, formatType),\n    formattedStopGain: formatRawAmount(placedBet.stopGain, tokenDecimals, formatType),\n    formattedChargedVRFFees: formatRawAmount(\n      placedBet.chargedVRFCost,\n      nativeCurrency.decimals,\n      formatType,\n    ),\n  };\n}\n\n// Only need weightedGameConfiguration if game from placeBet is a WEIGHTED_CASINO_GAME_TYPE\nexport async function waitRolledBet(\n  wallet: BetSwirlWallet,\n  placedBet: NormalCasinoPlacedBet,\n  options?: CasinoWaitRollOptions,\n): Promise<{ rolledBet: CasinoRolledBet; receipt: TransactionReceipt }>;\n\nexport async function waitRolledBet(\n  wallet: BetSwirlWallet,\n  placedBet: WeightedCasinoPlacedBet,\n  options: CasinoWaitRollOptions | undefined,\n  weightedGameConfiguration: WeightedGameConfiguration,\n  houseEdge: number,\n): Promise<{ rolledBet: CasinoRolledBet; receipt: TransactionReceipt }>;\n\nexport async function waitRolledBet(\n  wallet: BetSwirlWallet,\n  placedBet: CasinoPlacedBet,\n  options?: CasinoWaitRollOptions,\n  weightedGameConfiguration?: WeightedGameConfiguration,\n  houseEdge?: number,\n): Promise<{\n  rolledBet: CasinoRolledBet;\n  receipt: TransactionReceipt;\n}> {\n  const casinoChain = casinoChainById[placedBet.chainId];\n  const game = casinoChain.contracts.games[placedBet.game];\n  if (!game) {\n    throw new ChainError(\n      `Game ${placedBet.game} not found for chain ${placedBet.chainId}`,\n      ERROR_CODES.CHAIN.UNSUPPORTED_GAME,\n      {\n        chainId: placedBet.chainId,\n        game: placedBet.game,\n      },\n    );\n  }\n\n  return new Promise((resolve, reject) => {\n    let isResolved = false;\n\n    const onRollEvent = async (log: RollEvent) => {\n      if (isResolved) return;\n      isResolved = true;\n      unwatch?.();\n\n      try {\n        const receipt = await getTransactionReceiptWithRetry(wallet, log.transactionHash);\n\n        resolve({\n          rolledBet: weightedGameConfiguration\n            ? formatCasinoRolledBet(\n                placedBet as { game: WEIGHTED_CASINO_GAME_TYPE } & CasinoPlacedBet,\n                log,\n                options?.formatType,\n                weightedGameConfiguration,\n                houseEdge!,\n              )\n            : formatCasinoRolledBet(\n                placedBet as { game: NORMAL_CASINO_GAME_TYPE } & CasinoPlacedBet,\n                log,\n                options?.formatType,\n              ),\n          receipt,\n        });\n      } catch (error) {\n        reject(\n          new TransactionError(\"Error processing Roll event\", ERROR_CODES.GAME.ROLL_EVENT_ERROR, {\n            betId: placedBet.id,\n            chainId: placedBet.chainId,\n            cause: error,\n          }),\n        );\n      }\n    };\n    // Subcribe to Roll event\n    const eventData = getRollEventData(placedBet.game, placedBet.chainId, placedBet.id);\n    const unwatch = wallet.watchContractEvent({\n      data: {\n        to: eventData.data.to,\n        abi: eventData.data.abi,\n        eventName: eventData.data.eventName,\n        args: eventData.data.args,\n        pollingInterval: options?.pollingInterval || casinoChain.options.pollingInterval,\n      },\n      callbacks: {\n        onLogs: async (logs) => {\n          const matchingLog = (logs as unknown as { args: { id: bigint } }[]).find(\n            (log) => log.args.id === placedBet.id,\n          );\n          if (matchingLog) {\n            await onRollEvent(matchingLog as unknown as RollEvent);\n          }\n        },\n        onError: (_error) => {\n          // Nothing to do, the watching continues...\n          /*reject(\n            new TransactionError(\n              \"Error watching Roll event\",\n              ERROR_CODES.GAME.ROLL_EVENT_ERROR,\n              {\n                betId: placedBet.id,\n                chainId: placedBet.chainId,\n                cause: error,\n              }\n            )\n          ); */\n        },\n      },\n    });\n\n    const publicClient = wallet.getPublicClient(placedBet.chainId);\n\n    // Check in the past blocks if the bet has been rolled\n    getLogs(publicClient, {\n      address: eventData.data.to,\n      event: eventData.event.abiEvent,\n      args: eventData.data.args,\n      fromBlock: placedBet.betBlock,\n      toBlock: \"latest\",\n    })\n      .then((pastLogs) => {\n        const matchingPastLog = pastLogs.find((log) => log.args.id === placedBet.id);\n        if (matchingPastLog) {\n          onRollEvent(matchingPastLog as RollEvent);\n        }\n      })\n      .catch((error) => {\n        if (!isResolved) {\n          console.warn(\"Error checking past Roll events\", error);\n          /*reject(\n            new TransactionError(\n              \"Error checking past Roll events\",\n              ERROR_CODES.GAME.ROLL_EVENT_ERROR,\n              {\n                betId: placedBet.id,\n                chainId: placedBet.chainId,\n                cause: error,\n              }\n            )\n          ); */\n        }\n      });\n\n    setTimeout(() => {\n      if (!isResolved) {\n        unwatch?.();\n        reject(\n          new TransactionError(\n            \"Timeout waiting for Roll event\",\n            ERROR_CODES.GAME.ROLL_EVENT_TIMEOUT,\n            {\n              betId: placedBet.id,\n              chainId: placedBet.chainId,\n            },\n          ),\n        );\n      }\n    }, options?.timeout || defaultCasinoWaiRollOptions.timeout);\n  });\n}\n\nexport function getRollEventData(\n  game: CASINO_GAME_TYPE,\n  casinoChainId: CasinoChainId,\n  betId: string | bigint,\n): BetSwirlEventData<GameAbi<typeof game>, \"Roll\", { id: bigint }> & {\n  event: { abiEvent: (typeof CASINO_GAME_ROLL_ABI)[typeof game][number] };\n} {\n  const casinoChain = casinoChainById[casinoChainId];\n\n  const gameData = casinoChain.contracts.games[game];\n  if (!gameData) {\n    throw new ChainError(\n      `Game ${game} not found for chain ${casinoChainId}`,\n      ERROR_CODES.CHAIN.UNSUPPORTED_GAME,\n    );\n  }\n\n  const abi = CASINO_GAME_ROLL_ABI[game];\n  const eventName = \"Roll\" as const;\n  const args = { id: BigInt(betId) } as const;\n\n  const rollEvent = CASINO_GAME_ROLL_ABI[game]![0];\n\n  return {\n    data: { to: gameData.address, abi, eventName, args },\n    event: {\n      abiEvent: rollEvent,\n    },\n  };\n}\n\nexport type RawPaused = boolean;\n\nexport async function getCasinoGames(\n  wallet: BetSwirlWallet,\n  onlyActive = false,\n): Promise<CasinoGame[]> {\n  const casinoChainId = getCasinoChainId(wallet);\n  const casinoChain = casinoChainById[casinoChainId];\n\n  const games = casinoChain.contracts.games;\n\n  const functionDatas = Object.keys(games).map((game) =>\n    getGamePausedFunctionData(game as CASINO_GAME_TYPE, casinoChainId),\n  );\n  const rawPauseds = await wallet.readContracts<typeof functionDatas, RawPaused[]>(functionDatas);\n\n  return Object.entries(games)\n    .map(([gameType, game], index) => ({\n      gameAddress: game.address,\n      abi: game.abi,\n      paused: Boolean(rawPauseds[index]),\n      chainId: casinoChainId,\n      game: gameType as CASINO_GAME_TYPE,\n      label: labelCasinoGameByType[gameType as CASINO_GAME_TYPE],\n      bankAddress: casinoChain.contracts.bank,\n    }))\n    .filter((game) => !onlyActive || !game.paused);\n}\n\nexport async function getCasinoGamePaused(wallet: BetSwirlWallet, game: CASINO_GAME_TYPE) {\n  const casinoChainId = getCasinoChainId(wallet);\n  const casinoChain = casinoChainById[casinoChainId];\n  const gameAddress = casinoChain.contracts.games[game]?.address;\n  if (!gameAddress) {\n    throw new ChainError(\n      `Game ${game} not found for chain ${casinoChainId}`,\n      ERROR_CODES.CHAIN.UNSUPPORTED_GAME,\n    );\n  }\n  const functionData = getGamePausedFunctionData(game, casinoChainId);\n  const rawPaused = await wallet.readContract<typeof functionData, RawPaused>(functionData);\n  return rawPaused;\n}\n\nexport function getGamePausedFunctionData(\n  game: CASINO_GAME_TYPE,\n  casinoChainId: CasinoChainId,\n): BetSwirlFunctionData<typeof casinoGameAbi, \"paused\", readonly []> {\n  const casinoChain = casinoChainById[casinoChainId];\n\n  const gameAddress = casinoChain.contracts.games[game]?.address;\n  if (!gameAddress) {\n    throw new ChainError(\n      `Game ${game} not found for chain ${casinoChainId}`,\n      ERROR_CODES.CHAIN.UNSUPPORTED_GAME,\n    );\n  }\n\n  const abi = casinoGameAbi;\n  const functionName = \"paused\" as const;\n  const args = [] as const;\n  return {\n    data: { to: gameAddress, abi, functionName, args },\n    encodedData: encodeFunctionData({\n      abi,\n      functionName,\n      args,\n    }),\n  };\n} /**\n * Raw token info data returned by the smart contract\n * [0] - houseEdge: House edge rate (BP)\n * [1] - pendingCount: Number of pending bets\n * [2] - vrfSubId: Chainlink VRF v2.5 subscription ID\n * [3] - VRFCallbackGasBase: How much gas is needed in the Chainlink VRF callback\n * [4] - VRFFees: Chainlink's VRF collected fees amount.\n */\nexport type RawTokenInfo = [number, bigint, bigint, number, bigint];\n\nexport type RawAffiliateHouseEdge = bigint;\n\nexport function parseRawTokenInfoAndAffiliateHouseEdge(\n  rawTokenInfo: RawTokenInfo,\n  rawAffiliateHouseEdge: RawAffiliateHouseEdge,\n  casinoToken: CasinoToken,\n  game: CASINO_GAME_TYPE,\n): CasinoGameToken {\n  const defaultHouseEdge = rawTokenInfo[0];\n  return {\n    ...casinoToken,\n    game,\n    defaultHouseEdge: defaultHouseEdge,\n    defaultHouseEdgePercent: defaultHouseEdge / 100,\n    chainlinkVrfSubscriptionId: rawTokenInfo[2],\n    affiliateHouseEdge: Number(rawAffiliateHouseEdge),\n    affiliateHouseEdgePercent: Number(rawAffiliateHouseEdge) / 100,\n  };\n}\n\nexport async function getCasinoGameToken(\n  wallet: BetSwirlWallet,\n  casinoToken: CasinoToken,\n  game: CASINO_GAME_TYPE,\n  affiliate: Hex,\n): Promise<CasinoGameToken> {\n  const chainId = casinoToken.chainId;\n\n  const tokenInfoFunctionData = getTokenInfoFunctionData(game, casinoToken.address, chainId);\n  const affiliateHouseEdgeFunctionData = getAffiliateHouseEdgeFunctionData(\n    game,\n    casinoToken.address,\n    affiliate,\n    chainId,\n  );\n\n  const functionDatas = [tokenInfoFunctionData, affiliateHouseEdgeFunctionData];\n  const [rawTokenData, rawAffiliateHouseEdge] = await wallet.readContracts<\n    typeof functionDatas,\n    [RawTokenInfo, RawAffiliateHouseEdge]\n  >(functionDatas);\n\n  return parseRawTokenInfoAndAffiliateHouseEdge(\n    rawTokenData,\n    rawAffiliateHouseEdge,\n    casinoToken,\n    game,\n  );\n}\n\nexport function getTokenInfoFunctionData(\n  game: CASINO_GAME_TYPE,\n  tokenAddress: Address,\n  casinoChainId: CasinoChainId,\n): BetSwirlFunctionData<typeof casinoGameAbi, \"tokens\", readonly [Hex]> {\n  const casinoChain = casinoChainById[casinoChainId];\n\n  const gameAddress = casinoChain.contracts.games[game]?.address;\n  if (!gameAddress) {\n    throw new ChainError(\n      `Game ${game} not found for chain ${casinoChainId}`,\n      ERROR_CODES.CHAIN.UNSUPPORTED_GAME,\n    );\n  }\n\n  const abi = casinoGameAbi;\n  const functionName = \"tokens\" as const;\n  const args = [tokenAddress] as const;\n  return {\n    data: { to: gameAddress, abi, functionName, args },\n    encodedData: encodeFunctionData({\n      abi,\n      functionName,\n      args,\n    }),\n  };\n}\n\nexport function getAffiliateHouseEdgeFunctionData(\n  game: CASINO_GAME_TYPE,\n  tokenAddress: Address,\n  affiliate: Hex,\n  casinoChainId: CasinoChainId,\n): BetSwirlFunctionData<typeof casinoGameAbi, \"getAffiliateHouseEdge\", readonly [Hex, Hex]> {\n  const casinoChain = casinoChainById[casinoChainId];\n\n  const gameAddress = casinoChain.contracts.games[game]?.address;\n  if (!gameAddress) {\n    throw new ChainError(\n      `Game ${game} not found for chain ${casinoChainId}`,\n      ERROR_CODES.CHAIN.UNSUPPORTED_GAME,\n    );\n  }\n\n  const abi = casinoGameAbi;\n  const functionName = \"getAffiliateHouseEdge\" as const;\n  const args = [affiliate, tokenAddress] as const;\n  return {\n    data: { to: gameAddress, abi, functionName, args },\n    encodedData: encodeFunctionData({\n      abi,\n      functionName,\n      args,\n    }),\n  };\n}\n","import { type TransactionReceipt } from \"viem\";\nimport { type CoinTossPlacedBet } from \"../../actions/casino/cointoss\";\nimport { type COINTOSS_FACE, CoinToss } from \"../../entities/casino/cointoss\";\nimport type { BetSwirlWallet } from \"../../provider\";\nimport { type CasinoRolledBet, type CasinoWaitRollOptions, waitRolledBet } from \"./game\";\n\nexport interface CoinTossRolledBet extends Omit<CasinoRolledBet, \"decodedRoll\"> {\n  rolled: COINTOSS_FACE[];\n}\n\nexport async function waitCoinTossRolledBet(\n  wallet: BetSwirlWallet,\n  placedBet: CoinTossPlacedBet,\n  options?: CasinoWaitRollOptions,\n): Promise<{\n  rolledBet: CoinTossRolledBet;\n  receipt: TransactionReceipt;\n}> {\n  const { rolledBet, receipt } = await waitRolledBet(wallet, placedBet, options);\n  return {\n    rolledBet: {\n      ...rolledBet,\n      rolled: rolledBet.encodedRolled.map(CoinToss.decodeRolled),\n    },\n    receipt,\n  };\n}\n","import { type TransactionReceipt } from \"viem\";\nimport { type DicePlacedBet } from \"../../actions/casino/dice\";\nimport { Dice, type DiceNumber } from \"../../entities/casino/dice\";\nimport type { BetSwirlWallet } from \"../../provider\";\nimport { type CasinoRolledBet, type CasinoWaitRollOptions, waitRolledBet } from \"./game\";\n\nexport interface DiceRolledBet extends Omit<CasinoRolledBet, \"decodedRoll\"> {\n  rolled: DiceNumber[];\n}\n\nexport async function waitDiceRolledBet(\n  wallet: BetSwirlWallet,\n  placedBet: DicePlacedBet,\n  options?: CasinoWaitRollOptions,\n): Promise<{\n  rolledBet: DiceRolledBet;\n  receipt: TransactionReceipt;\n}> {\n  const { rolledBet, receipt } = await waitRolledBet(wallet, placedBet, options);\n  return {\n    rolledBet: {\n      ...rolledBet,\n      rolled: rolledBet.encodedRolled.map(Dice.decodeRolled),\n    },\n    receipt,\n  };\n}\n","import { type Address, encodeFunctionData, type Hex, type TransactionReceipt } from \"viem\";\nimport { kenoAbi } from \"../../abis\";\nimport type { KenoPlacedBet } from \"../../actions/casino/keno\";\nimport { CASINO_GAME_TYPE, type CasinoChainId, casinoChainById } from \"../../data/casino\";\nimport { Keno, type KenoBall } from \"../../entities/casino/keno\";\nimport { ChainError, ERROR_CODES, TransactionError } from \"../../errors\";\nimport type { BetSwirlFunctionData, BP, Token } from \"../../interfaces\";\nimport type { BetSwirlWallet } from \"../../provider\";\nimport { getCasinoChainId } from \"../../utils\";\nimport type { CasinoRolledBet, CasinoWaitRollOptions } from \"./game\";\n\nexport interface KenoRolledBet extends Omit<CasinoRolledBet, \"decodedRoll\"> {\n  rolled: KenoBall[][];\n}\n\nexport async function waitKenoRolledBet(\n  wallet: BetSwirlWallet,\n  placedBet: KenoPlacedBet,\n  options?: CasinoWaitRollOptions,\n): Promise<{\n  rolledBet: KenoRolledBet;\n  receipt: TransactionReceipt;\n}> {\n  const { rolledBet, receipt } = await waitKenoRolledBet(wallet, placedBet, options);\n  return {\n    rolledBet: {\n      ...rolledBet,\n      rolled: rolledBet.encodedRolled.map(Keno.decodeRolled),\n    },\n    receipt,\n  };\n}\n\n/**\n * Raw Keno configuration data returned by the smart contract\n * [0] - biggestNumber: The biggest selectable number\n * [1] - maxNumbersPlayed: Maximum selectable numbers\n * [2] - gainsTable: The gain multipliers (gain multiplier = gains[numbers played][numbers matched]) (BP)\n */\nexport type RawKenoConfiguration = [bigint, bigint, readonly (readonly bigint[])[]];\n\nexport function parseRawKenoConfiguration(\n  rawConfiguration: RawKenoConfiguration,\n  token: Token,\n  casinoChainId: CasinoChainId,\n): KenoConfiguration {\n  return {\n    token,\n    chainId: casinoChainId,\n    biggestSelectableBall: Number(rawConfiguration[0]),\n    maxSelectableBalls: Number(rawConfiguration[1]),\n    multiplierTable: [\n      [0],\n      ...rawConfiguration[2].map((row) => row.map((multiplier) => Number(multiplier))),\n    ],\n  };\n}\n\nexport interface KenoConfiguration {\n  token: Token;\n  chainId: CasinoChainId;\n  biggestSelectableBall: number;\n  maxSelectableBalls: number;\n  multiplierTable: BP[][];\n}\n\nexport async function getKenoConfiguration(\n  wallet: BetSwirlWallet,\n  token: Token,\n): Promise<KenoConfiguration> {\n  const casinoChainId = getCasinoChainId(wallet);\n\n  try {\n    const functionData = getKenoConfigurationFunctionData(token.address, casinoChainId);\n    const rawConfiguration = await wallet.readContract<typeof functionData, RawKenoConfiguration>(\n      functionData,\n    );\n\n    return parseRawKenoConfiguration(rawConfiguration, token, casinoChainId);\n  } catch (error) {\n    throw new TransactionError(\n      \"Error getting keno configuration\",\n      ERROR_CODES.GAME.GET_KENO_CONFIGURATION_ERROR,\n      {\n        chainId: casinoChainId,\n        token,\n        cause: error,\n      },\n    );\n  }\n}\n\nexport function getKenoConfigurationFunctionData(\n  tokenAddress: Address,\n  casinoChainId: CasinoChainId,\n): BetSwirlFunctionData<typeof kenoAbi, \"gains\", readonly [Hex]> {\n  const casinoChain = casinoChainById[casinoChainId];\n\n  const gameAddress = casinoChain.contracts.games[CASINO_GAME_TYPE.KENO]?.address;\n  if (!gameAddress) {\n    throw new ChainError(\n      `Game ${CASINO_GAME_TYPE.KENO} not found for chain ${casinoChainId}`,\n      ERROR_CODES.CHAIN.UNSUPPORTED_GAME,\n    );\n  }\n\n  const abi = kenoAbi;\n  const functionName = \"gains\" as const;\n  const args = [tokenAddress] as const;\n  return {\n    data: { to: gameAddress, abi, functionName, args },\n    encodedData: encodeFunctionData({\n      abi,\n      functionName,\n      args,\n    }),\n  };\n}\n","import { type TransactionReceipt } from \"viem\";\nimport type { PlinkoPlacedBet } from \"../../actions\";\nimport { Plinko } from \"../../entities\";\nimport type { BetSwirlWallet } from \"../../provider\";\nimport { type CasinoWaitRollOptions, waitRolledBet } from \"./game\";\nimport type { WeightedGameConfiguration, WeightedGameRolledBet } from \"./weightedGame\";\n\nexport interface PlinkoRolledBet extends WeightedGameRolledBet {}\nexport async function waitPlinkoRolledBet(\n  wallet: BetSwirlWallet,\n  placedBet: PlinkoPlacedBet,\n  weightedGameConfig: WeightedGameConfiguration,\n  houseEdge: number,\n  options?: CasinoWaitRollOptions,\n): Promise<{\n  rolledBet: PlinkoRolledBet;\n  receipt: TransactionReceipt;\n}> {\n  const { rolledBet, receipt } = await waitRolledBet(\n    wallet,\n    placedBet,\n    options,\n    weightedGameConfig,\n    houseEdge,\n  );\n  return {\n    rolledBet: {\n      ...rolledBet,\n      rolled: rolledBet.encodedRolled.map((rolledBet) =>\n        Plinko.decodeRolled(rolledBet, weightedGameConfig, houseEdge),\n      ),\n    },\n    receipt,\n  };\n}\n","import { type TransactionReceipt } from \"viem\";\nimport { type RoulettePlacedBet } from \"../../actions/casino/roulette\";\nimport { Roulette, type RouletteNumber } from \"../../entities/casino/roulette\";\nimport type { BetSwirlWallet } from \"../../provider\";\nimport { type CasinoRolledBet, type CasinoWaitRollOptions, waitRolledBet } from \"./game\";\n\nexport interface RouletteRolledBet extends Omit<CasinoRolledBet, \"decodedRoll\"> {\n  rolled: RouletteNumber[];\n}\n\nexport async function waitRouletteRolledBet(\n  wallet: BetSwirlWallet,\n  placedBet: RoulettePlacedBet,\n  options?: CasinoWaitRollOptions,\n): Promise<{\n  rolledBet: RouletteRolledBet;\n  receipt: TransactionReceipt;\n}> {\n  const { rolledBet, receipt } = await waitRolledBet(wallet, placedBet, options);\n  return {\n    rolledBet: {\n      ...rolledBet,\n      rolled: rolledBet.encodedRolled.map(Roulette.decodeRolled),\n    },\n    receipt,\n  };\n}\n","import { encodeFunctionData } from \"viem\";\nimport { weightedGameAbi } from \"../../abis\";\nimport { chainByKey } from \"../../data\";\nimport {\n  CASINO_GAME_TYPE,\n  type CasinoChainId,\n  casinoChainById,\n  type WEIGHTED_CASINO_GAME_TYPE,\n} from \"../../data/casino\";\nimport { ChainError, ERROR_CODES, TransactionError } from \"../../errors\";\nimport type { BetSwirlFunctionData, BP_bigint } from \"../../interfaces\";\nimport type { BetSwirlWallet } from \"../../provider/wallet\";\nimport { getCasinoChainId } from \"../../utils/chains\";\nimport type { CasinoRolledBet } from \"./game\";\n\nconst normalWheelConfiguration = {\n  configId: 0,\n  weights: [1n, 1n, 1n, 1n, 1n, 1n, 1n, 1n, 1n, 1n],\n  multipliers: [0n, 14580n, 0n, 18760n, 0n, 20830n, 0n, 14580n, 0n, 31250n],\n  colors: [\n    \"#29384C\",\n    \"#55DC36\",\n    \"#29384C\",\n    \"#15A2D8\",\n    \"#29384C\",\n    \"#7340F4\",\n    \"#29384C\",\n    \"#55DC36\",\n    \"#29384C\",\n    \"#EC9E3C\",\n  ],\n  label: \"Normal\",\n  game: CASINO_GAME_TYPE.WHEEL,\n};\n\nconst safePlinkoConfiguration = {\n  configId: 1,\n  weights: [3n, 30n, 120n, 350n, 1055n, 2231n, 2422n, 2231n, 1055n, 350n, 120n, 30n, 3n],\n  multipliers: [\n    104167n,\n    31250n,\n    16667n,\n    14584n,\n    11459n,\n    10417n,\n    5209n,\n    10417n,\n    11459n,\n    14584n,\n    16667n,\n    31250n,\n    104167n,\n  ],\n  colors: [\n    \"#ff003f\",\n    \"#ff2035\",\n    \"#ff402a\",\n    \"#ff6020\",\n    \"#ff8015\",\n    \"#ffa00b\",\n    \"#ffc000\",\n    \"#ffa00b\",\n    \"#ff8015\",\n    \"#ff6020\",\n    \"#ff402a\",\n    \"#ff2035\",\n    \"#ff003f\",\n  ],\n  label: \"Safe\",\n  game: CASINO_GAME_TYPE.PLINKO,\n};\nconst volatilePlinkoConfiguration = {\n  configId: 2,\n  weights: [3n, 30n, 120n, 350n, 1055n, 2231n, 2422n, 2231n, 1055n, 350n, 120n, 30n, 3n],\n  multipliers: [\n    1041667n,\n    156250n,\n    52083n,\n    20833n,\n    12500n,\n    5209n,\n    3125n,\n    5209n,\n    12500n,\n    20833n,\n    52083n,\n    156250n,\n    1041667n,\n  ],\n  colors: [\n    \"#ff003f\",\n    \"#ff2035\",\n    \"#ff402a\",\n    \"#ff6020\",\n    \"#ff8015\",\n    \"#ffa00b\",\n    \"#ffc000\",\n    \"#ffa00b\",\n    \"#ff8015\",\n    \"#ff6020\",\n    \"#ff402a\",\n    \"#ff2035\",\n    \"#ff003f\",\n  ],\n  label: \"Volatile\",\n  game: CASINO_GAME_TYPE.PLINKO,\n};\n\ntype WeightedGameCachedConfigurationsPerChain = {\n  [chainId in CasinoChainId]: CachedWeightedGameConfiguration[];\n};\n\nexport const wheelCachedConfigurations: WeightedGameCachedConfigurationsPerChain = {\n  [chainByKey.arbitrumSepolia.id]: [\n    { ...normalWheelConfiguration, chainId: chainByKey.arbitrumSepolia.id },\n  ],\n  [chainByKey.avalancheFuji.id]: [\n    { ...normalWheelConfiguration, chainId: chainByKey.avalancheFuji.id },\n  ],\n  [chainByKey.polygonAmoy.id]: [\n    { ...normalWheelConfiguration, chainId: chainByKey.polygonAmoy.id },\n  ],\n  [chainByKey.baseSepolia.id]: [\n    { ...normalWheelConfiguration, chainId: chainByKey.baseSepolia.id },\n  ],\n  [chainByKey.arbitrum.id]: [{ ...normalWheelConfiguration, chainId: chainByKey.arbitrum.id }],\n  [chainByKey.avalanche.id]: [{ ...normalWheelConfiguration, chainId: chainByKey.avalanche.id }],\n  [chainByKey.polygon.id]: [{ ...normalWheelConfiguration, chainId: chainByKey.polygon.id }],\n  [chainByKey.bsc.id]: [{ ...normalWheelConfiguration, chainId: chainByKey.bsc.id }],\n  [chainByKey.base.id]: [{ ...normalWheelConfiguration, chainId: chainByKey.base.id }],\n};\n\nexport const plinkoCachedConfigurations: WeightedGameCachedConfigurationsPerChain = {\n  [chainByKey.arbitrumSepolia.id]: [\n    { ...safePlinkoConfiguration, chainId: chainByKey.arbitrumSepolia.id },\n    { ...volatilePlinkoConfiguration, chainId: chainByKey.arbitrumSepolia.id },\n  ],\n  [chainByKey.avalancheFuji.id]: [\n    { ...safePlinkoConfiguration, chainId: chainByKey.avalancheFuji.id },\n    { ...volatilePlinkoConfiguration, chainId: chainByKey.avalancheFuji.id },\n  ],\n  [chainByKey.polygonAmoy.id]: [\n    { ...safePlinkoConfiguration, chainId: chainByKey.polygonAmoy.id },\n    { ...volatilePlinkoConfiguration, chainId: chainByKey.polygonAmoy.id },\n  ],\n  [chainByKey.baseSepolia.id]: [\n    { ...safePlinkoConfiguration, chainId: chainByKey.baseSepolia.id },\n    { ...volatilePlinkoConfiguration, chainId: chainByKey.baseSepolia.id },\n  ],\n  [chainByKey.arbitrum.id]: [\n    { ...safePlinkoConfiguration, chainId: chainByKey.arbitrum.id },\n    { ...volatilePlinkoConfiguration, chainId: chainByKey.arbitrum.id },\n  ],\n  [chainByKey.avalanche.id]: [\n    { ...safePlinkoConfiguration, chainId: chainByKey.avalanche.id },\n    { ...volatilePlinkoConfiguration, chainId: chainByKey.avalanche.id },\n  ],\n  [chainByKey.polygon.id]: [\n    { ...safePlinkoConfiguration, chainId: chainByKey.polygon.id },\n    { ...volatilePlinkoConfiguration, chainId: chainByKey.polygon.id },\n  ],\n  [chainByKey.bsc.id]: [\n    { ...safePlinkoConfiguration, chainId: chainByKey.bsc.id },\n    { ...volatilePlinkoConfiguration, chainId: chainByKey.bsc.id },\n  ],\n  [chainByKey.base.id]: [\n    { ...safePlinkoConfiguration, chainId: chainByKey.base.id },\n    { ...volatilePlinkoConfiguration, chainId: chainByKey.base.id },\n  ],\n};\n\nexport const weightedGameCachedConfigurationsByGame: Record<\n  WEIGHTED_CASINO_GAME_TYPE,\n  WeightedGameCachedConfigurationsPerChain | undefined\n> = {\n  [CASINO_GAME_TYPE.WHEEL]: wheelCachedConfigurations,\n  [CASINO_GAME_TYPE.PLINKO]: plinkoCachedConfigurations,\n  [CASINO_GAME_TYPE.CUSTOM_WEIGHTED_GAME]: undefined,\n};\n\nexport const weightedGameCachedConfigurations: WeightedGameCachedConfigurationsPerChain = {\n  [chainByKey.arbitrumSepolia.id]: [\n    ...wheelCachedConfigurations[chainByKey.arbitrumSepolia.id],\n    ...plinkoCachedConfigurations[chainByKey.arbitrumSepolia.id],\n  ],\n  [chainByKey.avalancheFuji.id]: [\n    ...wheelCachedConfigurations[chainByKey.avalancheFuji.id],\n    ...plinkoCachedConfigurations[chainByKey.avalancheFuji.id],\n  ],\n  [chainByKey.polygonAmoy.id]: [\n    ...wheelCachedConfigurations[chainByKey.polygonAmoy.id],\n    ...plinkoCachedConfigurations[chainByKey.polygonAmoy.id],\n  ],\n  [chainByKey.baseSepolia.id]: [...wheelCachedConfigurations[chainByKey.baseSepolia.id]],\n  [chainByKey.arbitrum.id]: [\n    ...wheelCachedConfigurations[chainByKey.arbitrum.id],\n    ...plinkoCachedConfigurations[chainByKey.arbitrum.id],\n  ],\n  [chainByKey.avalanche.id]: [\n    ...wheelCachedConfigurations[chainByKey.avalanche.id],\n    ...plinkoCachedConfigurations[chainByKey.avalanche.id],\n  ],\n  [chainByKey.polygon.id]: [\n    ...wheelCachedConfigurations[chainByKey.polygon.id],\n    ...plinkoCachedConfigurations[chainByKey.polygon.id],\n  ],\n  [chainByKey.bsc.id]: [\n    ...wheelCachedConfigurations[chainByKey.bsc.id],\n    ...plinkoCachedConfigurations[chainByKey.bsc.id],\n  ],\n  [chainByKey.base.id]: [\n    ...wheelCachedConfigurations[chainByKey.base.id],\n    ...plinkoCachedConfigurations[chainByKey.base.id],\n  ],\n};\n\nexport const gameIdByWeightedGameId = {\n  1: CASINO_GAME_TYPE.WHEEL,\n  /*2: Plinko,\n  3: Mines,\n  4: Diamonds,\n  5: SLIDE,\n  6: Slot,*/\n} as const;\n\n/**\n * Raw weighted game config data returned by the smart contract\n * [0] - weightRanges: The weight of each segment (sorted by ranges). e.g. [100, 250, 300] means the first segment has 100 weight, the second one has 150 weight, and the last one has 50 weight.\n * [1] - multipliers: The multiplier of each segment (BP)\n * [2] - maxMultiplier: The highest multiplier of the configuration (BP)\n * [3] - gameId: The weighted game id (used to identify the weighted game the configuration has been created for)\n */\nexport type RawWeightedGameConfiguration = {\n  weightRanges: bigint[];\n  multipliers: BP_bigint[];\n  maxMultiplier: BP_bigint;\n  gameId: number;\n};\n\nexport function parseRawWeightedGameConfiguration(\n  rawConfiguration: RawWeightedGameConfiguration,\n  configId: number | string,\n  casinoChainId: CasinoChainId,\n): WeightedGameConfiguration {\n  return {\n    chainId: casinoChainId,\n    configId: Number(configId),\n    // Convert weight ranges into weights\n    weights: rawConfiguration.weightRanges.map((v, i) =>\n      i === 0 ? v : v - rawConfiguration.weightRanges[i - 1]!,\n    ),\n    multipliers: rawConfiguration.multipliers,\n    game: gameIdByWeightedGameId[rawConfiguration.gameId as keyof typeof gameIdByWeightedGameId],\n  };\n}\n\nexport interface WeightedGameConfiguration {\n  configId: number;\n  game: CASINO_GAME_TYPE;\n  chainId: CasinoChainId;\n  weights: BP_bigint[];\n  multipliers: BP_bigint[];\n  colors?: string[];\n  label?: string;\n}\n\nexport interface CachedWeightedGameConfiguration extends WeightedGameConfiguration {\n  colors: string[];\n  label: string;\n}\n\nexport async function getWeightedGameConfiguration(\n  wallet: BetSwirlWallet,\n  configId: number | string,\n): Promise<WeightedGameConfiguration> {\n  const casinoChainId = getCasinoChainId(wallet);\n\n  try {\n    // Check if the configuration is in the cached configurations to save a fetch is it is the case.\n    const cachedConfigurations = weightedGameCachedConfigurations[casinoChainId];\n    if (cachedConfigurations) {\n      const existingCachedConfiguration = cachedConfigurations.find(\n        (c) => c.configId === Number(configId),\n      );\n      if (existingCachedConfiguration) {\n        return existingCachedConfiguration;\n      }\n    }\n    const functionData = getWeightedGameConfigurationFunctionData(configId, casinoChainId);\n    const rawConfiguration = await wallet.readContract<\n      typeof functionData,\n      RawWeightedGameConfiguration\n    >(functionData);\n\n    return parseRawWeightedGameConfiguration(rawConfiguration, configId, casinoChainId);\n  } catch (error) {\n    throw new TransactionError(\n      \"Error getting weighted game configuration\",\n      ERROR_CODES.GAME.GET_WEIGHTED_GAME_CONFIGURATION_ERROR,\n      {\n        chainId: casinoChainId,\n        configId,\n        cause: error,\n      },\n    );\n  }\n}\n\nexport function getWeightedGameConfigurationFunctionData(\n  configId: number | string,\n  casinoChainId: CasinoChainId,\n): BetSwirlFunctionData<typeof weightedGameAbi, \"gameConfigs\", readonly [number]> {\n  const casinoChain = casinoChainById[casinoChainId];\n  // Use WHEEL address here because Wheel is the first created weighted game\n  const gameAddress = casinoChain.contracts.games[CASINO_GAME_TYPE.WHEEL]?.address;\n  if (!gameAddress) {\n    throw new ChainError(\n      `Weighted game contract not found for chain ${casinoChainId}`,\n      ERROR_CODES.CHAIN.UNSUPPORTED_GAME,\n    );\n  }\n\n  const abi = weightedGameAbi;\n  const functionName = \"gameConfigs\" as const;\n  const args = [Number(configId)] as const;\n  return {\n    data: { to: gameAddress, abi, functionName, args },\n    encodedData: encodeFunctionData({\n      abi,\n      functionName,\n      args,\n    }),\n  };\n}\n\nexport interface WeightedGameRolledBet extends Omit<CasinoRolledBet, \"decodedRoll\"> {\n  rolled: string[]; // multipliers (eg. x3.24)\n}\n\n// waitRolledBet and formatCasinoRolledBet are in game.ts\n","import { type TransactionReceipt } from \"viem\";\nimport type { WheelPlacedBet } from \"../../actions\";\nimport { Wheel } from \"../../entities\";\nimport type { BetSwirlWallet } from \"../../provider\";\nimport { type CasinoWaitRollOptions, waitRolledBet } from \"./game\";\nimport type { WeightedGameConfiguration, WeightedGameRolledBet } from \"./weightedGame\";\n\nexport interface WheelRolledBet extends WeightedGameRolledBet {}\nexport async function waitWheelRolledBet(\n  wallet: BetSwirlWallet,\n  placedBet: WheelPlacedBet,\n  weightedGameConfig: WeightedGameConfiguration,\n  houseEdge: number,\n  options?: CasinoWaitRollOptions,\n): Promise<{\n  rolledBet: WheelRolledBet;\n  receipt: TransactionReceipt;\n}> {\n  const { rolledBet, receipt } = await waitRolledBet(\n    wallet,\n    placedBet,\n    options,\n    weightedGameConfig,\n    houseEdge,\n  );\n  return {\n    rolledBet: {\n      ...rolledBet,\n      rolled: rolledBet.encodedRolled.map((rolledBet) =>\n        Wheel.decodeRolled(rolledBet, weightedGameConfig, houseEdge),\n      ),\n    },\n    receipt,\n  };\n}\n","import { type Address, encodeFunctionData } from \"viem\";\nimport { leaderboardAbi } from \"../../abis/v2/leaderboard/leaderboard\";\nimport { type CasinoChainId, type ChainId, casinoChainById } from \"../../data\";\nimport { ERROR_CODES } from \"../../errors\";\nimport { ChainError, TransactionError } from \"../../errors/types\";\nimport type { BetSwirlFunctionData } from \"../../interfaces\";\nimport type { BetSwirlWallet } from \"../../provider\";\nimport { getCasinoChainId } from \"../../utils\";\n\nexport type RawClaimableAmount = bigint;\n\nexport async function getLeaderboardClaimableAmount(\n  wallet: BetSwirlWallet,\n  leaderboardOnChainId: number | bigint,\n  playerAddress: Address,\n  chainId: ChainId,\n): Promise<bigint> {\n  const casinoChainId = getCasinoChainId(wallet, chainId);\n\n  try {\n    const functionData = getClaimableAmountFunctionData(\n      playerAddress,\n      leaderboardOnChainId,\n      casinoChainId,\n    );\n    const rawClaimableAmount = await wallet.readContract<typeof functionData, RawClaimableAmount>(\n      functionData,\n    );\n\n    return rawClaimableAmount;\n  } catch (error) {\n    throw new TransactionError(\n      \"Error getting claimable amount\",\n      ERROR_CODES.LEADERBOARD.GET_CLAIMABLE_AMOUNT_ERROR,\n      {\n        chainId: casinoChainId,\n        cause: error,\n      },\n    );\n  }\n}\n\nexport function getClaimableAmountFunctionData(\n  playerAddress: Address,\n  leaderboardOnChainId: number | bigint,\n  casinoChainId: CasinoChainId,\n): BetSwirlFunctionData<typeof leaderboardAbi, \"claimable\", readonly [bigint, Address]> {\n  const casinoChain = casinoChainById[casinoChainId];\n  const leaderboardAddress = casinoChain.contracts.leaderboard;\n  if (!leaderboardAddress) {\n    throw new ChainError(\n      `Chain ID ${casinoChainId} is not compatible with leaderboard`,\n      ERROR_CODES.LEADERBOARD.UNSUPPORTED_CHAIN,\n      {\n        chainId: casinoChainId,\n      },\n    );\n  }\n\n  const abi = leaderboardAbi;\n  const functionName = \"claimable\" as const;\n  const args = [BigInt(leaderboardOnChainId), playerAddress] as const;\n  return {\n    data: { to: leaderboardAddress, abi, functionName, args },\n    encodedData: encodeFunctionData({\n      abi,\n      functionName,\n      args,\n    }),\n  };\n}\n","import type { Address, Hash } from \"viem\";\nimport { encodeFunctionData } from \"viem\";\nimport { leaderboardAbi } from \"../../abis/v2/leaderboard/leaderboard\";\nimport {\n  type CasinoChainId,\n  casinoChainById,\n  LEADERBOARD_TYPE,\n  type Leaderboard,\n} from \"../../data\";\nimport { ERROR_CODES } from \"../../errors/codes\";\nimport { TransactionError } from \"../../errors/types\";\nimport type { BetSwirlFunctionData, Token } from \"../../interfaces\";\nimport type { BetSwirlWallet } from \"../../provider\";\nimport { getLeaderboardClaimableAmount } from \"../../read\";\n\nexport interface LeaderboardClaimRewardsResult {\n  claimedAmount: bigint;\n  token: Token;\n  receiver: Address;\n}\n\nexport async function claimLeaderboardRewards(\n  wallet: BetSwirlWallet,\n  leaderboard: Leaderboard,\n  receiver: Address,\n  pollingInterval?: number,\n  onClaimPending?: (tx: Hash, result: LeaderboardClaimRewardsResult) => void | Promise<void>,\n) {\n  try {\n    const playerAddress = wallet.getAccount()?.address;\n    if (!playerAddress) {\n      throw new TransactionError(\"Account missing\", ERROR_CODES.WALLET.ACCOUNT_MISSING);\n    }\n    const claimableAmount = await getLeaderboardClaimableAmount(\n      wallet,\n      leaderboard.onChainId,\n      playerAddress,\n      leaderboard.chainId,\n    );\n    if (claimableAmount <= 0n) {\n      throw new TransactionError(\n        \"No claimable amount\",\n        ERROR_CODES.LEADERBOARD.NO_CLAIMABLE_AMOUNT,\n        {\n          leaderboardId: leaderboard.id,\n          leaderboardOnChainId: leaderboard.onChainId,\n          playerAddress,\n          chainId: leaderboard.chainId,\n          receiver,\n        },\n      );\n    }\n\n    const functionData = getClaimRewardsLeaderboardFunctionData(leaderboard, receiver);\n    const tx = await wallet.writeContract(functionData);\n    const result: LeaderboardClaimRewardsResult = {\n      claimedAmount: claimableAmount,\n      token: leaderboard.token,\n      receiver,\n    };\n    await onClaimPending?.(tx, result);\n    const casinoChain =\n      leaderboard.type === LEADERBOARD_TYPE.CASINO\n        ? casinoChainById[leaderboard.chainId as CasinoChainId]\n        : undefined;\n    const effectivePollingInterval = pollingInterval || casinoChain?.options.pollingInterval;\n    const receipt = await wallet.waitTransaction(tx, effectivePollingInterval);\n    return { receipt, result };\n  } catch (_error) {\n    throw new TransactionError(\n      `Error claiming rewards from leaderboard #${leaderboard.id} on chain ${leaderboard.chainId}`,\n      ERROR_CODES.TRANSACTION.TOKEN_APPROVAL_ERROR,\n      {\n        leaderboardId: leaderboard.id,\n        leaderboardOnChainId: leaderboard.onChainId,\n        chainId: leaderboard.chainId,\n        receiver,\n      },\n    );\n  }\n}\n\nexport function getClaimRewardsLeaderboardFunctionData(\n  leaderboard: Leaderboard,\n  receiver: Address,\n): BetSwirlFunctionData<typeof leaderboardAbi, \"claimTokens\", readonly [bigint, Address]> {\n  const abi = leaderboardAbi;\n  const functionName = \"claimTokens\" as const;\n  const args = [BigInt(leaderboard.onChainId), receiver] as const;\n  return {\n    data: { to: leaderboard.leaderboardAddress, abi, functionName, args },\n    encodedData: encodeFunctionData({\n      abi,\n      functionName,\n      args,\n    }),\n  };\n}\n","import type { ApolloCache, ApolloClient } from \"@apollo/client\";\nimport type { Address, Hash, Hex, TransactionReceipt } from \"viem\";\nimport type {\n  PlinkoBetParams,\n  PlinkoFreebetParams,\n  PlinkoPlacedBet,\n  WeightedGameBetParams,\n  WeightedGameFreebetParams,\n  WeightedGamePlacedBet,\n} from \"../actions\";\nimport { refreshLeaderboardsWithBets } from \"../actions/api/leaderboard/leaderboards\";\nimport type {\n  CoinTossBetParams,\n  CoinTossFreebetParams,\n  CoinTossPlacedBet,\n} from \"../actions/casino/cointoss\";\nimport type { DiceBetParams, DiceFreebetParams, DicePlacedBet } from \"../actions/casino/dice\";\nimport type {\n  CasinoPlaceBetOptions,\n  NormalCasinoPlacedBet,\n  PlaceBetCallbacks,\n  PlaceFreebetCallbacks,\n  WeightedCasinoPlacedBet,\n} from \"../actions/casino/game\";\nimport type { KenoBetParams, KenoFreebetParams, KenoPlacedBet } from \"../actions/casino/keno\";\nimport type {\n  RouletteBetParams,\n  RouletteFreebetParams,\n  RoulettePlacedBet,\n} from \"../actions/casino/roulette\";\nimport type { WheelBetParams, WheelFreebetParams, WheelPlacedBet } from \"../actions/casino/wheel\";\nimport type { ALLOWANCE_TYPE } from \"../actions/common/approve\";\nimport type { LeaderboardClaimRewardsResult } from \"../actions/leaderboard/leaderboard\";\nimport { DEFAULT_ITEMS_PER_PAGE, DEFAULT_PAGE } from \"../constants\";\nimport {\n  type AffiliateLeaderboardWithClaimDetails,\n  type ChainId,\n  FREEBET_CAMPAIGN_STATUS,\n  type FreebetCampaign,\n  type FreebetCodeCampaign,\n  fetchAffiliateLeaderboard,\n  fetchAffiliateLeaderboards,\n  fetchFreebetCampaign,\n  fetchFreebetCampaigns,\n  fetchFreebetCodeCampaign,\n  fetchFreebetCodeCampaigns,\n  fetchFreebets,\n  fetchLeaderboard,\n  fetchLeaderboards,\n  LEADERBOARD_STATUS,\n  LEADERBOARD_TYPE,\n  type Leaderboard,\n  type SignedFreebet,\n} from \"../data\";\nimport type { CASINO_GAME_TYPE, CasinoChainId } from \"../data/casino\";\nimport {\n  type CasinoBetFilterStatus,\n  fetchBet,\n  fetchBetByHash,\n  fetchBets,\n} from \"../data/subgraphs/protocol/clients/bet\";\nimport { fetchToken, fetchTokens } from \"../data/subgraphs/protocol/clients/token\";\nimport {\n  Bet_OrderBy,\n  OrderDirection,\n  Token_OrderBy,\n} from \"../data/subgraphs/protocol/documents/types\";\nimport type { SubgraphError } from \"../errors\";\nimport type {\n  BetRequirements,\n  BP,\n  CasinoBet,\n  CasinoGame,\n  CasinoGameToken,\n  CasinoToken,\n  SubgraphToken,\n  Token,\n} from \"../interfaces\";\nimport type {\n  CasinoRolledBet,\n  CasinoWaitRollOptions,\n  CoinTossRolledBet,\n  DiceRolledBet,\n  GAS_PRICE_TYPE,\n  KenoConfiguration,\n  KenoRolledBet,\n  PlinkoRolledBet,\n  RouletteRolledBet,\n} from \"../read\";\nimport type { WeightedGameConfiguration } from \"../read/casino/weightedGame\";\nimport type { WheelRolledBet } from \"../read/casino/wheel\";\nimport { FORMAT_TYPE, getCasinoChainId } from \"../utils\";\nimport type { BetSwirlWallet } from \"./wallet\";\nexport interface BetSwirlClientOptions {\n  gasPriceType?: GAS_PRICE_TYPE;\n  gasPrice?: bigint;\n  chainId?: ChainId;\n  affiliate?: Hex;\n  allowanceType?: ALLOWANCE_TYPE;\n  pollingInterval?: number;\n  formatType?: FORMAT_TYPE;\n  subgraphClient?: {\n    graphqlKey?: string;\n    cache?: ApolloCache;\n    defaultOptions?: ApolloClient.DefaultOptions;\n  };\n  api?: {\n    testMode?: boolean;\n  };\n}\n\nexport abstract class BetSwirlClient {\n  public betSwirlWallet: BetSwirlWallet;\n  public betSwirlDefaultOptions: BetSwirlClientOptions;\n\n  constructor(betSwirlWallet: BetSwirlWallet, betSwirlDefaultOptions: BetSwirlClientOptions) {\n    this.betSwirlWallet = betSwirlWallet;\n    this.betSwirlDefaultOptions = betSwirlDefaultOptions;\n  }\n\n  /* Casino games */\n\n  abstract waitRolledBet(\n    placedBet: NormalCasinoPlacedBet,\n    options?: CasinoWaitRollOptions,\n  ): Promise<{ rolledBet: CasinoRolledBet; receipt: TransactionReceipt }>;\n\n  abstract waitRolledBet(\n    placedBet: WeightedCasinoPlacedBet,\n    options: CasinoWaitRollOptions | undefined,\n    weightedGameConfiguration: WeightedGameConfiguration,\n    houseEdge: BP,\n  ): Promise<{ rolledBet: CasinoRolledBet; receipt: TransactionReceipt }>;\n\n  abstract playCoinToss(\n    params: CoinTossBetParams,\n    options?: CasinoPlaceBetOptions,\n    callbacks?: PlaceBetCallbacks,\n  ): Promise<{ placedBet: CoinTossPlacedBet; receipt: TransactionReceipt }>;\n\n  abstract playFreebetCoinToss(\n    params: CoinTossFreebetParams,\n    options?: CasinoPlaceBetOptions,\n    callbacks?: PlaceFreebetCallbacks,\n  ): Promise<{ placedFreebet: CoinTossPlacedBet; receipt: TransactionReceipt }>;\n\n  abstract waitCoinToss(\n    placedBet: CoinTossPlacedBet,\n    options?: CasinoWaitRollOptions,\n  ): Promise<{ rolledBet: CoinTossRolledBet; receipt: TransactionReceipt }>;\n\n  abstract playDice(\n    params: DiceBetParams,\n    options?: CasinoPlaceBetOptions,\n    callbacks?: PlaceBetCallbacks,\n  ): Promise<{ placedBet: DicePlacedBet; receipt: TransactionReceipt }>;\n\n  abstract playFreebetDice(\n    params: DiceFreebetParams,\n    options?: CasinoPlaceBetOptions,\n    callbacks?: PlaceFreebetCallbacks,\n  ): Promise<{ placedFreebet: DicePlacedBet; receipt: TransactionReceipt }>;\n\n  abstract waitDice(\n    placedBet: DicePlacedBet,\n    options?: CasinoWaitRollOptions,\n  ): Promise<{ rolledBet: DiceRolledBet; receipt: TransactionReceipt }>;\n\n  abstract playRoulette(\n    params: RouletteBetParams,\n    options?: CasinoPlaceBetOptions,\n    callbacks?: PlaceBetCallbacks,\n  ): Promise<{ placedBet: RoulettePlacedBet; receipt: TransactionReceipt }>;\n\n  abstract playFreebetRoulette(\n    params: RouletteFreebetParams,\n    options?: CasinoPlaceBetOptions,\n    callbacks?: PlaceFreebetCallbacks,\n  ): Promise<{ placedFreebet: RoulettePlacedBet; receipt: TransactionReceipt }>;\n\n  abstract waitRoulette(\n    placedBet: RoulettePlacedBet,\n    options?: CasinoWaitRollOptions,\n  ): Promise<{ rolledBet: RouletteRolledBet; receipt: TransactionReceipt }>;\n\n  abstract playKeno(\n    params: KenoBetParams,\n    options?: CasinoPlaceBetOptions,\n    callbacks?: PlaceBetCallbacks,\n  ): Promise<{ placedBet: KenoPlacedBet; receipt: TransactionReceipt }>;\n\n  abstract playFreebetKeno(\n    params: KenoFreebetParams,\n    options?: CasinoPlaceBetOptions,\n    callbacks?: PlaceFreebetCallbacks,\n  ): Promise<{ placedFreebet: KenoPlacedBet; receipt: TransactionReceipt }>;\n\n  abstract waitKeno(\n    placedBet: KenoPlacedBet,\n    options?: CasinoWaitRollOptions,\n  ): Promise<{ rolledBet: KenoRolledBet; receipt: TransactionReceipt }>;\n\n  abstract playWheel(\n    params: WheelBetParams,\n    options?: CasinoPlaceBetOptions,\n    callbacks?: PlaceBetCallbacks,\n  ): Promise<{ placedBet: WheelPlacedBet; receipt: TransactionReceipt }>;\n\n  abstract playFreebetWheel(\n    params: WheelFreebetParams,\n    options?: CasinoPlaceBetOptions,\n    callbacks?: PlaceFreebetCallbacks,\n  ): Promise<{ placedFreebet: WheelPlacedBet; receipt: TransactionReceipt }>;\n\n  abstract waitWheel(\n    placedBet: WheelPlacedBet,\n    weightedGameConfiguration: WeightedGameConfiguration,\n    houseEdge: BP,\n    options?: CasinoWaitRollOptions,\n  ): Promise<{ rolledBet: WheelRolledBet; receipt: TransactionReceipt }>;\n\n  abstract playPlinko(\n    params: PlinkoBetParams,\n    options?: CasinoPlaceBetOptions,\n    callbacks?: PlaceBetCallbacks,\n  ): Promise<{ placedBet: PlinkoPlacedBet; receipt: TransactionReceipt }>;\n\n  abstract playFreebetPlinko(\n    params: PlinkoFreebetParams,\n    options?: CasinoPlaceBetOptions,\n    callbacks?: PlaceFreebetCallbacks,\n  ): Promise<{ placedFreebet: PlinkoPlacedBet; receipt: TransactionReceipt }>;\n\n  abstract waitPlinko(\n    placedBet: PlinkoPlacedBet,\n    weightedGameConfiguration: WeightedGameConfiguration,\n    houseEdge: BP,\n    options?: CasinoWaitRollOptions,\n  ): Promise<{ rolledBet: PlinkoRolledBet; receipt: TransactionReceipt }>;\n\n  abstract playWeightedGame(\n    params: WeightedGameBetParams,\n    options?: CasinoPlaceBetOptions,\n    callbacks?: PlaceBetCallbacks,\n  ): Promise<{ placedBet: WeightedGamePlacedBet; receipt: TransactionReceipt }>;\n\n  abstract playFreebetWeightedGame(\n    params: WeightedGameFreebetParams,\n    options?: CasinoPlaceBetOptions,\n    callbacks?: PlaceFreebetCallbacks,\n  ): Promise<{ placedFreebet: WeightedGamePlacedBet; receipt: TransactionReceipt }>;\n\n  /* Casino utilities */\n\n  abstract getCasinoGames(onlyActive?: boolean): Promise<CasinoGame[]>;\n\n  abstract getCasinoTokens(onlyActive?: boolean): Promise<CasinoToken[]>;\n\n  abstract getCasinoGameToken(\n    casinoToken: CasinoToken,\n    game: CASINO_GAME_TYPE,\n    affiliate?: Hex,\n  ): Promise<CasinoGameToken>;\n\n  abstract getBetRequirements(\n    token: Token,\n    multiplier: BP,\n    game: CASINO_GAME_TYPE,\n  ): Promise<BetRequirements>;\n\n  abstract getChainlinkVrfCost(\n    game: CASINO_GAME_TYPE,\n    tokenAddress: Hex,\n    betCount: number,\n    gasPrice?: bigint,\n    gasPriceType?: GAS_PRICE_TYPE,\n  ): Promise<bigint>;\n\n  abstract getKenoConfiguration(token: Token): Promise<KenoConfiguration>;\n\n  abstract getWeighedGameConfiguration(\n    configId: number | string,\n  ): Promise<WeightedGameConfiguration>;\n\n  /* Leaderboard utilities */\n\n  abstract getLeaderboardClaimableAmount(\n    leaderboardOnChainId: number | bigint,\n    playerAddress: Address,\n    chainId?: ChainId,\n  ): Promise<bigint>;\n\n  abstract claimLeaderboardRewards(\n    leaderboard: Leaderboard,\n    receiver: Address,\n    onClaimPending?: (tx: Hash, result: LeaderboardClaimRewardsResult) => void | Promise<void>,\n  ): Promise<{ receipt: TransactionReceipt; result: LeaderboardClaimRewardsResult }>;\n\n  /* Subgraph queries */\n\n  async fetchBets(\n    chainId?: CasinoChainId,\n    filter?: {\n      bettor?: Address;\n      game?: CASINO_GAME_TYPE;\n      token?: Token;\n      status?: CasinoBetFilterStatus;\n      affiliates?: Address[];\n    },\n    page = DEFAULT_PAGE,\n    itemsPerPage = DEFAULT_ITEMS_PER_PAGE,\n    sortBy: { key: Bet_OrderBy; order: OrderDirection } = {\n      key: Bet_OrderBy.BetTimestamp,\n      order: OrderDirection.Desc,\n    },\n  ): Promise<{ bets: CasinoBet[]; error: SubgraphError | undefined }> {\n    const casinoChainId = getCasinoChainId(this.betSwirlWallet, chainId);\n    return fetchBets(\n      {\n        ...this.betSwirlDefaultOptions.subgraphClient,\n        chainId: casinoChainId,\n        formatType: this.betSwirlDefaultOptions.formatType,\n      },\n      filter,\n      page,\n      itemsPerPage,\n      sortBy,\n    );\n  }\n\n  async fetchBet(\n    id: string | bigint,\n    chainId?: CasinoChainId,\n  ): Promise<{ bet: CasinoBet | undefined; error: SubgraphError | undefined }> {\n    const casinoChainId = getCasinoChainId(this.betSwirlWallet, chainId);\n    return fetchBet(id, {\n      ...this.betSwirlDefaultOptions.subgraphClient,\n      chainId: casinoChainId,\n      formatType: this.betSwirlDefaultOptions.formatType,\n    });\n  }\n\n  async fetchBetByHash(\n    placeBetHash: Hash,\n    chainId?: CasinoChainId,\n  ): Promise<{ bet: CasinoBet | undefined; error: SubgraphError | undefined }> {\n    const casinoChainId = getCasinoChainId(this.betSwirlWallet, chainId);\n    return fetchBetByHash(placeBetHash, {\n      ...this.betSwirlDefaultOptions.subgraphClient,\n      chainId: casinoChainId,\n      formatType: this.betSwirlDefaultOptions.formatType,\n    });\n  }\n\n  async fetchTokens(\n    chainId?: CasinoChainId,\n    page = DEFAULT_PAGE,\n    itemsPerPage = DEFAULT_ITEMS_PER_PAGE,\n    sortBy: { key: Token_OrderBy; order: OrderDirection } = {\n      key: Token_OrderBy.Symbol,\n      order: OrderDirection.Asc,\n    },\n  ): Promise<{ tokens: SubgraphToken[]; error: SubgraphError | undefined }> {\n    const casinoChainId = getCasinoChainId(this.betSwirlWallet, chainId);\n    return fetchTokens(\n      {\n        ...this.betSwirlDefaultOptions.subgraphClient,\n        chainId: casinoChainId,\n        formatType: this.betSwirlDefaultOptions.formatType,\n      },\n      page,\n      itemsPerPage,\n      sortBy,\n    );\n  }\n\n  async fetchToken(\n    address: Address,\n    chainId?: CasinoChainId,\n  ): Promise<{ token: SubgraphToken | undefined; error: SubgraphError | undefined }> {\n    const casinoChainId = getCasinoChainId(this.betSwirlWallet, chainId);\n    return fetchToken(address, {\n      ...this.betSwirlDefaultOptions.subgraphClient,\n      chainId: casinoChainId,\n      formatType: this.betSwirlDefaultOptions.formatType,\n    });\n  }\n\n  // API calls\n  async fetchFreebets(\n    player: Address,\n    affiliates?: Address[],\n    chainIds?: CasinoChainId[],\n    withExternalBankrollFreebets = false,\n  ): Promise<SignedFreebet[]> {\n    return fetchFreebets(\n      player,\n      affiliates,\n      chainIds,\n      withExternalBankrollFreebets,\n      Boolean(this.betSwirlDefaultOptions.api?.testMode),\n    );\n  }\n\n  async fetchFreebetCampaigns(\n    limit = 10,\n    offset = 0,\n    status?: FREEBET_CAMPAIGN_STATUS,\n    affiliate?: Address,\n    chainId?: CasinoChainId,\n  ): Promise<{ campaigns: FreebetCampaign[]; total: number; offset: number; limit: number }> {\n    return fetchFreebetCampaigns(\n      limit,\n      offset,\n      status,\n      affiliate,\n      chainId,\n      Boolean(this.betSwirlDefaultOptions.api?.testMode),\n    );\n  }\n\n  async fetchFreebetCampaign(id: number): Promise<FreebetCampaign | null> {\n    return fetchFreebetCampaign(id, Boolean(this.betSwirlDefaultOptions.api?.testMode));\n  }\n\n  abstract signAndClaimFreebetCode(\n    code: string,\n    chainId?: CasinoChainId,\n  ): Promise<{ success: boolean; error?: string }>;\n\n  async fetchFreebetCodeCampaigns(\n    limit = 10,\n    offset = 0,\n    status?: FREEBET_CAMPAIGN_STATUS,\n    affiliate?: Address,\n    chainId?: CasinoChainId,\n  ): Promise<{ campaigns: FreebetCodeCampaign[]; total: number; offset: number; limit: number }> {\n    return fetchFreebetCodeCampaigns(\n      limit,\n      offset,\n      status,\n      affiliate,\n      chainId,\n      Boolean(this.betSwirlDefaultOptions.api?.testMode),\n    );\n  }\n\n  async fetchFreebetCodeCampaign(id: number): Promise<FreebetCodeCampaign | null> {\n    return fetchFreebetCodeCampaign(id, Boolean(this.betSwirlDefaultOptions.api?.testMode));\n  }\n\n  async fetchLeaderboards(\n    limit = 10,\n    offset = 0,\n    playerAddress?: Address,\n    affiliates?: Address[],\n    chainIds?: ChainId[],\n    withExternalBankrollLeaderboards = false,\n    endDateDirection?: \"asc\" | \"desc\",\n    statuses?: LEADERBOARD_STATUS[],\n  ): Promise<{ leaderboards: Leaderboard[]; total: number; offset: number; limit: number }> {\n    return fetchLeaderboards(\n      limit,\n      offset,\n      playerAddress,\n      affiliates,\n      chainIds,\n      withExternalBankrollLeaderboards,\n      endDateDirection,\n      statuses,\n      Boolean(this.betSwirlDefaultOptions.api?.testMode),\n    );\n  }\n\n  async fetchLeaderboard(id: number, playerAddress?: Address): Promise<Leaderboard | null> {\n    return fetchLeaderboard(id, playerAddress, Boolean(this.betSwirlDefaultOptions.api?.testMode));\n  }\n\n  async fetchAffiliateLeaderboards(\n    affiliate: Address,\n    limit = 10,\n    offset = 0,\n    chainId?: ChainId,\n    endDateDirection?: \"asc\" | \"desc\",\n    statuses?: LEADERBOARD_STATUS[],\n  ): Promise<{\n    leaderboards: AffiliateLeaderboardWithClaimDetails[];\n    total: number;\n    offset: number;\n    limit: number;\n  }> {\n    return fetchAffiliateLeaderboards(\n      affiliate,\n      limit,\n      offset,\n      chainId,\n      endDateDirection,\n      statuses,\n      Boolean(this.betSwirlDefaultOptions.api?.testMode),\n    );\n  }\n\n  async fetchAffiliateLeaderboard(\n    id: number,\n  ): Promise<AffiliateLeaderboardWithClaimDetails | null> {\n    return fetchAffiliateLeaderboard(id, Boolean(this.betSwirlDefaultOptions.api?.testMode));\n  }\n\n  async refreshLeaderboardsWithBets(\n    betIds: string[],\n    chainId: ChainId,\n    betType: LEADERBOARD_TYPE,\n  ): Promise<boolean> {\n    return refreshLeaderboardsWithBets(\n      betIds,\n      chainId,\n      betType,\n      Boolean(this.betSwirlDefaultOptions.api?.testMode),\n    );\n  }\n}\n","import type {\n  Abi,\n  Account,\n  CallReturnType,\n  Hash,\n  TransactionReceipt,\n  TypedDataDomain,\n  TypedDataParameter,\n  PublicClient as ViemPublicClient,\n} from \"viem\";\nimport type { BetSwirlExtendedEventData, BetSwirlFunctionData } from \"../interfaces\";\n\nexport abstract class BetSwirlWallet {\n  abstract getChainId(): number;\n\n  abstract getPublicClient(chainId?: number): ViemPublicClient;\n  abstract getAccount(chainId?: number): Account | undefined;\n\n  abstract readContract<TFunctionData extends BetSwirlFunctionData<Abi, string, readonly any[]>>(\n    functionData: TFunctionData,\n    gasPrice: bigint,\n  ): Promise<CallReturnType>;\n\n  abstract readContract<\n    TFunctionData extends BetSwirlFunctionData<Abi, string, readonly any[]>,\n    TReturnType = any,\n  >(functionData: TFunctionData, gasPrice?: undefined): Promise<TReturnType>;\n\n  abstract readContracts<\n    TFunctionDatas extends BetSwirlFunctionData<Abi, string, readonly any[]>[],\n    TReturnTypes extends any[],\n  >(functionDatas: [...TFunctionDatas]): Promise<TReturnTypes>;\n\n  abstract getTransactionReceipt(txHash: Hash): Promise<TransactionReceipt>;\n\n  abstract watchContractEvent<\n    TEventData extends BetSwirlExtendedEventData<Abi, string, Record<string, any>>,\n  >(eventData: TEventData): () => void;\n\n  abstract writeContract<TFunctionData extends BetSwirlFunctionData<Abi, string, readonly any[]>>(\n    functionData: TFunctionData,\n    value?: bigint,\n    gasPrice?: bigint,\n  ): Promise<Hash>;\n\n  abstract waitTransaction(txHash: Hash, pollingInterval?: number): Promise<TransactionReceipt>;\n\n  // TODO to improve to avoid unknown/any\n  abstract signTypedData<\n    TTypedData extends {\n      domain: TypedDataDomain;\n      types: Record<string, readonly TypedDataParameter[]>;\n      primaryType: string;\n      message: Record<string, unknown>;\n    },\n  >(typedData: TTypedData): Promise<Hash>;\n}\n","import type {\n  Abi,\n  CallReturnType,\n  Hash,\n  PublicClient,\n  TransactionReceipt,\n  TypedDataDomain,\n  TypedDataParameter,\n  WalletClient,\n} from \"viem\";\nimport type { BetSwirlExtendedEventData, BetSwirlFunctionData } from \"../interfaces\";\nimport { BetSwirlWallet } from \"./wallet\";\n\nexport class ViemBetSwirlWallet extends BetSwirlWallet {\n  public publicClient: PublicClient;\n  private walletClient?: WalletClient;\n\n  constructor(viemPublicClient: PublicClient, viemWalletClient?: WalletClient) {\n    super();\n    this.walletClient = viemWalletClient;\n    this.publicClient = viemPublicClient;\n  }\n\n  getChainId() {\n    return this.walletClient?.chain?.id ?? this.publicClient.chain!.id;\n  }\n\n  getAccount(_chainId?: number) {\n    return this.walletClient?.account;\n  }\n\n  getPublicClient(_chainId?: number) {\n    return this.publicClient;\n  }\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) {\n      return this.publicClient.call({\n        to: functionData.data.to,\n        data: functionData.encodedData,\n        gasPrice,\n      });\n    }\n\n    return this.publicClient.readContract({\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  async readContracts<\n    TFunctionDatas extends BetSwirlFunctionData<Abi, string, readonly any[]>[],\n    TReturnTypes extends any[],\n  >(functionDatas: [...TFunctionDatas]): Promise<TReturnTypes> {\n    const results = await Promise.all(\n      functionDatas.map((functionData) =>\n        this.publicClient.readContract({\n          address: functionData.data.to,\n          abi: functionData.data.abi,\n          functionName: functionData.data.functionName,\n          args: functionData.data.args,\n        }),\n      ),\n    );\n\n    return results as TReturnTypes;\n  }\n\n  async getTransactionReceipt(txHash: Hash): Promise<TransactionReceipt> {\n    return this.publicClient.getTransactionReceipt({ hash: txHash });\n  }\n\n  watchContractEvent<TEventData extends BetSwirlExtendedEventData<Abi, string, any>>(\n    eventData: TEventData,\n  ): () => void {\n    return this.publicClient.watchContractEvent({\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    if (!this.walletClient) {\n      throw new Error(\"[ViemBetSwirlWallet]Wallet client is not initialized\");\n    }\n\n    const { request } = await this.publicClient.simulateContract({\n      address: functionData.data.to,\n      abi: functionData.data.abi,\n      functionName: functionData.data.functionName,\n      args: functionData.data.args,\n      account: this.getAccount(),\n      value,\n      gasPrice,\n    });\n\n    return this.walletClient.writeContract(request);\n  }\n\n  async waitTransaction(txHash: Hash, pollingInterval?: number): Promise<TransactionReceipt> {\n    return this.publicClient.waitForTransactionReceipt({\n      hash: txHash,\n      pollingInterval,\n    });\n  }\n  // TODO to improve to avoid unknown/any\n  async signTypedData<\n    TTypedData extends {\n      domain: TypedDataDomain;\n      types: Record<string, readonly TypedDataParameter[]>;\n      primaryType: string;\n      message: Record<string, unknown>;\n    },\n  >(typedData: TTypedData): Promise<Hash> {\n    if (!this.walletClient) {\n      throw new Error(\"[ViemBetSwirlWallet] Wallet client is not initialized\");\n    }\n\n    const account = this.getAccount();\n    if (!account) {\n      throw new Error(\"[ViemBetSwirlWallet] Account is not initialized\");\n    }\n\n    return this.walletClient.signTypedData({\n      account: account,\n      domain: typedData.domain,\n      types: typedData.types,\n      primaryType: typedData.primaryType,\n      message: typedData.message,\n    });\n  }\n}\n","import type { Address, Hash, Hex, PublicClient, TransactionReceipt, WalletClient } from \"viem\";\nimport {\n  type BetRequirements,\n  type BetSwirlClientOptions,\n  type BP,\n  type CasinoGameToken,\n  type CasinoPlaceBetOptions,\n  type CasinoPlacedBet,\n  type CasinoRolledBet,\n  type CasinoToken,\n  type CasinoWaitRollOptions,\n  type CoinTossRolledBet,\n  casinoChainById,\n  claimFreebetCode,\n  type DiceBetParams,\n  type DiceFreebetParams,\n  type DicePlacedBet,\n  type DiceRolledBet,\n  type GAS_PRICE_TYPE,\n  getBetRequirements,\n  getCasinoGames,\n  getCasinoGameToken,\n  getCasinoTokens,\n  getChainlinkVrfCost,\n  getKenoConfiguration,\n  getLeaderboardClaimableAmount,\n  type KenoConfiguration,\n  type KenoRolledBet,\n  type NormalCasinoPlacedBet,\n  type PlaceBetCallbacks,\n  type PlaceFreebetCallbacks,\n  type PlinkoBetParams,\n  type PlinkoFreebetParams,\n  type PlinkoPlacedBet,\n  type PlinkoRolledBet,\n  placeDiceBet,\n  placeDiceFreebet,\n  placePlinkoBet,\n  placePlinkoFreebet,\n  placeRouletteBet,\n  placeRouletteFreebet,\n  placeWeightedGameBet,\n  placeWeightedGameFreebet,\n  type RouletteBetParams,\n  type RouletteFreebetParams,\n  type RoulettePlacedBet,\n  type RouletteRolledBet,\n  signFreebetCode,\n  type Token,\n  WEIGHTED_CASINO_GAME_TYPES,\n  type WeightedCasinoPlacedBet,\n  type WeightedGameBetParams,\n  type WeightedGameFreebetParams,\n  type WeightedGamePlacedBet,\n  waitCoinTossRolledBet,\n  waitDiceRolledBet,\n  waitKenoRolledBet,\n  waitPlinkoRolledBet,\n  waitRolledBet,\n  waitRouletteRolledBet,\n} from \"..\";\nimport type { CoinTossBetParams, CoinTossFreebetParams } from \"../actions/casino/cointoss\";\nimport {\n  type CoinTossPlacedBet,\n  placeCoinTossBet,\n  placeCoinTossFreebet,\n} from \"../actions/casino/cointoss\";\nimport {\n  type KenoBetParams,\n  type KenoFreebetParams,\n  type KenoPlacedBet,\n  placeKenoBet,\n  placeKenoFreebet,\n} from \"../actions/casino/keno\";\nimport {\n  placeWheelBet,\n  placeWheelFreebet,\n  type WheelBetParams,\n  type WheelFreebetParams,\n  type WheelPlacedBet,\n} from \"../actions/casino/wheel\";\nimport {\n  claimLeaderboardRewards,\n  type LeaderboardClaimRewardsResult,\n} from \"../actions/leaderboard/leaderboard\";\nimport type { CASINO_GAME_TYPE, CasinoChainId, ChainId, Leaderboard } from \"../data\";\nimport { casinoChainIds } from \"../data/casino\";\nimport {\n  getWeightedGameConfiguration,\n  type WeightedGameConfiguration,\n} from \"../read/casino/weightedGame\";\nimport { type WheelRolledBet, waitWheelRolledBet } from \"../read/casino/wheel\";\nimport { BetSwirlClient } from \"./client\";\nimport { ViemBetSwirlWallet } from \"./viemWallet\";\n\nexport class ViemBetSwirlClient extends BetSwirlClient {\n  public publicClient: PublicClient;\n\n  constructor(\n    publicClient: PublicClient,\n    walletClient?: WalletClient,\n    betSwirlDefaultOptions: BetSwirlClientOptions = {},\n  ) {\n    super(new ViemBetSwirlWallet(publicClient, walletClient), betSwirlDefaultOptions);\n    this.publicClient = publicClient;\n  }\n\n  /* Casino Games */\n\n  async waitRolledBet(\n    placedBet: NormalCasinoPlacedBet,\n    options?: CasinoWaitRollOptions,\n  ): Promise<{ rolledBet: CasinoRolledBet; receipt: TransactionReceipt }>;\n\n  async waitRolledBet(\n    placedBet: WeightedCasinoPlacedBet,\n    options: CasinoWaitRollOptions | undefined,\n    weightedGameConfiguration: WeightedGameConfiguration,\n    houseEdge: BP,\n  ): Promise<{ rolledBet: CasinoRolledBet; receipt: TransactionReceipt }>;\n\n  async waitRolledBet(\n    placedBet: CasinoPlacedBet,\n    options?: CasinoWaitRollOptions,\n    weightedGameConfiguration?: WeightedGameConfiguration,\n    houseEdge?: BP,\n  ): Promise<{ rolledBet: CasinoRolledBet; receipt: TransactionReceipt }> {\n    const isWeighted = WEIGHTED_CASINO_GAME_TYPES.includes(placedBet.game);\n    if (isWeighted) {\n      return waitRolledBet(\n        this.betSwirlWallet,\n        placedBet as WeightedCasinoPlacedBet,\n        { ...this.betSwirlDefaultOptions, ...options },\n        weightedGameConfiguration!,\n        houseEdge!,\n      );\n    }\n    return waitRolledBet(this.betSwirlWallet, placedBet as NormalCasinoPlacedBet, {\n      ...this.betSwirlDefaultOptions,\n      ...options,\n    });\n  }\n\n  async playCoinToss(\n    params: CoinTossBetParams,\n    options?: CasinoPlaceBetOptions,\n    callbacks?: PlaceBetCallbacks,\n  ): Promise<{ placedBet: CoinTossPlacedBet; receipt: TransactionReceipt }> {\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 playFreebetCoinToss(\n    params: CoinTossFreebetParams,\n    options?: CasinoPlaceBetOptions,\n    callbacks?: PlaceFreebetCallbacks,\n  ): Promise<{ placedFreebet: CoinTossPlacedBet; receipt: TransactionReceipt }> {\n    return placeCoinTossFreebet(\n      this.betSwirlWallet,\n      params,\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    return waitCoinTossRolledBet(this.betSwirlWallet, placedBet, {\n      ...this.betSwirlDefaultOptions,\n      ...options,\n    });\n  }\n\n  async playDice(\n    params: DiceBetParams,\n    options?: CasinoPlaceBetOptions,\n    callbacks?: PlaceBetCallbacks,\n  ): Promise<{ placedBet: DicePlacedBet; receipt: TransactionReceipt }> {\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 playFreebetDice(\n    params: DiceFreebetParams,\n    options?: CasinoPlaceBetOptions,\n    callbacks?: PlaceFreebetCallbacks,\n  ): Promise<{ placedFreebet: DicePlacedBet; receipt: TransactionReceipt }> {\n    return placeDiceFreebet(\n      this.betSwirlWallet,\n      params,\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    return waitDiceRolledBet(this.betSwirlWallet, placedBet, {\n      ...this.betSwirlDefaultOptions,\n      ...options,\n    });\n  }\n\n  async playRoulette(\n    params: RouletteBetParams,\n    options?: CasinoPlaceBetOptions,\n    callbacks?: PlaceBetCallbacks,\n  ): Promise<{ placedBet: RoulettePlacedBet; receipt: TransactionReceipt }> {\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 playFreebetRoulette(\n    params: RouletteFreebetParams,\n    options?: CasinoPlaceBetOptions,\n    callbacks?: PlaceFreebetCallbacks,\n  ): Promise<{ placedFreebet: RoulettePlacedBet; receipt: TransactionReceipt }> {\n    return placeRouletteFreebet(\n      this.betSwirlWallet,\n      params,\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    return waitRouletteRolledBet(this.betSwirlWallet, placedBet, {\n      ...this.betSwirlDefaultOptions,\n      ...options,\n    });\n  }\n\n  async playKeno(\n    params: KenoBetParams,\n    options?: CasinoPlaceBetOptions,\n    callbacks?: PlaceBetCallbacks,\n  ): Promise<{ placedBet: KenoPlacedBet; receipt: TransactionReceipt }> {\n    return placeKenoBet(\n      this.betSwirlWallet,\n      { ...params, affiliate: this.betSwirlDefaultOptions.affiliate },\n      {\n        ...this.betSwirlDefaultOptions,\n        ...options,\n      },\n      callbacks,\n    );\n  }\n\n  async playFreebetKeno(\n    params: KenoFreebetParams,\n    options?: CasinoPlaceBetOptions,\n    callbacks?: PlaceFreebetCallbacks,\n  ): Promise<{ placedFreebet: KenoPlacedBet; receipt: TransactionReceipt }> {\n    return placeKenoFreebet(\n      this.betSwirlWallet,\n      params,\n      {\n        ...this.betSwirlDefaultOptions,\n        ...options,\n      },\n      callbacks,\n    );\n  }\n\n  async waitKeno(\n    placedBet: KenoPlacedBet,\n    options?: CasinoWaitRollOptions,\n  ): Promise<{ rolledBet: KenoRolledBet; receipt: TransactionReceipt }> {\n    return waitKenoRolledBet(this.betSwirlWallet, placedBet, {\n      ...this.betSwirlDefaultOptions,\n      ...options,\n    });\n  }\n\n  async playWheel(\n    params: WheelBetParams,\n    options?: CasinoPlaceBetOptions,\n    callbacks?: PlaceBetCallbacks,\n  ): Promise<{ placedBet: WheelPlacedBet; receipt: TransactionReceipt }> {\n    return placeWheelBet(\n      this.betSwirlWallet,\n      { ...params, affiliate: this.betSwirlDefaultOptions.affiliate },\n      {\n        ...this.betSwirlDefaultOptions,\n        ...options,\n      },\n      callbacks,\n    );\n  }\n\n  async playFreebetWheel(\n    params: WheelFreebetParams,\n    options?: CasinoPlaceBetOptions,\n    callbacks?: PlaceFreebetCallbacks,\n  ): Promise<{ placedFreebet: WheelPlacedBet; receipt: TransactionReceipt }> {\n    return placeWheelFreebet(\n      this.betSwirlWallet,\n      params,\n      {\n        ...this.betSwirlDefaultOptions,\n        ...options,\n      },\n      callbacks,\n    );\n  }\n\n  async waitWheel(\n    placedBet: WheelPlacedBet,\n    weightedGameConfiguration: WeightedGameConfiguration,\n    houseEdge: BP,\n    options?: CasinoWaitRollOptions,\n  ): Promise<{ rolledBet: WheelRolledBet; receipt: TransactionReceipt }> {\n    return waitWheelRolledBet(\n      this.betSwirlWallet,\n      placedBet,\n      weightedGameConfiguration,\n      houseEdge,\n      {\n        ...this.betSwirlDefaultOptions,\n        ...options,\n      },\n    );\n  }\n\n  async playPlinko(\n    params: PlinkoBetParams,\n    options?: CasinoPlaceBetOptions,\n    callbacks?: PlaceBetCallbacks,\n  ): Promise<{ placedBet: PlinkoPlacedBet; receipt: TransactionReceipt }> {\n    return placePlinkoBet(\n      this.betSwirlWallet,\n      { ...params, affiliate: this.betSwirlDefaultOptions.affiliate },\n      {\n        ...this.betSwirlDefaultOptions,\n        ...options,\n      },\n      callbacks,\n    );\n  }\n\n  async playFreebetPlinko(\n    params: PlinkoFreebetParams,\n    options?: CasinoPlaceBetOptions,\n    callbacks?: PlaceFreebetCallbacks,\n  ): Promise<{ placedFreebet: PlinkoPlacedBet; receipt: TransactionReceipt }> {\n    return placePlinkoFreebet(\n      this.betSwirlWallet,\n      params,\n      {\n        ...this.betSwirlDefaultOptions,\n        ...options,\n      },\n      callbacks,\n    );\n  }\n\n  async waitPlinko(\n    placedBet: PlinkoPlacedBet,\n    weightedGameConfiguration: WeightedGameConfiguration,\n    houseEdge: BP,\n    options?: CasinoWaitRollOptions,\n  ): Promise<{ rolledBet: PlinkoRolledBet; receipt: TransactionReceipt }> {\n    return waitPlinkoRolledBet(\n      this.betSwirlWallet,\n      placedBet,\n      weightedGameConfiguration,\n      houseEdge,\n      {\n        ...this.betSwirlDefaultOptions,\n        ...options,\n      },\n    );\n  }\n\n  async playWeightedGame(\n    params: WeightedGameBetParams,\n    options?: CasinoPlaceBetOptions,\n    callbacks?: PlaceBetCallbacks,\n  ): Promise<{ placedBet: WeightedGamePlacedBet; receipt: TransactionReceipt }> {\n    return placeWeightedGameBet(\n      this.betSwirlWallet,\n      { ...params, affiliate: this.betSwirlDefaultOptions.affiliate },\n      {\n        ...this.betSwirlDefaultOptions,\n        ...options,\n      },\n      callbacks,\n    );\n  }\n\n  async playFreebetWeightedGame(\n    params: WeightedGameFreebetParams,\n    options?: CasinoPlaceBetOptions,\n    callbacks?: PlaceFreebetCallbacks,\n  ): Promise<{ placedFreebet: WeightedGamePlacedBet; receipt: TransactionReceipt }> {\n    return placeWeightedGameFreebet(\n      this.betSwirlWallet,\n      params,\n      {\n        ...this.betSwirlDefaultOptions,\n        ...options,\n      },\n      callbacks,\n    );\n  }\n\n  /* Casino Utilities */\n\n  async getCasinoGames(onlyActive = false) {\n    return getCasinoGames(this.betSwirlWallet, onlyActive);\n  }\n\n  async getCasinoTokens(onlyActive = false): Promise<CasinoToken[]> {\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    return getCasinoGameToken(\n      this.betSwirlWallet,\n      casinoToken,\n      game,\n      affiliate || casinoChain.defaultAffiliate,\n    );\n  }\n\n  async getBetRequirements(\n    token: Token,\n    multiplier: BP | BP[],\n    game: CASINO_GAME_TYPE,\n  ): Promise<BetRequirements> {\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  ) {\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): Promise<KenoConfiguration> {\n    return getKenoConfiguration(this.betSwirlWallet, token);\n  }\n\n  async getWeighedGameConfiguration(configId: number | string): Promise<WeightedGameConfiguration> {\n    return getWeightedGameConfiguration(this.betSwirlWallet, configId);\n  }\n\n  /* Leaderboard utilities */\n\n  async getLeaderboardClaimableAmount(\n    leaderboardOnChainId: number | bigint,\n    playerAddress: Address,\n    chainId: ChainId,\n  ): Promise<bigint> {\n    return getLeaderboardClaimableAmount(\n      this.betSwirlWallet,\n      leaderboardOnChainId,\n      playerAddress,\n      chainId,\n    );\n  }\n\n  async claimLeaderboardRewards(\n    leaderboard: Leaderboard,\n    receiver: Address,\n    onClaimPending?: (tx: Hash, result: LeaderboardClaimRewardsResult) => void | Promise<void>,\n  ): Promise<{ receipt: TransactionReceipt; result: LeaderboardClaimRewardsResult }> {\n    return claimLeaderboardRewards(\n      this.betSwirlWallet,\n      leaderboard,\n      receiver,\n      this.betSwirlDefaultOptions.pollingInterval,\n      onClaimPending,\n    );\n  }\n\n  /* Freebet utilities */\n\n  async signAndClaimFreebetCode(code: string): Promise<{ success: boolean; error?: string }> {\n    const chainId = this.betSwirlWallet.getChainId();\n\n    if (!casinoChainIds.includes(chainId as CasinoChainId)) {\n      throw new Error(\n        `Chain ID ${chainId} is not supported for freebet code claiming. Supported chains: ${casinoChainIds.join(\", \")}`,\n      );\n    }\n\n    // Sign the freebet code\n    const { signature, typedData } = await signFreebetCode(this.betSwirlWallet, code);\n\n    // Claim the freebet code\n    return claimFreebetCode(\n      signature,\n      typedData,\n      chainId as CasinoChainId,\n      Boolean(this.betSwirlDefaultOptions.api?.testMode),\n    );\n  }\n\n  /* Private */\n\n  static init(\n    viemPublicClient: PublicClient,\n    viemWalletClient?: WalletClient,\n    options?: BetSwirlClientOptions,\n  ): ViemBetSwirlClient {\n    return new ViemBetSwirlClient(viemPublicClient, viemWalletClient, options);\n  }\n}\n\nexport function initViemBetSwirlClient(\n  viemPublicClient: PublicClient,\n  viemWalletClient?: WalletClient,\n  options?: BetSwirlClientOptions,\n): ViemBetSwirlClient {\n  return ViemBetSwirlClient.init(viemPublicClient, viemWalletClient, options);\n}\n"]}