[
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "_lazyToken",
                "type": "address"
            },
            {
                "internalType": "address",
                "name": "_lazyGasStation",
                "type": "address"
            },
            {
                "internalType": "address",
                "name": "_lazyDelegateRegistry",
                "type": "address"
            },
            {
                "internalType": "address",
                "name": "_prng",
                "type": "address"
            },
            {
                "internalType": "uint256",
                "name": "_burnPercentage",
                "type": "uint256"
            },
            {
                "internalType": "address",
                "name": "_storageContract",
                "type": "address"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "constructor"
    },
    {
        "inputs": [],
        "name": "AlreadyWinningTicket",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "BadParameters",
        "type": "error"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "_tokenAddress",
                "type": "address"
            },
            {
                "internalType": "uint256",
                "name": "_balance",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "_requestedAmount",
                "type": "uint256"
            }
        ],
        "name": "BalanceError",
        "type": "error"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "_outstanding",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "_tokensOutstanding",
                "type": "uint256"
            }
        ],
        "name": "EntriesOutstanding",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "FailedNFTCreate",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "FailedNFTMintAndSend",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "FailedNFTWipe",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "FailedToInitialize",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "FungibleTokenTransferFailed",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "LastAdminError",
        "type": "error"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "_poolId",
                "type": "uint256"
            }
        ],
        "name": "LottoPoolNotFound",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "NoPendingPrizes",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "NoPrizesAvailable",
        "type": "error"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "_poolId",
                "type": "uint256"
            },
            {
                "internalType": "address",
                "name": "_user",
                "type": "address"
            }
        ],
        "name": "NoTickets",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "NotAdmin",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "NotAuthorized",
        "type": "error"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "_needed",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "_presented",
                "type": "uint256"
            }
        ],
        "name": "NotEnoughFungible",
        "type": "error"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "_needed",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "_presented",
                "type": "uint256"
            }
        ],
        "name": "NotEnoughHbar",
        "type": "error"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "_poolId",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "_requested",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "_available",
                "type": "uint256"
            }
        ],
        "name": "NotEnoughTickets",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "PoolIsClosed",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "PoolManagerAlreadySet",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "PoolNotClosed",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "PoolOnPause",
        "type": "error"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "address",
                "name": "admin",
                "type": "address"
            }
        ],
        "name": "AdminAdded",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "address",
                "name": "admin",
                "type": "address"
            }
        ],
        "name": "AdminRemoved",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": false,
                "internalType": "enum LazyLotto.MethodEnum",
                "name": "method",
                "type": "uint8"
            },
            {
                "indexed": false,
                "internalType": "address",
                "name": "_sender",
                "type": "address"
            },
            {
                "indexed": false,
                "internalType": "uint256",
                "name": "_amount",
                "type": "uint256"
            }
        ],
        "name": "ContractUpdate",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "address",
                "name": "user",
                "type": "address"
            },
            {
                "indexed": true,
                "internalType": "uint256",
                "name": "poolId",
                "type": "uint256"
            },
            {
                "indexed": false,
                "internalType": "uint256",
                "name": "count",
                "type": "uint256"
            }
        ],
        "name": "EntryPurchased",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": false,
                "internalType": "address",
                "name": "account",
                "type": "address"
            }
        ],
        "name": "Paused",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "uint256",
                "name": "poolId",
                "type": "uint256"
            }
        ],
        "name": "PoolClosed",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "uint256",
                "name": "poolId",
                "type": "uint256"
            }
        ],
        "name": "PoolCreated",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "uint256",
                "name": "poolId",
                "type": "uint256"
            }
        ],
        "name": "PoolOpened",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "uint256",
                "name": "poolId",
                "type": "uint256"
            }
        ],
        "name": "PoolPaused",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "uint256",
                "name": "poolId",
                "type": "uint256"
            },
            {
                "indexed": true,
                "internalType": "uint256",
                "name": "prizeIndex",
                "type": "uint256"
            },
            {
                "indexed": true,
                "internalType": "address",
                "name": "admin",
                "type": "address"
            },
            {
                "components": [
                    {
                        "internalType": "address",
                        "name": "token",
                        "type": "address"
                    },
                    {
                        "internalType": "uint256",
                        "name": "amount",
                        "type": "uint256"
                    },
                    {
                        "internalType": "address[]",
                        "name": "nftTokens",
                        "type": "address[]"
                    },
                    {
                        "internalType": "uint256[][]",
                        "name": "nftSerials",
                        "type": "uint256[][]"
                    }
                ],
                "indexed": false,
                "internalType": "struct LazyLotto.PrizePackage",
                "name": "prize",
                "type": "tuple"
            }
        ],
        "name": "PrizeAdded",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "address",
                "name": "user",
                "type": "address"
            },
            {
                "components": [
                    {
                        "internalType": "address",
                        "name": "token",
                        "type": "address"
                    },
                    {
                        "internalType": "uint256",
                        "name": "amount",
                        "type": "uint256"
                    },
                    {
                        "internalType": "address[]",
                        "name": "nftTokens",
                        "type": "address[]"
                    },
                    {
                        "internalType": "uint256[][]",
                        "name": "nftSerials",
                        "type": "uint256[][]"
                    }
                ],
                "indexed": false,
                "internalType": "struct LazyLotto.PrizePackage",
                "name": "prize",
                "type": "tuple"
            }
        ],
        "name": "PrizeClaimed",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "uint256",
                "name": "poolId",
                "type": "uint256"
            },
            {
                "indexed": true,
                "internalType": "uint256",
                "name": "prizeIndex",
                "type": "uint256"
            },
            {
                "indexed": true,
                "internalType": "address",
                "name": "admin",
                "type": "address"
            },
            {
                "components": [
                    {
                        "internalType": "address",
                        "name": "token",
                        "type": "address"
                    },
                    {
                        "internalType": "uint256",
                        "name": "amount",
                        "type": "uint256"
                    },
                    {
                        "internalType": "address[]",
                        "name": "nftTokens",
                        "type": "address[]"
                    },
                    {
                        "internalType": "uint256[][]",
                        "name": "nftSerials",
                        "type": "uint256[][]"
                    }
                ],
                "indexed": false,
                "internalType": "struct LazyLotto.PrizePackage",
                "name": "prize",
                "type": "tuple"
            }
        ],
        "name": "PrizeRemoved",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "address",
                "name": "from",
                "type": "address"
            },
            {
                "indexed": true,
                "internalType": "address",
                "name": "to",
                "type": "address"
            }
        ],
        "name": "PrizeTransferred",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "address",
                "name": "user",
                "type": "address"
            },
            {
                "indexed": true,
                "internalType": "uint256",
                "name": "poolId",
                "type": "uint256"
            },
            {
                "indexed": false,
                "internalType": "bool",
                "name": "won",
                "type": "bool"
            },
            {
                "indexed": false,
                "internalType": "uint256",
                "name": "rollBps",
                "type": "uint256"
            }
        ],
        "name": "Rolled",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "uint256",
                "name": "poolId",
                "type": "uint256"
            },
            {
                "indexed": true,
                "internalType": "address",
                "name": "tokenId",
                "type": "address"
            },
            {
                "indexed": true,
                "internalType": "address",
                "name": "user",
                "type": "address"
            },
            {
                "indexed": false,
                "internalType": "int64[]",
                "name": "serialNumber",
                "type": "int64[]"
            },
            {
                "indexed": false,
                "internalType": "bool",
                "name": "mint",
                "type": "bool"
            }
        ],
        "name": "TicketEvent",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": false,
                "internalType": "address",
                "name": "account",
                "type": "address"
            }
        ],
        "name": "Unpaused",
        "type": "event"
    },
    {
        "stateMutability": "payable",
        "type": "fallback"
    },
    {
        "inputs": [],
        "name": "MAX_WIN_RATE_THRESHOLD",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "NFT_BATCH_SIZE",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "a",
                "type": "address"
            }
        ],
        "name": "addAdmin",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "poolId",
                "type": "uint256"
            },
            {
                "internalType": "address",
                "name": "tokenId",
                "type": "address"
            },
            {
                "internalType": "uint256[]",
                "name": "amounts",
                "type": "uint256[]"
            }
        ],
        "name": "addMultipleFungiblePrizes",
        "outputs": [],
        "stateMutability": "payable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "poolId",
                "type": "uint256"
            },
            {
                "internalType": "address",
                "name": "token",
                "type": "address"
            },
            {
                "internalType": "uint256",
                "name": "amount",
                "type": "uint256"
            },
            {
                "internalType": "address[]",
                "name": "nftTokens",
                "type": "address[]"
            },
            {
                "internalType": "uint256[][]",
                "name": "nftSerials",
                "type": "uint256[][]"
            }
        ],
        "name": "addPrizePackage",
        "outputs": [],
        "stateMutability": "payable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "poolId",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "ticketCount",
                "type": "uint256"
            }
        ],
        "name": "adminBuyAndRedeemEntry",
        "outputs": [
            {
                "internalType": "int64[]",
                "name": "serials",
                "type": "int64[]"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "poolId",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "ticketCount",
                "type": "uint256"
            },
            {
                "internalType": "address",
                "name": "recipient",
                "type": "address"
            }
        ],
        "name": "adminGrantEntry",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "burnPercentage",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "poolId",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "ticketCount",
                "type": "uint256"
            }
        ],
        "name": "buyAndRedeemEntry",
        "outputs": [
            {
                "internalType": "int64[]",
                "name": "serials",
                "type": "int64[]"
            }
        ],
        "stateMutability": "payable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "poolId",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "ticketCount",
                "type": "uint256"
            }
        ],
        "name": "buyAndRollEntry",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "wins",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "offset",
                "type": "uint256"
            }
        ],
        "stateMutability": "payable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "poolId",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "ticketCount",
                "type": "uint256"
            }
        ],
        "name": "buyEntry",
        "outputs": [],
        "stateMutability": "payable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "_user",
                "type": "address"
            }
        ],
        "name": "calculateBoost",
        "outputs": [
            {
                "internalType": "uint32",
                "name": "boost",
                "type": "uint32"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "claimAllPrizes",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "pkgIdx",
                "type": "uint256"
            }
        ],
        "name": "claimPrize",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "tokenId",
                "type": "address"
            },
            {
                "internalType": "int64[]",
                "name": "serialNumbers",
                "type": "int64[]"
            }
        ],
        "name": "claimPrizeFromNFT",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "poolId",
                "type": "uint256"
            }
        ],
        "name": "closePool",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "string",
                "name": "_name",
                "type": "string"
            },
            {
                "internalType": "string",
                "name": "_symbol",
                "type": "string"
            },
            {
                "internalType": "string",
                "name": "_memo",
                "type": "string"
            },
            {
                "components": [
                    {
                        "internalType": "uint32",
                        "name": "numerator",
                        "type": "uint32"
                    },
                    {
                        "internalType": "uint32",
                        "name": "denominator",
                        "type": "uint32"
                    },
                    {
                        "internalType": "uint32",
                        "name": "fallbackfee",
                        "type": "uint32"
                    },
                    {
                        "internalType": "address",
                        "name": "account",
                        "type": "address"
                    }
                ],
                "internalType": "struct ILazyLottoStorage.NFTFeeObject[]",
                "name": "_royalties",
                "type": "tuple[]"
            },
            {
                "internalType": "string",
                "name": "_ticketCID",
                "type": "string"
            },
            {
                "internalType": "string",
                "name": "_winCID",
                "type": "string"
            },
            {
                "internalType": "uint256",
                "name": "_winRateTenThousandthsOfBps",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "_entryFee",
                "type": "uint256"
            },
            {
                "internalType": "address",
                "name": "_feeToken",
                "type": "address"
            }
        ],
        "name": "createPool",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "poolId",
                "type": "uint256"
            }
        ],
        "stateMutability": "payable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "token",
                "type": "address"
            }
        ],
        "name": "getFungiblesNeededForPrizes",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "user",
                "type": "address"
            },
            {
                "internalType": "uint256",
                "name": "index",
                "type": "uint256"
            }
        ],
        "name": "getPendingPrize",
        "outputs": [
            {
                "components": [
                    {
                        "internalType": "uint256",
                        "name": "poolId",
                        "type": "uint256"
                    },
                    {
                        "internalType": "bool",
                        "name": "asNFT",
                        "type": "bool"
                    },
                    {
                        "components": [
                            {
                                "internalType": "address",
                                "name": "token",
                                "type": "address"
                            },
                            {
                                "internalType": "uint256",
                                "name": "amount",
                                "type": "uint256"
                            },
                            {
                                "internalType": "address[]",
                                "name": "nftTokens",
                                "type": "address[]"
                            },
                            {
                                "internalType": "uint256[][]",
                                "name": "nftSerials",
                                "type": "uint256[][]"
                            }
                        ],
                        "internalType": "struct LazyLotto.PrizePackage",
                        "name": "prize",
                        "type": "tuple"
                    }
                ],
                "internalType": "struct LazyLotto.PendingPrize",
                "name": "",
                "type": "tuple"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "tokenId",
                "type": "address"
            },
            {
                "internalType": "uint256",
                "name": "serialNumber",
                "type": "uint256"
            }
        ],
        "name": "getPendingPrizesByNFT",
        "outputs": [
            {
                "components": [
                    {
                        "internalType": "uint256",
                        "name": "poolId",
                        "type": "uint256"
                    },
                    {
                        "internalType": "bool",
                        "name": "asNFT",
                        "type": "bool"
                    },
                    {
                        "components": [
                            {
                                "internalType": "address",
                                "name": "token",
                                "type": "address"
                            },
                            {
                                "internalType": "uint256",
                                "name": "amount",
                                "type": "uint256"
                            },
                            {
                                "internalType": "address[]",
                                "name": "nftTokens",
                                "type": "address[]"
                            },
                            {
                                "internalType": "uint256[][]",
                                "name": "nftSerials",
                                "type": "uint256[][]"
                            }
                        ],
                        "internalType": "struct LazyLotto.PrizePackage",
                        "name": "prize",
                        "type": "tuple"
                    }
                ],
                "internalType": "struct LazyLotto.PendingPrize",
                "name": "",
                "type": "tuple"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "user",
                "type": "address"
            }
        ],
        "name": "getPendingPrizesCount",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "user",
                "type": "address"
            },
            {
                "internalType": "uint256",
                "name": "startIndex",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "count",
                "type": "uint256"
            }
        ],
        "name": "getPendingPrizesPage",
        "outputs": [
            {
                "components": [
                    {
                        "internalType": "uint256",
                        "name": "poolId",
                        "type": "uint256"
                    },
                    {
                        "internalType": "bool",
                        "name": "asNFT",
                        "type": "bool"
                    },
                    {
                        "components": [
                            {
                                "internalType": "address",
                                "name": "token",
                                "type": "address"
                            },
                            {
                                "internalType": "uint256",
                                "name": "amount",
                                "type": "uint256"
                            },
                            {
                                "internalType": "address[]",
                                "name": "nftTokens",
                                "type": "address[]"
                            },
                            {
                                "internalType": "uint256[][]",
                                "name": "nftSerials",
                                "type": "uint256[][]"
                            }
                        ],
                        "internalType": "struct LazyLotto.PrizePackage",
                        "name": "prize",
                        "type": "tuple"
                    }
                ],
                "internalType": "struct LazyLotto.PendingPrize[]",
                "name": "",
                "type": "tuple[]"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "id",
                "type": "uint256"
            }
        ],
        "name": "getPoolBasicInfo",
        "outputs": [
            {
                "internalType": "string",
                "name": "ticketCID",
                "type": "string"
            },
            {
                "internalType": "string",
                "name": "winCID",
                "type": "string"
            },
            {
                "internalType": "uint256",
                "name": "winRateThousandthsOfBps",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "entryFee",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "prizeCount",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "outstandingEntries",
                "type": "uint256"
            },
            {
                "internalType": "address",
                "name": "poolTokenId",
                "type": "address"
            },
            {
                "internalType": "bool",
                "name": "paused",
                "type": "bool"
            },
            {
                "internalType": "bool",
                "name": "closed",
                "type": "bool"
            },
            {
                "internalType": "address",
                "name": "feeToken",
                "type": "address"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "poolId",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "prizeIndex",
                "type": "uint256"
            }
        ],
        "name": "getPrizePackage",
        "outputs": [
            {
                "components": [
                    {
                        "internalType": "address",
                        "name": "token",
                        "type": "address"
                    },
                    {
                        "internalType": "uint256",
                        "name": "amount",
                        "type": "uint256"
                    },
                    {
                        "internalType": "address[]",
                        "name": "nftTokens",
                        "type": "address[]"
                    },
                    {
                        "internalType": "uint256[][]",
                        "name": "nftSerials",
                        "type": "uint256[][]"
                    }
                ],
                "internalType": "struct LazyLotto.PrizePackage",
                "name": "",
                "type": "tuple"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "user",
                "type": "address"
            },
            {
                "internalType": "uint256",
                "name": "startPoolId",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "count",
                "type": "uint256"
            }
        ],
        "name": "getUserEntriesPage",
        "outputs": [
            {
                "internalType": "uint256[]",
                "name": "",
                "type": "uint256[]"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "poolId",
                "type": "uint256"
            },
            {
                "internalType": "address",
                "name": "user",
                "type": "address"
            }
        ],
        "name": "getUsersEntries",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "a",
                "type": "address"
            }
        ],
        "name": "isAdmin",
        "outputs": [
            {
                "internalType": "bool",
                "name": "",
                "type": "bool"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "lazyDelegateRegistry",
        "outputs": [
            {
                "internalType": "contract ILazyDelegateRegistry",
                "name": "",
                "type": "address"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "lazyGasStation",
        "outputs": [
            {
                "internalType": "contract ILazyGasStation",
                "name": "",
                "type": "address"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "lazyToken",
        "outputs": [
            {
                "internalType": "address",
                "name": "",
                "type": "address"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "pause",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "poolId",
                "type": "uint256"
            }
        ],
        "name": "pausePool",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "paused",
        "outputs": [
            {
                "internalType": "bool",
                "name": "",
                "type": "bool"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "poolManager",
        "outputs": [
            {
                "internalType": "contract LazyLottoPoolManager",
                "name": "",
                "type": "address"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "prng",
        "outputs": [
            {
                "internalType": "contract IPrngSystemContract",
                "name": "",
                "type": "address"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "poolId",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "ticketCount",
                "type": "uint256"
            }
        ],
        "name": "redeemEntriesToNFT",
        "outputs": [
            {
                "internalType": "int64[]",
                "name": "serials",
                "type": "int64[]"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256[]",
                "name": "indices",
                "type": "uint256[]"
            }
        ],
        "name": "redeemPrizeToNFT",
        "outputs": [
            {
                "internalType": "int64[]",
                "name": "serials",
                "type": "int64[]"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "a",
                "type": "address"
            }
        ],
        "name": "removeAdmin",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "poolId",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "prizeIndex",
                "type": "uint256"
            }
        ],
        "name": "removePrizes",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "poolId",
                "type": "uint256"
            }
        ],
        "name": "rollAll",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "wins",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "offset",
                "type": "uint256"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "poolId",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "numberToRoll",
                "type": "uint256"
            }
        ],
        "name": "rollBatch",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "wins",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "offset",
                "type": "uint256"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "poolId",
                "type": "uint256"
            },
            {
                "internalType": "int64[]",
                "name": "serialNumbers",
                "type": "int64[]"
            }
        ],
        "name": "rollWithNFT",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "wins",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "offset",
                "type": "uint256"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "_burnPercentage",
                "type": "uint256"
            }
        ],
        "name": "setBurnPercentage",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address payable",
                "name": "_poolManager",
                "type": "address"
            }
        ],
        "name": "setPoolManager",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "_prng",
                "type": "address"
            }
        ],
        "name": "setPrng",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "storageContract",
        "outputs": [
            {
                "internalType": "contract ILazyLottoStorage",
                "name": "",
                "type": "address"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "totalPools",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "_tokenAddress",
                "type": "address"
            },
            {
                "internalType": "address",
                "name": "_receiver",
                "type": "address"
            },
            {
                "internalType": "uint256",
                "name": "_amount",
                "type": "uint256"
            }
        ],
        "name": "transferFungible",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address payable",
                "name": "receiverAddress",
                "type": "address"
            },
            {
                "internalType": "uint256",
                "name": "amount",
                "type": "uint256"
            }
        ],
        "name": "transferHbar",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address payable",
                "name": "receiverAddress",
                "type": "address"
            },
            {
                "internalType": "uint256",
                "name": "amount",
                "type": "uint256"
            }
        ],
        "name": "transferHbarFromStorage",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "recipient",
                "type": "address"
            },
            {
                "internalType": "uint256",
                "name": "pkgIdx",
                "type": "uint256"
            }
        ],
        "name": "transferPendingPrizes",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "unpause",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "poolId",
                "type": "uint256"
            }
        ],
        "name": "unpausePool",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
            },
            {
                "internalType": "address",
                "name": "",
                "type": "address"
            }
        ],
        "name": "userEntries",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "poolId",
                "type": "uint256"
            },
            {
                "internalType": "address",
                "name": "token",
                "type": "address"
            }
        ],
        "name": "withdrawGlobalPoolProceeds",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "token",
                "type": "address"
            }
        ],
        "name": "withdrawPlatformFees",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "poolId",
                "type": "uint256"
            },
            {
                "internalType": "address",
                "name": "token",
                "type": "address"
            }
        ],
        "name": "withdrawPoolProceeds",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "stateMutability": "payable",
        "type": "receive"
    }
]